Willkommen im Loxone Community Forum. Um alle Funktionen nutzen und sehen zu können, registriere dich bitte zuerst. Dies gilt auch für das herunterladen von Dateien.
Dieser Bereich ist für fertige Lösungen gedacht. Nutze bitte für Diskussionen die anderen Bereiche.
mal wieder ein kleines Projekt für alle, die am aktuellen Inzidenz Wert ihres jeweiligen Landkreises interessiert sind.
Einbindung entweder per TTS und direkter Durchsage am Morgen oder per virtuelle Status:
Realisiert wird das Ganze über das FHEM Plugin und ein JsonMod Objekt (! ggf. ist ein Update von FHEM notwendig). Details und Tutorials finden sich im Netz.
Anbei noch die Einstellungen für das JsonMod Objekt:
Also 35 ist das neue 50 (Inzidenz) und viel Spaß beim proBIERen! ;-)
Ok, zu früh gefreut. Die Endpunkte von https://api.corona-zahlen.org/docs/ laufen nur mit https. Postman scheint http automatisch auf https umzuleiten, wenn der Server das anmeckert.
Alle MS Gen 1 User (wie ich) sind damit raus. Ich hab mal ein Feature Request auf GitHub aufgemacht, vielleicht will ja noch jemand hochvoten https://github.com/marlon360/rki-covid-api/issues/102
Für alle MS Gen 2 User sollte es aber kein Problem sein. Je Statistik einen Virtuellen Eingang erstellen, für Deutschland wäre es diese URL: https://api.corona-zahlen.org/germany für einen bestimmten Landkreis diese URL http://api.corona-zahlen.org/districts/08117 . Die Zahl 08117 entspricht den ersten 5 Stellen des Gemeindeschlüssels, z. B. hier zu finden: https://www.riserid.eu/data/user_upl...l-AGS-2015.pdf
Der Abrufzyklus sollte denke ich nicht höher als 3600 (eine Stunde) gestellt werden, die Zahlen werden ja sowieso nur 1x am Tag aktualisiert.
Unterhalb des virtuellen HTTP Eingangs legt man dann einen Virtuellen HTTP Eingang Befehl an. Je nach Wert den man auslesen will, muss man als Befehlserkennung z. B. eine der Folgenden Befehle nehmen:
\iweekIncidence":\i\v (7 Tages Inzident)
\icasesPerWeek":\i\v (Anzahl Infizierte innerhalb der letzten 7 Tage)
...
Den Virtuellen HTTP Eingang Befehl zieht man dann in die Config auf eine Seite und das war's. Konnte es nicht testen, aber so sollte es gehen.
Ich habe das wie vorgeschlagen mittels Virtuellem HTTP Eingang und -Befehl umgesetzt, funktioniert nach einigem Probieren mit meinem MS2:
- die URL muss mit http:// eingegeben werden (auch wenn dann auf https:// umgeleitet wird), https:// funktioniert nicht
- die Befehlserkennung funktioniert auch mit weekIncidence":\v (also ohne \i für text)
- es dürfen pro Minute nur 15 Abfragen erfolgen, sonst macht der Server "zu"
- ich hatte einen (von 4) virtuellen http Eingängen der wollte einfach keine Werte ausgeben. Dann habe ich einen neuen Eingang erstellt mit denselben Einstellungen (von dem widerspenstigen kopiert), dann hat es plötzlich funktioniert
- Abfragezyklus habe ich auch 3600, Timeout auf 1000 runtergesetzt, Anzahl erlaubte Timeouts auf 0
... mit dem Unterschied, dass du per LoxBerry XL/MQTT die Datenwerte pro Datensatz fixfertig aufbereitet bekommst, und auch wegschalten kannst, was du am MS nicht brauchst 🙂
ich habe mich auch mal darangemacht und versucht die api anhand aus Christians Beispiel einzubinden. Dabei hat der Code erst funktioniert, als ich die Leerzeichen im MQTT Aufruf entfernt hatte:
Das nächste Problem hatte ich bei "corona_data_08117_weekecidence":
in der Beschreibung der api steht "corona_data_08117_weekecidence", im "incomming overview" steht "corona_data_08117_weekecidence" auch im Miniserver hatte ich im virtuellen Eingang "corona_data_08117_weekecidence" eingetragen, nur es wurden keine Werte angezeigt.
Alles andere wurde, nach korrekter Eingabe der Validierung, angezeigt. Irgendwann hab ich dann ins Logfile geschaut und gesehen, das bei "INFO: MQTT received: " noch "weekecidence" ankommt, aber bei "HTTP: Preparing input" der Wert verändert wird zu "corona_data_03101_weekIncidence"!
Weiß jemand warum? Da muss man erstmal drauf kommen...
Gibt es eine Möglichkeit die Datenflut bei den "subscriptions" etwas einzudämmen? Meine Experimente mit "+" haben dazu geführt, das keine Werte mehr bei "incomming overview" angekommen sind. Dann habe es noch mit der Option "do not forward" versucht, aber die Funktion reagiert sehr zäh. Sobald man ein, zwei Haken gesetzt hat, verschwinden sie, um dann irgendwann wieder aufzutauchen...
Also wie gesagt, erstmal MQTT Gateway 2.x installieren.
Bezüglich +:
Du kannst damit nicht Daten aus einem expandierten JSON filtern, weil die sind nicht Bestandteil des MQTT Topics. Aus Sicht von MQTT ist "corona" und "
vaccinations" ein einziges Topic, wo alle Daten als json übermittelt werden:
Die Expandierung dieses Datensatzes macht erst das MQTT Gateway (aus dem json wird dann z.B. corona_data_08117_cases = 10091)
Deswegen hilft hier keine Einschränkung über die Subscription.
Bezüglich Filtern:
Im MQTT Gateway 2.x kannst du aber die bereits expandierten Daten per Regex filtern. Das findest du auf der Subscriptions-Seite unten.
Für die vaccinations beispielsweise wäre folgendes Regex denkbar:
Code:
vaccinations_data_states_(?!BW)
Das ist ein negativer Lookahead, im Klartext heißt das, filtere alles mit vaccinations_data_states_ und wo danach nicht "BW" kommt.
Bei corona könntest du beispielsweise die Metadaten so filtern:
Code:
corona_meta_
Bezüglich corona_data_08117_weekecidence:
Da weiß ich nicht, was du meinst. corona_data_08117_weekecidence steht bei mir nirgends - weiß auch nicht, was das heißen soll.
Ich sehe bei mir nur corona_data_08117_weekIncidence.
Zum Abruf von JSON-Daten kann man seit MQTT Gateway 2.0 auf ein eigenes Script per LoxBerry XL inzwischen komplett verzichten, und das direkt mit dem MQTT Gateway machen mittels UDP Transformer: https://www.loxwiki.eu/x/GoFWBQ
Um deine Daten zu bekommen, machst du in Loxone zwei Publishes Richtung MQTT Gateway (genauso, als würdest du z.B. mit einem Shelly reden):
Du brauchst dafür am LoxBerry sonst überhaupt nichts zu machen (kein Script, kein Cronjob usw.). Die Abrufhäufigkeit steuerst du per Trigger aus Loxone.
Die Daten kommen genauso an wie in deinem XL-Beispiel.
Einzig ein UTF8-Problem mit Umlauten sehe ich schon wieder - ich dachte, ich hätte das inzwischen gefixt. UTF8 geht mir echt schon auf den Zeiger
Hi,
ich probiere gerade mehrere Ansätze um die Coronazahlen wieder zu bekommen. Jetzt probiere ich noch diese hier
Also ich habe mein VA "MQTT-Gateway-Loxberry" mit der Adresse "/dev/udp/loxberry/11884" darunter habe ich dann meinen VAB erstellt.
Bezeichnung habe ich erstmal den default gelassen.
Bei "Befehl bei EIN" habe ich "publish http2mqtt corona1 http://api.corona-zahlen.org/districts/12064" weil corona hatte ich schon
in meinem MQTT GW v2.1.0 habe ich noch die Subscriptions für "corona1/#" eingestellt.
so und ab hier hänge ich fest und weiß nicht so richtig weiter.
ich habe mal einen "impuls um" gesetzt habe diesen an einen "trigger" gepackt und habe dann meinen VAB an den Q1 gepackt.
Ergebnis davon ist das ich im MQTT GW sehe das es jetzt "corona1__httpstatus" gibt mit value "301".
Also irgendwie habe ich was nicht richtig verstanden.
vielen Dank für deine ausführlichen Antworten. Bei der Installation hatte ich mich für die stable Variante entschieden und werde im Anschluß mal das Pre-Release testen.
Probier trotzdem mit der aktuellen Version.
Sollte es doch ein Fehler in V1.X sein, gehe ich dem nicht mehr nach, weil ich den Code von V1.x selbst nicht mehr installiert hab und pflege.
Wenn’s dort auch so ist -> Loglevel Debug -> 1 Minute warten -> Abruf durchführen -> Logfile schicken.
Ich habe jetzt auf MQTT Gateway 2.0.3 aktualisiert und nach dem löschen des Browser Cache wird alles richtig angezeigt. Dann war das tatsächlich ein Fehler in der api und der Browser hat auf allen Seiten noch das falsche angezeigt. Im heruntergeladenen Logfile steht natürlich alles richtig drin!
Wir verarbeiten personenbezogene Daten über Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen, Werbung zu personalisieren und Websiteaktivitäten zu analysieren. Wir können bestimmte Informationen über unsere Nutzer mit unseren Werbe- und Analysepartnern teilen. Weitere Einzelheiten finden Sie in unserer Datenschutzrichtlinie.
Wenn Sie unten auf "Einverstanden" klicken, stimmen Sie unserer Datenschutzrichtlinie und unseren Datenverarbeitungs- und Cookie-Praktiken wie dort beschrieben zu. Sie erkennen außerdem an, dass dieses Forum möglicherweise außerhalb Ihres Landes gehostet wird und Sie der Erhebung, Speicherung und Verarbeitung Ihrer Daten in dem Land, in dem dieses Forum gehostet wird, zustimmen.
Kommentar