Als erstes möchte ich hier Hendrik Friedel danken, der die Logik auf der diese Beschreibung basiert, entwickelt bzw. geschrieben hat.
Hier nun ein Beispiel, wie man die Wetterdaten einer Wetterstation aus der eigenen näheren Umgebung einbinden kann und die Werte bei Bedarf auf den Bus bekommt.
Hierfür verwenden wir die API von Wunderground.com und lesen diese aus.
Als ersten sucht man sich eine Wetterstation seiner Wahl. In diesem Beispiel wollen wir die Daten einer Wetterstation aus Rostock auslesen.
Dazu geht man auf http://www.wunderground.com/ und gibt bei "Search Stations" den Suchbegriff Rostock ein. Nun wartet man bis die Seite vollständig geladen ist und kann dann bei Bedarf über "Change Station" eine Station seiner Wahl ausssuchen.
Für dieses Beispiel entscheiden wir uns für die Station:
Jetzt überprüft man, ob und was in der API verfügbar ist. Dazu nimmt man die obenere, in Klammer stehende Bezeichnung der Station (IMECKLEN47) und fügt sie in einen Web-Aufruf wie folgt ein:
Diese URL rufen wir nun im Browser auf und sehen, nachdem das XML-File im Browser geladen wurde, welche Informationen zur Verfügung stehen.
Im nächsten Schritt erstellt man eine Datei mit dem Namen wunderground.py im Verzeichnis
/usr/smarthome/etc/logic.yaml
und fügt dort diesen Inhalt ein. Danach die Datei speichern.
Jetzt gibt man noch vor, wann die Logik getriggert werden soll. Dies macht man in der
/usr/smarthome/etc/logic.yaml
und gibt dort z.B. folgendes ein.
Über cycle: 60 wurde hier z.B. festgelegt, das die Logik alle 60 Sekunden getriggert wird und somit die Daten aus der XML ausliest.
Über crontab: init wurde hier z.B. festgelegt, das die Logik bei einem Neustart von SmartHomeNG getriggert wird und somit die Daten aus der XML ausliest
Nun zu den Items. Hierzu erstellt man als erstes eine Datei mit dem Namen wetter_wounderground.yaml im Verzeichnis
/usr/smarthome/items/
In den Items legt man auch gleich fest, ob man den ausgelesenen Wert auf den Bus senden und/oder den Wert in der Datenbank speichern möchte.
Weiterhin gibt man im Item die URL zur XML mit an.
Anbei ein kleines Item-Beispiel für einen mumerische-(z.B. Temperatur) und einen string-Wert (z.B. Stationsname).
Über xmlstring = ..... im Item legt man fest, welchen Wert man aus der XML auslesen möchte.
Über die eval-Funktion ist es nun auch möglich, Umrechnungen von abgefragten Werten vorzunehmen. Beispielsweise die Umrechnung von mph in km/h.
Dazu fügt man folgende Zeilen in das Item am Ende ein.
In diesem Beispiel wird der Wert der Wingeschwindigkeit wieder auf eine GA gesendet und gleichzeitig für die Darstellung in einem Plot in der Datenbank gespeichert.
Das Item zu dem oberen Block-Beispiel könnte so ausehen.
Fehlt letztlich noch der html-Teil. Dieser stellt sich recht simpel dar, da wir in diesem Beispiel nur 3 Widgets verwenden.
Der Code für das obere Block-Beispiel könnte so ausehen