Corona Inzidenzen aus NINA Warnapp-Dienst via Python2 in FHEM Wert schreiben

Begonnen von flo7857, 23 Oktober 2021, 21:30:37

Vorheriges Thema - Nächstes Thema

flo7857

Hallo Zusammen,

kleines Python2 Skript (leider noch nicht Python3) um vom Server der NINA Warn-App aktuelle Coronainzidenzen von zwei Gebieten abzurufen (kann einfach erweitert werden) und in einen FHEM Wert zu speichern (via fhem Python Modul mit fhem.FHEM_Cmd(). Voraussetzung ist, dass das Telnet Passwort hinterlegt wurde (wird nicht im Skript direkt angegeben)).

Hinweise:
- All Inzidenzen werden hintereinander in einen String (und einen FHEM Wert) geschrieben. Wer Statistiken / Graphen erstellen will, sollte diese jeweils getrennt in einen Wert schreiben und ein Logfile anlegen
- Wichtig: Die Variablen für die Städte/Landkreise ("codeMuenchen", "codeIngolstadt" etc.) müssen auf die gewünschten Orte angepasst werden (siehe angegebener Link, bitte beachten, dass nur die ersten fünf Stellen verwendet und der Rest mit Nullen aufgefüllt werden muss)

Fragen immer gerne.


#!/usr/bin/env python
# -*- coding: utf-8 -*-

import fhem
import requests
import json

# Quelle u.a.: https://github.com/bundesAPI/nina-api
# Muenchen Gebietscode: 091620000000
# Gebietscode von https://www.xrepository.de/api/xrepository/urn:de:bund:destatis:bevoelkerungsstatistik:schluessel:rs_2021-07-31/download/Regionalschl_ssel_2021-07-31.json
baseUrl = "https://warnung.bund.de/api31"
codeMuenchen="091620000000"
codeAugsburg="097720000000"

# aktuelle Coronameldungen abrufen nach Gebietscode
coronaInfo = "/appdata/covid/covidrules/DE/"
responseMuenchen = requests.get(baseUrl+coronaInfo+codeMuenchen+".json")
responseAugsburg = requests.get(baseUrl+coronaInfo+codeAugsburg+".json")

coronaWerte = "MUC: "+responseMuenchen.json()["level"]["range"].split("\n")[0]+" AUG: "+responseAugsburg.json()["level"]["range"].split("\n")[0]
coronaWerte = coronaWerte.replace("Sieben-Tage-Inzidenz Kreis: ","")
coronaWerte = coronaWerte.encode('utf8', 'replace')
#print coronaWerte

#fhem Wert setzen
fhem.FHEM_Cmd('set coronaWerte %s' % coronaWerte)