NINA Warnmeldungen in FHEM Value mit Python2

Begonnen von flo7857, 23 Oktober 2021, 21:20:36

Vorheriges Thema - Nächstes Thema

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.


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

KölnSolar

RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

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,
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
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

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

Danke, wieder was gelernt!