NEWS
Wallbox, PV mit openWB in iobroker einbinden
-
@mading Danke!
Nur noch die Frage, wenn ich den Ordner manuell anlege, ist es besser diese Userdatenordner und -punkte im Expertenmodus oder Usermodus anzulegen?
Und wenn schon Datenpunkte ganz unten am Ende der Objekt ID Liste angelegt wurden, weil ich empfangene Daten in einer FHEM Telnet Integration für die InfluxDB aktiviert hatte, wie bekomme ich die dann in die angelegte Userdata Ordnerstruktur?
Ich seh schon, da fehlt mir noch sehr viel Verständnis für die iobroker Tiefen. Nur wo fange ich an diese zu lernen? -
@wolfirr du musst die Datenpunkte, die keine Ordner sind, im Expertenmodus anlegen. Alle Ordner , die du in meinem Screenshot siehst, habe ich mir angelegt. Es steht dir frei, das so zu strukturieren, wie du es brauchst
@wolfirr sagte in Wallbox, PV mit openWB in iobroker einbinden:
Und wenn schon Datenpunkte ganz unten am Ende der Objekt ID Liste angelegt wurden, weil ich empfangene Daten in einer FHEM Telnet Integration für die InfluxDB aktiviert hatte, wie bekomme ich die dann in die angelegte Userdata Ordnerstruktur?
Ich verstehe nicht, was du damit meinst.
-
@mading Danke sehr, das hilft schon mal. Denn den Unterschied ob im Expertenmodus oder nicht, habe ich in der Docu noch nicht gefunden oder bin noch nicht so weit vorgedrungen.
In dem angehängten Bild sieht man und die Datenpunkte am Ende der Objektordner und ich weiß nicht, wie die entstanden sind und wie ich rausfinde, wo die erzeugt wurden? Ich finde nur eine 'Löschen' Funktion, wenn drauf gehe?![0_1704197272127_Bildschirmfoto von 2024-01-02 13-05-41.png](Uploading 100%) -
@wolfirr das Bild fehlt
-
@mading bin ich noch zu kurz dabei, dass ich keins hochladen kann?
-
@wolfirr klapp' mal 0_Userdata auf. Das ist der Bereich, der für deine eigenen Datenpunkte gedacht ist. Alle anderen Ordner beinhalten Datenpunkte der jeweiligen Adapter.
Hast du die SN Datenpunkte angelegt? Vermutlich hast du den Pfad nicht korrekt angegeben bzw. bevor dur auf Hinzufügen (+) Klickst, nicht auf 0_userdata geklickt.
- die 0 Anklicken unter 0_Userdata
- In den Expertenmodus gehen
- Einen Ordner (z.B. EigeneDatenpunkte) anlegen (das oberste Feld beim Anlegen zeigt dir, wo der Ordner/ Datenpunkt in der Hierarchie angelegt wird):
- Danach sollte unter 0_userdata.0 dein neuer Ordner auftauchen
Wenn du darunter Datenpunkte oder Ordner anlegen willst, musst du in den Expertenmodus. Wenn du die "0" unter 0_userdata angeklickt hast, und möchtest unter EigeneDatenpunkte einen Datenpunkt anlegen, musst du im Bereicht Name noch den Ordner (EigeneDatenpunkte) vor dem Namen des Ordners angeben:
Einfach den Ordner im Namen-Feld mit einem Punkt vom Datenpunkte Namen trennen.
Ich hoffe, das war veständlich.
-
@mading Danke!
Die SN Datenpunkte hatte ich nicht wissentlich angelegt, hab sie jetzt einfach mal gelöscht.
Wie ich eigene Datenpunkte anlege hatte ich oben gelernt, wichtig deine Bemerkung, dass ich sie im Expertenmodus anlegen muss.
Nun muss ich mir noch mehr Docu und Anleitungen reinziehen, damit ich die richtigen und nicht zu dumme Fragen stellen kann. -
Hallo Forum, jetzt hätte ich noch eine Frage, die mir in der Docu nicht klar wird. Dort steht bei 'Blockly for Dummies' dass:
'ACHTUNG: Scripte - egal welcher Art - gehören nur in sehr seltenen Ausnahmefällen in den Ordner "global". Du solltest Dir eine sinnvolle Ordnerstruktur - im Normalfall unterhalb von "common" - ausdenken.'Soll es heißen, dass die Scripte 'in' oder 'unter' 'common' angelegt werden sollen?
Bei mir sieht es nun 'unter' so aus, siehe Bild.
Danke für eure Hilfe -
@wolfirr richtig, den Expertenmodus brauchst du da nicht und siehst den global Ordner dann auch nicht
-
@mading Danke, aber ich hab mich vielleicht nicht präzise genug ausgedrückt. Ich wollte wissen, ob ich die Scripte IM Ordner 'common' oder UNTERHALB des Ordners anlegen soll?
Ok, ich mach das nicht im Expertenmodus, das war wohl ein Fehler.
Heute hatte ich bei Sonne endlich die Möglichkeit die Scripte zu testen und sie tun leider nicht, was ich will. Also es werden keine Datenpunkte gefüllt oder angelegt und damit auch nichts sinnvolles an die openWB per mqtt geschickt.
Da muss ich wohl noch weiter üben, weil ich auch nicht herausgefunden habe, woran es liegt. -
@wolfirr unterhalb, leg‘ einfach deine eigene Ordnerstruktur an.
-
@mading endlich konnte ich bei Sonnenschein den Speicher mal wieder richtig betreiben und das Blockly nochmal laufen lassen und testen. Dabei ist mir folgender Debug ausgegeben worden und ich weiß nicht, wo der Fehler liegen kann?
Danke im VorausDebug Output:
15.2.2024, 12:55:39.788 [info ]: javascript.0 (1832412) Start javascript script.js.Speicher.SN103 15.2.2024, 12:55:39.871 [info ]: javascript.0 (1832412) script.js.Speicher.SN103: schedule(cron=* * * * *) 15.2.2024, 12:55:39.873 [info ]: javascript.0 (1832412) script.js.Speicher.SN103: getState(id=fhem.0.ESS_Minutenwerte.03_Battery_to_Household_in_W, timerId=undefined) => {"val":0,"ack":true,"ts":1707994275680,"q":0,"from":"system.adapter.fhem.0","user":"system.user.admin","lc":1707994275680} 15.2.2024, 12:55:39.873 [info ]: javascript.0 (1832412) script.js.Speicher.SN103: getState(id=fhem.0.ESS_Minutenwerte.03_Battery_to_Household_in_W, timerId=undefined) => {"val":0,"ack":true,"ts":1707994275680,"q":0,"from":"system.adapter.fhem.0","user":"system.user.admin","lc":1707994275680} 15.2.2024, 12:55:39.874 [info ]: javascript.0 (1832412) script.js.Speicher.SN103: getState(id=fhem.0.ESS_Minutenwerte.05_PV_to_Battery_in_W, timerId=undefined) => {"val":1963,"ack":true,"ts":1707998056473,"q":0,"from":"system.adapter.fhem.0","user":"system.user.admin","lc":1707998056473} 15.2.2024, 12:55:39.875 [error]: javascript.0 (1832412) script.js.Speicher.SN103 Error by subscription (trigger): Wrong ID of type boolean or number. 15.2.2024, 12:55:39.875 [info ]: javascript.0 (1832412) script.js.Speicher.SN103: registered 0 subscriptions, 1 schedule, 0 messages, 0 logs and 0 file subscriptions 15.2.2024, 12:56:00.049 [info ]: javascript.0 (1832412) script.js.Speicher.SN103: getObject(id=fhem.0.ESS_Minutenwerte.03_Battery_to_Household_in_W, enumName=undefined) => {"_id":"fhem.0.ESS_Minutenwerte.03_Battery_to_Household_in_W","type":"state","common":{"name":"ESS_Minutenwerte 03_Battery_to_Household_in_W","type":"number","role":"value","read":true,"write":false,"custom":{"influxdb.0":{"enabled":true,"storageType":"Number","aliasId":"","debounceTime":0,"blockTime":0,"changesOnly":true,"changesRelogInterval":0,"changesMinDelta":0,"ignoreBelowNumber":"","disableSkippedValueLogging":false,"enableDebugLogs":false,"debounce":1000}}},"native":{"Name":"ESS_Minutenwerte","Attribute":"03_Battery_to_Household_in_W","Readings":true,"type":"number","role":"value"},"value":{"val":"0"},"from":"system.adapter.influxdb.0","user":"system.user.admin","ts":1704876495776} 15.2.2024, 12:56:00.050 [info ]: javascript.0 (1832412) script.js.Speicher.SN103: getState(id=fhem.0.ESS_Minutenwerte.05_PV_to_Battery_in_W, timerId=undefined) => {"val":1963,"ack":true,"ts":1707998056473,"q":0,"from":"system.adapter.fhem.0","user":"system.user.admin","lc":1707998056473} 15.2.2024, 12:56:00.051 [info ]: javascript.0 (1832412) script.js.Speicher.SN103: getState(id=fhem.0.ESS_Minutenwerte.05_PV_to_Battery_in_W, timerId=undefined) => {"val":1963,"ack":true,"ts":1707998056473,"q":0,"from":"system.adapter.fhem.0","user":"system.user.admin","lc":1707998056473} 15.2.2024, 12:56:00.052 [info ]: javascript.0 (1832412) script.js.Speicher.SN103: setForeignState(id=0_userdata.0.eigeneDatenpunkte.Caterva.SN103.LeistungSN103, state={"val":-1963,"ack":true,"ts":1707998160052,"q":0,"from":"system.adapter.javascript.0","lc":1707998160052,"c":"script.js.Speicher.SN103"}) 15.2.2024, 12:56:00.053 [warn ]: javascript.0 (1832412) script.js.Speicher.SN103: setForeignState(id=0_userdata.0.eigeneDatenpunkte.Caterva.SN103.LeistungSN103, state={"val":-1963,"ack":true,"ts":1707998160052,"q":0,"from":"system.adapter.javascript.0","lc":1707998160052,"c":"script.js.Speicher.SN103"}) - wurde nicht ausgeführt, während der Debug-Modus aktiv ist 15.2.2024, 12:56:00.055 [info ]: javascript.0 (1832412) script.js.Speicher.SN103: sendTo(instance=mqtt.0, cmd=sendMessage2Client, msg={"topic":"openWB/set/houseBattery/W","message":"0","retain":true}, hasCallback=true) 15.2.2024, 12:56:00.058 [info ]: javascript.0 (1832412) script.js.Speicher.SN103: getState(id=fhem.0.ESS_Minutenwerte.01_SoC_in_Pct, timerId=undefined) => {"val":70,"ack":true,"ts":1707997876082,"q":0,"from":"system.adapter.fhem.0","user":"system.user.admin","lc":1707997876082} 15.2.2024, 12:56:00.059 [info ]: javascript.0 (1832412) script.js.Speicher.SN103: sendTo(instance=mqtt.0, cmd=sendMessage2Client, msg={"topic":"openWB/set/houseBattery/%Soc","message":70,"retain":true}, hasCallback=true) 15.2.2024, 12:56:20.056 [error]: javascript.0 (1832412) script.js.Speicher.SN103: timeout 15.2.2024, 12:56:20.058 [error]: javascript.0 (1832412) script.js.Speicher.SN103: timeout 15.2.2024, 12:57:00.052 [info ]: javascript.0 (1832412) script.js.Speicher.SN103: getObject(id=fhem.0.ESS_Minutenwerte.03_Battery_to_Household_in_W, enumName=undefined) => {"_id":"fhem.0.ESS_Minutenwerte.03_Battery_to_Household_in_W","type":"state","common":{"name":"ESS_Minutenwerte 03_Battery_to_Household_in_W","type":"number","role":"value","read":true,"write":false,"custom":{"influxdb.0":{"enabled":true,"storageType":"Number","aliasId":"","debounceTime":0,"blockTime":0,"changesOnly":true,"changesRelogInterval":0,"changesMinDelta":0,"ignoreBelowNumber":"","disableSkippedValueLogging":false,"enableDebugLogs":false,"debounce":1000}}},"native":{"Name":"ESS_Minutenwerte","Attribute":"03_Battery_to_Household_in_W","Readings":true,"type":"number","role":"value"},"value":{"val":"0"},"from":"system.adapter.influxdb.0","user":"system.user.admin","ts":1704876495776}
-
@wolfirr
Es gibt wohl ein Problem mit 1832412) script.js.Speicher.SN103 Error by subscription (trigger): Wrong ID of type boolean or number.Was ist das für ein DP?
-
@mading Hallo Mading, auf was referenziert die '1832412'? Finde dazu keinen Zusammenhang. Habe noch sehen, dass da ein verstecktes Blockly war, dass ich nicht gesehen hatte. Nachdem ich es entfernt habe, kommt nur noch der Timeout:
21:49:00.568 info javascript.0 (1832412) Start javascript script.js.Speicher.SN103 21:49:00.783 info javascript.0 (1832412) script.js.Speicher.SN103: schedule(cron=* * * * *) 21:49:00.784 info javascript.0 (1832412) script.js.Speicher.SN103: registered 0 subscriptions, 1 schedule, 0 messages, 0 logs and 0 file subscriptions 21:50:00.056 info javascript.0 (1832412) script.js.Speicher.SN103: getState(id=fhem.0.ESS_Minutenwerte.03_Battery_to_Household_in_W, timerId=undefined) => {"val":0,"ack":true,"ts":1708103715789,"q":0,"from":"system.adapter.fhem.0","user":"system.user.admin","lc":1708103715789} 21:50:00.057 info javascript.0 (1832412) script.js.Speicher.SN103: getState(id=fhem.0.ESS_Minutenwerte.05_PV_to_Battery_in_W, timerId=undefined) => {"val":0,"ack":true,"ts":1708094176184,"q":0,"from":"system.adapter.fhem.0","user":"system.user.admin","lc":1708094176184} 21:50:00.059 info javascript.0 (1832412) script.js.Speicher.SN103: sendTo(instance=mqtt.0, cmd=sendMessage2Client, msg={"topic":"openWB/set/houseBattery/W","message":"0","retain":true}, hasCallback=true) 21:50:00.061 info javascript.0 (1832412) script.js.Speicher.SN103: getState(id=fhem.0.ESS_Minutenwerte.01_SoC_in_Pct, timerId=undefined) => {"val":13,"ack":true,"ts":1708103895547,"q":0,"from":"system.adapter.fhem.0","user":"system.user.admin","lc":1708103895547} 21:50:00.065 info javascript.0 (1832412) script.js.Speicher.SN103: sendTo(instance=mqtt.0, cmd=sendMessage2Client, msg={"topic":"openWB/set/houseBattery/%Soc","message":13,"retain":true}, hasCallback=true) 21:50:20.060 error javascript.0 (1832412) script.js.Speicher.SN103: timeout 21:50:20.065 error javascript.0 (1832412) script.js.Speicher.SN103: timeout 21:51:00.044 info javascript.0 (1832412) script.js.Speicher.SN103: getState(id=fhem.0.ESS_Minutenwerte.03_Battery_to_Household_in_W, timerId=undefined) => {"val":0,"ack":true,"ts":1708103715789,"q":0,"from":"system.adapter.fhem.0","user":"system.user.admin","lc":1708103715789} 21:51:00.045 info javascript.0 (1832412) script.js.Speicher.SN103: getState(id=fhem.0.ESS_Minutenwerte.05_PV_to_Battery_in_W, timerId=undefined) => {"val":0,"ack":true,"ts":1708094176184,"q":0,"from":"system.adapter.fhem.0","user":"system.user.admin","lc":1708094176184} 21:51:00.047 info javascript.0 (1832412) script.js.Speicher.SN103: sendTo(instance=mqtt.0, cmd=sendMessage2Client, msg={"topic":"openWB/set/houseBattery/W","message":"0","retain":true}, hasCallback=true) 21:51:00.048 info javascript.0 (1832412) script.js.Speicher.SN103: getState(id=fhem.0.ESS_Minutenwerte.01_SoC_in_Pct, timerId=undefined) => {"val":13,"ack":true,"ts":1708103895547,"q":0,"from":"system.adapter.fhem.0","user":"system.user.admin","lc":1708103895547} 21:51:00.049 info javascript.0 (1832412) script.js.Speicher.SN103: sendTo(instance=mqtt.0, cmd=sendMessage2Client, msg={"topic":"openWB/set/houseBattery/%Soc","message":13,"retain":true}, hasCallback=true) 21:51:20.047 error javascript.0 (1832412) script.js.Speicher.SN103: timeout 21:51:20.049 error javascript.0 (1832412) script.js.Speicher.SN103: timeout 21:52:00.040 info javascript.0 (1832412) script.js.Speicher.SN103: getState(id=fhem.0.ESS_Minutenwerte.03_Battery_to_Household_in_W, timerId=undefined) => {"val":0,"ack":true,"ts":1708103715789,"q":0,"from":"system.adapter.fhem.0","user":"system.user.admin","lc":1708103715789} 21:52:00.040 info javascript.0 (1832412) script.js.Speicher.SN103: getState(id=fhem.0.ESS_Minutenwerte.05_PV_to_Battery_in_W, timerId=undefined) => {"val":0,"ack":true,"ts":1708094176184,"q":0,"from":"system.adapter.fhem.0","user":"system.user.admin","lc":1708094176184} 21:52:00.042 info javascript.0 (1832412) script.js.Speicher.SN103: sendTo(instance=mqtt.0, cmd=sendMessage2Client, msg={"topic":"openWB/set/houseBattery/W","message":"0","retain":true}, hasCallback=true) 21:52:00.043 info javascript.0 (1832412) script.js.Speicher.SN103: getState(id=fhem.0.ESS_Minutenwerte.01_SoC_in_Pct, timerId=undefined) => {"val":13,"ack":true,"ts":1708103895547,"q":0,"from":"system.adapter.fhem.0","user":"system.user.admin","lc":1708103895547} 21:52:00.044 info javascript.0 (1832412) script.js.Speicher.SN103: sendTo(instance=mqtt.0, cmd=sendMessage2Client, msg={"topic":"openWB/set/houseBattery/%Soc","message":13,"retain":true}, hasCallback=true)
Danke
Wolfirr -
@wolfirr schwer zu sagen. Wie oft schickst du Updates an den Speicher oder fragst ihn ab? Wie ist der Speicher angebunden (WLan/ LAN)?
-
@mading Danke soweit, ich hab noch ein paar Änderungen und Tests durchgeführt, dann die openWB auf V2 upgedated. Jetzt kommen die Daten an der openWB an und werden auch richtig angezeigt. Hoffe, dass nun auch das PV-Überschussladen richtig funktioniert.
In der V1.9 openWB war anscheinend ein Fehler mit MQTT, da ich immer Schwierigkeiten hatte den Topic richtig zu bezeichnen und die Schreibweise der houseBattery irgendwie nicht korrekt erkannt wurde.
Die Gerätschaften sind alle per LAN angeschlossen, da bei mir das WLAN schwierig ist mit dauerhafter Verbindung in die verschiedenen Gebäude.Herzlichen Dank an eure Unterstützung!
Wenn jemand Fragen hat, wie man iobroker mit openWB V2.0 anbindet, jetzt hab ich etwas Erfahrung sammel dürfen und kann vielleicht auch helfen.
Wolfirr! -
@wolfirr
Hallo wolfirr,ich bin leider nicht sehr erfahren mit MQTT. Ich bin ebenfalls mit dem iobroker unterwegs und möchte Daten meiner openWB mit dem Softwarestand 2.1.4 auslesen.
Dazu habe ich den mqtt-client als Adapter heruntergeladen und die ip-Adresse der openWB eingetragen, siehe den Screenshot.
Leider bekomme ich aber keine Daten unter den Objekten eingelesen. Mir ist allerdings auch nicht klar, wer als MQTT-Broker agiert. Muss ich dazu erst noch einen MQTT-Broker installieren, oder übernimmt das bereits die openWB? Muss in der openWB die Brücke aktiviert werden? Welche Funktion hat diese Brücke?
Herzliche Dank im Voraus, vielleicht kannst Du mir dazu ein paar Infos geben?
-
@mar-bus
Hallo.
Hier https://forum.iobroker.net/topic/43655/wallbox-pv-mit-openwb-in-iobroker-einbinden/64
habe ich beschrieben wie ich das bei mir gelöst habe.
Die openWB ist der Mqtt Broker.Gruß
-
Danke für die Info, zwei kurze Fragen:
Wenn ich das richtige sehe, hast du sowohl den Broker als auch den Client in deinem iobroker eingerichtet. Werden beide Adapter gebraucht? Oder ist der Broker aus anderen Gründen installiert worden?
Die Brücke muss auch eingerichtet werden?
Herzliche Grüße
-
Noch eine weitere Frage:
ist die Bezeichnung der Brücke im mqtt-client als Class-ID einzutragen, in deinem Beispielen ist die Class-ID "iobr_openwb", während die Brücke in der openWB "ioBroker" lautet, oder sind die Bezeichnungen unabhängig von einander und können beliebig gewählt werden?
Danke und Grüße