Anwendungsbeispiel JsonMod / Covid / 7-Tage-Inzidenz

Begonnen von herrmannj, 24 August 2020, 18:44:17

Vorheriges Thema - Nächstes Thema

Mickey

Guten Morgen,

ich schaffe es einfach nicht.
Wie bekomme ich den .json link für die aktuellen Daten
für Deutschland her?

https://experience.arcgis.com/experience/478220a4c454480e823b17327b2bf1d4

7-Tage-Inzidenz
Coronafälle
Todesfälle

Danke für die Hilfe

/Michael
Zu mir:
Ich bin leider fast blind (EU Rentner) und nicht zu "faul" was nachzulesen. Bitte seht mir nach, wenn ich einmal zu viel frage oder auch mal Schreibfehler mache. Danke, Michael

yersinia

Ich nutze für die Inzidenz von Deutschland mittlerweile corona-zahlen.org:
defmod coronaSpreadDE JsonMod https://api.corona-zahlen.org/germany
attr coronaSpreadDE interval 9 */3 * * *
attr coronaSpreadDE readingList complete();;
attr coronaSpreadDE stateFormat { my $ret = "<div style=\"text-align: left;;\">";;\
$ret .= "CoVid-19 Daten für Deutschland von ";;\
$ret .= ReadingsVal($name,"meta.lastUpdate","-");;\
$ret .= "<br \/>";;\
$ret .= "Inzidenz: <font style=\"font-weight:bold;;color:";;\
if(ReadingsNum($name,"weekIncidence",0) < 50) {\
$ret .= "green";;\
} elsif (ReadingsNum($name,"weekIncidence",0) < 100) {\
$ret .= "orange";;\
} else {\
$ret .= "red";;\
}\
$ret .= ";;\">".sprintf("%.1f", ReadingsNum($name,"weekIncidence",0))."</font><br \/>";;\
$ret .= "<font style=\"color:orange;;font-weight:bold;;\">".ReadingsVal($name,"ur_active","-")." aktive F&auml;;lle</font> \/ ";;\
$ret .= "<font style=\"\">".ReadingsVal($name,"cases","-")." Gesamt</font><br \/>";;\
$ret .= "<font style=\"color:green;;\">".ReadingsVal($name,"recovered","-")." Genesene</font> und ";;\
$ret .= "<font style=\"color:red;;font-weight:bold;;\">".ReadingsVal($name,"deaths","-")." Tote</font><br \/>";;\
$ret .= "Letzter API-Update-Check: ";;\
$ret .= ReadingsVal($name,"meta.lastCheckedForUpdate","-");;\
$ret .= "<br \/>";;\
$ret .= "Letzter 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 update-on-start 0
attr coronaSpreadDE userReadings ur_active {return (ReadingsNum($name,"cases",0)-ReadingsNum($name,"recovered",0)-ReadingsNum($name,"deaths",0));;}
attr coronaSpreadDE webCmd reread


Ergibt sowas:
READINGS:
     2021-11-12 09:09:00   .computedReadings delta.recovered,delta.cases,hospitalization.cases7Days,r.rValue7Days.date,meta.source,r.value,r.rValue4Days.date,casesPer100k,hospitalization.lastUpdate,meta.lastUpdate,meta.contact,meta.info,recovered,hospitalization.date,delta.deaths,deaths,hospitalization.incidence7Days,meta.lastCheckedForUpdate,r.lastUpdate,weekIncidence,cases,casesPerWeek,r.rValue7Days.value,r.rValue4Days.value
     2021-11-12 09:09:00   cases           4942890
     2021-11-12 09:09:00   casesPer100k    5944.18634754643
     2021-11-12 09:09:00   casesPerWeek    219272
     2021-11-12 09:09:00   deaths          97389
     2021-11-12 09:09:00   delta.cases     48640
     2021-11-12 09:09:00   delta.deaths    191
     2021-11-12 09:09:00   delta.recovered 17563
     2021-11-12 09:09:00   hospitalization.cases7Days 3909
     2021-11-12 09:09:00   hospitalization.date 2021-11-12T00:00:00.000Z
     2021-11-12 09:09:00   hospitalization.incidence7Days 4.7
     2021-11-12 09:09:00   hospitalization.lastUpdate 2021-11-12T03:01:41.000Z
     2021-11-12 09:09:00   meta.contact    Marlon Lueckert (m.lueckert@me.com)
     2021-11-12 09:09:00   meta.info       https://github.com/marlon360/rki-covid-api
     2021-11-12 09:09:00   meta.lastCheckedForUpdate 2021-11-12T06:31:42.999Z
     2021-11-12 09:09:00   meta.lastUpdate 2021-11-12T00:00:00.000Z
     2021-11-12 09:09:00   meta.source     Robert Koch-Institut
     2021-11-12 09:09:00   r.lastUpdate    2021-11-11T00:57:33.000Z
     2021-11-12 09:09:00   r.rValue4Days.date 2021-11-07T00:00:00.000Z
     2021-11-12 09:09:00   r.rValue4Days.value 1.05
     2021-11-12 09:09:00   r.rValue7Days.date 2021-11-06T00:00:00.000Z
     2021-11-12 09:09:00   r.rValue7Days.value 1.16
     2021-11-12 09:09:00   r.value         1.05
     2021-11-12 09:09:00   recovered       4450174
     2021-11-12 09:09:00   ur_active       395327
     2021-11-12 09:09:00   weekIncidence   263.690599790649


Die Zahlen varrieren manchmal etwas im Verhältnis zum RKI.
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

Mickey

Hallo yersinia,

das nutze ich auch, ist aber leider sehr unzuverlässig.
Der "Server" ist oft down oder der NGINX läuft nicht.

Deswegen wollte ich gerne eine alternative Lösung.

Grüße /Michael
Zu mir:
Ich bin leider fast blind (EU Rentner) und nicht zu "faul" was nachzulesen. Bitte seht mir nach, wenn ich einmal zu viel frage oder auch mal Schreibfehler mache. Danke, Michael

yersinia

Zitat von: Mickey am 12 November 2021, 10:41:04das nutze ich auch, ist aber leider sehr unzuverlässig.
Der "Server" ist oft down oder der NGINX läuft nicht.
Ja, den Eindruck habe ich auch. Aber ich empfinde das nicht als Problem, da es nur informativen Charakter hat. Für mich ist die Inzidenz meines Kreises/Stadt/Gemeinde/BL interessanter.

Darüberhinaus ist mir noch keine direkte RKI-Quelle für die Inzidenz untergekommen - habe aber auch schon lange nicht mehr danach gesucht.
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

Mickey

Hi yersinia.

ich habe mir, wie beschrieben, mit Docker compose bei mir: Host "it yourself"

Mal sehen ob das stabiler läuft, ich brauche hier ja kein NGINX  ;D


version: "3.8"
networks:
  redis-net:
services:
  redis:
    image: redis
    container_name: cache
    expose:
      - 6379
    networks:
      - redis-net
  rki-api:
    image: marlon360/rki-covid-server:v2
    ports:
      - "8080:3000"
    depends_on:
      - redis
    environment:
      - REDISHOST=redis
    networks:
      - redis-net


defmod Germany_covid_home JsonMod http://192.168.0.129:8080/germany

Grüße /michael
Zu mir:
Ich bin leider fast blind (EU Rentner) und nicht zu "faul" was nachzulesen. Bitte seht mir nach, wenn ich einmal zu viel frage oder auch mal Schreibfehler mache. Danke, Michael

Det20

Hallo,

ich nehme das Beispiel aus dem ersten Post, das klappt 1a für meinen Kreis (der ist irgendwie immer ordentlich im roten Bereich). Habe dann versucht, über die Abfrage (von services7.arcgis.com) sowohl die verstorbenen als auch die Gesamt-Inzidenz von Deutschland rauszubekommen; leider ohne Erfolg. Hat das jemand hinbekommen?

Viele Grüße

Mickey

versuche es mal mit:

https://api.corona-zahlen.org/germany

Grüße
Zu mir:
Ich bin leider fast blind (EU Rentner) und nicht zu "faul" was nachzulesen. Bitte seht mir nach, wenn ich einmal zu viel frage oder auch mal Schreibfehler mache. Danke, Michael

Mickey

oder einfach:

defmod Germany_covid JsonMod https://api.corona-zahlen.org/germany
attr Germany_covid alias Germany covid online
attr Germany_covid group 0
attr Germany_covid interval 0 */1 * * *
attr Germany_covid readingList complete();;;;
attr Germany_covid room Corona
attr Germany_covid stateFormat Wocheninzidenz: <b>weekIncidence</b> - Fälle heute: <b>delta.cases</b>, Verstorben heute: <b>delta.deaths</b>\
<br>R-Wert <b>1.04</b> | 7-Tage R-Wert <b>1.1</b>\
<br>Hospitalisierungsrate gestern: <b>hospitalization.incidence7Days_gestern</b> - heute: <b>hospitalization.incidence7Days</b>
attr Germany_covid userReadings weekIncidence {sprintf("%.1f",ReadingsNum("Germany_covid","weekIncidence",0))*1;;},\
casesPer100k {sprintf("%.0f",ReadingsNum("Germany_covid","casesPer100k",0))*1;;},
attr Germany_covid verbose 1
attr Germany_covid webCmd reread



Grüsse
Zu mir:
Ich bin leider fast blind (EU Rentner) und nicht zu "faul" was nachzulesen. Bitte seht mir nach, wenn ich einmal zu viel frage oder auch mal Schreibfehler mache. Danke, Michael

Det20


TWART016

Da die Anzahl der belegten Intensivbetten immer wichtiger werden habe ich mich mal nach einer Quelle umgesehen.

Hier gibt es die Daten für jeden Tag. Allerdings wird da nur der neue Wert vom Tag unten eingefügt.
https://europe-west3-brdata-corona.cloudfunctions.net/diviApi/query?area=BW&indicator=Patienten&filetype=json
https://github.com/br-data/corona-divi-api
https://www.intensivregister.de/#/aktuelle-lage/zeitreihen

Ist es möglich, dass der neue Wert automatisch in ein Reading geschrieben wird?

Mickey

Als Bespiel:

defmod lk_goe_civi JsonMod https://services7.arcgis.com/mOBPykOjAyBO2ZKk/arcgis/rest/services/DIVI_Intensivregister_Landkreise/FeatureServer/0/query?where=county%20%3D%20%27LK%20G%C3%96TTINGEN%27&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&outSR=4326&f=json
attr lk_goe_civi alias DIVI LK Göttingen
attr lk_goe_civi interval 0 */1 * * *
attr lk_goe_civi readingList single(jsonPath("\$.features[0].attributes.anzahl_standorte"), 'anzahl_standorte', '-no Data-');;\
single(jsonPath("\$.features[0].attributes.betten_frei"), 'betten_frei', '-no Data-');;\
single(jsonPath("\$.features[0].attributes.betten_belegt"), 'betten_belegt', '-no Data-');;\
single(jsonPath("\$.features[0].attributes.betten_gesamt"), 'betten_gesamt', '-no Data-');;\
single(jsonPath("\$.features[0].attributes.Anteil_betten_frei"), 'Anteil_betten_frei', '-no Data-');;\
single(jsonPath("\$.features[0].attributes.faelle_covid_aktuell"), 'faelle_covid_aktuell', '-no Data-');;\
single(jsonPath("\$.features[0].attributes.faelle_covid_aktuell_beatmet"), 'faelle_covid_aktuell_beatmet', '-no Data-');;
attr lk_goe_civi room Divi
attr lk_goe_civi sortby 1
attr lk_goe_civi stateFormat Standorte: <b>anzahl_standorte</b> - Betten gesamt: <b>betten_gesamt</b> - Betten belegt: <b>betten_belegt</b> - \
Betten frei: <b>betten_frei</b> = <b>Anteil_betten_frei</b> % , gestern Anteil_betten_frei_gestern %<br>Fälle covid aktuell: <b>faelle_covid_aktuell</b> -\
Fälle covid aktuell beatmet: <b>faelle_covid_aktuell_beatmet</b> - Covid belegt <b>Anteil_betten_covid</b> %
attr lk_goe_civi userReadings Anteil_betten_frei {sprintf("%.1f",ReadingsNum("lk_goe_civi","Anteil_betten_frei",0))*1;;},\
Anteil_betten_covid {sprintf("%.3f",ReadingsNum("lk_goe_civi","faelle_covid_aktuell",0)/ReadingsNum("lk_goe_civi","betten_gesamt",0))*100;;},



Grüsse
Zu mir:
Ich bin leider fast blind (EU Rentner) und nicht zu "faul" was nachzulesen. Bitte seht mir nach, wenn ich einmal zu viel frage oder auch mal Schreibfehler mache. Danke, Michael

khk123

Hi yersinia,

Zitat von: yersinia am 27 Oktober 2021, 15:49:50
Ok, dann warten wir mal ab, was es nach (!) deinem Urlaub mit verbose 5 ergibt. Kurioses verhalten ist es allemal.

hab ja geschrieben, dass ich mich wg. des seltsamen FHEM-Stillstandes bei der JSON-Abfrage nochmal melde. Ich konnte bisher das Verhalten nicht nachstellen. Da die Abfrage aber im 3Std-Rhythmus
attr Intensivregister interval 25 */3 * * *
lief und der Effekt nur nachts um 3:25 Uhr auftrat, gehe ich davon aus, dass www.intensivregister.de zu dem Zeitpunkt keine korrekte Anwort geliefert hat. 

Ich lasse mein Testsystem mit der regelmäßigen Abfrage laufen. Mal sehen...

VG
Karlheinz
FHEM6.2, RasPi4, RasPi Zero W,
CUL V3, HM, ZWave, IT, vcontrol, owntracks, alexa

rcmcronny

@Mickey

danke für den Codeschnipsel.

Fehlt da noch was, für den Wert von "Anteil_betten_frei_gestern" ?

Ronny

khk123

#148
Zitat von: rcmcronny am 24 November 2021, 09:19:49
Fehlt da noch was, für den Wert von "Anteil_betten_frei_gestern" ?

Ist mir auch aufgefallen. Hab die Userreadings einfach ergänzt und etwas unabhängiger vom Device-Namen gemacht. Dann funktioniert auch ein rename des Devices.  Und  noch einen webCmd für reread angehängt.


attr lk_goe_civi userReadings Anteil_betten_frei {sprintf("%.1f",ReadingsNum($name,,"Anteil_betten_frei",0))*1;;},\
Anteil_betten_frei_gestern {OldReadingsVal($name, "Anteil_betten_frei", ReadingsVal($name, "Anteil_betten_frei", 0))},\
Anteil_betten_covid {sprintf("%.3f",ReadingsNum($name,"faelle_covid_aktuell",0)/ReadingsNum($name,"betten_gesamt",0))*100;;},
attr lk_goe_civi webCmd reread


VG
Karlheinz
FHEM6.2, RasPi4, RasPi Zero W,
CUL V3, HM, ZWave, IT, vcontrol, owntracks, alexa

rcmcronny

Moin Karlheinz,

danke, habe das mal so übernommen, nun paßt es.

Ronny