Templates
Meteobridge stellt einen sehr flexiblen Ersetzungsmechanismus zur Verfügung, mit dem definierte Variable durch konkrete Sensorwerte ersetzt werden. Dies ermöglich Meteobridge in beliebige Zeichenketten Variable "einzuschmuggeln", seien es E-Mail, HTML-Seiten, Alarmbedingungen, etc.
Die Variable werden in dem Moment, in dem die Zeichenkette an den Upload zum Zieldienst übergeben wird surch reale Werte ersetzte. Kann das Datenpaket nicht zugestellt werden, wird die Zustellung gegebenenfalls wiederholt, jedoch mit den bei der Erstbeauftragung eingesetzten Daten.
Jede Variable beginnt und endet mit einer eckigen Klammer "[" und "]". Die Variable in diesen Klammern zeigt die folgende Struktur:Sensor-Selektor=Konverter.Dezimalstellen:Ersatzzeichenkette
"Konverter", "Dezimalstellen" und "Ersatzzeichenkette" kann weggelassen werden, "Sensor" und "Selektor" müssen angegeben werden. Während "Sensor" festlegt, um welchen Sensor es sich handelt und welcher Sensorwert verwendten werden soll, gibt "Selektor" an, welche Zeitperiode ausgewertet werden soll. Mit "Konverter" kann optional eine Umrechnung in andere Maßeinheiten realisiert werden. Die "Dezimalstellen"-Angabe bestimmt die numerische Auflösung der Daten und die "Ersatzzeichenkette" bestimmt den Wert, der ausgegeben wird, wenn kein Sensorwert für den definierten Zeitraum vorliegt.
Sensoren
Diese Sensoren sind in Meteobridge definiert:
- th0temp: Außentemperatur in Grad Celsius
- th0hum: Relative Außenluftfeuchte in Prozent
- th0dew: Außentaupunkttemperatur in Grad Celsius
- th0heatindex: Hitzeindex in Grad Celsius
- thb0temp: Innentemperatur in Grad Celsius
- thb0hum: Innenluftfeuchte in Prozent
- thb0dew: Innentaupunkttemperatur in Grad Celsius
- thb0press: Stationsluftdruck in hPa
- thb0seapress: auf Meeresspiegelhöhe berechneter Luftdruck in hPa
- wind0wind: ungemittelte Windgeschindigkeit in m/s
- wind0avgwind: gemittelte Windgeschindigkeit in m/s
- wind0dir: Windrichtung in Grad (0° ist Norden)
- wind0chill: Windchill-Temperatur in Grad Celsius
- rain0rate: Regenrate in mm/h
- rain0total: gefallene Regenmenge in mm
- uv0index: UV-Index
- sol0rad: Solarstrahlung in W/m^2
- sol0evo: Evapotranspiration in mm (nur für Davis Vantage verfügbar)
Wenn ein Sensor nicht existiert oder seine Daten älter als das maximal tolerierte Sensordatenalter sind, wird Meteohub keine Daten einsetzen und sofern definiert, stattdessen die Ersatzzeichenkette einsetzen. Falls keine Ersatzzeichenkette definiert ist, bleibt die Variable unersetzt als Zeichenkette stehen.
Einige Stationen unterstützen zusätzliche Temperatur/Feuchte-Sensoren. Meteobridge zählt diese als "th1temp", "th1hum", "th1dew", etc auf. Der Reiter "Live-Daten" zeigt neben den aktuellen Daten auch die Sensornummern dieser Zusatzsensoren. Wenn man über eine mit Bodenfeuchte- udn Blattfeuchte-Sensoren ausgestattete Davis Vantage verfügt, werden diese Sensoren ebenfalls als Temperatur/Feuchte-Sensoren geführt, allerdings ohne Berechnung eines Taupunktes. Die Bodenfeuchte-Sensoren weden als "th10temp", "th10hum", ..., "th13temp", "th13hum" und die Blattfeuchte-Sensoren als "th15temp", "th15hum", ..., "th18temp", "th18hum" geführt. Die "hum"-Werte repräsenstieren in diesem Fall nicht die relative Luftfeuchte, sondern Werte in "cbar" und "wet". Meteobridge erfindet für diese Spezialsensoren keine neuen Selektoren. Der generische Selektor "hum" dient dazu, auch die Werte in "cbar" und "wet" dieser Sensoren abzufragen.
Selectors
Sensors are followed by a selector (syntactically separated by a dash) that specifies what period in time should be used for evaluation. Valid selectors are:
- act: most recent data
- hmin: minimum value of this hour
- hmax: maximum value of this hour
- dmin: minimum value of today
- dmax: maximum value of today
- ydmin: minimum value of yesterday
- ydmax: maximum value of yesterday
- mmin: minimum value of this month
- mmax: maximum value of this month
- ymin: minimum value of this year
- ymax: maximum value of this year
- amin: minimum value of all time
- amax: maximum value of all time
Sensors that deliver cumulated data like "rain0total" and "sol0evo" should be used with the following selectors only:
- hoursum, daysum or sumday, monthsum, yearsum, allsum, ydaysum: selects summerized delta values from today, this month, this year, all time or yesterday. Example: "rain0total-sumday" is todays rain fall.
When you are interested in timestamps of min/max values, you can make use of these selectors:
- hmintime: timestamp of minimum value of this hour
- hmaxtime: timestamp of maximum value of this hour
- dmintime: timestamp of minimum value of today
- dmaxtime: timestamp of maximum value of today
- ydmintime: timestamp of minimum value of yesterday
- ydmaxtime: timestamp of maximum value of yesterday
- mmintime: timestamp of minimum value of this month
- mmaxtime: timestamp of maximum value of this month
- ymintime: timestamp of minimum value of this year
- ymaxtime: timestamp of maximum value of this year
- amintime: timestamp of minimum value of all time
- amaxtime: timestamp of maximum value of all time
- starttime: timestamp of first recorded value
Timestamps are strings of format "YYYYMMDDhhmmss". Year "YYYY" is reported in 4 digits, all other values (month "MM", day "DD", hour "hh", minute "mm", second "ss") come with 2 digits, leading zeros are not supressed.
- age: reports seconds elapsed since last reception of data for that particular sensor.
Apart from selectors that use absolute, predefined time slots there are also selectors that look for a certain amount of time into the past.
- val1, val1, val3, ..., val60: selects the value the sensor has shown one to 60 minutes ago (This is only available for sensors with ID 0 and 1, like "th0temp" or "th1temp")
- max1, max2, max3, ..., max60: selects the maximum value from the last one to 60 minutes
- min1, min2, min3, ..., min60: selects the minimum value from the last one to 60 minutes
- avg1, avg2, avg3, ..., avg60: selects average value from the last one to 60 minutes
For sensors delivering cumulated values like "rain0total" and "sol0evo" the following selectors are defined:
- sum1, sum2, sum3, ..., sum60, sum1h, sum2h, sum3h, ..., sum24h: selects summarized delta values from the last one to 60 minutes or one to 24 hours. This is useful to get amount of total rain in a certain time frame: "rain0total-sum60" is rainfall in mm of last 60 minutes.
Converters
Sensor data is reported in ISO units (°C, hPa, mm, m/s) by default, but can be converted into non-ISO units (imperial) by adding a conversion token. Defined tokens are:
- F converts temperature from Celsius to Fahrenheit.
- psi converts pressure from hPa (equivalent to mbar) to psi.
- mmHg converts pressure from hPa to millimeters of mercury.
- inHg converts pressure from hPa to inches of mercury.
- kmh converts wind speed from meters per second to kilometers per hour.
- mph converts wind speed from meters per second to miles per hour.
- kn converts wind speed from meters per second to knots.
- bft converts wind speed from meters per second to Beaufort scale.
- in converts millimeters to inches.
- ft converts meters to feet.
- endir converts a wind direction into one of 16 English direction texts.
- nldir converts a wind direction into one of 16 Dutch direction texts.
- dedir converts a wind direction into one of 16 German direction texts.
If an unknown conversion string is used, no conversion will take place, no error message will appear.
Wenn Variable einen Zeitstempel liefern, kann dieser von lokaler Zeit (Voreinstellung) auf Weltzeit (UTC) umgerechnet weden:
- utc gibt den Zeitstempel nicht in lokaler Zeit (Voreinstellung) sondern in Weltzeit aus.
Vorhersage-Variable
Wenn Meteobridge mit einer Davis Vantage verbunden ist, stehen die Vorhersagen der Vantage in Meteobridge als Variable zur Verfügung. Alle Vorhersagevariable tragen als Sensornamen "forecast" gefolgt von einem der folgenden Selektoren:
- rule: berichtet die Vorhersagenummer. Wenn keine Vantage angschlossen ist oder keine Vorhersage verfügbar ist, ist diese Zahl negativ.
- text: Vorhersagetext in Englisch
- textde: Vorhersagetext in Deutsch (UTF-8-kofiert)
- textdeiso: Vorhersagetext in Deutsch (ISO-8859-kodiert)
- textdehtml: Vorhersagetext in Deutsch (HTML-kodiert)
- textit: Vorhersagetext in Italienisch
- textnl: Vorhersagetext in Holländisch
- textest: Vorhersagetext in Estonisch
- texthr: Vorhersagetext in Ungarisch
- textcz: Vorhersagetext in Tschechisch
System Variables
Meteobridge provides some additional variables that tell details not directly related to weather conditions. Sensor name is "mbsystem", defined selectors are:
- mac: Meteobridge MAC hardware address (example: "40:01:FE:23:12:A8")
- swversion: Meteobridge version string (example: "1.1")
- buildnum: build number as integer (example: 1673)
- platform: string that specifies hw platform (example: "TL-MR3020")
- station: string that specifies selected weather station (expample: "WMR-200")
- language: language used on Meteobridge's web interface (example: "English")
- timezone: defined timezone (example: "Europe/Berlin")
- latitude: latitude as float (example: 53.875120)
- longitude: longitude as float (example: 9.885357)
- uptime: uptime of Meteobridge in seconds
- lastdata: seconds passed since last piece of data received from weather station, returns -1 if no data received. Does not distinguish between useful and useless garbage data
- lastgooddata: seconds passed since last piece of meaningfull sensor data recorded, returns -1 if no sensor data recorded so far
- lunarage: days passes since new moon as integer (example: 28)
- lunarpercent: lunarphase given as percentage from 0% (new moon) to 100% (full moon)
- lunarsegment: lunarphase segment as integer (0 = new moon, 1-3 = growing moon: quarter, half, three quarters, 4 = full moon, 5-7 = shrinking moon: three quarter, half, quarter)
- daylength: length of day (example: "11:28")
- civildaylength: alternative method for daylength computation (example: "12:38")
- nauticaldaylength: alternative method for daylength computation (example: "14:00")
- sunrise: time of sunrise in local time. Can be converterd to UTC by applying "=utc" to the variable (example: "06:47", resp. "05:47")
- sunset. time of sunset in local time. Can be converterd to UTC by applying "=utc" to the variable (example: "18:15", resp. "17:15")
- civilsunrise, civilsunset, nauticalsunrise, nauticalsunset: alternative computations for sunset and sunrise.
- daynightflag: returns "D" when there is daylight, otherwise "N".
- isday: returns "1" when there is daylight, otherwise "0".
- isnight: returns "0" when there is daylight, otherwise "1".
- moonrise: time of moonrise in local time. Can be converterd to UTC by applying "=utc" to the variable. Please notice that not every day has a moonrise time, therefore, variable can be non-existent on certain days (example: "05:46", resp. "04:46")
- moonset: time of moonset in local time. Can be converterd to UTC by applying "=utc" to the variable. Please notice that not every day has a moonset time, therefore, variable can be non-existent on certain days (example: "17:00", resp. "16:00")
- graphA: returns URL of the user's Meteoplug chart "*instruments-black"
- graphB: returns URL of the user's Meteoplug chart "*instruments-black-imp"
- graphC: returns URL of the user's Meteoplug chart "*iphone-black"
- graphD: returns URL of the user's Meteoplug chart "*iphone-black-imp"
- graphE: returns URL of the user's Meteoplug chart "*iphone-tw-2d"
- graphF: returns URL of the user's Meteoplug chart "*iphone-tw-2d-imp"
- graphG: returns URL of the user's Meteoplug chart "*iphone-pr-2d"
- graphH: returns URL of the user's Meteoplug chart "*iphone-pr-2d-imp"
Zeit/Datums-Variable
Die Ausgaben der aktuellen Zeit oder des aktuellen Datums entspricht nicht dem "Sensor-Selektor=Konverter" Schema, sondern ist wie folgt definiert.
Datum und Uhrzeit ist wie folgt definiert:
- YYYY: Jahr, vierstellig
- YY: Jahr, zweistellig
- MM: Monat, zweistellig (ggf mit führender Null)
- M: Monat (ohne führende Null)
- DD: Tag, zweistellig (ggf mit führender Null)
- D: Tag (ohne führende Null)
- hh: Stunde in 24h-Notation, zweistellig (ggf mit führende Null)
- h: Stunde in 24h-Notation (ohne führende Null)
- HH: Stunde in 12h-Notation, zweistellig (ggf mit führende Null)
- H: Stunde in 12h-Notation (ohne führende Null)
- apm: ergibt "am" oder "pm" je nach Tageszeit
- APM: ergibt "AM" oder "PM" je nach Tageszeit
- mm: Minuten, zweistellig (ggf mit führender Null)
- m: Minuten (ohne führende Null)
- ss: Sekunden, zweistellig (ggf mit führender Null)
- s: Sekunden (ohne führende NuLL)
Wenn ein großes "U" vorangestellt ist, wird mit Weltzeit gearbeitet (UTC), ansonsten mit lokaler Zeit. Beispiel: "[Uhh]:[Umm]:[Uss] UTC" wird zu einer Zeichenkette der Art "16:03:33 UTC" übersetzt
Nachkommastellen
Sofern nicht anders definiert werden Zahlen mit einer Dezimalstelle berichtet. Durch Setzen des Wertes für die Nachkommastellen kann die Anzahl der bei der Ausgabe verwendten Dezimalstellen bestimmt werden.
Wenn die Variable einen Zeichenkette anstelle einer Zahl zurückliefert - wie beispielsweise bei Zeitstempeln -, dann hat die "Nachkommastellen"-Definition eine andere Form und Bedeutung. Die Angabe enthält dann zwei Positionszeichen, die die Start- und eine Endeposition des herausuzulösenden Sub-Strings bezeichnen. Die Positionszeichen sind Kleinbuchstaben. Der erste gibt die Startposition an. "a" steht für das erste Zeichen der Zeichenkette, "b" für das zweite, etc. Das zweite Positionszeichen hat dieselbe Form und gibt das letzte Zeichen der herauszulösdenden Zeichenkette an. Beispiel: Aus dem Zeitstempel "20130303121055" werde mit den Positionszeichen ".ad" die ersten vier Zeichen selektiert. Wenn man die zeit der tiefsten Außentempratur des heutigen Tages erhalten möchte, kann man das Template [th0temp-dmintime.ij:--]:[th0temp-dmintime.kl:--] verwenden. "ij" selektieren den Stundenwert an Position 9-10 und "kl" den Minutenwert an Position 11-12 des Zeitstempels.
Ersatzzeichenkette
Wenn eine Variable nicht definiert ist oder keinen gültigen Wert liefern kann, wird die spezifizierte Ersatzzeichenkette ausgegeben, die auch leer sein kann. Fehlt die Angabe der Ersatzzeichenkette bleibt die Variabledefinition unverändert in der Zeichenkette stehen und wird nicht ersetzt.
Numerical Expressions
A numerical expression that Meteobridge should evaluate needs to be enclosed by {* and *}. The enclosed expression can also include template variables. This allows to do various computations with numerical data. Resulting value is returned with two decimals. You can define how many digits the return value should have by stating the number of decimals betwenn the * and } when closing the numerical expression. For example, *0} does set number of decimals to 0, which will return a rounded integer value.
The following operators can be used within numerical expressions:
Operator / Function | Description |
---|---|
&&, ||, &, | | logical "and", "or" operators working on value range: 1=true, 0=false |
==, =, !=, <>, >, >=, <, <= | comparison operations working on value range: 1=true, 0=false |
+, - | arithmetic operators "plus" and "minus" |
*, /, % | arithmetic operators "multiply", "divide" and "modulus" (which rounds the operands to integers first) |
^ | arithmetic operator "power" |
sqrt(), log(), exp(), sin(), asin(), cos(), acos(), tan(), atan(), atan2(), abs(), fabs(), floor(), ceil(), round() | arithmetic functions: square root, logarithm, logarithmic exponent, sinus, arcus sinus, cosinus, arcus cosinus, tangens, arcus tangens, arcus tangens2, absolute, floting point absolut, lower integer, upper integer, rounded integer |
Beispiele
Anbei ein paar Beispiele, die helfen, den Ersetzungsmechanismus besser zu verstehen.
- Template Outdoor temperature is [th0temp-act=F.1:--]°F will be converted into Outdoor temperature is 3.4°F when there is outdoor temp data and into Outdoor temperature is --°F if outdoor temp sensor does not provide recent data.
- Template Local time is [hh]:[mm] will be converted into Local time is 09:27.
- Template Max gust in last 10 minutes was: [wind0wind-max10.1:--]m/s, [wind0wind-max10=mph.1:--]mph, [wind0wind-max10=kn.0:--]kn will be converted into Max gust in last 10 minutes was: 10.5m/s, 23.5mph, 20kn.
- Template Max gust in last 10 minutes was: [wind0wind-max10.1:0]m/s, {*[wind0wind-max10.1:0] * 3.6 *1}kph will be converted into Max gust in last 10 minutes was: 10.5m/s, 37.8kph.