Auf der Website taeglicheszit.at gibt es täglich ein Zitat des Tages. Für diesen Service gibt es auch eine JSON Schnittstelle.
Die kann wie folgt genutzt werden, um täglich das Zitat anzusagen und per pushover zu versenden.
Voraussetzung ist das OpenHAB installiert ist und läuft.
Dann eine Karotz.items Datei im items Verzeichnis anlegen mit dem Inhalt von zwei Variablen für das Zitat und den Autor:
1 2 |
String ZitatDesTages "[%s]" { http="<[http://taeglicheszit.at/zitat-api.php?format=json:86400000:JS(getZitatDesTages.js)]" } String ZitatDesTagesAutor "[%s]" { http="<[http://taeglicheszit.at/zitat-api.php?format=json:86400000:JS(getZitatDesTagesAutor.js)]" } |
Die Variablen werden einmal am Tag automatisch aktualisiert.
Dann brauchen wir noch zwei Dateien im transform Verzeichnis für die JSON Auswertung: getZitatDesTages.js mit dem Ihhalt
1 |
JSON.parse(input).zitat; |
und getZitatDesTagesAutor.js mit dem Inhalt
1 |
JSON.parse(input).autor; |
Damit die Variablen beim Systemstart inizialisiert werden brauchen wir diese Regel in der Karotz.rules Datei:
1 2 3 4 5 6 7 8 9 10 |
rule "Ini bei Systemstart" when System started then logInfo("Karotz", "Systemstart") ZitatDesTages.initialize; ZitatDesTagesAutor.initialize; logInfo("Karotz", "Systemstart init Zitat des Tages: " + ZitatDesTages.state + " von " + ZitatDesTagesAutor.state) end |
Und noch eine Regel um jeden Tag um 16:16 Uhr das Zitat anzusagen und per Pushover zu versenden.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
// Die URL zu dem KAROTZ CGI-BIN Verzeichnis, Adresse anpassen var String KAROTZ_CGI="http://9.9.9.9/cgi-bin/" rule "Zitat des Tages um 16:16 Uhr ansagen und per pushover versenden" when Time cron "0 16 16 * * ?" then var zitat = "Das Zitat des Tages lautet: " + ZitatDesTages.state + " von " + ZitatDesTagesAutor.state logInfo("Karotz", zitat) pushover(zitat) sendHttpGetRequest(KAROTZ_CGI + "tts?voice=julia&text=" + zitat.encode('UTF-8') + "&nocache=0") end |
Hast Du noch eine andere Idee bzw. Seite mit guter REST oder JSON Schnittstelle? Dann hier als Kommentar posten.