Difference between revisions of "Templates/de"
(71 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
__NOTOC__ | __NOTOC__ | ||
− | <languages /><br />Meteobridge | + | <languages /><br />Meteobridge provides a very flexible mechanism to smuggle sensor data of different kinds into strings to be used by Meteobridge push services like Twitter, HTTP GET uploads or MySQL database insert requests. |
− | + | Simply type in the text you want to upload and represent the pieces of sensor data by so called variables. When data gets uploaded, these variables will be replaced by current sensor data and so a string filled with the data you intended will be uploaded. | |
Jede Variable beginnt und endet mit einer eckigen Klammer "[" und "]". Die Variable in diesen Klammern zeigt die folgende Struktur: <pre>Sensor-Selektor=Konverter.Dezimalstellen:Ersatzzeichenkette</pre> | Jede Variable beginnt und endet mit einer eckigen Klammer "[" und "]". Die Variable in diesen Klammern zeigt die folgende Struktur: <pre>Sensor-Selektor=Konverter.Dezimalstellen:Ersatzzeichenkette</pre> | ||
Line 12: | Line 12: | ||
* '''th0hum''': Relative Außenluftfeuchte in Prozent | * '''th0hum''': Relative Außenluftfeuchte in Prozent | ||
* '''th0dew''': Außentaupunkttemperatur in Grad Celsius | * '''th0dew''': Außentaupunkttemperatur in Grad Celsius | ||
+ | * '''th0heatindex''': Hitzeindex in Grad Celsius | ||
* '''thb0temp''': Innentemperatur in Grad Celsius | * '''thb0temp''': Innentemperatur in Grad Celsius | ||
* '''thb0hum''': Innenluftfeuchte in Prozent | * '''thb0hum''': Innenluftfeuchte in Prozent | ||
Line 25: | Line 26: | ||
* '''uv0index''': UV-Index | * '''uv0index''': UV-Index | ||
* '''sol0rad''': Solarstrahlung in W/m^2 | * '''sol0rad''': Solarstrahlung in W/m^2 | ||
+ | * '''sol0evo''': Evapotranspiration in mm (nur für Davis Vantage verfügbar) | ||
+ | * '''lgt0dist''': Entfernung zum Blitz in Kilometern | ||
+ | * '''lgt0energy''': Energie des Blitzes (keine physikalische Einheit) | ||
+ | * '''lgt0total''': Anzahl Blitze | ||
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. | 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. | ||
+ | Da einige Wetterstationen auch geringe Batteriespannung anzeigen, sind auch Sensoren '''thb0lowbat''', '''th0lowbat''', etc verfügbar. Diese Sensoren zeigen einen niedrigen Batteriespannung der Basissensoren an (0 = normale Batteriespannung, 1 = niedrige Batteriespannung). | ||
+ | |||
+ | Since version 3.6 Meteobridge also supports selection of a sensor which has been defined on "Live Data" tab as primary. When no primary selection has been made all the "0" sensors (like "th0temp", "wind0wind", etc) are primary by default. But when you select "th3temp" as primary sensor and by that its data is reported as your stations outdoor temperature to all the weather networks, then you can now also select the primary sensor in your template definitions by selecting it as the "*" sensor. For example: "th*temp" selects the sensors defined as the primary outdoor temp sensor. When you use "[th*temp-act:--]" you get the current temperature of your primary outdoor temp sensor. This will be a synonym to "[th0temp-act:--] as long as you have not selected another sensor as primary outdoor temp sensor. But when you have selected "th3temp" to be the primary outdoor temp sensor, then "th*temp" will reference to "th3temp" instead of "th0temp". Please be aware that Meteobridge versions before version 3.6 will fail to evaluate "*" sensors. Therefore, it is recommended to provide both notations in a template and to make use of the conditional evaluation as explained in a later chapter. Here is an example that takes "th0temp" as default outdoor sensor on older Meteobridge versions and newer "th*temp" notation on current ones: | ||
+ | <font face="Courier"><span style="background-color:lightgrey;">#if{*[mbsystem-swversion:1.0]>=3.6*}#then#outdoor temp: [th*temp-act:--]°C#else#outdoor temp: [th0temp-act:--]°C#fi#</span></font face> | ||
+ | |||
+ | Einige Stationen unterstützen zusätzliche Temperatur/Feuchtesensoren. 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- und Blattfeuchtesensoren ausgestattete Davis Vantage verfügt, werden diese Sensoren ebenfalls als Temperatur/Feuchtesensoren geführt, allerdings ohne Berechnung eines Taupunktes. Die Bodenfeuchtesensoren weden als "th10temp", "th10hum", ..., "th13temp", "th13hum" und die Blattfeuchtesensoren als "th15temp", "th15hum", ..., "th18temp", "th18hum" geführt. Die "hum"-Werte repräsentieren 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. | ||
+ | |||
+ | Die Meteobridge PRO stellt ein paar zusätzliche Variable zur Verfügung, mit denen der Systemstatus aufgezeichnet wird: | ||
+ | * '''data10num''': CPU Auslastung in Prozent | ||
+ | * '''data11num''': Laufzeit in Stunden | ||
+ | * '''data12num''': Nutzung der Daten-Partition in Prozent | ||
+ | * '''data13num''': Nutzung des Hauptspeichers in Prozent | ||
+ | * '''data14num''': Leistungsaufnahme in Watt | ||
+ | * '''data15num''': Anzahl von Prozessen | ||
+ | * '''data16num''': Alter der letzten Sensordatenmeldung in Sekunden | ||
+ | * '''data17num''': Betriebsspannung in Volt | ||
+ | * '''data18num''': aktueller Stromverbrauch in Ampere | ||
+ | * '''data19num''': Gesendete Daten in Kilobytes (inkludiert Webinterface-Nutzung) | ||
+ | * '''data20num''': Empfangene Daten in Kilobytes (inkludiert Webinterface-Nutzung) | ||
==Selektor== | ==Selektor== | ||
Line 42: | Line 66: | ||
* '''amin''': Minimum des gesamten Aufzeichnungszeitraumes | * '''amin''': Minimum des gesamten Aufzeichnungszeitraumes | ||
* '''amax''': Maximum des gesamten Aufzeichnungszeitraumes | * '''amax''': Maximum des gesamten Aufzeichnungszeitraumes | ||
− | * '''daysum oder sumday''', '''ydaysum''', '''monthsum''', '''yearsum''', '''allsum''': selektiert die Summe an Inkremente für Heute, Gestern, diesen Monat, dieses Jahr, gesamten Aufzeichnungszeitraum. Beispiel: "rain0total-sumday" ist die heutige Regenmenge. | + | Sensoren, die kumulierte Werte wie "rain0total", "sol0evo", "sun0total" und "lgt0total" zeigen, sollen nur mit den folgenden Selektoren ausgewertet werden: |
+ | * '''hoursum''', '''daysum oder sumday''', '''ydaysum''', '''monthsum''', '''yearsum''', '''allsum''': selektiert die Summe an Inkremente für Heute, Gestern, diesen Monat, dieses Jahr, gesamten Aufzeichnungszeitraum. Beispiel: "rain0total-sumday" ist die heutige Regenmenge. | ||
+ | |||
+ | 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 | ||
+ | * '''nonzerotime''': timestamp of last occurrence of a nonzero 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 suppressed. | ||
+ | * '''age''': reports seconds elapsed since last reception of data for that particular sensor. | ||
+ | * '''hold''': reports seconds elapsed since last reception of data for that particular sensor, but returns invalid value when age is beyond data hold period of 300 seconds. This allows to return invalid status instead large number of seconds for sensors having dropped off long time ago. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
Neben obigen Selektoren, die fest definierte Zeitfenster selektieren, kann mit den folgenden Selektoren eine Auswertung für einen relativen Zeitraum in die Vergangenheit durchgeführt werden. Die Rückschau reicht wegen der begrenzten Speicherausstattung der Meteobridge nur bis zu 60 Minuten in die Vergangenheit. | Neben obigen Selektoren, die fest definierte Zeitfenster selektieren, kann mit den folgenden Selektoren eine Auswertung für einen relativen Zeitraum in die Vergangenheit durchgeführt werden. Die Rückschau reicht wegen der begrenzten Speicherausstattung der Meteobridge nur bis zu 60 Minuten in die Vergangenheit. | ||
− | * '''val2''', ''' | + | * '''val1''', '''val2''', '''val13''', ..., '''val60''': selektiert den Sensorwert von vor einer bis 60 Minuten |
− | * ''' | + | * '''max1''', '''max2''', '''max3''', ..., '''max60''': selektiert das Maximum der letzten einen bis 60 Minuten |
− | * ''' | + | * '''min1''', '''min2''', '''min3''', ..., '''min60''': selektiert das Minimum der letzten einen bis 60 Minuten |
− | * ''' | + | * '''avg1''', '''avg2''', '''avg3''', ..., '''avg60''': selektiert den Durchschnittswert der letzten einen bis 60 Minuten |
− | + | Sensoren wie "rain0total" und "sol0evo", die kumulierte Werte liefern, können wegen der geringeren Abtastdichte (1 Wert pro Minute) bis zu 24 Stunden in die Vergangenheit ausgewertet werden: | |
+ | * '''sum1''', '''sum2''', '''sum3''', ..., '''sum60''', '''sum1h''', '''sum2h''', '''sum3h''', ..., '''sum24h''': selektiert zusammengerechnete Deltawerte der letzten einen bis 60 Minuten oder der letzten einen bis 24 Stunden, welches zum Berechnen der gefallenen Regenmenge im definierten Zeitraum erforderlich ist. Beispiel: "rain0total-sum60" ergibt die gefallene Regenmenge in mm der letzten 60 Minuten. | ||
+ | * '''delta1''', '''delta2''', '''delta3''', ..., '''delta60''', '''delta1h''', '''delta2h''', '''delta3h''', ..., '''delta24h''': zeigt die Differenz zwischen dem aktuellen Sensorwert und dem Sensorwert vor 1 bis 60 Minuten oder dem Sensorwert vor 1 bis 24 stunden. Eine positiver Wert zeigt ein Ansteigen über die Zeit an, ein negativer Wert ein Abfallen. Diese Daten sind für Trendanalysen über unterschiedliche Betrachtungszeiträume hilfreich. | ||
+ | |||
+ | ===Meteobridge PRO Additions=== | ||
+ | Selectors '''val''', '''min''', '''max''', '''avg''', '''sum''', '''mintime''', '''maxtime''' can be combined with a "@YYYYMMDDhh" specifier, which determines the point in time where the data should be taken from. This specifier also defines if data should be used on a per hour, per day, per month or per year resolution. To get data in a per hour resolution the specifier needs to define the point in time down to the hour. Example: "min@2015121909" selects minimum data from December 19, 2015 09:00 until 9:59 (on a per hour base). This is how the specifier works: | ||
+ | * '''@YYYY''' selects data for the specified year. Example: Using "[th0temp-min@2015]" in a template will report minimum outdoor temperature of 2015. When "YYYY" is not defining a valid year but is in the range of "0000" to "0010" then "0000" is interpreted as the current year, "0001" as the previous year and so on. In that situation the 4 digit number expresses how many years to skip into the past. These skips need to be in 4-digit style, leading zeros are not allowed to be omitted. | ||
+ | * '''@YYYYMM''' selects data for the specified month. Example: Using "[wind0wind-max@201509]" in a template will report maximum wind speed (gust) of September 2015. | ||
+ | * '''@YYYYMMDD''' selects data for the specified day. Example: Using "[rain0total-sum@20151031]" in a template will report total rainfall on October 31, 2015. | ||
+ | * '''@YYYYMMDDhh''' selects data for the specified hour. Example: Using "[uv0index-avg@2015110316]" in a template will report average UV index on November 3, 2015 between 16:00 and 16:59. | ||
+ | |||
+ | Neben der im vorangegangenen Abschnitt erläuterten Selektion von Daten mittels absoluter Zeitpunkte ist es auch möglich, relativ zum jetzigen Zeitpunkt Daten in der Vergangenheit zu selektieren. Relative Zeitpunkte können in Jahren, Monaten, Tagen, Stunden und Minuten angegeben werden. Dabei liefert eine Selektion über das Jahr jährliche Daten, eine Selektion über den Monat monatliche Daten, etc. Die folgenden relativen Zeitpunktbezeichner sind möglich: | ||
+ | * '''@Y'''n selektiert die jährlichen Daten des Jahres, das n Jahre zurückliegt. Beispiel: Im Jahr 2016 ergibt "[th0temp-max@Y1]" die maximale Aussentemperatur des Jahres 2015, während "@Y3" die Daten des Jahres 2013 selektiert. | ||
+ | * '''@M'''n selektiert die monatlichen Daten des Monats, der n Monate zurückliegt. Beispiel: "[wind0wind-max@M0] liefert die maximale Windgeschwindigkeit des aktuellen Monats, während "[wind0wind-max@M1]" die maximale Windgeschwindigkeit des Vormonats liefert. | ||
+ | * '''@D'''n selektiert die täglichen Daten des Tages, der n Tage zurückliegt. Beispiel: "[th0temp-min@D7]" liefert die Tagesdaten von vor einer Woche. | ||
+ | * '''@h'''n selektiert die stündlichen Daten der Stunde, die n Stunden zurückliegt. | ||
+ | |||
+ | '''val''' zeigt grundsätzlich dieselben Werte wie "avg". Bei minütlicher Auflösung zeigt "val" den Durchschnitt der Werte der Minute, falls mehrere Werte in der Minute angeliefert wurden. | ||
+ | |||
+ | '''mintime''' und '''maxtime''' zeigen den Zeitstempel des gesuchten Minimums oder Maximums in dem definierten Zeitraum. Der Zeitstempel wird in der Notation "YYYYMMDDhhmmss" in Sekundenauflösung berichtet. | ||
==Konverter== | ==Konverter== | ||
Line 78: | Line 126: | ||
* '''bft''' wandelt Windgeschwindigkeit von m/s in die Beaufort-Skala um. | * '''bft''' wandelt Windgeschwindigkeit von m/s in die Beaufort-Skala um. | ||
* '''in''' wandelt der Regenmenge von mm in Inch um. | * '''in''' wandelt der Regenmenge von mm in Inch um. | ||
− | + | * '''ft''' wandelt eine Höhe von Metern in Fuß (feet) um. | |
− | Wird eine unbekannte Konvertierung gewählt, findet keine Umrechnung statt | + | * '''mls''' wandelt eine Entfernung von Kilometern in Meilen um. |
+ | * '''endir''' wandelt die Windrichtung in einen von 16 Englischen Richtungstexten um. | ||
+ | * '''nldir''' wandelt die Windrichtung in einen von 16 Holländischen Richtungstexten um. | ||
+ | * '''dedir''' wandelt die Windrichtung in einen von 16 Deutschen Richtungstexten um. | ||
+ | * '''barotrend''' wandelt eine Differenzmessung (Selektor '''delta''') in eine Barometertrendanalyse: | ||
+ | ** '''-2''': delta <= -2 hPa | ||
+ | ** '''-1''': -2 hPa < delta <= -1 hPa | ||
+ | ** ''' 0''': -1 hPa < delta < +1 hPa | ||
+ | ** '''+1''': +1 hPa <= delta < +2 hPa | ||
+ | ** '''+2''': +2 hPa <= delta | ||
+ | * '''enbarotrend''' berichtet den Trend als Zeichenkette '''FF''', '''FS''', '''ST''', '''RS''', '''RF'''. | ||
+ | Wird eine unbekannte Konvertierung gewählt, findet keine Umrechnung statt und es erfolgt keine Fehlermeldung. | ||
+ | Die Konverter "F", "psi", "mmHg", "inHg", "kmh", "mph", "kn", "bft", "in", "ft" können durch einen Multiplizierer ergänzt werden. Beispiel: Konverter "F10" bewirkt, dass die Temperatur des sensors auf Grad Fahrenheit umgerechnet und mit 10 multiplizert wird. Anders ausgedrückt, die Temperatur des Sensors wird in 1/10 Fahrenheit ausgegeben. Als Sonderfall kann auch nur der Multiplier verwendet werden, der dann ohne Einheitenumrechnung auf die Sensordaten angewendet wird. | ||
Wenn Variable einen Zeitstempel liefern, kann dieser von lokaler Zeit (Voreinstellung) auf Weltzeit (UTC) umgerechnet weden: | 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. | * '''utc''' gibt den Zeitstempel nicht in lokaler Zeit (Voreinstellung) sondern in Weltzeit aus. | ||
+ | * '''apm''' berichtet den Zeitstempel in AM/PM-Notation. Beispiel: "201603011123344AM" steht für den 11. März 2016 um 12:33:44 AM". | ||
− | == | + | ==Forecast Variables== |
− | Meteobridge | + | When you are using a Davis Vantage station, it provides a couple of forecast rules, which Meteobridge can report via template variables. All forcast variables start with sensor name "forecast" followed by one of these selectors: |
− | * '''swversion''': Meteobridge | + | *'''rule''': reports Vantage rule number. When no rule present (or not a Vantage this will be a negative number). |
− | * '''buildnum''': | + | *'''text''': reports forecast text in English |
− | * '''platform''': | + | *'''textde''': reports in German (UTF-8 coded) |
− | * ''' | + | *'''textdeiso''': reports in German (ISO-8859 coded) |
− | * '''timezone''': | + | *'''textdehtml''': reports in German (HTML coded) |
− | * '''latitude''': | + | *'''textit''': reports in Italian |
− | * '''longitude''': | + | *'''textnl''': reports in Dutch |
− | * '''lunarage''': | + | *'''textest''': reports in Estonian |
− | * '''lunarpercent''': | + | *'''texthr''': reports in Hungarian |
− | * '''lunarsegment''': | + | *'''textcz''': reports in Czech |
− | * '''daylength''': | + | When converter "us" is added, all blanks are replaced by underscores. |
− | * '''civildaylength''': | + | |
− | * '''nauticaldaylength''': | + | ==System Variables== |
− | * '''sunrise''': | + | Meteobridge provides some additional variables that tell details not directly related to weather conditions. Sensor name is "mbsystem", defined selectors are: |
− | * '''sunset'''. | + | * '''mac''': Meteobridge MAC hardware address (example: "40:01:FE:23:12:A8") |
− | * '''civilsunrise''', '''civilsunset''', '''nauticalsunrise''', '''nauticalsunset''': | + | * '''swversion''': Meteobridge version string (example: "1.1") |
− | * '''daynightflag''': | + | * '''buildnum''': build number as integer (example: 1673) |
− | * ''' | + | * '''platform''': string that specifies hw platform (example: "TL-MR3020") |
− | * ''' | + | * '''station''': string that specifies selected weather station (example: "WMR-200") |
+ | * '''stationnum''': integer that specifies selected weather station (example: 49) | ||
+ | * '''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 | ||
+ | * '''cpuload1m''', '''cpuload5m''', '''cpuload15m''' shows average cpu load during last 1, 5, 15 minutes | ||
+ | * '''ip''': IP address | ||
+ | * '''lanip''': IP address on the LAN port (if connected) | ||
+ | * '''wlanip''': IP address of the WLAN (if connected) | ||
+ | * '''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 meaningful sensor data recorded, returns -1 if no sensor data recorded so far | ||
+ | * '''solarmax''': maximum possible solar radiation on that day at that point of the earth. Needs latitude and longitude set and pressure data available. | ||
+ | * '''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") | ||
+ | * '''daylengthmin''': length of shortest day of the year | ||
+ | * '''daylengthmax''': length of longest day of the year | ||
+ | * '''civildaylength''': alternative method for day length computation (example: "12:38") | ||
+ | * '''civildaylengthmin''': length of shortest day of the year according to civil day length computation | ||
+ | * '''civildaylengthmax''': length of longest day of the year according to civil day length computation | ||
+ | * '''nauticaldaylength''': alternative method for day length computation (example: "14:00") | ||
+ | * '''nauticaldaylengthmin''': length of shortest day of the year according to nautical day length computation | ||
+ | * '''nauticaldaylengthmax''': length of longest day of the year according to nautical day length computation | ||
+ | * '''sunrise''': returns time of astronomical sunrise in local time. Can be converted to UTC by applying "=utc" to the variable (example: "06:47", resp. "05:47") or can be converted to 12h time mode by applying "=apm" (example: "8:45AM"). | ||
+ | * '''sunset''': returns time of astronomical sunset in local time. Can be converted to UTC by applying "=utc" to the variable (example: "18:15", resp. "17:15") or can be converted to 12h time mode by applying "=apm" (example: "12:45AM"). | ||
+ | * '''civilsunrise''', '''civilsunset''', '''nauticalsunrise''', '''nauticalsunset''': alternative computations for sunset and sunrise. These can also be converted to UTC ("=utc") or AM/PM ("=apm") as "sunrise and sunset". | ||
+ | * '''daynightflag''': returns "D" when there is daylight, otherwise "N" (civil sunrise/sunset is used as reference). | ||
+ | * '''isday''': returns "1" when there is daylight, otherwise "0" (civil sunrise/sunset is used as reference). | ||
+ | * '''isnight''': returns "0" when there is daylight, otherwise "1" (civil sunrise/sunset is used as reference). | ||
+ | * '''moonrise''': time of moonrise in local time. Can be converted to UTC or AP/PM notation by applying "=utc" resp. "=apm" 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 converted to UTC or AP/PM notation by applying "=utc" resp. "=apm" 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" | ||
+ | |||
+ | ===Konverter für System-Variable=== | ||
+ | Meteobridge stellt Konverter zur Berechnung von Tageslängen zur Verfügung. Üblicherweise werden Tageslängen in einer "HH:MM" Notation angezeigt. Dies kann bei Bedarf mit folgenden Konvertern geändert werden: | ||
+ | * '''secs''' gibt die Dauer in Sekunden aus. | ||
+ | * '''mins''' gibt die Dauer in Minuten (mit dezimalen Nachkommastellen) aus. | ||
+ | * '''hours''' gibt die Dauer in Stunden (mit dezimalen Nachkommastellen) aus. | ||
+ | Zeitstempel können ebenfalls konvertiert werden. Die normale Form ist die "HH:MM" Notation in lokaler Zeit, die mit folgenden Konvertern modifiziert werden kann: | ||
+ | applied: | ||
+ | * '''utc''' gibt die Zeit in UTC anstelle der lokalen Zeit aus. | ||
+ | * '''apm''' gibt die Zeit in der amerikanischen AM/PM Notation aus. | ||
==Zeit/Datums-Variable== | ==Zeit/Datums-Variable== | ||
Line 116: | Line 228: | ||
* '''DD''': Tag, zweistellig (ggf mit führender Null) | * '''DD''': Tag, zweistellig (ggf mit führender Null) | ||
* '''D''': Tag (ohne führende Null) | * '''D''': Tag (ohne führende Null) | ||
− | * '''hh''': Stunde, zweistellig (ggf mit führende Null) | + | * '''hh''': Stunde in 24h-Notation, zweistellig (ggf mit führende Null) |
− | * '''h''': Stunde (ohne 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) | * '''mm''': Minuten, zweistellig (ggf mit führender Null) | ||
* '''m''': Minuten (ohne führende Null) | * '''m''': Minuten (ohne führende Null) | ||
Line 123: | Line 239: | ||
* '''s''': Sekunden (ohne führende 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 | 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 | ||
+ | * '''epoch''': Anzahl von Sekunden seit dem 1.1.1970 | ||
==Nachkommastellen== | ==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. | + | 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 Angabe nur aus Nullen besteht (keine Nachkommastellen erforderlich), dann wird das Ergebnis mit führenden Nullen ergänzt, so dass die Anzahl Ziffern der Anzahl der angegeben Nullen entspricht. Beispiel: <font face="Courier"><span style="background-color:lightgrey;">[th0temp-act.000:--]</span></font face> ergibt "008", wenn die Außentemperatur 8.2° Celsius ist. |
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 <font face="Courier"><span style="background-color:lightgrey;">[th0temp-dmintime.ij:--]:[th0temp-dmintime.kl:--]</span></font face> verwenden. "ij" selektieren den Stundenwert an Position 9-10 und "kl" den Minutenwert an Position 11-12 des Zeitstempels. | 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 <font face="Courier"><span style="background-color:lightgrey;">[th0temp-dmintime.ij:--]:[th0temp-dmintime.kl:--]</span></font face> verwenden. "ij" selektieren den Stundenwert an Position 9-10 und "kl" den Minutenwert an Position 11-12 des Zeitstempels. | ||
Line 131: | Line 248: | ||
==Ersatzzeichenkette== | ==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. | 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 <font face="Courier"><span style="background-color:lightgrey;">{*</span></font face> and <font face="Courier"><span style="background-color:lightgrey;">*}</span></font face>. 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, <font face="Courier"><span style="background-color:lightgrey;">*0}</span></font face> does set number of decimals to 0, which will return a rounded integer value. When you are looking for a non-rounded, truncated integer then <font face="Courier"><span style="background-color:lightgrey;">*t}</span></font face> will do the job. When you need an output with a certain number of leading zeros, you can specify this the same way as explained in "Decimals" paragraph on this page. | ||
+ | |||
+ | In numerischen Ausdrücken können diese Operatoren verwendet werden: | ||
+ | {| style="background:none" border="1" cellpadding="5" cellspacing="0" | ||
+ | |+ align="bottom"|''Operator mit steigender Präzedenz (von oben nach unten)'' | ||
+ | ! Operator / Funktion | ||
+ | ! Beschreibung | ||
+ | |- | ||
+ | |'''&&''', '''||''', '''&''', '''|''' | ||
+ | |logische "UND", "ODER" Operatoren arbeiten im Wertebereich "1=true" und "0=false" | ||
+ | |- | ||
+ | |'''==''', '''=''', '''!=''', '''<>''', '''>''', '''>=''', '''<''', '''<=''' | ||
+ | |Vergleichsoperatoren arbeiten im Wertebereich "1=true" und "0=false" | ||
+ | |- | ||
+ | |'''+''', '''-''' | ||
+ | |Arithmetische Operatoren "Plus" und "Minus" | ||
+ | |- | ||
+ | |'''*''', '''/''', '''%''' | ||
+ | |Arithmetische Operatoren "Multiplikation", "Division" and "Modulus" (welches die Operanden implizit zuerst auf Integer rundet) | ||
+ | |- | ||
+ | |'''^''' | ||
+ | |Arithmetischer Operator "Hoch" | ||
+ | |- | ||
+ | |'''sqrt()''', '''log()''', '''exp()''', '''sin()''', '''asin()''', '''cos()''', '''acos()''', '''tan()''', '''atan()''', '''atan2()''', '''abs()''', '''fabs()''', '''floor()''', '''ceil()''', '''round()''' | ||
+ | |Arithmetische Funktionen: Quadratwurzel, Logarithmus, logarithmischer Exponent, Sinus, Arcus Sinus, Cosinus, Arcus Cosinus, Tangens, Arcus Tangens, Arcus Tangens2, Absolut, Gleitkommazahl Absolut, niedriger integer, höherer integer, gerundeter Integer | ||
+ | |} | ||
+ | |||
+ | Um die Operator-Präzedenz zu brechen, können wie üblich Klammern "( )" verwendet werden. | ||
+ | |||
+ | ==Bedingte Ausdrücke== | ||
+ | Templates können einfache bedingte Ausdrücke verwenden. Diese Ausdrücke erlauben keine Schachtelung und können nicht innerhalb numerischer Ausdrücke verwendet werden. Bedingte Ausdrücke müssen in der starren Form '''#if# ... #then# ... #else# ... #fi#''' angewendet werden. | ||
+ | * '''#if#''' zeigt den Beginn des bedingten Ausdruckes an. | ||
+ | * Zwischen '''#if#''' und '''#then#''' wird eine Zahl erwartet. Leerzeichen werden ignoriert. Wenn die Zahl größer as 0.0 ist, wird der Ausdruck als "true" anderenfalls als "false" betrachtet. | ||
+ | * Im Falle von "true" werden die Zeichen zwischen '''#then#''' und '''#else#''' verwendet um den gesammten bedingten Ausdruck im Template zu ersetzen. | ||
+ | * Im Falle von "false" werden die Zeichen zwischen '''#else#''' und '''#fi#''' verwendet um den gesammten bedingten Ausdruck im Template zu ersetzen. | ||
+ | Da die bedingten Ausdrücke erst ganz am Ende aufgelöst werden, erfolgen alle anderen Template-Ersetzungsfunktionen oder Auswertungen numerischer Ausdrücke vorher. | ||
+ | |||
==Beispiele== | ==Beispiele== | ||
Line 138: | Line 294: | ||
# Template <font face="Courier"><span style="background-color:lightgrey;">Local time is [hh]:[mm]</span></font face> wird umgewandelt in <font face="Courier"><span style="background-color:lightgrey;">Local time is 09:27</span></font face>. | # Template <font face="Courier"><span style="background-color:lightgrey;">Local time is [hh]:[mm]</span></font face> wird umgewandelt in <font face="Courier"><span style="background-color:lightgrey;">Local time is 09:27</span></font face>. | ||
# Template <font face="Courier"><span style="background-color:lightgrey;">Max gust in last 10 minutes was: [wind0wind-max10.1:--]m/s, [wind0wind-max10=mph.1:--]mph, [wind0wind-max10=kn.0:--]kn</span></font face> wird umgewandelt in <font face="Courier"><span style="background-color:lightgrey;">Max gust in last 10 minutes was: 10.5m/s, 23.5mph, 20kn</span></font face>. | # Template <font face="Courier"><span style="background-color:lightgrey;">Max gust in last 10 minutes was: [wind0wind-max10.1:--]m/s, [wind0wind-max10=mph.1:--]mph, [wind0wind-max10=kn.0:--]kn</span></font face> wird umgewandelt in <font face="Courier"><span style="background-color:lightgrey;">Max gust in last 10 minutes was: 10.5m/s, 23.5mph, 20kn</span></font face>. | ||
+ | # Template <font face="Courier"><span style="background-color:lightgrey;">Max gust in last 10 minutes was: [wind0wind-max10.1:0]m/s, {*[wind0wind-max10.1:0] * 3.6 *1}kph</span></font face> wird umgewandelt in <font face="Courier"><span style="background-color:lightgrey;">Max gust in last 10 minutes was: 10.5m/s, 37.8kph</span></font face>. | ||
+ | # Template <font face="Courier"><span style="background-color:lightgrey;">Max gust in last 10 minutes was: #if#{*[wind0wind-age:999]>600*}#then#--#else#[wind0wind-max10.1:0]m/s, {*[wind0wind-max10.1:0] * 3.6 *1}kph#fi#</span></font face> wird umgewandelt in <font face="Courier"><span style="background-color:lightgrey;">Max gust in last 10 minutes was: 10.5m/s, 37.8kph</span></font face> wenn die letzten Winddaten jünger als 10 Minuten (600 Sekunden) sind und wenn nicht, dann <font face="Courier"><span style="background-color:lightgrey;">Max gust in last 10 minutes was: --</span></font face> . | ||
+ | # Template <font face="Courier"><span style="background-color:lightgrey;">[th0temp-dmintime=apm.ij]:[th0temp-dmintime=apm.kl][th0temp-dmintime=apm.op]</span></font face> berichtet den Zeitstempel der Tagestiefsttemperatur des Aussentemperatursensors in 12-Stunden AM/PM-Notation: <font face="Courier"><span style="background-color:lightgrey;">12:34AM</span></font face> |
Latest revision as of 23:54, 3 March 2018
Meteobridge provides a very flexible mechanism to smuggle sensor data of different kinds into strings to be used by Meteobridge push services like Twitter, HTTP GET uploads or MySQL database insert requests.
Simply type in the text you want to upload and represent the pieces of sensor data by so called variables. When data gets uploaded, these variables will be replaced by current sensor data and so a string filled with the data you intended will be uploaded.
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)
- lgt0dist: Entfernung zum Blitz in Kilometern
- lgt0energy: Energie des Blitzes (keine physikalische Einheit)
- lgt0total: Anzahl Blitze
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. Da einige Wetterstationen auch geringe Batteriespannung anzeigen, sind auch Sensoren thb0lowbat, th0lowbat, etc verfügbar. Diese Sensoren zeigen einen niedrigen Batteriespannung der Basissensoren an (0 = normale Batteriespannung, 1 = niedrige Batteriespannung).
Since version 3.6 Meteobridge also supports selection of a sensor which has been defined on "Live Data" tab as primary. When no primary selection has been made all the "0" sensors (like "th0temp", "wind0wind", etc) are primary by default. But when you select "th3temp" as primary sensor and by that its data is reported as your stations outdoor temperature to all the weather networks, then you can now also select the primary sensor in your template definitions by selecting it as the "*" sensor. For example: "th*temp" selects the sensors defined as the primary outdoor temp sensor. When you use "[th*temp-act:--]" you get the current temperature of your primary outdoor temp sensor. This will be a synonym to "[th0temp-act:--] as long as you have not selected another sensor as primary outdoor temp sensor. But when you have selected "th3temp" to be the primary outdoor temp sensor, then "th*temp" will reference to "th3temp" instead of "th0temp". Please be aware that Meteobridge versions before version 3.6 will fail to evaluate "*" sensors. Therefore, it is recommended to provide both notations in a template and to make use of the conditional evaluation as explained in a later chapter. Here is an example that takes "th0temp" as default outdoor sensor on older Meteobridge versions and newer "th*temp" notation on current ones: #if{*[mbsystem-swversion:1.0]>=3.6*}#then#outdoor temp: [th*temp-act:--]°C#else#outdoor temp: [th0temp-act:--]°C#fi#
Einige Stationen unterstützen zusätzliche Temperatur/Feuchtesensoren. 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- und Blattfeuchtesensoren ausgestattete Davis Vantage verfügt, werden diese Sensoren ebenfalls als Temperatur/Feuchtesensoren geführt, allerdings ohne Berechnung eines Taupunktes. Die Bodenfeuchtesensoren weden als "th10temp", "th10hum", ..., "th13temp", "th13hum" und die Blattfeuchtesensoren als "th15temp", "th15hum", ..., "th18temp", "th18hum" geführt. Die "hum"-Werte repräsentieren 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.
Die Meteobridge PRO stellt ein paar zusätzliche Variable zur Verfügung, mit denen der Systemstatus aufgezeichnet wird:
- data10num: CPU Auslastung in Prozent
- data11num: Laufzeit in Stunden
- data12num: Nutzung der Daten-Partition in Prozent
- data13num: Nutzung des Hauptspeichers in Prozent
- data14num: Leistungsaufnahme in Watt
- data15num: Anzahl von Prozessen
- data16num: Alter der letzten Sensordatenmeldung in Sekunden
- data17num: Betriebsspannung in Volt
- data18num: aktueller Stromverbrauch in Ampere
- data19num: Gesendete Daten in Kilobytes (inkludiert Webinterface-Nutzung)
- data20num: Empfangene Daten in Kilobytes (inkludiert Webinterface-Nutzung)
Selektor
Den "Sensoren" folgt eine Selektorbezeichnung (durch ein "-" getrennt) mit der der auszuwertende Zeitraum oder Zeitpunkt angegeben wird. Die folgenden Selektoren sind definiert:
- act: aktuelle Daten
- hmin: Minimum der aktuellen Stunde
- hmax: Maximum der aktuellen Stunde
- dmin: Minimum von Heute
- dmax: Maximum von Heute
- ydmin: Minimum von Gestern
- ydmax: Maximum von Gestern
- mmin: Minimum dieses Monats
- mmax: Maximum dieses Monats
- ymin: Minimum dieses Jahres
- ymax: Maximum dieses Jahres
- amin: Minimum des gesamten Aufzeichnungszeitraumes
- amax: Maximum des gesamten Aufzeichnungszeitraumes
Sensoren, die kumulierte Werte wie "rain0total", "sol0evo", "sun0total" und "lgt0total" zeigen, sollen nur mit den folgenden Selektoren ausgewertet werden:
- hoursum, daysum oder sumday, ydaysum, monthsum, yearsum, allsum: selektiert die Summe an Inkremente für Heute, Gestern, diesen Monat, dieses Jahr, gesamten Aufzeichnungszeitraum. Beispiel: "rain0total-sumday" ist die heutige Regenmenge.
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
- nonzerotime: timestamp of last occurrence of a nonzero 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 suppressed.
- age: reports seconds elapsed since last reception of data for that particular sensor.
- hold: reports seconds elapsed since last reception of data for that particular sensor, but returns invalid value when age is beyond data hold period of 300 seconds. This allows to return invalid status instead large number of seconds for sensors having dropped off long time ago.
Neben obigen Selektoren, die fest definierte Zeitfenster selektieren, kann mit den folgenden Selektoren eine Auswertung für einen relativen Zeitraum in die Vergangenheit durchgeführt werden. Die Rückschau reicht wegen der begrenzten Speicherausstattung der Meteobridge nur bis zu 60 Minuten in die Vergangenheit.
- val1, val2, val13, ..., val60: selektiert den Sensorwert von vor einer bis 60 Minuten
- max1, max2, max3, ..., max60: selektiert das Maximum der letzten einen bis 60 Minuten
- min1, min2, min3, ..., min60: selektiert das Minimum der letzten einen bis 60 Minuten
- avg1, avg2, avg3, ..., avg60: selektiert den Durchschnittswert der letzten einen bis 60 Minuten
Sensoren wie "rain0total" und "sol0evo", die kumulierte Werte liefern, können wegen der geringeren Abtastdichte (1 Wert pro Minute) bis zu 24 Stunden in die Vergangenheit ausgewertet werden:
- sum1, sum2, sum3, ..., sum60, sum1h, sum2h, sum3h, ..., sum24h: selektiert zusammengerechnete Deltawerte der letzten einen bis 60 Minuten oder der letzten einen bis 24 Stunden, welches zum Berechnen der gefallenen Regenmenge im definierten Zeitraum erforderlich ist. Beispiel: "rain0total-sum60" ergibt die gefallene Regenmenge in mm der letzten 60 Minuten.
- delta1, delta2, delta3, ..., delta60, delta1h, delta2h, delta3h, ..., delta24h: zeigt die Differenz zwischen dem aktuellen Sensorwert und dem Sensorwert vor 1 bis 60 Minuten oder dem Sensorwert vor 1 bis 24 stunden. Eine positiver Wert zeigt ein Ansteigen über die Zeit an, ein negativer Wert ein Abfallen. Diese Daten sind für Trendanalysen über unterschiedliche Betrachtungszeiträume hilfreich.
Meteobridge PRO Additions
Selectors val, min, max, avg, sum, mintime, maxtime can be combined with a "@YYYYMMDDhh" specifier, which determines the point in time where the data should be taken from. This specifier also defines if data should be used on a per hour, per day, per month or per year resolution. To get data in a per hour resolution the specifier needs to define the point in time down to the hour. Example: "min@2015121909" selects minimum data from December 19, 2015 09:00 until 9:59 (on a per hour base). This is how the specifier works:
- @YYYY selects data for the specified year. Example: Using "[th0temp-min@2015]" in a template will report minimum outdoor temperature of 2015. When "YYYY" is not defining a valid year but is in the range of "0000" to "0010" then "0000" is interpreted as the current year, "0001" as the previous year and so on. In that situation the 4 digit number expresses how many years to skip into the past. These skips need to be in 4-digit style, leading zeros are not allowed to be omitted.
- @YYYYMM selects data for the specified month. Example: Using "[wind0wind-max@201509]" in a template will report maximum wind speed (gust) of September 2015.
- @YYYYMMDD selects data for the specified day. Example: Using "[rain0total-sum@20151031]" in a template will report total rainfall on October 31, 2015.
- @YYYYMMDDhh selects data for the specified hour. Example: Using "[uv0index-avg@2015110316]" in a template will report average UV index on November 3, 2015 between 16:00 and 16:59.
Neben der im vorangegangenen Abschnitt erläuterten Selektion von Daten mittels absoluter Zeitpunkte ist es auch möglich, relativ zum jetzigen Zeitpunkt Daten in der Vergangenheit zu selektieren. Relative Zeitpunkte können in Jahren, Monaten, Tagen, Stunden und Minuten angegeben werden. Dabei liefert eine Selektion über das Jahr jährliche Daten, eine Selektion über den Monat monatliche Daten, etc. Die folgenden relativen Zeitpunktbezeichner sind möglich:
- @Yn selektiert die jährlichen Daten des Jahres, das n Jahre zurückliegt. Beispiel: Im Jahr 2016 ergibt "[th0temp-max@Y1]" die maximale Aussentemperatur des Jahres 2015, während "@Y3" die Daten des Jahres 2013 selektiert.
- @Mn selektiert die monatlichen Daten des Monats, der n Monate zurückliegt. Beispiel: "[wind0wind-max@M0] liefert die maximale Windgeschwindigkeit des aktuellen Monats, während "[wind0wind-max@M1]" die maximale Windgeschwindigkeit des Vormonats liefert.
- @Dn selektiert die täglichen Daten des Tages, der n Tage zurückliegt. Beispiel: "[th0temp-min@D7]" liefert die Tagesdaten von vor einer Woche.
- @hn selektiert die stündlichen Daten der Stunde, die n Stunden zurückliegt.
val zeigt grundsätzlich dieselben Werte wie "avg". Bei minütlicher Auflösung zeigt "val" den Durchschnitt der Werte der Minute, falls mehrere Werte in der Minute angeliefert wurden.
mintime und maxtime zeigen den Zeitstempel des gesuchten Minimums oder Maximums in dem definierten Zeitraum. Der Zeitstempel wird in der Notation "YYYYMMDDhhmmss" in Sekundenauflösung berichtet.
Konverter
Die Sensordaten werden als Voreinstellung in ISO Einheiten berichtet (°C, hPa, mm, m/s). Durch den Einsatz von Konvertern können die Einheiten auf non-ISO Einheiten umgerechnet werden. Definierte Konverter sind:
- F wandelt die Temperature von Celsius in Fahrenheit um.
- psi wandelt Luftdruck von hPa (entspricht auch mbar) in psi um.
- mmHg wandelt Luftdruck von hPa in Millimeter Quecksilbersäule um.
- inHg wandelt Luftdruck von hPa in Inch Quecksilbersäule um.
- kmh wandelt Windgeschwindigkeit von m/s in Kilometer pro Stunde um.
- mph wandelt Windgeschwindigkeit von m/s in Meilen pro Stunde um.
- kn wandelt Windgeschwindigkeit von m/s in Knoten um.
- bft wandelt Windgeschwindigkeit von m/s in die Beaufort-Skala um.
- in wandelt der Regenmenge von mm in Inch um.
- ft wandelt eine Höhe von Metern in Fuß (feet) um.
- mls wandelt eine Entfernung von Kilometern in Meilen um.
- endir wandelt die Windrichtung in einen von 16 Englischen Richtungstexten um.
- nldir wandelt die Windrichtung in einen von 16 Holländischen Richtungstexten um.
- dedir wandelt die Windrichtung in einen von 16 Deutschen Richtungstexten um.
- barotrend wandelt eine Differenzmessung (Selektor delta) in eine Barometertrendanalyse:
- -2: delta <= -2 hPa
- -1: -2 hPa < delta <= -1 hPa
- 0: -1 hPa < delta < +1 hPa
- +1: +1 hPa <= delta < +2 hPa
- +2: +2 hPa <= delta
- enbarotrend berichtet den Trend als Zeichenkette FF, FS, ST, RS, RF.
Wird eine unbekannte Konvertierung gewählt, findet keine Umrechnung statt und es erfolgt keine Fehlermeldung. Die Konverter "F", "psi", "mmHg", "inHg", "kmh", "mph", "kn", "bft", "in", "ft" können durch einen Multiplizierer ergänzt werden. Beispiel: Konverter "F10" bewirkt, dass die Temperatur des sensors auf Grad Fahrenheit umgerechnet und mit 10 multiplizert wird. Anders ausgedrückt, die Temperatur des Sensors wird in 1/10 Fahrenheit ausgegeben. Als Sonderfall kann auch nur der Multiplier verwendet werden, der dann ohne Einheitenumrechnung auf die Sensordaten angewendet wird.
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.
- apm berichtet den Zeitstempel in AM/PM-Notation. Beispiel: "201603011123344AM" steht für den 11. März 2016 um 12:33:44 AM".
Forecast Variables
When you are using a Davis Vantage station, it provides a couple of forecast rules, which Meteobridge can report via template variables. All forcast variables start with sensor name "forecast" followed by one of these selectors:
- rule: reports Vantage rule number. When no rule present (or not a Vantage this will be a negative number).
- text: reports forecast text in English
- textde: reports in German (UTF-8 coded)
- textdeiso: reports in German (ISO-8859 coded)
- textdehtml: reports in German (HTML coded)
- textit: reports in Italian
- textnl: reports in Dutch
- textest: reports in Estonian
- texthr: reports in Hungarian
- textcz: reports in Czech
When converter "us" is added, all blanks are replaced by underscores.
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 (example: "WMR-200")
- stationnum: integer that specifies selected weather station (example: 49)
- 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
- cpuload1m, cpuload5m, cpuload15m shows average cpu load during last 1, 5, 15 minutes
- ip: IP address
- lanip: IP address on the LAN port (if connected)
- wlanip: IP address of the WLAN (if connected)
- 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 meaningful sensor data recorded, returns -1 if no sensor data recorded so far
- solarmax: maximum possible solar radiation on that day at that point of the earth. Needs latitude and longitude set and pressure data available.
- 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")
- daylengthmin: length of shortest day of the year
- daylengthmax: length of longest day of the year
- civildaylength: alternative method for day length computation (example: "12:38")
- civildaylengthmin: length of shortest day of the year according to civil day length computation
- civildaylengthmax: length of longest day of the year according to civil day length computation
- nauticaldaylength: alternative method for day length computation (example: "14:00")
- nauticaldaylengthmin: length of shortest day of the year according to nautical day length computation
- nauticaldaylengthmax: length of longest day of the year according to nautical day length computation
- sunrise: returns time of astronomical sunrise in local time. Can be converted to UTC by applying "=utc" to the variable (example: "06:47", resp. "05:47") or can be converted to 12h time mode by applying "=apm" (example: "8:45AM").
- sunset: returns time of astronomical sunset in local time. Can be converted to UTC by applying "=utc" to the variable (example: "18:15", resp. "17:15") or can be converted to 12h time mode by applying "=apm" (example: "12:45AM").
- civilsunrise, civilsunset, nauticalsunrise, nauticalsunset: alternative computations for sunset and sunrise. These can also be converted to UTC ("=utc") or AM/PM ("=apm") as "sunrise and sunset".
- daynightflag: returns "D" when there is daylight, otherwise "N" (civil sunrise/sunset is used as reference).
- isday: returns "1" when there is daylight, otherwise "0" (civil sunrise/sunset is used as reference).
- isnight: returns "0" when there is daylight, otherwise "1" (civil sunrise/sunset is used as reference).
- moonrise: time of moonrise in local time. Can be converted to UTC or AP/PM notation by applying "=utc" resp. "=apm" 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 converted to UTC or AP/PM notation by applying "=utc" resp. "=apm" 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"
Konverter für System-Variable
Meteobridge stellt Konverter zur Berechnung von Tageslängen zur Verfügung. Üblicherweise werden Tageslängen in einer "HH:MM" Notation angezeigt. Dies kann bei Bedarf mit folgenden Konvertern geändert werden:
- secs gibt die Dauer in Sekunden aus.
- mins gibt die Dauer in Minuten (mit dezimalen Nachkommastellen) aus.
- hours gibt die Dauer in Stunden (mit dezimalen Nachkommastellen) aus.
Zeitstempel können ebenfalls konvertiert werden. Die normale Form ist die "HH:MM" Notation in lokaler Zeit, die mit folgenden Konvertern modifiziert werden kann: applied:
- utc gibt die Zeit in UTC anstelle der lokalen Zeit aus.
- apm gibt die Zeit in der amerikanischen AM/PM Notation aus.
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
- epoch: Anzahl von Sekunden seit dem 1.1.1970
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 Angabe nur aus Nullen besteht (keine Nachkommastellen erforderlich), dann wird das Ergebnis mit führenden Nullen ergänzt, so dass die Anzahl Ziffern der Anzahl der angegeben Nullen entspricht. Beispiel: [th0temp-act.000:--] ergibt "008", wenn die Außentemperatur 8.2° Celsius ist.
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. When you are looking for a non-rounded, truncated integer then *t} will do the job. When you need an output with a certain number of leading zeros, you can specify this the same way as explained in "Decimals" paragraph on this page.
In numerischen Ausdrücken können diese Operatoren verwendet werden:
Operator / Funktion | Beschreibung |
---|---|
&&, ||, &, | | logische "UND", "ODER" Operatoren arbeiten im Wertebereich "1=true" und "0=false" |
==, =, !=, <>, >, >=, <, <= | Vergleichsoperatoren arbeiten im Wertebereich "1=true" und "0=false" |
+, - | Arithmetische Operatoren "Plus" und "Minus" |
*, /, % | Arithmetische Operatoren "Multiplikation", "Division" and "Modulus" (welches die Operanden implizit zuerst auf Integer rundet) |
^ | Arithmetischer Operator "Hoch" |
sqrt(), log(), exp(), sin(), asin(), cos(), acos(), tan(), atan(), atan2(), abs(), fabs(), floor(), ceil(), round() | Arithmetische Funktionen: Quadratwurzel, Logarithmus, logarithmischer Exponent, Sinus, Arcus Sinus, Cosinus, Arcus Cosinus, Tangens, Arcus Tangens, Arcus Tangens2, Absolut, Gleitkommazahl Absolut, niedriger integer, höherer integer, gerundeter Integer |
Um die Operator-Präzedenz zu brechen, können wie üblich Klammern "( )" verwendet werden.
Bedingte Ausdrücke
Templates können einfache bedingte Ausdrücke verwenden. Diese Ausdrücke erlauben keine Schachtelung und können nicht innerhalb numerischer Ausdrücke verwendet werden. Bedingte Ausdrücke müssen in der starren Form #if# ... #then# ... #else# ... #fi# angewendet werden.
- #if# zeigt den Beginn des bedingten Ausdruckes an.
- Zwischen #if# und #then# wird eine Zahl erwartet. Leerzeichen werden ignoriert. Wenn die Zahl größer as 0.0 ist, wird der Ausdruck als "true" anderenfalls als "false" betrachtet.
- Im Falle von "true" werden die Zeichen zwischen #then# und #else# verwendet um den gesammten bedingten Ausdruck im Template zu ersetzen.
- Im Falle von "false" werden die Zeichen zwischen #else# und #fi# verwendet um den gesammten bedingten Ausdruck im Template zu ersetzen.
Da die bedingten Ausdrücke erst ganz am Ende aufgelöst werden, erfolgen alle anderen Template-Ersetzungsfunktionen oder Auswertungen numerischer Ausdrücke vorher.
Beispiele
Anbei ein paar Beispiele, die helfen, den Ersetzungsmechanismus besser zu verstehen.
- Template Outdoor temperature is [th0temp-act=F.1:--]°F wird umgewandelt in Outdoor temperature is 3.4°F, wenn keine Außentemperatur vorliegt erscheint Outdoor temperature is --°F.
- Template Local time is [hh]:[mm] wird umgewandelt in 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 wird umgewandelt in 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 wird umgewandelt in Max gust in last 10 minutes was: 10.5m/s, 37.8kph.
- Template Max gust in last 10 minutes was: #if#{*[wind0wind-age:999]>600*}#then#--#else#[wind0wind-max10.1:0]m/s, {*[wind0wind-max10.1:0] * 3.6 *1}kph#fi# wird umgewandelt in Max gust in last 10 minutes was: 10.5m/s, 37.8kph wenn die letzten Winddaten jünger als 10 Minuten (600 Sekunden) sind und wenn nicht, dann Max gust in last 10 minutes was: -- .
- Template [th0temp-dmintime=apm.ij]:[th0temp-dmintime=apm.kl][th0temp-dmintime=apm.op] berichtet den Zeitstempel der Tagestiefsttemperatur des Aussentemperatursensors in 12-Stunden AM/PM-Notation: 12:34AM