Anwendungsbeispiel JsonMod #2: CORONA Verbreitung

Begonnen von herrmannj, 22 März 2020, 21:11:18

Vorheriges Thema - Nächstes Thema

herrmannj

der ts passt zu den readings (22:45). Allerdings stimmt die angezeigte svn (21497) nicht mit dem Verhalten überein (API__LAST_MSG 200). Wenn möglich mach doch einen Neustart. Ansonsten passt ja alles, sprich die LAST_MSG mit 200. Oder übersehe ich was?

somansch

Zitat von: Icinger am 24 März 2020, 04:47:02
Was - ungeachtet des state-readings - auf jeden Fall fehlt, sind die Attribute.

statistics kennt grundsätzlich einige readings-Namen (zB temperature, humidity etc.), aber kann halt mit den Readings deines Devices nichts anfangen.
Wenn du dem Modul mit den obigen Attributen ein wenig auf die Sprünge hilfst und sagst, WAS du genau auswerten willst, sollte es aber auf jeden Fall klappen.

lg, Stefan

@Icinger,
danke für deinen Tip. Manchmal muss man nur genauer die Hilfe lesen  ;) (RTFM)

frank

FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

herrmannj

#33
Danke. Das gilt aber nur im Trac. Ich zeige die Revision als Internals des Device. Wenn jemand einen list postet weil was nicht funktioniert sehe ich dadurch welche Version (des Moduls). Das ist dann eben Zulu. Könnte man auf lokale Zeit anpassen, aber nun .. glaube das passt so auch.
SVN 21503 2020-03-24 21:21:00
Jetzt sehe ich auch gerade das ich das Z doch wegkürze. Mir war doch so :) Na - dann hänge ich das mal wieder dran damit Ordnung herrscht. :)

Edit:
SVN 21504 2020-03-24 22:27:59 UTC

Otto123

Nach einem boot ...
Internals:
   API_LAST_RES 1585088100.76317
   API__LAST_MSG 200
   DEF        https://corona.lmao.ninja/countries
   FUUID      5e787b9f-f33f-27f7-a449-3b78ef2b5532dfa8
   NAME       coronaSpread
   NEXT       2020-03-24 23:30:00
   NR         180
   NTFY_ORDER 50-coronaSpread
   SOURCE     https://corona.lmao.ninja/countries (200)
   STATE      ???
   SVN        21503 2020-03-24 21:21:00
   TYPE       JsonMod
   CONFIG:
     IN_REQUEST 0
     SOURCE     https://corona.lmao.ninja/countries
     SECRET:
   READINGS:
     2020-03-24 23:15:02   France_active   17923
     2020-03-24 23:15:02   France_cases    22304
     2020-03-24 23:15:02   France_todayCases 2448
     2020-03-24 23:15:02   Germany_active  29586
     2020-03-24 23:15:02   Germany_cases   32986
     2020-03-24 23:15:02   Germany_todayCases 3930
     2020-03-24 23:15:02   Italy_active    54030
     2020-03-24 23:15:02   Italy_cases     69176
     2020-03-24 23:15:02   Italy_todayCases 5249
     2020-03-24 23:15:02   Spain_active    33283
     2020-03-24 23:15:02   Spain_cases     39885
     2020-03-24 23:15:02   Spain_todayCases 4749
     2020-03-24 23:15:02   USA_active      51941
     2020-03-24 23:15:02   USA_cases       52996
     2020-03-24 23:15:02   USA_todayCases  9262
Attributes:
   interval   */15 * * * *
   readingList multi(jsonPath("\$.[?(\@.country in ['Germany', 'Italy', 'Spain', 'France', 'USA'])]"), concat(property('country'), '_cases'), property('cases'));
multi(jsonPath("\$.[?(\@.country in ['Germany', 'Italy', 'Spain', 'France', 'USA'])]"), concat(property('country'), '_todayCases'), property('todayCases'));
multi(jsonPath("\$.[?(\@.country in ['Germany', 'Italy', 'Spain', 'France', 'USA'])]"), concat(property('country'), '_active'), property('active'));
   room       Corona
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

herrmannj

Sieht gut aus. Also ... bis auf UTC -> rev 21504  :)  8)

Jamo

Hallo Hermann,
danke für das klasse Modul. Ich habe mir damit sofort eine eigene Tabelle eingerichtet,
mir ist aber aufgefallen, das angelegte eigene readings mit jedem Lauf wieder gelöscht werden. Ich wollte mir eingene readings anlegen, wo ich mir die 'neuen' Coronafälle für gestern und vorgestern in einem Reading merke.
Aber es wird alles gelöscht und wieder neu angelegt.
Kann man evtl auch nur die vom Modul erzeugten Readings neu anlegen?

Danke, und bleib gesund!
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack

Andy89

Hallo,
weil ich das Thema gerade auch sehr stark verfolge, wollte ich mir die Anzahl nach Bundesländern anzeigen lassen.

Die Adresse zum Erstellen von JSON-Urls gibt es auf der RKI Seitehttps://npgeo-corona-npgeo-de.hub.arcgis.com/datasets/ef4b445a53c1406892257fe63129a8ea_0/geoservice?geometry=-23.183%2C46.270%2C39.439%2C55.886&selectedAttribute=Aktualisierung
Ich hab die Geometrie und alles "unwichtige" weggelassen.

Leider bekomme ich es nicht hin, aus dem JSON die Daten zu extrahieren. Was mache ich falsch?
defmod coronaSpreadDe JsonMod https://services7.arcgis.com/mOBPykOjAyBO2ZKk/arcgis/rest/services/Coronaf%C3%A4lle_in_den_Bundesl%C3%A4ndern/FeatureServer/0/query?where=1%3D1&outFields=LAN_ew_GEN,Fallzahl,Aktualisierung,faelle_100000_EW,Death&returnGeometry=false&outSR=4326&f=json
attr coronaSpreadDe interval */1 * * * *
attr coronaSpreadDe readingList multi(jsonPath("$.[?(\@.LAN_ew_GEN in ['Hamburg','Bremen'])]"), concat(property('LAN_ew_GEN'), '_Death'), property('Death'));;


verbose 5 hilft mir in dem Fall leider nicht weiter.

Beste Grüße
Andy
FHEM 6.0 auf rPi4 docker (mit Alexa & Siri); dbLog, FTUI, Sonos, XiaomiMapCreator auf rPi4 docker;
raspimatic auf rPi3+ > diverse Aktoren und Sensoren;
LGW > (PCA301),EC3000,LaCrosse; MQTT2 > WLAN-Steckdosen,Xiaomi Map;
Harmony Hub;Sonos;Onkyo AVR;RGB WLAN Controller;Netatmo;Withings;Unifi;AMAD

herrmannj

Zitat von: Jamo am 25 März 2020, 11:39:11
Hallo Hermann,
danke für das klasse Modul. Ich habe mir damit sofort eine eigene Tabelle eingerichtet,
mir ist aber aufgefallen, das angelegte eigene readings mit jedem Lauf wieder gelöscht werden. Ich wollte mir eingene readings anlegen, wo ich mir die 'neuen' Coronafälle für gestern und vorgestern in einem Reading merke.
Aber es wird alles gelöscht und wieder neu angelegt.
Kann man evtl auch nur die vom Modul erzeugten Readings neu anlegen?

Danke, und bleib gesund!
Moin Jamo,

hmm, ok ich verstehe. Eigentlich ja, die Herausforderung ist da shutdown/restart. Stell mal bitte ein komplettes List ein

vg, &bleib auch gesund!

herrmannj

Zitat von: Andy89 am 25 März 2020, 11:49:14
Hallo,
weil ich das Thema gerade auch sehr stark verfolge, wollte ich mir die Anzahl nach Bundesländern anzeigen lassen.

Die Adresse zum Erstellen von JSON-Urls gibt es auf der RKI Seitehttps://npgeo-corona-npgeo-de.hub.arcgis.com/datasets/ef4b445a53c1406892257fe63129a8ea_0/geoservice?geometry=-23.183%2C46.270%2C39.439%2C55.886&selectedAttribute=Aktualisierung
Ich hab die Geometrie und alles "unwichtige" weggelassen.

Leider bekomme ich es nicht hin, aus dem JSON die Daten zu extrahieren. Was mache ich falsch?
defmod coronaSpreadDe JsonMod https://services7.arcgis.com/mOBPykOjAyBO2ZKk/arcgis/rest/services/Coronaf%C3%A4lle_in_den_Bundesl%C3%A4ndern/FeatureServer/0/query?where=1%3D1&outFields=LAN_ew_GEN,Fallzahl,Aktualisierung,faelle_100000_EW,Death&returnGeometry=false&outSR=4326&f=json
attr coronaSpreadDe interval */1 * * * *
attr coronaSpreadDe readingList multi(jsonPath("$.[?(\@.LAN_ew_GEN in ['Hamburg','Bremen'])]"), concat(property('LAN_ew_GEN'), '_Death'), property('Death'));;


verbose 5 hilft mir in dem Fall leider nicht weiter.

Beste Grüße
Andy
Offensichtlich ein Nachbar: Moin!

so wie das List unten sollte das aussehen, ich befürchte aber Du hast einen Bug gefunden. Das muss ich mir heute Abend in Ruhe anschauen. Als Tip: querys testen geht dort sehr gut: https://jsonpath.herokuapp.com/

Internals:
   API_LAST_RES 1585136426.14901
   API__LAST_MSG 200
   CFGFN     
   DEF        https://services7.arcgis.com/mOBPykOjAyBO2ZKk/arcgis/rest/services/Coronaf%C3%A4lle_in_den_Bundesl%C3%A4ndern/FeatureServer/0/query?where=1%3D1&outFields=LAN_ew_GEN,Fallzahl,Aktualisierung,faelle_100000_EW,Death&returnGeometry=false&outSR=4326&f=json
   FUUID      5e7b4174-f33f-a6e8-dea1-1ac51dcf4db92252
   NAME       rki
   NEXT       2020-03-25 13:00:00
   NR         82
   NTFY_ORDER 50-rki
   SOURCE     https://services7.arcgis.com/mOBPykOjAyBO2ZKk/arcgis/rest/services/Coronaf%C3%A4lle_in_den_Bundesl%C3%A4ndern/FeatureServer/0/query?where=1%3D1&outFields=LAN_ew_GEN,Fallzahl,Aktualisierung,faelle_100000_EW,Death&returnGeometry=false&outSR=4326&f=json (200)
   STATE      ???
   SVN        21504 2020-03-24 22:27:59 UTC
   TYPE       JsonMod
   CONFIG:
     IN_REQUEST 0
     SOURCE     https://services7.arcgis.com/mOBPykOjAyBO2ZKk/arcgis/rest/services/Coronaf%C3%A4lle_in_den_Bundesl%C3%A4ndern/FeatureServer/0/query?where=1%3D1&outFields=LAN_ew_GEN,Fallzahl,Aktualisierung,faelle_100000_EW,Death&returnGeometry=false&outSR=4326&f=json
     SECRET:
   READINGS:
     2020-03-25 12:40:26                   
Attributes:
   readingList multi(jsonPath("\$.features[?(\@.attributes.LAN_ew_GEN in ['Hamburg'])]"), property('attributes.LAN_ew_GEN'), property('attributes.Fallzahl'));

Andy89

Zitat von: herrmannj am 25 März 2020, 12:48:16
Offensichtlich ein Nachbar: Moin!

so wie das List unten sollte das aussehen, ich befürchte aber Du hast einen Bug gefunden. Das muss ich mir heute Abend in Ruhe anschauen. Als Tip: querys testen geht dort sehr gut: https://jsonpath.herokuapp.com/
Moin,
tatsächlich komme ich aus Bonn  ;) Aber weil ich dachte, dass es wegen der Bindestriche in den Bundesländern nicht geht, habe ich mir zwei Einfache rausgesucht.

Ich habe gefühlt 30 verschiedene Dinge ausprobiert, wie das Query Aussehen könnte, bin aber leider immer wieder gescheitert. Vielleich lag es ja am Bug.

Danke für Anschauen. Hat keine Eile ;)
FHEM 6.0 auf rPi4 docker (mit Alexa & Siri); dbLog, FTUI, Sonos, XiaomiMapCreator auf rPi4 docker;
raspimatic auf rPi3+ > diverse Aktoren und Sensoren;
LGW > (PCA301),EC3000,LaCrosse; MQTT2 > WLAN-Steckdosen,Xiaomi Map;
Harmony Hub;Sonos;Onkyo AVR;RGB WLAN Controller;Netatmo;Withings;Unifi;AMAD

herrmannj

Aus Bonn ? Ne dann mach ich das nicht ;D

Doch, bin ja daran interessiert das es läuft. Ich komme aber erst heute Abend dazu. Wie schnell das fixen gelingt hängt dann vom Aufwand ab.

Andy89

Zitat von: herrmannj am 25 März 2020, 13:39:35
Doch, bin ja daran interessiert das es läuft. Ich komme aber erst heute Abend dazu. Wie schnell das fixen gelingt hängt dann vom Aufwand ab.
ich hab diesmal wieder was anderes versucht, aber auch daran scheitere ich. Ich habe zum Testen "recovered" und "cases" mal weggelassen.
defmod coronaSpreadWorld JsonMod https://corona.lmao.ninja/all
attr coronaSpreadWorld event-on-change-reading .*
attr coronaSpreadWorld interval */1 * * * *
attr coronaSpreadWorld readingList single(jsonPathf('$.deaths', '%s'), 'world_deaths', 'N/A');;


ich habe auch die von "https://jsonpath.herokuapp.com/" vorgeschlagene normalisierte Pfad Angabe versucht:"$['deaths']" leider auch ohne Erfolg.

auch das ging nicht:
single(jsonPath('$.deaths'), 'world_deaths', 'N/A');

Ist das derselbe Bug wie schon vorhin?  Oder mache ich hier noch einen anderen Fehler?

Beste Grüße
Andy
FHEM 6.0 auf rPi4 docker (mit Alexa & Siri); dbLog, FTUI, Sonos, XiaomiMapCreator auf rPi4 docker;
raspimatic auf rPi3+ > diverse Aktoren und Sensoren;
LGW > (PCA301),EC3000,LaCrosse; MQTT2 > WLAN-Steckdosen,Xiaomi Map;
Harmony Hub;Sonos;Onkyo AVR;RGB WLAN Controller;Netatmo;Withings;Unifi;AMAD

Otto123

Hallo Andy,

ich würde mich nicht wundern, wenn Dir einer das Internet löscht ;)
"Oder mache ich hier noch einen anderen Fehler?" - JA -> */1

Die Daten dort ändern sich irgendwie am Nachmittag 2 mal die Stunde, ansonsten kaum. 1 min Abfrage zyklus. :o :o :o

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Andy89

Jedes Mal, wenn ich die readinglist ändere, möchte ich nicht bis zur nächsten 10er Minute warten. oder werden die Daten automatisch direkt einmalig geladen, sobald man etwas an der readinglist ändert?

Dass das Schwachsinn ist, minütlich abzurufen, weiß ich selbst bei den RKI Daten.
Die globalen Daten werden tatsächlich recht häufig aktualisiert ;) da sind 10 Minuten sinnvoll.

aber auch wenn es bei einer Minute bliebe, ist es ein kleines JSON, was abgerufen wird, und nicht irgendwelche videos.


Gesendet von iPhone mit Tapatalk
FHEM 6.0 auf rPi4 docker (mit Alexa & Siri); dbLog, FTUI, Sonos, XiaomiMapCreator auf rPi4 docker;
raspimatic auf rPi3+ > diverse Aktoren und Sensoren;
LGW > (PCA301),EC3000,LaCrosse; MQTT2 > WLAN-Steckdosen,Xiaomi Map;
Harmony Hub;Sonos;Onkyo AVR;RGB WLAN Controller;Netatmo;Withings;Unifi;AMAD