Sonnenbatterie Daten auslesen per JSON
-
- Beiträge: 11
- Registriert: 8. Jan 2019 19:46
Answers: 0
Sonnenbatterie Daten auslesen per JSON
Hi Leute,
ich nutze Openhab nun schon ne ganze Weile, die meisten meiner Things sind MQTT Teile. Da hab ich kürzlich auch den Wechsel auf MQTT2 mitgemacht. Da kann ich mich noch dunkel daran erinnern, dass Openhab die Textdateien nicht mehr nutzt (oder bezieht sich das nur auf MQTT?).
Aber nun zum eigentlichen Thema.
Ich hab seit neustem eine Solarbatterie von Sonnen. Da gibt's kein Binding dafür, aber die Batterie hat eine Seite auf der sie ihre Daten per JSON zur Verfügung stellt. Für mich sind da einige Daten interessant, z.B. ob die Batterie voll ist, weil ich dadurch andere Verbraucher steuern möchte.
Hier mal ein Bild der JSON Seite: Soweit so gut. Meine Recherchen zu dem Thema haben mich etwas verwirrt. Ich hab zwar die Beschreibung wie man das einbindet gefunden, aber ich werd irgendwie nicht schlau draus.
Zum Einen kann ich die Webseite in den Cache laden - muss ich das oder kann ich das tun?
Dann wird beschrieben, dass ich das Binding konfigurieren muss und weiter unten in der Anleitung (openhabdoc.readthedocs.io - http Binding) wird beschrieben, dass ich ein item anlegen muss (in dem dann die Adresse wieder drin steht). Dann wird da noch von einer getValue.js Datei gesprochen, ist die nun wieder ein Kann oder ein Muss?
Und was mich total verwirrt ist, dass die ganzen Anleitungen immer für die Version 1 von Openhab sind und demnach alles in den Dateien geregelt wird. Aber seit 2.0 oder 2.4 soll man doch nur noch mit der Paper UI arbeiten. In der Paper UI kann ich aber nur das Binding installieren, eine Webseite kann ich da nicht eingeben.
Kurzum ich bin verwirrt und bitte um ein klein wenig Hilfe.
Vielen Dank,
Homer
ich nutze Openhab nun schon ne ganze Weile, die meisten meiner Things sind MQTT Teile. Da hab ich kürzlich auch den Wechsel auf MQTT2 mitgemacht. Da kann ich mich noch dunkel daran erinnern, dass Openhab die Textdateien nicht mehr nutzt (oder bezieht sich das nur auf MQTT?).
Aber nun zum eigentlichen Thema.
Ich hab seit neustem eine Solarbatterie von Sonnen. Da gibt's kein Binding dafür, aber die Batterie hat eine Seite auf der sie ihre Daten per JSON zur Verfügung stellt. Für mich sind da einige Daten interessant, z.B. ob die Batterie voll ist, weil ich dadurch andere Verbraucher steuern möchte.
Hier mal ein Bild der JSON Seite: Soweit so gut. Meine Recherchen zu dem Thema haben mich etwas verwirrt. Ich hab zwar die Beschreibung wie man das einbindet gefunden, aber ich werd irgendwie nicht schlau draus.
Zum Einen kann ich die Webseite in den Cache laden - muss ich das oder kann ich das tun?
Dann wird beschrieben, dass ich das Binding konfigurieren muss und weiter unten in der Anleitung (openhabdoc.readthedocs.io - http Binding) wird beschrieben, dass ich ein item anlegen muss (in dem dann die Adresse wieder drin steht). Dann wird da noch von einer getValue.js Datei gesprochen, ist die nun wieder ein Kann oder ein Muss?
Und was mich total verwirrt ist, dass die ganzen Anleitungen immer für die Version 1 von Openhab sind und demnach alles in den Dateien geregelt wird. Aber seit 2.0 oder 2.4 soll man doch nur noch mit der Paper UI arbeiten. In der Paper UI kann ich aber nur das Binding installieren, eine Webseite kann ich da nicht eingeben.
Kurzum ich bin verwirrt und bitte um ein klein wenig Hilfe.
Vielen Dank,
Homer
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
- udo1toni
- Beiträge: 15263
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Answers: 244
Re: Sonnenbatterie Daten auslesen per JSON
Schade, dass Du nur einen Screenshot sendest und nicht das zurückgelieferte JSON Objekt (Auf Rohdaten umschalten und als Code hier posten)
Das http Binding ist ein V1 Binding, das heißt, es kann eigentlich nur über Textdateien konfiguriert werden. Eigentlich deshalb, weil Du zumindest einen Teil der Konfiguration (den http Cache) auch über Paper UI vornehmen kannst, indem Du dort auf Configuration->Bindings->Http->Expert Mode gehst und anschließend die Parameter mittels Add Parameter hinzufügst. Du brauchst zum einen einen Cache Namen, z.B. solarbat, dann eine URL und ein Updateinterval. Eingegeben wird das dann alsund
für einmal in der Minute.
Die Verknüpfung zu den Items erfolgt nun zwingend über eine *.items Datei, da Paper UI nicht in der Lage ist, die Verknüpfungen zu V1 Bindings herzustellen. z.B. für PAC_total_W:
Die JSONPATH Transformation muss installiert sein, ebenso natürlich das http Binding-
Der angegebene Pfad sollte eigentlich passen, genau kann ich das aber nur sagen, wenn ich die gelieferten Rohdaten sehe.
Das http Binding ist ein V1 Binding, das heißt, es kann eigentlich nur über Textdateien konfiguriert werden. Eigentlich deshalb, weil Du zumindest einen Teil der Konfiguration (den http Cache) auch über Paper UI vornehmen kannst, indem Du dort auf Configuration->Bindings->Http->Expert Mode gehst und anschließend die Parameter mittels Add Parameter hinzufügst. Du brauchst zum einen einen Cache Namen, z.B. solarbat, dann eine URL und ein Updateinterval. Eingegeben wird das dann als
Code: Alles auswählen
solarbat.url=http://192.168.1.12:8080/api/v1/status
Code: Alles auswählen
solarbat.updateInterval=60000
Die Verknüpfung zu den Items erfolgt nun zwingend über eine *.items Datei, da Paper UI nicht in der Lage ist, die Verknüpfungen zu V1 Bindings herzustellen. z.B. für PAC_total_W:
Code: Alles auswählen
Number SB_PAC_total_W "PAC total [%.0f W]" { http="<[solarbat:60000:JSONPATH($.PAC_total_W)]" }
Der angegebene Pfad sollte eigentlich passen, genau kann ich das aber nur sagen, wenn ich die gelieferten Rohdaten sehe.
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet
-
- Beiträge: 11
- Registriert: 8. Jan 2019 19:46
Answers: 0
Re: Sonnenbatterie Daten auslesen per JSON
Hi,
danke für die schnelle Antwort. Das war ja dann doch einfacher als gedacht. Genau wie du beschrieben hast funktioniert's auch. Ich hab mich dann doch dafür entschieden die PaperUI außen vor zu lassen, wenn ich schon an die Dateien ran muss ist's dort doch einfacher.
Für alle die das auch umsetzen wollen hier mein funktionierender Code:
Die http.cfg im Ordner services :
Und meine sonnen.items hat diesen Eintrag:
So wird mir der Ladezustand, die aktuelle Stromproduktion, der aktuelle Verbrauch, Netzeinspeisung und Ladung angezeigt. Es gäbe noch mehr Infos, aber das reicht mir.
Nochmal danke!
Servus
Homer
danke für die schnelle Antwort. Das war ja dann doch einfacher als gedacht. Genau wie du beschrieben hast funktioniert's auch. Ich hab mich dann doch dafür entschieden die PaperUI außen vor zu lassen, wenn ich schon an die Dateien ran muss ist's dort doch einfacher.
Für alle die das auch umsetzen wollen hier mein funktionierender Code:
Die http.cfg im Ordner services :
Code: Alles auswählen
solarbat.url=http://192.168.1.12:8080/api/v1/status
solarbat.updateInterval=60000
Code: Alles auswählen
Number sonnen_ladezustand "Batterie Ladezustand [%d %%]" <battery> { http="<[solarbat:60000:JSONPATH($.USOC)]" }
Number sonnen_produktion "Solaranlage Produktion [%d W]" <sun> { http="<[solarbat:60000:JSONPATH($.Production_W)]" }
Number sonnen_verbrauch "Stromverbrauch aktuell [%d W]" <energy> { http="<[solarbat:60000:JSONPATH($.Consumption_W)]" }
Number sonnen_einspeisung "Solaranlage Einspeisung [%d W]" <energy> { http="<[solarbat:60000:JSONPATH($.GridFeedIn_W)]" }
Number sonnen_ladung "Batterie Transfer [%d W]" <energy> { http="<[solarbat:60000:JSONPATH($.Pac_total_W)]" }
Nochmal danke!
Servus
Homer
-
- Beiträge: 67
- Registriert: 11. Sep 2019 16:57
Answers: 0
Re: Sonnenbatterie Daten auslesen per JSON
Hallo, ich würde das gern in OH3 anwenden.
Das HTML Binding ist jetzt ja grafisch zu konfigurieren.
U.a lässt sich JSON als Datentyp auswählen? Ist das zu tun?
Über welches Label wird der Bezug "solarbat" zum Item hergestellt?
Das HTML Binding ist jetzt ja grafisch zu konfigurieren.
U.a lässt sich JSON als Datentyp auswählen? Ist das zu tun?
Über welches Label wird der Bezug "solarbat" zum Item hergestellt?
-
- Beiträge: 11
- Registriert: 8. Jan 2019 19:46
Answers: 0
Re: Sonnenbatterie Daten auslesen per JSON
Hi,
nach dem Upgrade auf OH3 ist das textbasierte Thing verschwunden. Ich musste also ein neues anlegen.
Zuerst das neue HTTP Binding installieren.
Dann ein HTTP Thing anlegen - die Base URL lautet bei mir: http://192.168.1.12:8080/api/v1/status
Danach wird ein Channel angelegt und für jeden Wert einen eigenes Item verlinkt. Das Profil des Items ist dann JSONPATH und die JSONPath Expression ist z.B. Production_W (also so wie der Wert in der API angezeigt wird.
Bei den Items ist wichtig, dass im Label die Art des Wertes definiert wird, bei meinem Production_W sieht das so aus: Solaranlage Produktion [%d W] - wenn man das nicht macht dann wird der Wert nicht in der Sitemap angezeigt.
Ich hoffe das war verständlich.
Servus
Homer
nach dem Upgrade auf OH3 ist das textbasierte Thing verschwunden. Ich musste also ein neues anlegen.
Zuerst das neue HTTP Binding installieren.
Dann ein HTTP Thing anlegen - die Base URL lautet bei mir: http://192.168.1.12:8080/api/v1/status
Danach wird ein Channel angelegt und für jeden Wert einen eigenes Item verlinkt. Das Profil des Items ist dann JSONPATH und die JSONPath Expression ist z.B. Production_W (also so wie der Wert in der API angezeigt wird.
Bei den Items ist wichtig, dass im Label die Art des Wertes definiert wird, bei meinem Production_W sieht das so aus: Solaranlage Produktion [%d W] - wenn man das nicht macht dann wird der Wert nicht in der Sitemap angezeigt.
Ich hoffe das war verständlich.
Servus
Homer
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Zuletzt geändert von HomerJ.S. am 12. Jan 2021 21:50, insgesamt 1-mal geändert.
-
- Beiträge: 1173
- Registriert: 4. Nov 2019 22:08
Answers: 9
Re: Sonnenbatterie Daten auslesen per JSON
Das ist so ja nicht ganz richtig. Es kann auch grafisch konfiguriert werden, es geht aber auch über eine .things Datei
z.B. am Beispiel des Abfallkalenders
Code: Alles auswählen
Bridge http:url:abfallkalender "Abfallkalender" @ "Internet" [
baseURL="https://www.umwelt-webmedia.de/caldownload/bc250e0a4bc5b85jennjdf41b0f524c9.ics",
refresh=360,
ignoreSSLErrors=false,
commandMethod="GET",
timeout=3000,
bufferSize=2048
] {
Channels:
Type string : ABF1_NAME "Nächste Abholung" [ stateTransformation="JS:abfall_naechste_abholung_name.js", mode="READONLY"]
Type datetime : ABF1_DATE "Datum nächste Abholung" [ stateTransformation="JS:abfall_naechste_abholung_datum.js", mode="READONLY"]
Type string : ABFALL_ICAL_heute "Abholung heute" [ stateTransformation="JS:abfall_heute.js", mode="READONLY"]
Type string : ABFALL_ICAL_morgen "Abholung morgen" [ stateTransformation="JS:abfall_morgen.js", mode="READONLY"]
}

openHAB 4.1.0 Release mit openHABian in einem Debian Bookworm (LXC) unter Proxmox 8.1.3
-
- Beiträge: 11
- Registriert: 8. Jan 2019 19:46
Answers: 0
Re: Sonnenbatterie Daten auslesen per JSON
@int5749
Aber, ich bin mit OH2.2 eingestiegen und hab damals fast alles mit MQTT gemacht. Irgendwann kam dann das Update und ich konnte meine ganzen Things und Items neu anlegen, weil die Textdatei nicht mehr unterstützt wurde und somit verschwanden. Und bei dem HTTP Binding ist mir das jetzt wieder passiert, auch wenn es einen Weg gibt es trotzdem mit der Textdatei zu machen.
Ich denke der Weg geht hin zur grafischen Oberfläche, was sicher Segen und Fluch zugleich ist. Aber für eine breitere Userbasis ist das wohl der einzige Weg.
Ich werde jetzt alles was geht grafisch machen um solche Probleme zu vermeiden, allerdings hoffe ich dass meine Textrules für immer unterstützt werden.
Servus
Ich seh das grundsätzlich genauso wie du. Die grafische Oberfläche hat sicher ihre Vorteile, aber wenn da was nicht 100% dokumentiert ist sucht man ewig nach ner Lösung.Ich bevorzuge die Konfiguration über die DateinOb dies gut ist, weiß ich nicht, aber für mich ist es hilfreicher die Dinge zu verstehen und zu sichern.
Aber, ich bin mit OH2.2 eingestiegen und hab damals fast alles mit MQTT gemacht. Irgendwann kam dann das Update und ich konnte meine ganzen Things und Items neu anlegen, weil die Textdatei nicht mehr unterstützt wurde und somit verschwanden. Und bei dem HTTP Binding ist mir das jetzt wieder passiert, auch wenn es einen Weg gibt es trotzdem mit der Textdatei zu machen.
Ich denke der Weg geht hin zur grafischen Oberfläche, was sicher Segen und Fluch zugleich ist. Aber für eine breitere Userbasis ist das wohl der einzige Weg.
Ich werde jetzt alles was geht grafisch machen um solche Probleme zu vermeiden, allerdings hoffe ich dass meine Textrules für immer unterstützt werden.
Servus
-
- Beiträge: 67
- Registriert: 11. Sep 2019 16:57
Answers: 0
Re: Sonnenbatterie Daten auslesen per JSON
Vielen Dank für die Anleitung.
Leider stelle ich mich trotzdem etwas ungeschickt an. Es kommt nur "Null" an...
Bei "Add Channel" sind Label und Identifier frei zu befüllen?
Sind die Werte als String oder Number zu handhaben?
Wenn ich Bild2 richtig verstehe, dann sind es 5 items pro channel? oder seh ich das falsch?
Sind Format und Einheit bei Channel oder Item einzustellen? letzteres bietet ja unter advanced ein Feld.
Entschuldigt die vielen Fragen, aber ich hab leider schon sehr viele Stunden ver****, und evtl nur aufgrund eines fehlenden Neustarts die richtige Konfiguration übersehen.
Leider stelle ich mich trotzdem etwas ungeschickt an. Es kommt nur "Null" an...
Bei "Add Channel" sind Label und Identifier frei zu befüllen?
Sind die Werte als String oder Number zu handhaben?
Wenn ich Bild2 richtig verstehe, dann sind es 5 items pro channel? oder seh ich das falsch?
Sind Format und Einheit bei Channel oder Item einzustellen? letzteres bietet ja unter advanced ein Feld.
Entschuldigt die vielen Fragen, aber ich hab leider schon sehr viele Stunden ver****, und evtl nur aufgrund eines fehlenden Neustarts die richtige Konfiguration übersehen.
- udo1toni
- Beiträge: 15263
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Answers: 244
Re: Sonnenbatterie Daten auslesen per JSON
Der Punkt ist an dieser Stelle aber ein anderer. Du hast unter OH2.2 mit mqtt1 gearbeitet und hast das dann später auf mqtt2 umgestellt. mqtt2 ist grundsätzlich anders zu konfigurieren als mqtt1, das wurde auch explizit erklärt. Mit http ist es das gleiche: Du steigst von http1 auf http2 um (auch wenn http2 nie für openHAB2 offiziell zur Verfügung stand - ich habe es unter OH2.5.10 laufen, weil ich es damals als Testballon eingerichtet habe).HomerJ.S. hat geschrieben: ↑5. Jan 2021 17:52 ich bin mit OH2.2 eingestiegen und hab damals fast alles mit MQTT gemacht. Irgendwann kam dann das Update und ich konnte meine ganzen Things und Items neu anlegen, weil die Textdatei nicht mehr unterstützt wurde und somit verschwanden. Und bei dem HTTP Binding ist mir das jetzt wieder passiert, auch wenn es einen Weg gibt es trotzdem mit der Textdatei zu machen.
bei http ist es sogar so, dass die Konfiguration fast 1:1 zu übernehmen ist, weil der http cache von http1 jetzt halt ein Thing ist und die Konfiguration der Items einfach in den Channels eingetragen wird.
Things ließen sich aber immer auch über Textdatei konfigurieren, daran hat sich auch nichts geändert. Unter OH3 sollte man aber besser das Thing über die UI anlegen und anschließend (bei Bedarf) den Rest über yaml konfigurieren.
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet
-
- Beiträge: 11
- Registriert: 8. Jan 2019 19:46
Answers: 0
Re: Sonnenbatterie Daten auslesen per JSON
@mr.b4
Beim Channel sind nur Label und Identifier zu befüllen, der Channel ist bei mir ein String (das ist aber egal, glaub ich)
Die Items sind Number.
Channel brauchst du nur den einen, wieviel Items du zu dem verlinkst liegt bei dir, für jeden Wert den du aus dem JSON extrahieren willst ein Item. Ich hab halt diese fünf, weil die anderen Werte für mich nicht interessant sind. Also für die Produktion ein Item, für den Ladezustand ein Item usw.
Die Werte werden bei den Items angegeben, geht ja nicht anders der Channel enthält ja verschiedene Werte. Beim Channel ist nix weiter zu konfigurieren.
Hier nochmal ein Bild eines Items: Ich hoffe das bringt dich weiter. Frag nochmal nach wenn's nicht klappen will, keine Scheu dafür ist das Forum da.
Servus
Beim Channel sind nur Label und Identifier zu befüllen, der Channel ist bei mir ein String (das ist aber egal, glaub ich)
Die Items sind Number.
Channel brauchst du nur den einen, wieviel Items du zu dem verlinkst liegt bei dir, für jeden Wert den du aus dem JSON extrahieren willst ein Item. Ich hab halt diese fünf, weil die anderen Werte für mich nicht interessant sind. Also für die Produktion ein Item, für den Ladezustand ein Item usw.
Die Werte werden bei den Items angegeben, geht ja nicht anders der Channel enthält ja verschiedene Werte. Beim Channel ist nix weiter zu konfigurieren.
Hier nochmal ein Bild eines Items: Ich hoffe das bringt dich weiter. Frag nochmal nach wenn's nicht klappen will, keine Scheu dafür ist das Forum da.
Servus
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.