Anwendungsbeispiel JsonMod #2: CORONA Verbreitung

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

Vorheriges Thema - Nächstes Thema

Andy89

Zitat von: jnewton957 am 29 März 2020, 13:00:32
Allerdings hat es mir mit dem defmod zuerst das System lahmgelegt, da er so wohl alle Landkreise versucht hat einzulesen.
Habe es dann in einer corona.cfg als include eingebunden
ich mache sowas immer über die "Raw definition". Das gibts in jedem Device ganz unten (zumindest bei mir). Ich bin mir aber gerade nich sicher, ob man dafür etwas im global- oder Web-Device hinterlegen muss.
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

Gib mir Mal bitte das list das 'lahm gelegt' hat

Gisbert

Nur zur Info: ich hab die Definition über das fette + eingefügt, da wurde nichts lahmgelegt.
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

herrmannj

so oder anders, da soll (und kann eigentlich) sowieso nichts lahmgelegt werden. Meine Vermutung dazu wäre auch dass das attribut dns server nicht gesetzt ist und es deswegen hing. Bevor ich das sage wollte ich das aber evaluieren und  nachstellen. Wenn die Ursache wirklich _im_ JsonMod liegt will ich die beseitigen

Andy89

Zitat von: Gisbert am 29 März 2020, 13:49:17
Nur zur Info: ich hab die Definition über das fette + eingefügt, da wurde nichts lahmgelegt.
was ist denn das fette "plus"?

Zitat von: herrmannj am 29 März 2020, 13:18:46
Gib mir Mal bitte das list das 'lahm gelegt' hat
das hat sich auf meine Definition der Landkreise bezogen: https://forum.fhem.de/index.php/topic,109413.msg1036195.html#msg1036195
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

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

Christian72D

Also das "Device" aus dem ersten Beitrag habe ich angelegt, die Readings werden auch sauber erzeugt, aber wie bekomme ich aus dem ganzen denn eine schöne tabellarische Ansicht?
Da bin ich aktuell überfordert.

yersinia

Zur Info: für alle, bei denen sich das JsonMod Device seit gestern (ohne Fehlermeldung) nicht mehr aktualisiert, der Endpoint hat sich geändert.
Zitat{"message":"This endpoint has been deprecated. Use /v2/countries instead.","docs":"http://corona.lmao.ninja/docs"}
https://corona.lmao.ninja/countries

Aus
define coronaSpread JsonMod https://corona.lmao.ninja/countries
wird dann
define coronaSpread JsonMod https://corona.lmao.ninja/v2/countries
(https://corona.lmao.ninja/docs/)
viele Grüße, yersinia
----
FHEM 6.3 (SVN) on RPi 4B with RasPi OS Bullseye (perl 5.32.1) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

Andy89

dies gilt auch für die Welt:
https://corona.lmao.ninja/v2/all

Einige userreadings können so nun auch durch die API ersetzt werden (active, critical, CasesPerMillion, TodayCases und TodayDeaths)
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

Ainadilion

Hallo, habe mir ebenfalls diese Datei auf meine bevorzugten Kreise eingestellt, was funktioniert. Zusätzlich habe ich meine Quelle angepasst:

https://services7.arcgis.com/mOBPykOjAyBO2ZKk/arcgis/rest/services/RKI_Landkreisdaten/FeatureServer/0/query?where=1%3D1&outFields=OBJECTID,cases,deaths,cases_per_100k,cases_per_population,BL,BL_ID,county,cases7_per_100k,recovered,last_update,death_rate,GEN,EWZ&returnGeometry=false&outSR=4326&f=json

Nun möchte ich die Werte für cases7_per_100k mit ausgeben, hier komme ich allerdings nicht weiter, sobald ich in readingList den entsprechenden Eintrag ergänze, passiert nichts.

multi(jsonPath("\$.features[?(\@.attributes.OBJECTID in ['340', '377'])]"), concat(property('attributes.county'),'_name'), property('attributes.county'));
multi(jsonPath("\$.features[?(\@.attributes.OBJECTID in ['340', '377'])]"), concat(property('attributes.county'),'_cases'), property('attributes.cases'));
multi(jsonPath("\$.features[?(\@.attributes.OBJECTID in ['340', '377'])]"), concat(property('attributes.county'),'_deaths'), property('attributes.deaths'));
multi(jsonPath("\$.features[?(\@.attributes.OBJECTID in ['340', '377'])]"), concat(property('attributes.county'),'_cp100k'), (property('attributes.cases_per_100k'));
multi(jsonPath("\$.features[?(\@.attributes.OBJECTID in ['340', '377'])]"), concat(property('attributes.county'),'_cp7100k'), (property('attributes.cases7_per_100k')));


Gruß Ainadilion

Zitat von: Andy89 am 29 März 2020, 12:34:17
dort habe ich relativ ausführlich beschrieben, wie ich Bundesländer integriert habe: https://forum.fhem.de/index.php/topic,109490.msg1035351.html#msg1035351

Mittlerweile habe ich für mich zwei persönliche interesannte Landkreise integriert:
defmod coronaSpreadBnHs JsonMod https://services7.arcgis.com/mOBPykOjAyBO2ZKk/arcgis/rest/services/RKI_Landkreisdaten/FeatureServer/0/query?where=1%3D1&outFields=EWZ,death_rate,cases,deaths,cases_per_100k,cases_per_population,county,OBJECTID&returnGeometry=false&outSR=4326&f=json
attr coronaSpreadBnHs event-on-change-reading .*
attr coronaSpreadBnHs interval 3 0 * * *
attr coronaSpreadBnHs readingList multi(jsonPath("\$.features[?(\@.attributes.OBJECTID in ['79', '86'])]"), concat(property('attributes.county'),'_name'), property('attributes.county'));;\
multi(jsonPath("\$.features[?(\@.attributes.OBJECTID in ['79', '86'])]"), concat(property('attributes.county'),'_cases'), property('attributes.cases'));;\
multi(jsonPath("\$.features[?(\@.attributes.OBJECTID in ['79', '86'])]"), concat(property('attributes.county'),'_deaths'), property('attributes.deaths'));;\
multi(jsonPath("\$.features[?(\@.attributes.OBJECTID in ['79', '86'])]"), concat(property('attributes.county'),'_cp100k'), (property('attributes.cases_per_100k')));;
attr coronaSpreadBnHs room Corona


Die Object IDs habe ich vorher aus der Quelle rausgesucht:
https://services7.arcgis.com/mOBPykOjAyBO2ZKk/arcgis/rest/services/RKI_Landkreisdaten/FeatureServer/0/query?where=1%3D1&outFields=EWZ,death_rate,cases,deaths,cases_per_100k,cases_per_population,county,OBJECTID&returnGeometry=false&outSR=4326&f=json

herrmannj

soweit ich sehe ist die 'Klammersetzung' falsch

Sticks65

Hallo zusammen,

ich könnte Eure Hilfe gut gebrauchen...

Ich habe versucht das Thema nachzubauen, komme nun aber nun gar nicht mehr weiter.

Ich habe folgende Definitionen gemacht:
defmod corona JsonMod https://services7.arcgis.com/mOBPykOjAyBO2ZKk/arcgis/rest/services/RKI_Landkreisdaten/FeatureServer/0/query?where=1%3D1&outFields=death_rate,cases,deaths,cases_per_100k,cases_per_population,cases7_per_100k,BL,BL_ID,county,OBJECTID&returnGeometry=false&outSR=4326&f=json\

attr corona DbLogExclude .*
attr corona interval */15 * * * *
attr corona readingList multi(jsonPath("\$.features[?(\@.attributes.OBJECTID in ['204', '212'])]"), concat(property('attributes.county'),'_name'), property('attributes.county'));;
attr corona room xx System

setstate corona 2020-05-23 20:18:28 _name


Die Seite wird laut Log auch sauber abgerufen HTTP response code 200
aber das Reading bleibt leer ( _name    2020-05-23 20:30:00)

Vielleicht hat jemand eine Idee, wo der Fehler liegt

Viele Grüße
Martin

somansch

Zitat von: Sticks65 am 23 Mai 2020, 20:38:38
Hallo zusammen,

ich könnte Eure Hilfe gut gebrauchen...

Ich habe versucht das Thema nachzubauen, komme nun aber nun gar nicht mehr weiter.

Ich habe folgende Definitionen gemacht:
defmod corona JsonMod https://services7.arcgis.com/mOBPykOjAyBO2ZKk/arcgis/rest/services/RKI_Landkreisdaten/FeatureServer/0/query?where=1%3D1&outFields=death_rate,cases,deaths,cases_per_100k,cases_per_population,cases7_per_100k,BL,BL_ID,county,OBJECTID&returnGeometry=false&outSR=4326&f=json\

attr corona DbLogExclude .*
attr corona interval */15 * * * *
attr corona readingList multi(jsonPath("\$.features[?(\@.attributes.OBJECTID in ['204', '212'])]"), concat(property('attributes.county'),'_name'), property('attributes.county'));;
attr corona room xx System

setstate corona 2020-05-23 20:18:28 _name


Die Seite wird laut Log auch sauber abgerufen HTTP response code 200
aber das Reading bleibt leer ( _name    2020-05-23 20:30:00)

Vielleicht hat jemand eine Idee, wo der Fehler liegt

Viele Grüße
Martin

Ich sehe am Ende deines defmod ein "\". Ist bei mir dort nicht...

Sticks65

Zitat von: somansch am 23 Mai 2020, 22:44:38
Ich sehe am Ende deines defmod ein "\". Ist bei mir dort nicht...

Ja, hatte sich am Ende ,,eingeschlichen"  ;)
Funktioniert aber auch ohne leider nicht

Grüße
Martin

yersinia

Vielleicht kann er aus SK Freiburg i.Breisgau oder LK Lörrach kein Reading mit _name generieren. Versuch mal, ob dir dieses readingList immerhin den county namen basierend auf der object ID liefert:
attr corona readingList multi(jsonPath("\$.features[?(\@.attributes.OBJECTID in ['204', '212'])]"), concat(property('attributes.OBJECTID'),'_name'), property('attributes.county'));;
Das funktioniert zumindest bei mir ganz gut.

Ich finde Readings basierend auf veränderlichen Texten immer problematisch. Eine id ist zwar weniger intuitiv, aber dafür eineindeutig.
viele Grüße, yersinia
----
FHEM 6.3 (SVN) on RPi 4B with RasPi OS Bullseye (perl 5.32.1) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl