Zum Inhalt springen

Covid-19 Landkreis News als Push Mitteilungen aufs Smartphone

In der heutigen Zeit interessieren wir (meine Frau und Ich) uns natürlich für die aktuellen Coronafallzahlen in unserem Landkreis. Das haben wir bisher immer über die Webseite des RKI getan. Da das aber unter Umständen sehr mühsam seien kann habe ich mich dazu entschieden das Ganze zu automatisieren und Push Mitteilungen verschicken zu lassen. Wie ich das getan habe, möchte ich in diesem Beitrag gerne etwas ausführlicher beschreiben.

Vorwort

Wir benutzen für unser SmartHome IP Symcon als Steuerzentrale. IP Symcon läuft auf einem Raspberry Pi* im Schaltschrank und die Programmierung erfolgt in der Programmiersprache PHP. Auch das Versenden von Push Mitteilungen steuert IP Symcon (Cloud Service von Symcon + APP). Dieser Beitrag richtet sich aber nicht nur an IP Symcon User. Die Datenbasis wird auch von anderen Systemen wie z.B. OpenHab oder Node-Red unterstützt.

IP Symcon Dashboard
Dashboard unserer IP Symcon Installation

Woher kommen die Daten?

Jeder kennt wahrscheinlich das Covid-19 Dashboard des Robert-Koch-Instituts. Was allerdings nicht so bekannt seien dürfte, ist der Covid-19 Datenhub. Dieser Service stellt alle Informationen zu Covid-19 Fallzahlen als REST-API zur Verfügung. Mithilfe des Datenhubs können externe Webseiten oder Programme auf die aktuellen Fallzahlen zugreifen. Wir nutzen die Daten der Landkreise für diesen Beitrag.

RKI Corona Landkreise Map

Wie kommen wir nun an die Daten?

Der Covid-19 Datenhub bietet einen sogenannten „API Explorer“ an, mit dessen Hilfe man sich eine URL Abfrage bauen kann. Für uns interessante Informationen sind:

  • Inzidenz
  • Anzahl aktuell erkrankter Personen
  • Todesfälle
  • Letzte Aktualisierung

Um an diese Informationen zu kommen, konfigurieren wir nun die Abfrage im API Explorer. Damit auch nur unser Landkreis Germersheim angezeigt wird, ist es wichtig einen Filter in der Abfrage auf „GEN |TEXT“ zu setzen. Hier trägt man den Landkreis ein und drückt dann die Eingabetaste um den Filter hinzuzufügen.

API Explorer Abfrage


Um die Antwort der Abfrage möglichst klein zuhalten, aktivieren wir nur folgende Außenfelder in der Abfrage:

  • cases
  • deaths
  • last_update
  • cases7_per_100k_txt
Covid-19 Datenhub Aussenfelder


Jetzt können wir die Abfrage URL in die Zwischenablage kopieren.

Abfrage URL


Wenn wir uns die URL im Browser anzeigen lassen, erhalten wir einen Text im JSON Format. Dieser Text ist für uns Menschen natürlich schlecht lesbar, für die Datenweiterverarbeitung aber perfekt.

JSON Repsonse


Diese Abfrage kann nun auch in anderen Systemen wie zuvor beschrieben verwendet werden. Eine Decodierung des JSON Stings ist sowohl in OpenHab als auch in Node-Red möglich.

Datenverarbeitung in IP Symcon

Wie schon geschrieben, nutzt IP Symcon zur Programmierung die Programmiersprache PHP. Um die Daten in IP Symcon einzulesen, bedarf es zuerst etwas Vorarbeit. Zuerst werden Variablen erstellt, in die später die Werte geschrieben werden können. Dazu wählen wir uns eine Kategorie aus und klicken dann auf „Objekt hinzufügen“→“Variable“.

IP Symcon Variablen erstellen
Erstellen einer Variable in IP Symcon

Das Ganze machen wir für insgesamt 5 Variablen und wählen jeweils den passenden Typ der Variable. Um die Push Mitteilungen zu versenden sind nur die Variablen: lastUpdate und message notwendig. Die 3 anderen Variablen nutzen wir, um die Werte später im Dashboard anzeigen zu lassen.

IP Symcon Variablen Typ mit Message für Push Mitteilungen


Danach erstellen wir ein Script, welches die Daten vom Covid-19 Datenhub abruft, die Werte aus dem JSON String decodiert und dann in die zuvor erstellten Variablen schreibt. Dazu wählen wir wieder die Kategorie aus und erstellen ein Script mit dem Namen „getRKIData“.

IP Symcon Script erstellen


Es öffnet sich dann automatisch der Code Editor. Hier hinein kopieren wir das folgende Script. Die zuvor kopierte „Abfrage URL“ kopieren wir jetzt hinter „Sys_GetURLContent“.

<?php

//load json response in $content variable 
$content = Sys_GetURLContent("https://services7.arcgis.com/mOBPykOjAyBO2ZKk/arcgis/rest/services/RKI_Landkreisdaten/FeatureServer/0/query?where=GEN%20%3D%20%27GERMERSHEIM%27&outFields=cases,deaths,OBJECTID,last_update,cases7_per_100k_txt&outSR=4326&f=json");

//decode json
$json = json_decode($content);

//set values
SetValueString(31965,$json->features[0]->attributes->cases7_per_100k_txt);
SetValueInteger(41808,$json->features[0]->attributes->cases);
SetValueInteger(40691,$json->features[0]->attributes->deaths);
SetValueString(41217,$json->features[0]->attributes->last_update);
SetValueString(43961,"LK Germersheim -> Inzidenz: ".$json->features[0]->attributes->cases7_per_100k_txt." | Aktuell Erkrankte: ".$json->features[0]->attributes->cases." | Totesfälle: ".$json->features[0]->attributes->deaths);

?>

Da die Aktualisierung der Daten seitens RKI nur 1x am Tag stattfindet, reicht es aus das Script alle 60 Minuten auszuführen. Dazu weisen wir dem Script ein Ereignis zu, indem wir mit der rechten Maustaste auf das Script klicken und dann auf „Objekt hinzufügen“ → „Ereignis“ → „Zyklisch“ klicken.

IP Symcon Ereignis erstellen


In folgendem Popup stellen wir ein, das das Script jeden Tag alle 60 Minuten ausgeführt wird.

IP Symcon zyklisches Ereignis


Sobald das Script nun alle 60 Minuten ausgeführt wird, werden die erstellten Variablen beschrieben.

Push Mitteilungen erstellen

Jetzt fehlt uns noch die eigentliche Push Mitteilung auf unser Smartphone. Dazu erstellen wir wie zuvor ein Script, nur dieses Mal mit dem Namen „send_message“ direkt unter der Variable „lastUpdate“.

IP Symcon Push Mitteilungen


Folgenden Code kopieren wir in den Code Editor.

<?php

WFC_PushNotification(49262,"Aktuelle Covid News", GetValueString(43961), "connected",0);

?>

Hier wird eine Push Mitteilung mit dem Titel „Aktuelle Covid News“ und dem Text aus der Variable 43961, welche durch das vorherige Script beschrieben wurde, an unsere Smartphones gesendet. Damit aber nicht alle 60 Minuten eine Push Mitteilung gesendet wird, müssen wir dafür sorgen das die Mitteilung nur gesendet wird sobald sich die Variable „lastUpdate“ ändert. Dazu klicken wir auf das erstellte „send_message“ Script und fügen ein „ausgelöstes Ereignis“ ein.

IP Symcon Ereignis ausgelöst für Push Mitteilungen


Im darauf folgenden Popup wählen wir als auslösende Variable „lastUpdate“ aus und stellen bei „Auslöser“ → „Bei Veränderung“ ein und klicken dann auf OK.

IP Symcon Ereignis konfigurieren für Push Mitteilungen

Push Mitteilungen versenden

Das Senden der Push Mitteilungen übernimmt IP Symcon automatisch. Sobald sich nun die Variable „lastUpdate“ ändert, führt IP Symcon das Script „send_message“ aus und wir erhalten unsere Push Mitteilung.

Push Mitteilungen erhalten

Das war es auch schon mit meinem ersten Gast Beitrag hier auf dem Mojo-Blog. Ich hoffe der Beitrag war für den ein oder anderen Interessant und vielleicht sogar nützlich 🙂

Gruß
Kay

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert