Corona Zahlen des Landkreises in OpenHab

Für welche Projekte verwendet Ihr OpenHAB? Was habt Ihr automatisiert? Stellt eure Projekte hier vor.

Moderatoren: Cyrelian, seppy

Antworten
Lactobacillus
Beiträge: 158
Registriert: 1. Mär 2019 09:13
Wohnort: Untergruppenbach BaWü

Corona Zahlen des Landkreises in OpenHab

Beitrag von Lactobacillus »

Hallo,

ich würde gerne die Zahlen diverser Landkreise bezüglich Corona auf mein Wandpanel bringen bzw. Openhab.

Habe OH3 und in Facebook diesen Link erhalten https://api.corona-zahlen.org

Leider komme ich nicht weiter. Geht das über HTTP Binding? Wäre wiedermal über viel Hilfe froh!

LG

juschi
Beiträge: 13
Registriert: 23. Mär 2020 21:49

Re: Corona Zahlen des Landkreises in OpenHab

Beitrag von juschi »

Hi,

hab das eben umgesetzt.

Das ist meine Einstellung:

Sitemap:
Text item=corona_stadt

Item:
Number corona_stadt "Corona Stadt[%.2f]" <line>

Rule:

Code: Alles auswählen

rule		"Corona"
when    	Time cron "0 0 * * * ?"
then 	
var String corona_stadt_data = sendHttpGetRequest("https://api.corona-zahlen.org/districts")
var String corona_stadt_week = transform("JSONPATH", ".['data'].['KREISNUMMER'].['weekIncidence']", corona_stadt)
corona_stadt.postUpdate(Float::parseFloat(String::format("%s",corona_stadt_week).replace(',','.')))
end

Die "KREISNUMMER" findest du unter dem Link den ich oben verwendet habe. Einfach aufrufen und nach dem Kreis suchen.

Viel Spaß

Benutzeravatar
OliverCJ
Beiträge: 404
Registriert: 29. Aug 2017 12:41
Answers: 3
Wohnort: Bergisch Gladbach

Re: Corona Zahlen des Landkreises in OpenHab

Beitrag von OliverCJ »

Hallo,

ich hänge mich hier mal ran, weil ich den Link in der Facebook-Gruppe ebenfalls gesehen habe, da aber auch nicht richtig weiterkommen.
Vorweg: Auf meinem OH3-Testsystem läuft es gut und zwar wie folgt:
Habe einfach ein Thing mit folgendem Code angelegt:

Code: Alles auswählen

UID: http:url:cdd970f916
label: Cov_Citys
thingTypeUID: http:url
configuration:
  authMode: BASIC
  ignoreSSLErrors: false
  baseURL: https://api.corona-zahlen.org/districts
  delay: 0
  stateMethod: GET
  refresh: 900
  commandMethod: GET
  contentType: application/json
  timeout: 3000
  bufferSize: 2048
channels:
  - id: Cov_PE_Inz
    channelTypeUID: http:number
    label: Cov_PE_Inz
    description: null
    configuration:
      mode: READONLY
      stateTransformation: JSONPATH:$.data.05378.weekIncidence
Mir geht es hier aber konkret um mein produktives OH2-System und da bekomme ich es einfach nicht hin. Was habe ich getan?

1. HTTP-Binding und JSONPath Transformation installiert (hatte ich bisher noch nicht genutzt)
2. Versucht, die http.cfg zu bearbeiten. Da scheitere ich aber an den Dateirechten.
Dateirechte.JPG
Keine Ahnung, warum die Dateien unterschiedliche Rechte haben. Ich habe da nie was dran geändert. Besitzer ist jeweils "openhab"
3. Dann habe ich gelesen, dass das für einen einzelnen Wert auch gar nicht nötig sei, man könne die URL auch direkt ins item schreiben. Also:

Code: Alles auswählen

Group gGLCoronaStats "Corona Statistik" (gUebergreifend)

Number GL_Corona_Inzidenz
   "Inzidenz Rheinisch Bergisch Kreis [%s]"
   (gGLCoronaStats)
   { http="<[https://api.corona-zahlen.org/districts/05378:900000:JSONPATH($.weekIncidence)]" }
Liefert allerdings den Wert NULL

4. Item-Typ in String geändert. Dann erhalte ich das komplette JSON, welches dieser Aufruf liefert (https://api.corona-zahlen.org/districts/05378) in das item, aber es wird eben nicht "weekIncidence" extrahiert.

Ich tue mich hier verdammt schwer mit den Dokus zu http-Binding und JSONPath Transformation. Hätte vielleicht jemand einen Tipp?
Im Grunde reicht mir auch tatsächlich der Inzidenzwert, aber fürs Verständnis wäre es doch toll, auch mal einen anderen Wert aus dem JSON extrahieren zu können...

Danke!
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

_______________________________________________
Homematic IP Komponenten an CCU 3 (wächst stetig)
Innogy Smarthome System (verabschiedet sich langsam)
Philips Hue Beleuchtung
Fritz!Box
VU+ Solo SAT-Receiver
2 Squeezeboxen
Denon Heos System

Benutzeravatar
OliverCJ
Beiträge: 404
Registriert: 29. Aug 2017 12:41
Answers: 3
Wohnort: Bergisch Gladbach

Re: Corona Zahlen des Landkreises in OpenHab

Beitrag von OliverCJ »

Okay, nachdem ich jetzt seit 3 Tagen da rum fummel, habe ich es gerade eben dann doch selbst gefunden. Habe einfach noch mal den Code, den ich bei OH3 verwendet habe, mit meinem Aufruf im Item von OH2 verglichen. Es muss dort korrekt heißen:

Code: Alles auswählen

Number GL_Corona_Inzidenz "Inzidenz Rheinisch Bergisch Kreis" (gGLCoronaStats) { http="<[https://api.corona-zahlen.org/districts:60000:JSONPATH($.data.05378.weekIncidence)]" }
Jetzt wird mir der Inzidenzwert geliefert... Alles fein.

Bleibt nur noch die Frage, warum ich die http.cfg nicht bearbeiten kann. Oder genauer, wie ich die Rechte korrekt gesetzt bekomme, denn dass ich sie nicht bearbeiten/speichern kann, liegt natürlich an den Rechten....

_______________________________________________
Homematic IP Komponenten an CCU 3 (wächst stetig)
Innogy Smarthome System (verabschiedet sich langsam)
Philips Hue Beleuchtung
Fritz!Box
VU+ Solo SAT-Receiver
2 Squeezeboxen
Denon Heos System

Benutzeravatar
udo1toni
Beiträge: 13864
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Corona Zahlen des Landkreises in OpenHab

Beitrag von udo1toni »

Die Dateirechte in GNU/Linux werden über den Befehl chmod (Change Modus) gesetzt. chmod bietet verschiedene Methoden, die Rechte zu setzen.

Die Rechte teilen sich auf in User, Group und Other Rechte, User ist der Besitzer der Datei, Group ist die Gruppe, der die Datei gehört und Other sind alle anderen. Die Rechte sind eXecute, Read und Write.

Du kannst mit

Code: Alles auswählen

chmod g+w meineDatei
z.B. explizit den Gruppenmitgliedern Schreibrechte für die Datei meineDatei erteilen. mit

Code: Alles auswählen

chmod a-x meineDatei
entziehst Du für Alle (User, Group und Other) die Ausführungsrechte.

Code: Alles auswählen

chmod go=r meineDatei
setzt Du für Group und Other exakt Leserechte (und nix anderes).

Die andere Schreibweise funktioniert mit Zahlen und setzt immer die exakten Rechte. Die zu verwendende Zahl ist dreistellig, jede Stelle steht für eine der drei Zugehörigketen, also User, Group und Other (User ist die erste Stelle, Group die zweite, Other die dritte). Die drei Ziffern gehen jeweils von 0 bis 7, wobei Bit 2 für eXecute, Bit 1 für Write und Bit 0 für Read steht, ergibt 7 für volle Rechte, 6 für Lesen und Schreiben, 5 für Lesen und Ausführen usw.

Ein

Code: Alles auswählen

chmod 755 meineDatei
setzt also für den Besitzer volle Reche, für Group und Other Lese- und Ausführungrechte.

Es gibt noch ein paar zusätzliche Funktionen, die nur über die Buchstaben gesetzt werden können (Sticky Bit und bedingtes Setzen oder Löschen von Bits in der Rechtemaske). Im Fall von Directories dient das eXecute Bit dazu, zu bestimmen, ob das Verzeichnis betreten bzw. durchsucht werden darf.

Da die Datei dem User openhab gehört, musst Du natürlich noch ein sudo voranstellen, um die Rechte manipulieren zu können.
Wie alle Befehle zur Dateibearbeitung funktionieren auch Platzhalter und es lassen sich auf einen Schwung für Verzeichnisse und deren Unterverzeichnisse die Rechte setzen.

Den Besitzer einer Datei ändert man mit chown (Change Owner), der Befehl kann zusätzlich auch die Gruppenzugehörigkeit setzen (wird mit einem Doppelpunkt hinter dem Besitzer angegeben; Name des Besitzers gefolgt von einem Doppelpunkt und nichts setzt Besitzer und Gruppe identisch). Die Gruppenzugehörigkeit kann auch mit dem Befehl chgrp gesetzt werden.
Das ist aber nur zur Vollständigkeit, im vorliegenden Fall (http.cfg) darf der Besitzer natürlich nicht geändert werden. ;)
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Benutzeravatar
OliverCJ
Beiträge: 404
Registriert: 29. Aug 2017 12:41
Answers: 3
Wohnort: Bergisch Gladbach

Re: Corona Zahlen des Landkreises in OpenHab

Beitrag von OliverCJ »

Hallo Udo,

wie immer sehr gut und umfassend erklärt. Hat funktioniert.. Vielen Dank! Aber eins will mir nicht so recht in den Kopf und ich verstehe die Logik dahinter nicht.

Ich melde mich mit dem User openhabian an, die Datei gehört aber openhab. Nun führe ich ein sudo chmod 664 http.cfg aus. In der Folge wird nun das Passwort des Users openhabian abgefragt. Warum?

Wenn ich unter Windows etwas machen möchte, was Admin-Rechte verlangt, dann wird mir mein Admin-Konto angezeigt und ich muss auch dessen Passwort verwenden (ich nutze tatsächlich ein echtes Admin-Konto und eins mit eingeschränkten Rechten für die tägliche Arbeit).
Das ist für mich logisch. Aber hier gebe ich das PW eines Users ein, dem die Datei nicht gehört. Könnte man sich das dann nicht schenken?

VG, Oliver

_______________________________________________
Homematic IP Komponenten an CCU 3 (wächst stetig)
Innogy Smarthome System (verabschiedet sich langsam)
Philips Hue Beleuchtung
Fritz!Box
VU+ Solo SAT-Receiver
2 Squeezeboxen
Denon Heos System

Benutzeravatar
udo1toni
Beiträge: 13864
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Corona Zahlen des Landkreises in OpenHab

Beitrag von udo1toni »

Weil der User openhabian (mit dem bist Du ja unterwegs) lediglich erweiterte Rechte anfordert.
Du kannst Dir das analog zur UAC vorstellen. Wenn Du einen User hast, der alles darf, fragt Windows dennoch bei bestimmten Aktionen, ob das erwünscht ist. Solange Du die UAC nicht abschaltest, ist diese Abfrage auch nicht zu umgehen (und die UAC abzuschalten erfordert ebenfalls erweiterte Rechte...)

Du führst zwar die Anwendung als User root aus, Du bist aber nicht root. Dementsprechend musst Du auch nicht das Passwort von root angeben (das ist im übrigen gar nicht gesetzt, Du kannst Dich also nur auf einem Umweg überhaupt als root anmelden).

Der User openhabian selbst ist ein einfacher User mit eingeschränkten Rechten, er darf aber auf Verlangen erweiterte Rechte erlangen - eben mit sudo.

Wenn Du einen neuen User anlegst, so hat dieser keine Berechtigung, seine Rechte zu erweitern. Ein Aufruf von sudo führt dann dazu, dass Du auf die Mütze bekommst (natürlich in Form einer entsprechenden Meldung, ungefähr: "Der User xyz ist nicht in der Liste der User, die sudo verwenden dürfen. Dieser versuchte Verstoß wird gemeldet.")
In der Folge bekommt root dann eine Mail von sudo.

Der Vorteil dieser Konstruktion gegenüber Windows: Du brauchst keinen Administrationsuser und vor allem kein Passwort. Wer darf, bekommt Rechte, kann diese aber nur mit sudo nutzen, wer nicht darf, ist ausgesperrt. Vor allem kann man die Rechte von sudo extrem feingranular definieren (mit entsprechendem Aufwand natürlich). Man kann Gruppen definieren, die ganz bestimmte Dinge per sudo tun dürfen und andere Dinge eben nicht. Es reicht dann, den User dieser Gruppe hinzuzufügen, schon darf er genau das, was für die Gruppe erlaubt ist.
In Windows gibt es ähnliche Funktionen, die aber (außer in Firmen...) kein Schwein nutzt. Windows selbst bietet auch nur "einfacher User" oder "Administrator" für den Account an - was dazu geführt hat, dass jeder Anwender ein Adminitrator-Konto nutzt, weil es bequemer ist. In der Folge musste Microsoft die UAC einbauen, um wenigstens einigermaßen Sicherheit zu schaffen. Hätte Bill Gates mal vor NT3 geschaut, wie die Konkurrenz das gelöst hat...

Bei uns im Betrieb habe ich auch administrativen Zugriff auf bestimmte Rechner - dazu habe ich dann einen extra User, mit dem ich mich auf der Maschine (und nur auf dieser) anmelden kann. Das Blöde: bei vielen Aktionen reicht es eigentlich, nur einen bestimmten Befehl mit erweiterten Rechten auszuführen. Die Anmeldung über die UAC-Abfrage funktioniert aber nur, wenn der User auf der Maschine bekannt ist. Ich muss mich also zumindest einmalig mit dem User auf der Maschine direkt anmelden. Da mehrere Kollegen den Admin-Zugang nutzen, müssen wir das Passwort teilen. Die Passwortrichtlinie verlangt alle x Tage ein neues, noch nie verwendetes Passwort. Zum Ändern des Passworts muss der User zwingend angemeldet sein. Wegen der gemeinschaftlichen Nutzung des Adminussers muss das Passwort geteilt werden (und weil man sich nicht unbedingt sieht, geschieht das dann über einen Zettel in der Passwortmappe... super Idee...)
Sinnvoller wäre, die erweiterten Rechte an den Useraccount zu koppeln, so dass der User nur sein eigenes Passwort eingeben muss (eben genau so, wie das bei UNIX schon immer ist...)
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Benutzeravatar
OliverCJ
Beiträge: 404
Registriert: 29. Aug 2017 12:41
Answers: 3
Wohnort: Bergisch Gladbach

Re: Corona Zahlen des Landkreises in OpenHab

Beitrag von OliverCJ »

Ja, wenn man ein wenig drüber nachdenkt und es so schön erklärt bekommt, dann macht es irgendwie Sinn... :D

Vielen Dank!

_______________________________________________
Homematic IP Komponenten an CCU 3 (wächst stetig)
Innogy Smarthome System (verabschiedet sich langsam)
Philips Hue Beleuchtung
Fritz!Box
VU+ Solo SAT-Receiver
2 Squeezeboxen
Denon Heos System

Antworten