FHEM > Automatisierung

Anwendungsbeispiel JsonMod / Covid / 7-Tage-Inzidenz

<< < (31/32) > >>

khk123:
Hi Ronny,

freut mich.  :)

Gruß
Karlheinz

yersinia:
Anbei ein readingsList Update um die Booster-Impfungen mit anzuzeigen (einfach in dem Attribut readingList reinkopieren). Vorher die Bundesländer entsprechend anpassen - ich hab hier 01 und 02 genutzt.

--- Zitat von: yersinia am 24 Juni 2021, 15:49:50 ---Es wird jetzt nach dem rs Wert gesucht und die Readings danach benannt. Einfach den rs Wert für das interessierte Bundesland einfügen:
01=Schleswig-Holstein
02=Hamburg
03=Niedersachsen
04=Bremen
05=Nordrhein-Westfalen
06=Hessen
07=Rheinland-Pfalz
08=Baden-Württemberg
09=Bayern
10=Saarland
11=Berlin
12=Brandenburg
13=Mecklenburg-Vorpommern
14=Sachsen
15=Sachsen-Anhalt
16=Thüringen

Der Endpoint liefert noch Daten für Bundesressorts (data[16]) sowie Deutschland (data[17]) welche keinen rs Wert haben - diese sind im readingList unten angehängt.
--- Ende Zitat ---

--- Code: ---single(jsonPath('$.lastUpdate'), 'lastUpdate', '-?-');
multi(jsonPath("\$.data[?(\@.rs in ['01', 02'])]"), concat(property('rs'),'_name'), property('name'));
multi(jsonPath("\$.data[?(\@.rs in ['01', 02'])]"), concat(property('rs'),'_inhabitants'), property('inhabitants'));
multi(jsonPath("\$.data[?(\@.rs in ['01', 02'])]"), concat(property('rs'),'_1st_dose_abs'), property('vaccinatedAtLeastOnce.doses'));
multi(jsonPath("\$.data[?(\@.rs in ['01', 02'])]"), concat(property('rs'),'_1st_dose_quote'), property('vaccinatedAtLeastOnce.quote'));
multi(jsonPath("\$.data[?(\@.rs in ['01', 02'])]"), concat(property('rs'),'_1st_dose_diff'), property('vaccinatedAtLeastOnce.differenceToThePreviousDay'));
multi(jsonPath("\$.data[?(\@.rs in ['01', 02'])]"), concat(property('rs'),'_1st_dose_vax_0_name'), property('fullyVaccinated.vaccine[0].name'));
multi(jsonPath("\$.data[?(\@.rs in ['01', 02'])]"), concat(property('rs'),'_1st_dose_vax_0_doses'), property('fullyVaccinated.vaccine[0].firstDoses'));
multi(jsonPath("\$.data[?(\@.rs in ['01', 02'])]"), concat(property('rs'),'_1st_dose_vax_1_name'), property('fullyVaccinated.vaccine[1].name'));
multi(jsonPath("\$.data[?(\@.rs in ['01', 02'])]"), concat(property('rs'),'_1st_dose_vax_1_doses'), property('fullyVaccinated.vaccine[1].firstDoses'));
multi(jsonPath("\$.data[?(\@.rs in ['01', 02'])]"), concat(property('rs'),'_1st_dose_vax_2_name'), property('fullyVaccinated.vaccine[2].name'));
multi(jsonPath("\$.data[?(\@.rs in ['01', 02'])]"), concat(property('rs'),'_1st_dose_vax_2_doses'), property('fullyVaccinated.vaccine[2].firstDoses'));
multi(jsonPath("\$.data[?(\@.rs in ['01', 02'])]"), concat(property('rs'),'_1st_dose_vax_3_name'), property('fullyVaccinated.vaccine[3].name'));
multi(jsonPath("\$.data[?(\@.rs in ['01', 02'])]"), concat(property('rs'),'_1st_dose_vax_3_doses'), property('fullyVaccinated.vaccine[3].firstDoses'));
multi(jsonPath("\$.data[?(\@.rs in ['01', 02'])]"), concat(property('rs'),'_2nd_dose_abs'), property('fullyVaccinated.doses'));
multi(jsonPath("\$.data[?(\@.rs in ['01', 02'])]"), concat(property('rs'),'_2nd_dose_quote'), property('fullyVaccinated.quote'));
multi(jsonPath("\$.data[?(\@.rs in ['01', 02'])]"), concat(property('rs'),'_2nd_dose_diff'), property('fullyVaccinated.differenceToThePreviousDay'));
multi(jsonPath("\$.data[?(\@.rs in ['01', 02'])]"), concat(property('rs'),'_2nd_dose_vax_0_name'), property('fullyVaccinated.vaccine[0].name'));
multi(jsonPath("\$.data[?(\@.rs in ['01', 02'])]"), concat(property('rs'),'_2nd_dose_vax_0_doses'), property('fullyVaccinated.vaccine[0].secondDoses'));
multi(jsonPath("\$.data[?(\@.rs in ['01', 02'])]"), concat(property('rs'),'_2nd_dose_vax_1_name'), property('fullyVaccinated.vaccine[1].name'));
multi(jsonPath("\$.data[?(\@.rs in ['01', 02'])]"), concat(property('rs'),'_2nd_dose_vax_1_doses'), property('fullyVaccinated.vaccine[1].secondDoses'));
multi(jsonPath("\$.data[?(\@.rs in ['01', 02'])]"), concat(property('rs'),'_2nd_dose_vax_2_name'), property('fullyVaccinated.vaccine[2].name'));
multi(jsonPath("\$.data[?(\@.rs in ['01', 02'])]"), concat(property('rs'),'_2nd_dose_vax_2_doses'), property('fullyVaccinated.vaccine[2].secondDoses'));
multi(jsonPath("\$.data[?(\@.rs in ['01', 02'])]"), concat(property('rs'),'_2nd_dose_vax_3_name'), property('fullyVaccinated.vaccine[3].name'));
multi(jsonPath("\$.data[?(\@.rs in ['01', 02'])]"), concat(property('rs'),'_2nd_dose_vax_3_doses'), property('fullyVaccinated.vaccine[3].secondDoses'));
multi(jsonPath("\$.data[?(\@.rs in ['01', 02'])]"), concat(property('rs'),'_3rd_dose_abs'), property('boosterVaccinated.doses'));
multi(jsonPath("\$.data[?(\@.rs in ['01', 02'])]"), concat(property('rs'),'_3rd_dose_quote'), property('boosterVaccinated.quote'));
multi(jsonPath("\$.data[?(\@.rs in ['01', 02'])]"), concat(property('rs'),'_3rd_dose_diff'), property('boosterVaccinated.differenceToThePreviousDay'));
multi(jsonPath("\$.data[?(\@.rs in ['01', 02'])]"), concat(property('rs'),'_3rd_dose_vax_0_name'), property('boosterVaccinated.vaccine[0].name'));
multi(jsonPath("\$.data[?(\@.rs in ['01', 02'])]"), concat(property('rs'),'_3rd_dose_vax_0_doses'), property('boosterVaccinated.vaccine[0].boosterDoses'));
multi(jsonPath("\$.data[?(\@.rs in ['01', 02'])]"), concat(property('rs'),'_3rd_dose_vax_1_name'), property('boosterVaccinated.vaccine[1].name'));
multi(jsonPath("\$.data[?(\@.rs in ['01', 02'])]"), concat(property('rs'),'_3rd_dose_vax_1_doses'), property('boosterVaccinated.vaccine[1].boosterDoses'));
multi(jsonPath("\$.data[?(\@.name in ['Deutschland', 'Bundesressorts'])]"), concat(property('name'),'_name'), property('name'));
multi(jsonPath("\$.data[?(\@.name in ['Deutschland', 'Bundesressorts'])]"), concat(property('name'),'_inhabitants'), property('inhabitants'));
multi(jsonPath("\$.data[?(\@.name in ['Deutschland', 'Bundesressorts'])]"), concat(property('name'),'_1st_dose_abs'), property('vaccinatedAtLeastOnce.doses'));
multi(jsonPath("\$.data[?(\@.name in ['Deutschland', 'Bundesressorts'])]"), concat(property('name'),'_1st_dose_quote'), property('vaccinatedAtLeastOnce.quote'));
multi(jsonPath("\$.data[?(\@.name in ['Deutschland', 'Bundesressorts'])]"), concat(property('name'),'_1st_dose_diff'), property('vaccinatedAtLeastOnce.differenceToThePreviousDay'));
multi(jsonPath("\$.data[?(\@.name in ['Deutschland', 'Bundesressorts'])]"), concat(property('name'),'_1st_dose_vax_0_name'), property('fullyVaccinated.vaccine[0].name'));
multi(jsonPath("\$.data[?(\@.name in ['Deutschland', 'Bundesressorts'])]"), concat(property('name'),'_1st_dose_vax_0_doses'), property('fullyVaccinated.vaccine[0].firstDoses'));
multi(jsonPath("\$.data[?(\@.name in ['Deutschland', 'Bundesressorts'])]"), concat(property('name'),'_1st_dose_vax_1_name'), property('bfullyVaccinated.vaccine[1].name'));
multi(jsonPath("\$.data[?(\@.name in ['Deutschland', 'Bundesressorts'])]"), concat(property('name'),'_1st_dose_vax_1_doses'), property('fullyVaccinated.vaccine[1].firstDoses'));
multi(jsonPath("\$.data[?(\@.name in ['Deutschland', 'Bundesressorts'])]"), concat(property('name'),'_1st_dose_vax_2_name'), property('fullyVaccinated.vaccine[2].name'));
multi(jsonPath("\$.data[?(\@.name in ['Deutschland', 'Bundesressorts'])]"), concat(property('name'),'_1st_dose_vax_2_doses'), property('fullyVaccinated.vaccine[2].firstDoses'));
multi(jsonPath("\$.data[?(\@.name in ['Deutschland', 'Bundesressorts'])]"), concat(property('name'),'_1st_dose_vax_3_name'), property('fullyVaccinated.vaccine[3].name'));
multi(jsonPath("\$.data[?(\@.name in ['Deutschland', 'Bundesressorts'])]"), concat(property('name'),'_1st_dose_vax_3_doses'), property('fullyVaccinated.vaccine[3].firstDoses'));
multi(jsonPath("\$.data[?(\@.name in ['Deutschland', 'Bundesressorts'])]"), concat(property('name'),'_2nd_dose_abs'), property('fullyVaccinated.doses'));
multi(jsonPath("\$.data[?(\@.name in ['Deutschland', 'Bundesressorts'])]"), concat(property('name'),'_2nd_dose_quote'), property('fullyVaccinated.quote'));
multi(jsonPath("\$.data[?(\@.name in ['Deutschland', 'Bundesressorts'])]"), concat(property('name'),'_2nd_dose_diff'), property('fullyVaccinated.differenceToThePreviousDay'));
multi(jsonPath("\$.data[?(\@.name in ['Deutschland', 'Bundesressorts'])]"), concat(property('name'),'_2nd_dose_vax_0_name'), property('fullyVaccinated.vaccine[0].name'));
multi(jsonPath("\$.data[?(\@.name in ['Deutschland', 'Bundesressorts'])]"), concat(property('name'),'_2nd_dose_vax_0_doses'), property('fullyVaccinated.vaccine[0].secondDoses'));
multi(jsonPath("\$.data[?(\@.name in ['Deutschland', 'Bundesressorts'])]"), concat(property('name'),'_2nd_dose_vax_1_name'), property('fullyVaccinated.vaccine[1].name'));
multi(jsonPath("\$.data[?(\@.name in ['Deutschland', 'Bundesressorts'])]"), concat(property('name'),'_2nd_dose_vax_1_doses'), property('fullyVaccinated.vaccine[1].secondDoses'));
multi(jsonPath("\$.data[?(\@.name in ['Deutschland', 'Bundesressorts'])]"), concat(property('name'),'_2nd_dose_vax_2_name'), property('fullyVaccinated.vaccine[2].name'));
multi(jsonPath("\$.data[?(\@.name in ['Deutschland', 'Bundesressorts'])]"), concat(property('name'),'_2nd_dose_vax_2_doses'), property('fullyVaccinated.vaccine[2].secondDoses'));
multi(jsonPath("\$.data[?(\@.name in ['Deutschland', 'Bundesressorts'])]"), concat(property('name'),'_2nd_dose_vax_3_name'), property('fullyVaccinated.vaccine[3].name'));
multi(jsonPath("\$.data[?(\@.name in ['Deutschland', 'Bundesressorts'])]"), concat(property('name'),'_2nd_dose_vax_3_doses'), property('fullyVaccinated.vaccine[3].secondDoses'));
multi(jsonPath("\$.data[?(\@.name in ['Deutschland', 'Bundesressorts'])]"), concat(property('name'),'_3rd_dose_abs'), property('boosterVaccinated.doses'));
multi(jsonPath("\$.data[?(\@.name in ['Deutschland', 'Bundesressorts'])]"), concat(property('name'),'_3rd_dose_quote'), property('boosterVaccinated.quote'));
multi(jsonPath("\$.data[?(\@.name in ['Deutschland', 'Bundesressorts'])]"), concat(property('name'),'_3rd_dose_diff'), property('boosterVaccinated.differenceToThePreviousDay'));
multi(jsonPath("\$.data[?(\@.name in ['Deutschland', 'Bundesressorts'])]"), concat(property('name'),'_3rd_dose_vax_0_name'), property('boosterVaccinated.vaccine[0].name'));
multi(jsonPath("\$.data[?(\@.name in ['Deutschland', 'Bundesressorts'])]"), concat(property('name'),'_3rd_dose_vax_0_doses'), property('boosterVaccinated.vaccine[0].secondDoses'));
multi(jsonPath("\$.data[?(\@.name in ['Deutschland', 'Bundesressorts'])]"), concat(property('name'),'_3rd_dose_vax_1_name'), property('boosterVaccinated.vaccine[1].name'));
multi(jsonPath("\$.data[?(\@.name in ['Deutschland', 'Bundesressorts'])]"), concat(property('name'),'_3rd_dose_vax_1_doses'), property('boosterVaccinated.vaccine[1].secondDoses'));
--- Ende Code ---

yersinia:
Aus einem anderen Thread:

--- Zitat von: yersinia am 02 Dezember 2021, 11:26:04 ---
--- Zitat von: JoWiemann am 01 Dezember 2021, 19:29:30 ---warum neu erfinden, wenn schon da: https://forum.fhem.de/index.php/topic,113798.msg1188775.html#msg1188775 und folgende Posts.
--- Ende Zitat ---

--- Zitat von: TWART016 am 01 Dezember 2021, 23:56:25 ---Das sind leider ganz andere Daten. Mit dem Format bekomme ich auch keine Werte.
--- Ende Zitat ---
Die sind doch nur nach Landkreis aufgesplittet, was viele Daten mit sich bringt. Daher ist die Query schon auf BW eingeschränkt. In dem Beispiel von Mickey sogar auf den LK Göttingen. Das macht das JSON wesentlich kleiner und ist einfacher zu verarbeiten. Man kann das auch auf BL einschränken.
Anbei ein RAW welches alle BL abruft, aber sich auf die BL einschränken lässt.

--- Code: ---defmod IntensivRKI JsonMod https://services7.arcgis.com/mOBPykOjAyBO2ZKk/arcgis/rest/services/DIVI_Intensivregister_Landkreise/FeatureServer/0/query?where=BL_ID%3E0&outFields=AGS,BL,BL_ID,county,anzahl_standorte,anzahl_meldebereiche,betten_frei,betten_belegt,betten_gesamt,Anteil_betten_frei,faelle_covid_aktuell,faelle_covid_aktuell_beatmet,Anteil_covid_beatmet,Anteil_COVID_betten&returnGeometry=false&f=json
attr IntensivRKI readingList multi(jsonPath("\$.features.[?(\@.attributes.BL_ID in ['8'])]"), concat(property('.attributes.AGS'),'_county'), property('.attributes.county'));;\
multi(jsonPath("\$.features.[?(\@.attributes.BL_ID in ['8'])]"), concat(property('.attributes.AGS'),'_anzahl_standorte'), property('.attributes.anzahl_standorte'));;\
multi(jsonPath("\$.features.[?(\@.attributes.BL_ID in ['8'])]"), concat(property('.attributes.AGS'),'_anzahl_meldebereiche'), property('.attributes.anzahl_meldebereiche'));;\
multi(jsonPath("\$.features.[?(\@.attributes.BL_ID in ['8'])]"), concat(property('.attributes.AGS'),'_betten_frei'), property('.attributes.betten_frei'));;\
multi(jsonPath("\$.features.[?(\@.attributes.BL_ID in ['8'])]"), concat(property('.attributes.AGS'),'_betten_belegt'), property('.attributes.betten_belegt'));;\
multi(jsonPath("\$.features.[?(\@.attributes.BL_ID in ['8'])]"), concat(property('.attributes.AGS'),'_betten_gesamt'), property('.attributes.betten_gesamt'));;\
multi(jsonPath("\$.features.[?(\@.attributes.BL_ID in ['8'])]"), concat(property('.attributes.AGS'),'_Anteil_betten_frei'), property('.attributes.Anteil_betten_frei'));;\
multi(jsonPath("\$.features.[?(\@.attributes.BL_ID in ['8'])]"), concat(property('.attributes.AGS'),'_faelle_covid_aktuell'), property('.attributes.faelle_covid_aktuell'));;\
multi(jsonPath("\$.features.[?(\@.attributes.BL_ID in ['8'])]"), concat(property('.attributes.AGS'),'_faelle_covid_aktuell_beatmet'), property('.attributes.faelle_covid_aktuell_beatmet'));;\
multi(jsonPath("\$.features.[?(\@.attributes.BL_ID in ['8'])]"), concat(property('.attributes.AGS'),'_Anteil_covid_beatmet'), property('.attributes.Anteil_covid_beatmet'));;\
multi(jsonPath("\$.features.[?(\@.attributes.BL_ID in ['8'])]"), concat(property('.attributes.AGS'),'_Anteil_COVID_betten'), property('.attributes.Anteil_COVID_betten'));;
attr IntensivRKI update-on-start 0
attr IntensivRKI interval 0 12 * * *
attr IntensivRKI webCmd reread
--- Ende Code ---
Dabei sind die BL_IDs:
1 = Schleswig-Holstein
2 = Hamburg
3 = Niedersachsen
4 = Bremen
5 = Nordrhein-Westfalen
6 = Hessen
7 = Rheinland-Pfalz
8 = Baden-Württemberg
9 = Bayern
10 = Saarland
11 = Berlin
12 = Brandenburg
13 = Mecklenburg-Vorpommern
14 = Sachsen
15 = Sachsen-Anhalt
16 = Thüringen

Interessiert man sich nur für vereinzelte Landkreise, würde ich nach dem AGS suchen und filtern:

--- Code: ---defmod IntensivRKI JsonMod https://services7.arcgis.com/mOBPykOjAyBO2ZKk/arcgis/rest/services/DIVI_Intensivregister_Landkreise/FeatureServer/0/query?where=BL_ID%3E0&outFields=AGS,BL,BL_ID,county,anzahl_standorte,anzahl_meldebereiche,betten_frei,betten_belegt,betten_gesamt,Anteil_betten_frei,faelle_covid_aktuell,faelle_covid_aktuell_beatmet,Anteil_covid_beatmet,Anteil_COVID_betten&returnGeometry=false&f=json
attr IntensivRKI interval 0 12 * * *
attr IntensivRKI readingList multi(jsonPath("\$.features.[?(\@.attributes.AGS in ['08117', '08118'])]"), concat(property('.attributes.AGS'),'_county'), property('.attributes.county'));;\
multi(jsonPath("\$.features.[?(\@.attributes.AGS in ['08117', '08118'])]"), concat(property('.attributes.AGS'),'_BL'), property('.attributes.BL'));;\
multi(jsonPath("\$.features.[?(\@.attributes.AGS in ['08117', '08118'])]"), concat(property('.attributes.AGS'),'_anzahl_standorte'), property('.attributes.anzahl_standorte'));;\
multi(jsonPath("\$.features.[?(\@.attributes.AGS in ['08117', '08118'])]"), concat(property('.attributes.AGS'),'_anzahl_meldebereiche'), property('.attributes.anzahl_meldebereiche'));;\
multi(jsonPath("\$.features.[?(\@.attributes.AGS in ['08117', '08118'])]"), concat(property('.attributes.AGS'),'_betten_frei'), property('.attributes.betten_frei'));;\
multi(jsonPath("\$.features.[?(\@.attributes.AGS in ['08117', '08118'])]"), concat(property('.attributes.AGS'),'_betten_belegt'), property('.attributes.betten_belegt'));;\
multi(jsonPath("\$.features.[?(\@.attributes.AGS in ['08117', '08118'])]"), concat(property('.attributes.AGS'),'_betten_gesamt'), property('.attributes.betten_gesamt'));;\
multi(jsonPath("\$.features.[?(\@.attributes.AGS in ['08117', '08118'])]"), concat(property('.attributes.AGS'),'_Anteil_betten_frei'), property('.attributes.Anteil_betten_frei'));;\
multi(jsonPath("\$.features.[?(\@.attributes.AGS in ['08117', '08118'])]"), concat(property('.attributes.AGS'),'_faelle_covid_aktuell'), property('.attributes.faelle_covid_aktuell'));;\
multi(jsonPath("\$.features.[?(\@.attributes.AGS in ['08117', '08118'])]"), concat(property('.attributes.AGS'),'_faelle_covid_aktuell_beatmet'), property('.attributes.faelle_covid_aktuell_beatmet'));;\
multi(jsonPath("\$.features.[?(\@.attributes.AGS in ['08117', '08118'])]"), concat(property('.attributes.AGS'),'_Anteil_covid_beatmet'), property('.attributes.Anteil_covid_beatmet'));;\
multi(jsonPath("\$.features.[?(\@.attributes.AGS in ['08117', '08118'])]"), concat(property('.attributes.AGS'),'_Anteil_COVID_betten'), property('.attributes.Anteil_COVID_betten'));;
attr IntensivRKI update-on-start 0
attr IntensivRKI webCmd reread
--- Ende Code ---
Die AGS müssen einmal mühsam aus der Quelle rausgesucht werden.
--- Ende Zitat ---

TWART016:

--- Zitat von: yersinia am 02 Dezember 2021, 11:32:11 ---Aus einem anderen Thread:Die sind doch nur nach Landkreis aufgesplittet, was viele Daten mit sich bringt. Daher ist die Query schon auf BW eingeschränkt. In dem Beispiel von Mickey sogar auf den LK Göttingen. Das macht das JSON wesentlich kleiner und ist einfacher zu verarbeiten. Man kann das auch auf BL einschränken.

--- Ende Zitat ---
Das meine ich damit nicht. Die Datenquelle gibt die Anzahl nicht her, deshalb wollte ich eine andere nehmen.

yersinia:

--- Zitat von: TWART016 am 04 Dezember 2021, 00:34:43 ---Die Datenquelle gibt die Anzahl nicht her, deshalb wollte ich eine andere nehmen.
--- Ende Zitat ---
Die Anzahl von was? Deine Quelle gibt an - jds interpretiere ich das so - wieviel CoViD-Patienten in einem Bundesland auf der Intensivstation betreut werden. Aber detaillierter gibt es die Zahlen nicht.
Mickeys Quelle gibt die Auslastung der Intensivstationen der Landkreise aus - inklusive CoViD-Patienten und wieviel davon beatmet werden. Aber natürlich nicht aufaddiert.

Imho ist das Anwendungsfall abhängig, was man sehen möchte. Auf die Zahlen verlassen würde ich mich allerdings nicht - bei keinen der beiden Quellen.

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln