FHEM Forum

FHEM => Codeschnipsel => Thema gestartet von: flo7857 am 23 Oktober 2021, 21:20:36

Titel: NINA Warnmeldungen in FHEM Value mit Python2
Beitrag von: flo7857 am 23 Oktober 2021, 21:20:36
Hallo Zusammen,

kleines Python2 Skript (leider noch nicht Python3) um die Warnmeldungen vom Server der NINA App abzurufen 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:
- Die Corona Warnmeldungen habe ich im Code ausgeblendet, da mich nur die sonstigen Warnmeldungen interessiert haben.
- Bei mehreren Warnmeldungen werden diese mit Slash getrennt hintereinander geschrieben
- Wichtig: Die Variable "codeMuenchen" muss auf den Code des gewünschten Ortes 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
from datetime import datetime

#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"
#codeIngolstadt="091610000000"

# aktuelle Warnmeldungen abrufen nach Gebietscode
response = requests.get(baseUrl+"/dashboard/"+codeMuenchen+".json")
# print(response)
warnungen = response.json()
warnungenFuerFHEM = ""
for warnung in warnungen:
    # print(warnung)
    # Details zu einer der Warnmeldungen oben abrufen
    id_komplett = warnung["payload"]["id"]
    warningDetails = requests.get(baseUrl+"/warnings/"+id_komplett+".json").json()
    meldung = warningDetails["info"][0]["headline"]+ ": "+warningDetails["info"][0]["description"]
    if not meldung.encode('utf8','replace').startswith("Coronavirus: Informationen des Bundesministeriums für Gesundheit"):
        warnungenFuerFHEM = warnungenFuerFHEM + meldung + " / "

if warnungenFuerFHEM == "":
    warnungenFuerFHEM = "Keine"

warnungenFuerFHEM = warnungenFuerFHEM.encode('utf8', 'replace')
#print(warnungenFuerFHEM)

#fhem Wert setzen
fhem.FHEM_Cmd('set ninaWarnmeldungen %s' % warnungenFuerFHEM)
Titel: Antw:NINA Warnmeldungen in FHEM Value mit Python2
Beitrag von: KölnSolar am 24 Oktober 2021, 02:45:03
Das Modul (https://forum.fhem.de/index.php/topic,102346.msg959012.html#msg959012) kennst Du ?
Titel: Antw:NINA Warnmeldungen in FHEM Value mit Python2
Beitrag von: flo7857 am 24 Oktober 2021, 21:20:57
Hi,
ja, hatte zumindest vor einiger Zeit mal im Entwicklungsthread mitgelesen (aber es praktisch wieder verdrängt). Hatte das Python Skript eigentlich für etwas anderes gebaut und es dann doch in mein FHEM eingehängt, weil ich für das Modul wenig Doku gefunden hatte und ich auch nur die minimal nötigen Daten via https://warnung.bund.de/api31 ziehen wollte (nicht immer die kompletten JSONs). Wollte es deswegen der Allgemeinheit nicht vorenthalten.

An alle Leser hier: Das NINA Modul kann wesentlich mehr als das Skript von mir oben. Wer Warnmeldungen in FHEM will, kommt damit sicher besser klar. Wer wissen will, wie man den /api31 Endpoint abfragt kann sich das Skript anschauen.

@KölnSolar: Dumme Frage: Habe gerade nochmal versucht die Doku zum Nina-Modul zu finden. Du verweist da ja auf die englische commandref. Ich finde da aber leider nichts unter "Nina", suche ich an der falschen Stelle (https://fhem.de/commandref.html) ?

Danke,
Florian
Titel: Antw:NINA Warnmeldungen in FHEM Value mit Python2
Beitrag von: KölnSolar am 25 Oktober 2021, 07:18:09
Hi Florian,
Zitatsuche ich an der falschen Stelle
Ja.  ;D Das Modul ist ja noch inoffiziell. Folglich findest Du es nicht unter fhem.de, sondern nach Installation in Deiner lokalen commandref.  ;) Ansonsten findet sich ja ne Menge Info unter obigem Link.
Grüße Markus
Titel: Antw:NINA Warnmeldungen in FHEM Value mit Python2
Beitrag von: flo7857 am 27 Oktober 2021, 19:49:35
Zitat von: KölnSolar am 25 Oktober 2021, 07:18:09
Hi Florian,Ja.  ;D Das Modul ist ja noch inoffiziell. Folglich findest Du es nicht unter fhem.de, sondern nach Installation in Deiner lokalen commandref.  ;) Ansonsten findet sich ja ne Menge Info unter obigem Link.
Grüße Markus

Danke, wieder was gelernt!