FHEM > Codeschnipsel

NINA Warnmeldungen in FHEM Value mit Python2

(1/1)

flo7857:
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.


--- Code: ---#!/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)

--- Ende Code ---

KölnSolar:
Das Modul kennst Du ?

flo7857:
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

KölnSolar:
Hi Florian,

--- Zitat --- suche ich an der falschen Stelle
--- Ende Zitat ---
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

flo7857:

--- 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

--- Ende Zitat ---

Danke, wieder was gelernt!

Navigation

[0] Themen-Index

Zur normalen Ansicht wechseln