Anwendungsbeispiel JsonMod #2: CORONA Verbreitung

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

Vorheriges Thema - Nächstes Thema

romakrau

Hallo zusammen,

mir fehlt bei meiner Corona Auswertung per Json neuerdings die Cases?
Hat jemand eine Idee

Internals:
   API_LAST_MSG 200
   API_LAST_RES 1628616152.85657
   DEF        https://services7.arcgis.com/mOBPykOjAyBO2ZKk/arcgis/rest/services/RKI_Landkreisdaten/FeatureServer/0/query?where=OBJECTID='64'&outFields=cases,deaths,cases_per_100k,cases_per_population,cases7_per_100k,BL,BL_ID,county,OBJECTID,last_update&returnGeometry=false&outSR=4326&f=json
   FUUID      5f975018-f33f-3c55-b947-2d72a37160719a57
   NAME       coronaSpreadCounties
   NEXT       2021-08-10 21:10:00
   NR         220
   SOURCE     https://services7.arcgis.com/mOBPykOjAyBO2ZKk/arcgis/rest/services/RKI_Landkreisdaten/FeatureServer/0/query?where=OBJECTID='64'&outFields=cases,deaths,cases_per_100k,cases_per_population,cases7_per_100k,BL,BL_ID,county,OBJECTID,last_update&returnGeometry=false&outSR=4326&f=json (200)
   STATE      active
   SVN        24420 2021-05-11 21:25:20 UTC
   TYPE       JsonMod
   CONFIG:
     IN_REQUEST 0
     SOURCE     https://services7.arcgis.com/mOBPykOjAyBO2ZKk/arcgis/rest/services/RKI_Landkreisdaten/FeatureServer/0/query?where=OBJECTID='64'&outFields=cases,deaths,cases_per_100k,cases_per_population,cases7_per_100k,BL,BL_ID,county,OBJECTID,last_update&returnGeometry=false&outSR=4326&f=json
     SECRET:
   OLDREADINGS:
   READINGS:
     2021-08-10 19:22:32   Cases7_per_100k 46.8
     2021-08-10 19:22:32   Cases_per_100k  4247
     2021-08-10 19:22:32   Death           440
     2021-08-10 19:22:32   Name            SK Düsseldorf
     2021-08-10 19:22:32   Updated         10.08.2021, 00:00 Uhr
Attributes:
   interval   10 */3 * * *
   readingList multi(jsonPath("\$.features[?(\@.attributes.OBJECTID in ['64'])]"), 'Name', property('attributes.county')))
multi(jsonPath("\$.features[?(\@.attributes.OBJECTID in ['64'])]"), 'Cases', sprintf('%.0d',property('attributes.cases')))
multi(jsonPath("\$.features[?(\@.attributes.OBJECTID in ['64'])]"), 'Death', sprintf('%.0d',property('attributes.deaths')))
multi(jsonPath("\$.features[?(\@.attributes.OBJECTID in ['64'])]"), 'Cases_per_100k',sprintf('%.0f', property('attributes.cases_per_100k')))
multi(jsonPath("\$.features[?(\@.attributes.OBJECTID in ['64'])]"), 'Cases7_per_100k',sprintf('%.1f', property('attributes.cases7_per_100k')))
multi(jsonPath("\$.features[?(\@.attributes.OBJECTID in ['64'])]"), 'Updated', property('attributes.last_update'))
   update-on-start 1
   verbose    0

Gruß
Roman

yersinia

Ja, ich hab ein ähnliches Problem - ist aber eine andere Quelle vom RKI.

In deiner Quelle kommen die Werte aber vor:
{"attributes":{"cases":26490,"deaths":440,"cases_per_100k":4259.68479297353,"cases_per_population":4.25968479297353,"cases7_per_100k":50.9747104330921,"BL":"Nordrhein-Westfalen","BL_ID":"5","county":"SK Düsseldorf","OBJECTID":64,"last_update":"11.08.2021, 00:00 Uhr"}}
Hast du mal ein reread initiiert?
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

romakrau

Ja hatte ich versucht, aber irgendwie bekommt JsonMod das nicht geregelt.
Keiner einen Tip?
Gruß Roman

yersinia

Keine Probleme festzustellen wenn ich dies nachstelle:
Internals:
   API_LAST_MSG 200
   API_LAST_RES 1628751812.64973
   CFGFN     
   DEF        https://services7.arcgis.com/mOBPykOjAyBO2ZKk/arcgis/rest/services/RKI_Landkreisdaten/FeatureServer/0/query?where=OBJECTID='64'&outFields=cases,deaths,cases_per_100k,cases_per_population,cases7_per_100k,BL,BL_ID,county,OBJECTID,last_update&returnGeometry=false&outSR=4326&f=json
   FUUID      6114c799-f33f-3151-2ed7-5fd81075ae9182de
   NAME       testJM
   NEXT       2021-08-12 10:00:00
   NR         41361
   SOURCE     https://services7.arcgis.com/mOBPykOjAyBO2ZKk/arcgis/rest/services/RKI_Landkreisdaten/FeatureServer/0/query?where=OBJECTID='64'&outFields=cases,deaths,cases_per_100k,cases_per_population,cases7_per_100k,BL,BL_ID,county,OBJECTID,last_update&returnGeometry=false&outSR=4326&f=json (200)
   STATE      ???
   SVN        24783 2021-07-21 22:37:12 UTC
   TYPE       JsonMod
   .attraggr:
   .attrminint:
   CONFIG:
     IN_REQUEST 0
     SOURCE     https://services7.arcgis.com/mOBPykOjAyBO2ZKk/arcgis/rest/services/RKI_Landkreisdaten/FeatureServer/0/query?where=OBJECTID='64'&outFields=cases,deaths,cases_per_100k,cases_per_population,cases7_per_100k,BL,BL_ID,county,OBJECTID,last_update&returnGeometry=false&outSR=4326&f=json
     SECRET:
   READINGS:
     2021-08-12 09:03:32   .computedReadings Cases7_per_100k,Name,Death,Updated,Cases_per_100k
     2021-08-12 09:03:32   Cases7_per_100k 58.2
     2021-08-12 09:03:32   Cases_per_100k  4274
     2021-08-12 09:03:32   Death           440
     2021-08-12 09:03:32   Name            SK Düsseldorf
     2021-08-12 09:03:32   Updated         12.08.2021, 00:00 Uhr
Attributes:
   readingList multi(jsonPath("\$.features[?(\@.attributes.OBJECTID in ['64'])]"), 'Name', property('attributes.county')));
multi(jsonPath("\$.features[?(\@.attributes.OBJECTID in ['64'])]"), 'Cases', sprintf('%.0d',property('attributes.cases')));
multi(jsonPath("\$.features[?(\@.attributes.OBJECTID in ['64'])]"), 'Death', sprintf('%.0d',property('attributes.deaths')));
multi(jsonPath("\$.features[?(\@.attributes.OBJECTID in ['64'])]"), 'Cases_per_100k',sprintf('%.0f', property('attributes.cases_per_100k')));
multi(jsonPath("\$.features[?(\@.attributes.OBJECTID in ['64'])]"), 'Cases7_per_100k',sprintf('%.1f', property('attributes.cases7_per_100k')));
multi(jsonPath("\$.features[?(\@.attributes.OBJECTID in ['64'])]"), 'Updated', property('attributes.last_update'));


Aber zwei Sachen, dir mir aufgefallen sind:
1. deine JsonMod Version ist nicht die aktuellste; deine:
SVN        24420 2021-05-11 21:25:20 UTC
versus die aktuelle aus dem SVN:
SVN        24783 2021-07-21 22:37:12 UTC

2. in deinem ReadingsList fehlen abschließende Semikolon; dein readingsList:
   readingList multi(jsonPath("\$.features[?(\@.attributes.OBJECTID in ['64'])]"), 'Name', property('attributes.county')))
multi(jsonPath("\$.features[?(\@.attributes.OBJECTID in ['64'])]"), 'Cases', sprintf('%.0d',property('attributes.cases')))
multi(jsonPath("\$.features[?(\@.attributes.OBJECTID in ['64'])]"), 'Death', sprintf('%.0d',property('attributes.deaths')))
multi(jsonPath("\$.features[?(\@.attributes.OBJECTID in ['64'])]"), 'Cases_per_100k',sprintf('%.0f', property('attributes.cases_per_100k')))
multi(jsonPath("\$.features[?(\@.attributes.OBJECTID in ['64'])]"), 'Cases7_per_100k',sprintf('%.1f', property('attributes.cases7_per_100k')))
multi(jsonPath("\$.features[?(\@.attributes.OBJECTID in ['64'])]"), 'Updated', property('attributes.last_update'))

versus
   readingList multi(jsonPath("\$.features[?(\@.attributes.OBJECTID in ['64'])]"), 'Name', property('attributes.county')));
multi(jsonPath("\$.features[?(\@.attributes.OBJECTID in ['64'])]"), 'Cases', sprintf('%.0d',property('attributes.cases')));
multi(jsonPath("\$.features[?(\@.attributes.OBJECTID in ['64'])]"), 'Death', sprintf('%.0d',property('attributes.deaths')));
multi(jsonPath("\$.features[?(\@.attributes.OBJECTID in ['64'])]"), 'Cases_per_100k',sprintf('%.0f', property('attributes.cases_per_100k')));
multi(jsonPath("\$.features[?(\@.attributes.OBJECTID in ['64'])]"), 'Cases7_per_100k',sprintf('%.1f', property('attributes.cases7_per_100k')));
multi(jsonPath("\$.features[?(\@.attributes.OBJECTID in ['64'])]"), 'Updated', property('attributes.last_update'));


Ich empfehle dir, readingsList zu korrigieren und ein Update zu machen. Und danach ein reread und dann schauen wir weiter.
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

romakrau

So, alles durchgeführt. Das Problem besteht weiterhin. Jemadn eine Idee?

yersinia

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

romakrau

Hallo yersinia,
die Lösung ist sehr simple. Die Reihenfolge des Ergebnis der Abfrage (cases,deaths,cases_per_100k,cases...) muss mit der Reihenfolge der JsonMod Defination übereinstimmen. Dann gehts. Manchmal brauchts den Anstoss von anderen.
Danke und Gruß
Roman

romakrau

Zu früh gefreut, jetzt fehlt der wert für das Update:
Internals:
   API_LAST_MSG 200
   API_LAST_RES 1628778513.72146
   DEF        https://services7.arcgis.com/mOBPykOjAyBO2ZKk/arcgis/rest/services/RKI_Landkreisdaten/FeatureServer/0/query?where=OBJECTID='64'&outFields=cases,deaths,cases_per_100k,cases_per_population,cases7_per_100k,BL,BL_ID,county,OBJECTID,last_update&returnGeometry=false&outSR=4326&f=json
   FUUID      5f975018-f33f-3c55-b947-2d72a37160719a57
   NAME       coronaSpreadCounties
   NEXT       2021-08-12 18:10:00
   NR         220
   SOURCE     https://services7.arcgis.com/mOBPykOjAyBO2ZKk/arcgis/rest/services/RKI_Landkreisdaten/FeatureServer/0/query?where=OBJECTID='64'&outFields=cases,deaths,cases_per_100k,cases_per_population,cases7_per_100k,BL,BL_ID,county,OBJECTID,last_update&returnGeometry=false&outSR=4326&f=json (200)
   STATE      active
   SVN        24783 2021-07-21 22:37:12 UTC
   TYPE       JsonMod
   CONFIG:
     IN_REQUEST 0
     SOURCE     https://services7.arcgis.com/mOBPykOjAyBO2ZKk/arcgis/rest/services/RKI_Landkreisdaten/FeatureServer/0/query?where=OBJECTID='64'&outFields=cases,deaths,cases_per_100k,cases_per_population,cases7_per_100k,BL,BL_ID,county,OBJECTID,last_update&returnGeometry=false&outSR=4326&f=json
     SECRET:
   OLDREADINGS:
   READINGS:
     2021-08-12 16:28:33   Cases           26578
     2021-08-12 16:28:33   Cases7_per_100k 58.2
     2021-08-12 16:28:33   Cases_per_100k  4274
     2021-08-12 16:28:33   Death           440
     2021-08-12 16:28:33   Name            SK Düsseldorf
Attributes:
   event-on-change-reading Updated,Cases7_per_100k,Cases
   interval   10 */6 * * *
   readingList multi(jsonPath("\$.features[?(\@.attributes.OBJECTID in ['64'])]"),'Cases',sprintf('%d',property('attributes.cases')));
multi(jsonPath("\$.features[?(\@.attributes.OBJECTID in ['64'])]"),'Death',sprintf('%d',property('attributes.deaths')));
multi(jsonPath("\$.features[?(\@.attributes.OBJECTID in ['64'])]"),'Cases_per_100k',sprintf('%.0f',property('attributes.cases_per_100k')));
multi(jsonPath("\$.features[?(\@.attributes.OBJECTID in ['64'])]"),'Cases7_per_100k',sprintf('%.1f',property('attributes.cases7_per_100k')));
multi(jsonPath("\$.features[?(\@.attributes.OBJECTID in ['64'])]"),'Name',property('attributes.county')));
multi(jsonPath("\$.features[?(\@.attributes.OBJECTID in ['64'])]"),'Updated',property('attributes.last_update')));
   update-on-start 1
   verbose    0

yersinia

Zitat von: romakrau am 12 August 2021, 16:26:11die Lösung ist sehr simple. Die Reihenfolge des Ergebnis der Abfrage (cases,deaths,cases_per_100k,cases...) muss mit der Reihenfolge der JsonMod Defination übereinstimmen. Dann gehts.
Ich glaube nicht, dass das beabsichtigt ist - ich vermute hier eher ein Bug. Aber wenn es in der richtigen Reihenfolge funktioniert, alles gut.

Zitat von: romakrau am 12 August 2021, 16:30:47Zu früh gefreut, jetzt fehlt der wert für das Update:
Wenn du verbose nicht auf 0 hättest, würdest du sehen, dass das Device ein Fehler wirft.
2021.08.12 16:34:40 2: [testJM] syntax error in readingList statement: ')'
Du hast in deinem Code eine schließende Klammer zuviel bei Name:
multi(jsonPath("\$.features[?(\@.attributes.OBJECTID in ['64'])]"),'Name',property('attributes.county')));

Richtig sollte es so aussehen:
multi(jsonPath("\$.features[?(\@.attributes.OBJECTID in ['64'])]"),'Cases', sprintf('%d',property('attributes.cases')));
multi(jsonPath("\$.features[?(\@.attributes.OBJECTID in ['64'])]"),'Death', sprintf('%d',property('attributes.deaths')));
multi(jsonPath("\$.features[?(\@.attributes.OBJECTID in ['64'])]"),'Cases_per_100k', sprintf('%.0f',property('attributes.cases_per_100k')));
multi(jsonPath("\$.features[?(\@.attributes.OBJECTID in ['64'])]"),'Cases7_per_100k', sprintf('%.1f',property('attributes.cases7_per_100k')));
multi(jsonPath("\$.features[?(\@.attributes.OBJECTID in ['64'])]"),'Name', property('attributes.county'));
multi(jsonPath("\$.features[?(\@.attributes.OBJECTID in ['64'])]"),'Updated', property('attributes.last_update'));
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

romakrau

Danke für die Hilfe. Jetzt klappt's.
Gruß
Roman

curt

Wo und wie bekomme ich die 7-Tage-Inzidenz von Deutschland her? Hat das jemand integriert?

Ich habe mein Bundesland, zwei Landkreise, das funktioniert fein. Das zeige ich auch in FTUI an. Aber Deutschland selbst fehlt mir.
RPI 4 - Jeelink HomeMatic Z-Wave

yersinia

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

curt

#192
Hallo @yersinia

ich hatte Deine freundlichen Hinweise zu schnell gelesen und war zudem gedanklich auf dem falschen Boot.

Herzlichen Dank!
RPI 4 - Jeelink HomeMatic Z-Wave