{"id":6803,"date":"2016-03-20T10:46:27","date_gmt":"2016-03-20T09:46:27","guid":{"rendered":"http:\/\/blog.wenzlaff.de\/?p=6803"},"modified":"2023-10-27T17:54:30","modified_gmt":"2023-10-27T15:54:30","slug":"zitat-des-tages","status":"publish","type":"post","link":"http:\/\/blog.wenzlaff.de\/?p=6803","title":{"rendered":"Wie kann auf einem Raspberry Pi mit OpenHAB ein Zitat des Tages mit Karotz angesagt und per Pushover versendet werden?"},"content":{"rendered":"<p>Auf der Website taeglicheszit.at gibt es t\u00e4glich ein Zitat des Tages. F\u00fcr diesen Service gibt es auch eine JSON Schnittstelle. <\/p>\n<p>Die kann wie folgt genutzt werden, um t\u00e4glich das Zitat anzusagen und per pushover zu versenden.<\/p>\n<p><a href=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2016\/03\/karotz-zitat.png\" rel=\"attachment wp-att-6809\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2016\/03\/karotz-zitat.png\" alt=\"karotz-zitat\" width=\"640\" height=\"452\" class=\"aligncenter size-full wp-image-6809\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2016\/03\/karotz-zitat.png 640w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2016\/03\/karotz-zitat-300x212.png 300w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a><\/p>\n<p>Voraussetzung ist das OpenHAB installiert ist und l\u00e4uft. <\/p>\n<p>Dann eine <strong>Karotz.items<\/strong> Datei im <strong>items<\/strong> Verzeichnis anlegen mit dem Inhalt von zwei Variablen f\u00fcr das Zitat und den Autor:<\/p>\n<pre class=\"lang:default decode:true \" >\r\nString ZitatDesTages \"[%s]\"        { http=\"&lt;[http:\/\/taeglicheszit.at\/zitat-api.php?format=json:86400000:JS(getZitatDesTages.js)]\" } \r\nString ZitatDesTagesAutor \"[%s]\"   { http=\"&lt;[http:\/\/taeglicheszit.at\/zitat-api.php?format=json:86400000:JS(getZitatDesTagesAutor.js)]\" } \r\n<\/pre>\n<p>Die Variablen werden einmal am Tag automatisch aktualisiert.<\/p>\n<p>Dann brauchen wir noch zwei Dateien im <strong>transform<\/strong> Verzeichnis f\u00fcr die JSON Auswertung: <strong>getZitatDesTages.js<\/strong> mit dem Ihhalt<\/p>\n<pre class=\"lang:default decode:true \" >JSON.parse(input).zitat;<\/pre>\n<p>und <strong>getZitatDesTagesAutor.js<\/strong> mit dem Inhalt<\/p>\n<pre class=\"lang:default decode:true \" >JSON.parse(input).autor;<\/pre>\n<p> <!--more--><\/p>\n<p>Damit die Variablen beim Systemstart inizialisiert werden brauchen wir diese Regel in der <strong>Karotz.rules<\/strong> Datei:<\/p>\n<pre class=\"lang:default decode:true \" >rule \"Ini bei Systemstart\"\r\n when\r\n\t System started\r\n then\r\n\t\tlogInfo(\"Karotz\", \"Systemstart\")\r\n\t\t\r\n\t\tZitatDesTages.initialize;\r\n\t\tZitatDesTagesAutor.initialize;\r\n\t\tlogInfo(\"Karotz\", \"Systemstart init Zitat des Tages: \" + ZitatDesTages.state + \" von \" + ZitatDesTagesAutor.state)\r\nend\t<\/pre>\n<p>Und noch eine Regel um jeden Tag um 16:16 Uhr das Zitat anzusagen und per Pushover zu versenden.<\/p>\n<pre class=\"lang:default decode:true \" >\r\n\r\n\/\/ Die URL zu dem KAROTZ CGI-BIN Verzeichnis, Adresse anpassen\r\nvar String KAROTZ_CGI=\"http:\/\/9.9.9.9\/cgi-bin\/\"\r\n\r\nrule \"Zitat des Tages um 16:16 Uhr ansagen und per pushover versenden\"\r\n when\r\n\t  Time cron \"0 16 16 * * ?\" \r\n then\r\n \t\tvar zitat = \"Das Zitat des Tages lautet: \" + ZitatDesTages.state + \" von \" + ZitatDesTagesAutor.state\r\n \t\t\r\n\t\tlogInfo(\"Karotz\", zitat)\r\n\t\tpushover(zitat)\r\n\t\t\r\n\t\tsendHttpGetRequest(KAROTZ_CGI + \"tts?voice=julia&amp;text=\" + zitat.encode('UTF-8') + \"&amp;nocache=0\")  \r\nend\t\r\n<\/pre>\n<p>Hast Du noch eine andere Idee bzw. Seite mit guter REST oder JSON Schnittstelle? Dann hier als Kommentar posten.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Auf der Website taeglicheszit.at gibt es t\u00e4glich ein Zitat des Tages. F\u00fcr diesen Service gibt es auch eine JSON Schnittstelle. Die kann wie folgt genutzt werden, um t\u00e4glich das Zitat anzusagen und per pushover zu versenden. Voraussetzung ist das OpenHAB installiert ist und l\u00e4uft. Dann eine Karotz.items Datei im items Verzeichnis anlegen mit dem Inhalt &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/blog.wenzlaff.de\/?p=6803\" class=\"more-link\"><span class=\"screen-reader-text\">\u201eWie kann auf einem Raspberry Pi mit OpenHAB ein Zitat des Tages mit Karotz angesagt und per Pushover versendet werden?\u201c <\/span>weiterlesen<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[220,852,290,2426,79],"tags":[2451,1269,2185,1687,2450,2449],"class_list":["post-6803","post","type-post","status-publish","format-standard","hentry","category-anleitung","category-heimautomatisierung","category-karotz","category-openhab","category-programmierung","tag-ansagen","tag-homeautomatisation","tag-karotz","tag-openhab","tag-zitat","tag-zitat-des-tages"],"_links":{"self":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/6803","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=6803"}],"version-history":[{"count":0,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/6803\/revisions"}],"wp:attachment":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=6803"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=6803"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=6803"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}