Anwendungsbeispiel JsonMod #2: CORONA Verbreitung

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

Vorheriges Thema - Nächstes Thema

curt

Zitat von: All-Ex am 29 Juni 2020, 18:11:52
Feld cases7_per_100k ...
Für die hessischen Landkreise bekomme ich den Wert ziemlich einfach raus:
https://services7.arcgis.com/mOBPykOjAyBO2ZKk/arcgis/rest/services/RKI_Landkreisdaten/FeatureServer/0/query?where=BL_ID%3D6&outFields=cases7_per_100k,county,last_update,OBJECTID&returnGeometry=false&outSR=4326&f=json

Issjamalcool:
Mit BL_ID kann man die URL hacken, die 15 ist Sachsen-Anhalt. Sehr fein.

Zitat von: All-Ex am 29 Juni 2020, 18:11:52
Feld cases7_per_100k

Das Ganze wäre ja für Bund sowie eigenes Bundesland auch noch ganz schön - hat da jemand schon URLs gehackt?

Zitat von: All-Ex am 29 Juni 2020, 18:11:52
Gibt es dieses Feld auch für ein ganzes Bundesland oder für ganz Deutschland?

Ach - da fragst Du es ja selbst, @All-Ex

Ok, wie weit seid ihr?

Und - jede Art von Code-Vorschlägen für FHEM-Web sowie FTUI sind willkommen!
RPI 4 - Jeelink HomeMatic Z-Wave

yersinia

#151
Zitat von: curt am 19 Oktober 2020, 04:27:49Das Ganze wäre ja für Bund sowie eigenes Bundesland auch noch ganz schön - hat da jemand schon URLs gehackt?
Hier ein Beispiel für 2 Bundesländer, Suche geht über Text.
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 event-on-update-reading .computedReadings
attr coronaSpreadDE interval 9 */3 * * *
attr coronaSpreadDE readingList multi(jsonPath("\$.features[?(\@.attributes.LAN_ew_GEN in ['Hessen', 'Bayern'])]"), concat(count(),'_name'), property('attributes.LAN_ew_GEN'));;\
multi(jsonPath("\$.features[?(\@.attributes.LAN_ew_GEN in ['Hessen', 'Bayern'])]"), concat(count(),'_cases'), property('attributes.Fallzahl'));;\
multi(jsonPath("\$.features[?(\@.attributes.LAN_ew_GEN in ['Hessen', 'Bayern'])]"), concat(count(),'_deaths'), property('attributes.Death'));;\
multi(jsonPath("\$.features[?(\@.attributes.LAN_ew_GEN in ['Hessen', 'Bayern'])]"), concat(count(),'_lastUpdate'), property('attributes.Aktualisierung'));;
attr coronaSpreadDE stateFormat { my $ret = "<div style=\"text-align: left;;\">";;\
$ret .= "last <a href=\"https://corona.rki.de\" title=\"RKI CoViD19\" rel=\"noopener noreferrer\" target=\"_blank\">RKI CoViD-19</a> check => ";;\
$ret .= POSIX::strftime("%d.%m. %H:%M",localtime(time_str2num(ReadingsTimestamp($name,".computedReadings","2000-01-01 00:00:00"))));;\
$ret .= "<br \/>";;\
$ret .= ReadingsVal($name,"0_name","-").": <font style=\"color:orange;;font-weight:bold;;\">".ReadingsVal($name,"0_cases","-")." F&auml;;lle</font>&nbsp;;&amp;;&nbsp;;";;\
$ret .= "<font style=\"color:red;;font-weight:bold;;\">".ReadingsVal($name,"0_deaths","-")." Tote</font>";;\
$ret .= "&nbsp;;(".ReadingsVal($name,"0_lastUpdatedh","-").")<br \/>";;\
$ret .= ReadingsVal($name,"1_name","-").": <font style=\"color:orange;;font-weight:bold;;\">".ReadingsVal($name,"1_cases","-")." F&auml;;lle</font>&nbsp;;&amp;;&nbsp;;";;\
$ret .= "<font style=\"color:red;;font-weight:bold;;\">".ReadingsVal($name,"1_deaths","-")." Tote</font>";;\
$ret .= "&nbsp;;(".ReadingsVal($name,"1_lastUpdatedh","-").")";;\
$ret .= "</div>";;\
return $ret;;}
attr coronaSpreadDE update-on-start 1
attr coronaSpreadDE userReadings 0_lastUpdatedh {POSIX::strftime ("%d.%m. %H:%M", localtime(ReadingsVal($name,"0_lastUpdate",0)/1000));;}, 1_lastUpdatedh {POSIX::strftime ("%d.%m. %H:%M", localtime(ReadingsVal($name,"1_lastUpdate",0)/1000));;}
attr coronaSpreadDE webCmd reread


Und noch einmal für Landkreise (via OBJECTID, 68=SK Mönchengladbach, 292=LK Weißenburg-Gunzenhausen):
defmod coronaSpreadCounties 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 coronaSpreadCounties event-on-update-reading .computedReadings
attr coronaSpreadCounties interval 10 */3 * * *
attr coronaSpreadCounties readingList multi(jsonPath("\$.features[?(\@.attributes.OBJECTID in ['68', '292'])]"), concat(property('attributes.OBJECTID'),'_name'), property('attributes.county'));;\
multi(jsonPath("\$.features[?(\@.attributes.OBJECTID in ['68', '292'])]"), concat(property('attributes.OBJECTID'),'_cases'), property('attributes.cases'));;\
multi(jsonPath("\$.features[?(\@.attributes.OBJECTID in ['68', '292'])]"), concat(property('attributes.OBJECTID'),'_deaths'), property('attributes.deaths'));;\
multi(jsonPath("\$.features[?(\@.attributes.OBJECTID in ['68', '292'])]"), concat(property('attributes.OBJECTID'),'_cases7_per_100k'), property('attributes.cases7_per_100k'));;
attr coronaSpreadCounties room CoViD-19
attr coronaSpreadCounties stateFormat { my $ret = "<div style=\"text-align: left;;\">";;\
$ret .= "last <a href=\"https://corona.rki.de\" title=\"RKI CoViD19\" rel=\"noopener noreferrer\" target=\"_blank\">RKI CoViD-19</a> check => ";;\
$ret .= POSIX::strftime("%d.%m. %H:%M",localtime(time_str2num(ReadingsTimestamp($name,".computedReadings","2000-01-01 00:00:00"))));;\
$ret .= "<br \/>";;\
$ret .= ReadingsVal($name,"68_name","-").": ";;\
$ret .= "<font style=\"font-weight:bold;;color:";;\
if(ReadingsNum($name,"68_cases7_per_100k",0) < 35) {\
$ret .= "green";;\
} elsif (ReadingsNum($name,"68_cases7_per_100k",0) < 50) {\
$ret .= "orange";;\
} else {\
$ret .= "red";;\
}\
$ret .= ";;\">".sprintf("%.1f", ReadingsNum($name,"68_cases7_per_100k",0))."</font>&nbsp;;&amp;;&nbsp;;";;\
$ret .= "<font style=\"color:orange;;\">".ReadingsVal($name,"68_cases","-")." F&auml;;lle</font>&nbsp;;&amp;;&nbsp;;";;\
$ret .= "<font style=\"color:red;;\">".ReadingsVal($name,"68_deaths","-")." Tote</font><br \/>";;\
$ret .= ReadingsVal($name,"292_name","-").": ";;\
$ret .= "<font style=\"font-weight:bold;;color:";;\
if(ReadingsNum($name,"292_cases7_per_100k",0) < 35) {\
$ret .= "green";;\
} elsif (ReadingsNum($name,"292_cases7_per_100k",0) < 50) {\
$ret .= "orange";;\
} else {\
$ret .= "red";;\
}\
$ret .= ";;\">".sprintf("%.1f", ReadingsNum($name,"292_cases7_per_100k",0))."</font>&nbsp;;&amp;;&nbsp;;";;\
$ret .= "<font style=\"color:orange;;\">".ReadingsVal($name,"292_cases","-")." F&auml;;lle</font>&nbsp;;&amp;;&nbsp;;";;\
$ret .= "<font style=\"color:red;;\">".ReadingsVal($name,"292_deaths","-")." Tote</font>";;\
$ret .= "</div>";;\
return $ret;;}
attr coronaSpreadCounties update-on-start 1
attr coronaSpreadCounties webCmd reread


Zitat von: curt am 02 Januar 1970, 21:31:47Und - jede Art von Code-Vorschlägen für FHEM-Web sowie FTUI sind willkommen!
Dieser Thread ist voll damit...
FHEMWEB -> #48, #50, #84
FTUI -> #17, #29
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

Gisbert

#152
Hallo yersinia,

sehr interessantes Beispiel, welches auf Anhieb funktioniert.
Darf ich noch eine Bitte äußern?
Ich hätte gerne den 7-Tage-Inzidenz-Wert in der Aufstellung, allerdings gelingt mir das mit der angehängten Definition nicht. Ich habe cases7_per_100k ergänzt, aber ohne Erfolg. Sieh mir bitte nach, dass ich außer über copy-and-paste den Inhalt nicht wirklich durchdringe.

defmod coronaSpreadNRW 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,cases7_per_100k,Death&returnGeometry=false&outSR=4326&f=json
attr coronaSpreadNRW event-on-update-reading .computedReadings
attr coronaSpreadNRW interval 9 */3 * * *
attr coronaSpreadNRW readingList multi(jsonPath("\$.features[?(\@.attributes.LAN_ew_GEN in ['Nordrhein-Westfalen'])]"), concat(count(),'_name'), property('attributes.LAN_ew_GEN'));;\
multi(jsonPath("\$.features[?(\@.attributes.LAN_ew_GEN in ['Nordrhein-Westfalen'])]"), concat(count(),'_cases'), property('attributes.Fallzahl'));;\
multi(jsonPath("\$.features[?(\@.attributes.LAN_ew_GEN in ['Nordrhein-Westfalen'])]"), concat(count(),'_deaths'), property('attributes.Death'));;\
multi(jsonPath("\$.features[?(\@.attributes.LAN_ew_GEN in ['Nordrhein-Westfalen'])]"), concat(count(),'_lastUpdate'), property('attributes.Aktualisierung'));;\
multi(jsonPath("\$.features[?(\@.attributes.LAN_ew_GEN in ['Nordrhein-Westfalen'])]"), concat(count(),'_cases7_per_100k'), property('attributes.cases7_per_100k'));;
attr coronaSpreadNRW room Corona
attr coronaSpreadNRW stateFormat { my $ret = "<div style=\"text-align: left;;\">";;\
$ret .= "last <a href=\"https://corona.rki.de\" title=\"RKI CoViD19\" rel=\"noopener noreferrer\" target=\"_blank\">RKI CoViD-19</a> check => ";;\
$ret .= POSIX::strftime("%d.%m. %H:%M",localtime(time_str2num(ReadingsTimestamp($name,".computedReadings","2000-01-01 00:00:00"))));;\
$ret .= "<br \/>";;\
$ret .= ReadingsVal($name,"0_name","-").": <font style=\"color:orange;;font-weight:bold;;\">".ReadingsVal($name,"0_cases","-")." F&auml;;lle</font>&nbsp;;&amp;;&nbsp;;";;\
$ret .= "<font style=\"color:red;;font-weight:bold;;\">".ReadingsVal($name,"0_deaths","-")." Tote</font>";;\
$ret .= "&nbsp;;(".ReadingsVal($name,"0_lastUpdatedh","-").")<br \/>";;\
$ret .= ReadingsVal($name,"1_name","-").": <font style=\"color:orange;;font-weight:bold;;\">".ReadingsVal($name,"1_cases","-")." F&auml;;lle</font>&nbsp;;&amp;;&nbsp;;";;\
$ret .= "<font style=\"color:red;;font-weight:bold;;\">".ReadingsVal($name,"1_deaths","-")." Tote</font>";;\
$ret .= "&nbsp;;(".ReadingsVal($name,"1_lastUpdatedh","-").")";;\
$ret .= "</div>";;\
return $ret;;}
attr coronaSpreadNRW update-on-start 1
attr coronaSpreadNRW userReadings 0_lastUpdatedh {POSIX::strftime ("%d.%m. %H:%M", localtime(ReadingsVal($name,"0_lastUpdate",0)/1000));;}, 1_lastUpdatedh {POSIX::strftime ("%d.%m. %H:%M", localtime(ReadingsVal($name,"1_lastUpdate",0)/1000));;}
attr coronaSpreadNRW webCmd reread


Kannst du mal reinschauen?

Viele Grüße Gisbert
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

yersinia

#153
Was die Quelle nicht hergibt....
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,cases7_per_100k,Death&returnGeometry=false&outSR=4326&f=json führt zu
Zitat{"error":{"code":400,"message":"Cannot perform query. Invalid query parameters.","details":["Unable to perform query. Please check your parameters."]}}

Der oben verwendete Link hat keine Inzidenz in dieser Form mWn, allerdings ein Datenfeld faelle_100000_EW was für Fälle/100.000 EW steht - im Unterschied zur Inzidenz ist der zeitliche Faktor nicht einberechnet.
Entweder andere, mir derzeit nicht bekannte, Quelle für Inzidenz auf Bundesland-Ebene verwenden oder die Inzidenz der Kommunen nutzen. Das RKI scheint Ersteres nicht zur Verfügung zu stellen (warum auch?). Vielleicht kennt jmd anders eine andere Quelle?

Das ist falsch, siehe #155.
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

Gisbert

Hallo yersinia,

das kann ich natürlich verstehen, was mich aber zur Frage führt, woher weiß man, bzw. du, dass diese Abfragen (Fallzahl,Aktualisierung,faelle_100000_EW,Death) und eventuell sonst keine verfügbar sind.
Kannst du mich darüber informieren?
Leider führt mich mein trial-and-error-Ansatz bei der Suche nach Abfragen nicht zu einem Ergebnis.

Viele Grüße Gisbert
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

yersinia

#155
Ich habe die Informationen hier aus dem Forum, freundlicherweise von herrmannj zusammengetragen - siehe #1 hier und 7 Tage Inzidenz Thread.
Wenn man im Netz ein bisschen Sucht findet man aber auch dies hier inkl. API Beschreibung:
RKI Corona Bundesländer
RKI Corona Landkreise

Und wenn man die API liest, dann ist meine Aussage falsch bezgl der Inzidenz auf BL ebene, es ist nur ein anderes feld: cases7_bl_per_100k. ::) Es müsste bei dir dann ungefähr so aussehen:
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,cases7_bl_per_100k,Death&returnGeometry=false&outSR=4326&f=json
attr coronaSpreadDE event-on-update-reading .computedReadings
attr coronaSpreadDE interval 9 */3 * * *
attr coronaSpreadDE readingList multi(jsonPath("\$.features[?(\@.attributes.LAN_ew_GEN in ['Nordrhein-Westfalen'])]"), concat(count(),'_name'), property('attributes.LAN_ew_GEN'));;\
multi(jsonPath("\$.features[?(\@.attributes.LAN_ew_GEN in ['Nordrhein-Westfalen'])]"), concat(count(),'_cases'), property('attributes.Fallzahl'));;\
multi(jsonPath("\$.features[?(\@.attributes.LAN_ew_GEN in ['Nordrhein-Westfalen'])]"), concat(count(),'_cases_per_100k'), property('attributes.faelle_100000_EW'));;\
multi(jsonPath("\$.features[?(\@.attributes.LAN_ew_GEN in ['Nordrhein-Westfalen'])]"), concat(count(),'_cases7_bl_per_100k'), property('attributes.cases7_bl_per_100k'));;\
multi(jsonPath("\$.features[?(\@.attributes.LAN_ew_GEN in ['Nordrhein-Westfalen'])]"), concat(count(),'_deaths'), property('attributes.Death'));;\
multi(jsonPath("\$.features[?(\@.attributes.LAN_ew_GEN in ['Nordrhein-Westfalen'])]"), concat(count(),'_lastUpdate'), property('attributes.Aktualisierung'));;
attr coronaSpreadDE room Corona
attr coronaSpreadDE stateFormat { my $ret = "<div style=\"text-align: left;;\">";;\
$ret .= "last <a href=\"https://corona.rki.de\" title=\"RKI CoViD19\" rel=\"noopener noreferrer\" target=\"_blank\">RKI CoViD-19</a> check => ";;\
$ret .= POSIX::strftime("%d.%m. %H:%M",localtime(time_str2num(ReadingsTimestamp($name,".computedReadings","2000-01-01 00:00:00"))));;\
$ret .= "<br \/>";;\
$ret .= ReadingsVal($name,"0_name","-").":&nbsp;;";;\
$ret .= "<font style=\"font-weight:bold;;color:";;\
if(ReadingsNum($name,"0_cases7_bl_per_100k",0) < 35) {\
$ret .= "green";;\
} elsif (ReadingsNum($name,"0_cases7_bl_per_100k",0) < 50) {\
$ret .= "orange";;\
} else {\
$ret .= "red";;\
}\
$ret .= ";;\">".sprintf("%.1f", ReadingsNum($name,"0_cases7_bl_per_100k",0))."</font>&nbsp;;&amp;;&nbsp;;";;\
$ret .= "<font style=\"color:orange;;font-weight:bold;;\">".ReadingsVal($name,"0_cases","-")." F&auml;;lle</font>&nbsp;;&amp;;&nbsp;;";;\
$ret .= "<font style=\"color:red;;font-weight:bold;;\">".ReadingsVal($name,"0_deaths","-")." Tote</font>";;\
$ret .= "&nbsp;;(".ReadingsVal($name,"0_lastUpdatedh","-").")";;\
$ret .= "</div>";;\
return $ret;;}
attr coronaSpreadDE update-on-start 1
attr coronaSpreadDE userReadings 0_lastUpdatedh {POSIX::strftime ("%d.%m. %H:%M", localtime(ReadingsVal($name,"0_lastUpdate",0)/1000));;}
attr coronaSpreadDE webCmd reread


Daten zu Staaten gibt es unter disease.sh.

EDIT: Code optimiert
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

#156
@yersinia
Ich weiß, dass Du genervt warst, man hörte es heraus.

Aber Du hast dann selbstlos Zeit von Deiner persönlichen Lebenszeit genommen, den Stand der Diskussion zusammengefasst, dabei den wichtigen Punkt "/7d/100.000" eingearbeitet, funktionierende Beispiele gezeigt.

Wenn ich etwas zu sagen hätte, würde ich Dir heute meinen persönlich mit Goldfolie auf Pappe geklebten Sonnen-Orden "Freundlicher Helfer des Tages" umhängen: Sehr herzlichen Dank!

Einem weiteren hast Du auch geholfen, vielleicht aber noch vielen mehr - denen, die leise mitlesen, aber sehr dankbar Wissen mitnehmen.

Danke nochmals, yersinia!
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

Mit englischen Redewendungen bin ich nicht ganz sooo sattelfest, daher: Mein Dank war ehrlich und reinen Herzens.

Hast Du @yersinia oder @herrmannj vielleicht noch eine Idee für die tägliche Zahl der Neuerkrankten Deutschlands? Ich erkläre genauer:

Es schwirren da ja zig Zahlen rum, ich spare mir die Aufzählung. Ich nutze dafür einen Code aus diesem Thread, der nutzt https://disease.sh/v3/covid-19/countries - das sind Zahlen, die sich über den Tag ändern. Schon schick.

Irgendwie hätte ich gern zusätzlich die offizielle Zahl des RKI, also die Zahl, die das RKI im Dashboard angibt, also hier: https://experience.arcgis.com/experience/478220a4c454480e823b17327b2bf1d4
Dafür fand ich noch folgendes, wenn das hilft: https://github.com/rearc-data/covid-19-deutschland-robert-koch-institut
RPI 4 - Jeelink HomeMatic Z-Wave

yersinia

Gefunden habe ich nur diese offizielle Beschreibung: https://www.arcgis.com/home/item.html?id=dd4580c810204019a7b8eb3e0b329dd6
Anscheinend gibt das RKI keine offiziellen Zahlen für ganz DE raus, man könnte aber, mit einem userReading o.ä., die Zahlen der Bundesländer addieren.

disease.sh liefert noch für einige Staaten laut deren Aussage 'offizielle', von der Regierung gemeldete, Daten: https://disease.sh/docs/#/COVID-19%3A%20Government/get_v3_covid_19_gov__country_
Die Request Url wäre: https://disease.sh/v3/covid-19/gov/Germany
Response würde so aussehen, dabei ist der letzte Block (province Total) interessant:
[
  {
    "updated": 1603294353926,
    "province": "Baden-Württem­berg",
    "cases": 61694,
    "casePreviousDayChange": 973,
    "casesPerHundredThousand": 5419,
    "sevenDayCasesPerHundredThousand": 48,
    "deaths": 1946
  },
  {
    "updated": 1603294353926,
    "province": "Bayern",
    "cases": 82102,
    "casePreviousDayChange": 1222,
    "casesPerHundredThousand": 7213,
    "sevenDayCasesPerHundredThousand": 55,
    "deaths": 2726
  },
  {
    "updated": 1603294353927,
    "province": "Berlin",
    "cases": 22727,
    "casePreviousDayChange": 822,
    "casesPerHundredThousand": 3399,
    "sevenDayCasesPerHundredThousand": 92,
    "deaths": 243
  },
  {
    "updated": 1603294353928,
    "province": "Branden­burg",
    "cases": 5670,
    "casePreviousDayChange": 96,
    "casesPerHundredThousand": 577,
    "sevenDayCasesPerHundredThousand": 22,
    "deaths": 175
  },
  {
    "updated": 1603294353929,
    "province": "Bremen",
    "cases": 3725,
    "casePreviousDayChange": 95,
    "casesPerHundredThousand": 563,
    "sevenDayCasesPerHundredThousand": 82,
    "deaths": 63
  },
  {
    "updated": 1603294353930,
    "province": "Hamburg",
    "cases": 10207,
    "casePreviousDayChange": 204,
    "casesPerHundredThousand": 852,
    "sevenDayCasesPerHundredThousand": 46,
    "deaths": 281
  },
  {
    "updated": 1603294353930,
    "province": "Hessen",
    "cases": 27307,
    "casePreviousDayChange": 749,
    "casesPerHundredThousand": 4395,
    "sevenDayCasesPerHundredThousand": 69,
    "deaths": 590
  },
  {
    "updated": 1603294353931,
    "province": "Meck­lenburg-\nVor­pommern",
    "cases": 1790,
    "casePreviousDayChange": 71,
    "casesPerHundredThousand": 283,
    "sevenDayCasesPerHundredThousand": 17,
    "deaths": 21
  },
  {
    "updated": 1603294353931,
    "province": "Nieder­sachsen",
    "cases": 26611,
    "casePreviousDayChange": 255,
    "casesPerHundredThousand": 2573,
    "sevenDayCasesPerHundredThousand": 32,
    "deaths": 719
  },
  {
    "updated": 1603294353932,
    "province": "Nord­rhein-West­falen",
    "cases": 94883,
    "casePreviousDayChange": 2189,
    "casesPerHundredThousand": 12027,
    "sevenDayCasesPerHundredThousand": 67,
    "deaths": 1970
  },
  {
    "updated": 1603294353932,
    "province": "Rhein­land-Pfalz",
    "cases": 14199,
    "casePreviousDayChange": 242,
    "casesPerHundredThousand": 1624,
    "sevenDayCasesPerHundredThousand": 39,
    "deaths": 265
  },
  {
    "updated": 1603294353932,
    "province": "Saarland",
    "cases": 4467,
    "casePreviousDayChange": 30,
    "casesPerHundredThousand": 577,
    "sevenDayCasesPerHundredThousand": 58,
    "deaths": 177
  },
  {
    "updated": 1603294353933,
    "province": "Sachsen",
    "cases": 10906,
    "casePreviousDayChange": 386,
    "casesPerHundredThousand": 1704,
    "sevenDayCasesPerHundredThousand": 41,
    "deaths": 264
  },
  {
    "updated": 1603294353933,
    "province": "Sachsen-Anhalt",
    "cases": 3387,
    "casePreviousDayChange": 53,
    "casesPerHundredThousand": 366,
    "sevenDayCasesPerHundredThousand": 16,
    "deaths": 71
  },
  {
    "updated": 1603294353933,
    "province": "Schles­wig-Holstein",
    "cases": 5989,
    "casePreviousDayChange": 110,
    "casesPerHundredThousand": 597,
    "sevenDayCasesPerHundredThousand": 20,
    "deaths": 163
  },
  {
    "updated": 1603294353934,
    "province": "Thüringen",
    "cases": 5098,
    "casePreviousDayChange": 98,
    "casesPerHundredThousand": 520,
    "sevenDayCasesPerHundredThousand": 24,
    "deaths": 201
  },
  {
    "updated": 1603294353934,
    "province": "Total",
    "cases": 380762,
    "casePreviousDayChange": 7595,
    "casesPerHundredThousand": 42689,
    "sevenDayCasesPerHundredThousand": 51,
    "deaths": 9875
  }
]

Die Zahlen decken sich aber nicht mit denen, die man _jetzt_ beim RKI findet.
Dies wird sich im Laufe des Tages ändern. Meiner Erfahrung nach, werden die Zahlen auf disease.sh im Laufe des Tages aktualsiert und entsprechen dann den RKI Zahlen des Vortags.

Zitat von: curt am 21 Oktober 2020, 22:29:39Dafür fand ich noch folgendes, wenn das hilft: https://github.com/rearc-data/covid-19-deutschland-robert-koch-institut
Entspricht nach eigenen Angaben dieser Quelle: RKI COVID19
Auch hier gibt es keine Gesamtanzahl - außer man addiert sich dies selbst.
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

Die offizielle Zahl findet man in https://www.rki.de/DE/Content/InfAZ/N/Neuartiges_Coronavirus/Fallzahlen.html

Diese Zeile, die Zahl mit dem PLUS davor:

Gesamt 392.049 +11.287 46.772 56,2 9.905


Das schreit nach HTTPMOD und RegEx. Leider scheitere ich bei sowas regelmäßig.
RPI 4 - Jeelink HomeMatic Z-Wave

ErzGabriel

#161
Hallo zusammen.
Ich habe das Anwendungsbeispiel mal nachgebaut aber ich erhalte keine Daten, ich kriege nur die Daten für die Bundesländer. Welt erhalte ich nicht. Fhem ist geupdatet und neu gestartet aber seit 3 Tagen keine Daten erhalten.
Hat jemand einen Tipp für mich, woran es liegen kann.

Danke.

yersinia

Welches Anwendungsbeispiel hast du nachgebaut? Weltweite Daten sind im ersten Post beschrieben, nur hat sich mittlerweile der Link geändert:
define coronaSpread JsonMod https://disease.sh/v3/covid-19/countries
Das für Bundesländer zeigt auch nur Bundesländer-daten an.



Dank eines Tipps vom user tklein in diesem -> https://forum.fhem.de/index.php/topic,115264.0.html Thread, scheint es doch Gesamt-Deutsche Daten zu geben über den Link
https://services1.arcgis.com/0MSEUqKaxRlEPj5g/arcgis/rest/services/ncov_cases/FeatureServer/2/query?f=json&where=Country_Region=%27Germany%27&returnGeometry=false&spatialRel=esriSpatialRelIntersects&outFields=*&orderByFields=Confirmed%20desc&outSR=102100&resultOffset
Allerdings nach erstem Anschein ohne Inzidenz oder Veränderung zum Vortag.

Es scheint auch zu funktionieren, anbei eine RAW zum kopieren
defmod coronaSpreadDE_RKI JsonMod https://services1.arcgis.com/0MSEUqKaxRlEPj5g/arcgis/rest/services/ncov_cases/FeatureServer/2/query?f=json&where=Country_Region=%27Germany%27&returnGeometry=false&outFields=*&resultOffset
attr coronaSpreadDE_RKI interval 5 */2 * * *
attr coronaSpreadDE_RKI readingList single(jsonPath('$.features..attributes.Country_Region'), 'DE_name', '-?-');;\
single(jsonPath('$.features..attributes.Confirmed'), 'DE_confirmed', '-?-');;\
single(jsonPath('$.features..attributes.Deaths'), 'DE_deaths', '-?-');;\
single(jsonPath('$.features..attributes.Recovered'), 'DE_recovered', '-?-');;\
single(jsonPath('$.features..attributes.Active'), 'DE_active', '-?-');;\
single(jsonPath('$.features..attributes.Last_Update'), 'DE_lastUpdate', '-?-');;
attr coronaSpreadDE_RKI room CoViD-19
attr coronaSpreadDE_RKI stateFormat { my $ret = "<div style=\"text-align: left;;\">";;\
$ret .= "CoVid-19 Daten für ".ReadingsVal($name,"DE_name","-");;\
$ret .= " von ".ReadingsVal($name,"DE_lastUpdatedh","-")."<br \/>";;\
$ret .= "<font style=\"color:orange;;font-weight:bold;;\">".ReadingsVal($name,"DE_active","-")." aktive F&auml;;lle</font> \/ ";;\
$ret .= "<font style=\"\">".ReadingsVal($name,"DE_confirmed","-")." Gesamt</font><br \/>";;\
$ret .= "<font style=\"color:green;;\">".ReadingsVal($name,"DE_recovered","-")." Genesene</font> und ";;\
$ret .= "<font style=\"color:red;;font-weight:bold;;\">".ReadingsVal($name,"DE_deaths","-")." Tote</font><br \/>";;\
$ret .= "Letzter <a href=\"https://corona.rki.de\" title=\"RKI CoViD19\" rel=\"noopener noreferrer\" target=\"_blank\">RKI CoViD-19</a> Datenabruf: ";;\
$ret .= POSIX::strftime("%d.%m. %H:%M",localtime(time_str2num(ReadingsTimestamp($name,".computedReadings","2000-01-01 00:00:00"))));;\
$ret .= "</div>";;\
return $ret;;\
}
attr coronaSpreadDE_RKI userReadings DE_lastUpdatedh {POSIX::strftime ("%d.%m. %H:%M", localtime(ReadingsVal($name,"DE_lastUpdate",0)/1000));;}
attr coronaSpreadDE_RKI webCmd reread
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

ErzGabriel

Die Daten für die Bundesländer erhalte ich ja, nur die Daten für die ganze Welt bleiben leer.

yersinia

Ein list vom Device bitte.
Zitat von: yersinia am 25 Oktober 2020, 15:25:02
Welches Anwendungsbeispiel hast du nachgebaut? Weltweite Daten sind im ersten Post beschrieben, nur hat sich mittlerweile der Link geändert:
define coronaSpread JsonMod https://disease.sh/v3/covid-19/countries
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