Seite 1 von 1

Einrichtung OpenWB SW 2.x

Verfasst: Sa Sep 02, 2023 2:47 pm
von atlantic
Hallo zusammen,

hab heute mal einen Umstieg auf die 2er SW Version gewagt... so richtig glücklich bin bin ich aber noch nicht.

Hab auch brav nach YouTube Video eingerichtet. Zähler lese ich über iobroker aus, reiche sie per mqqt an die OpenWB weiter. Das klappt sehr gut.

Hab dann auch Fahrzeuge angelegt (ein Standard-Profil für alles, was kommt und für mein Auto ein eigenes. Freischaltung per RFID) -> Profile sind angelegt, werden aber überhaupt nicht beachtet. Stecke ich ein Auto an, startet es sofort mit dem Laden - völlig unabhängig ob PV Modus oder nicht. Der RFID Tag ist dem Ding vollkommen egal. Ob gescannt oder nicht. Es wird auch nicht mal als Ladeleistung erkannt, sondern nur als Hausverbrauch. Er lädt einphasig mit 16A auch wenn im Profil zum Tag was komplett anderes hinterlegt ist. Im PV Modus saugt er mir den Hausspeicher leer, obwohl ich das verhindern wollte. Verzweifle langsam daran.

auch sehe ich den internen Zähler, der ja eigentlich über modbus ausgelesen wird nicht mehr. Muss ich das denn auch irgendwie anlegen?

Hat irgendwer evtl. die gleiche Probleme gehabt und eine Lösung dafür?

Besten Dank und VG

Max

Re: Einrichtung OpenWB SW 2.x

Verfasst: So Sep 03, 2023 8:16 am
von schariwari
Ich häng mich da dran.

Hab eine Reihe von Tests hinter mir und mir scheint, das das Problem tatsächlich der interne Zähler ist, den er nicht auslesen kann:

DAS beim Booten:

Code: Alles auswählen

2023-09-02 14:54:23,579 - {modules.internal_chargepoint_handler.clients:134} - {ERROR:Internal Chargepoint} - LP0 Device: /dev/ttyUSB0
2023-09-02 14:54:23,748 - {modules.common.evse:57} - {DEBUG:Internal Chargepoint} - FW-Version: 18
2023-09-02 14:54:23,750 - {modules.internal_chargepoint_handler.clients:49} - {ERROR:Internal Chargepoint} - Modbus-ID der EVSE an LP0: 1
2023-09-02 14:54:24,817 - {modules.internal_chargepoint_handler.clients:63} - {ERROR:Internal Chargepoint} - Verbauter Zähler: <class 'modules.common.sdm.Sdm630'> mit Modbus-ID: 105
scheint zu führen zu

Code: Alles auswählen

2023-09-02 15:13:26,494 - {modules.common.fault_state:52} - {ERROR:Internal Chargepoint} - Ladepunkt 0: FaultState FaultStateLevel.ERROR, FaultStr modules.internal_chargepoint_handler.chargepoint_module <class 'modules.common.fault_state.FaultState'> ("modules.common.modbus <class 'modules.common.fault_state.FaultState'> ('modules.common.modbus Modbus Error: [Input/Output] Modbus Error: [Invalid Message] No response received, expected at least 2 bytes (0 received)', <FaultStateLevel.ERROR: 2>)", <FaultStateLevel.ERROR: 2>), Traceback: 
Traceback (most recent call last):
  File "/var/www/html/openWB/packages/modules/common/modbus.py", line 85, in __read_registers
    raise FaultState.error(__name__+" "+str(response))
modules.common.fault_state.FaultState: ('modules.common.modbus Modbus Error: [Input/Output] Modbus Error: [Invalid Message] No response received, expected at least 2 bytes (0 received)', <FaultStateLevel.ERROR: 2>)

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/var/www/html/openWB/packages/modules/internal_chargepoint_handler/chargepoint_module.py", line 64, in get_values
    plug_state, charge_state, self.set_current_evse = self.__client.evse_client.get_plug_charge_state()
  File "/var/www/html/openWB/packages/modules/common/evse.py", line 39, in get_plug_charge_state
    set_current, _, state_number = self.client.read_holding_registers(
  File "/var/www/html/openWB/packages/modules/common/modbus.py", line 118, in read_holding_registers
    return self.__read_registers(
  File "/var/www/html/openWB/packages/modules/common/modbus.py", line 100, in __read_registers
    raise FaultState.error(__name__+" "+str(type(e))+" " +
modules.common.fault_state.FaultState: ("modules.common.modbus <class 'modules.common.fault_state.FaultState'> ('modules.common.modbus Modbus Error: [Input/Output] Modbus Error: [Invalid Message] No response received, expected at least 2 bytes (0 received)', <FaultStateLevel.ERROR: 2>)", <FaultStateLevel.ERROR: 2>)

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/var/www/html/openWB/packages/modules/internal_chargepoint_handler/internal_chargepoint_handler.py", line 224, in update
    state = self.module.get_values(phase_switch_cp_active, rfid_data.last_tag)[0]
  File "/var/www/html/openWB/packages/modules/internal_chargepoint_handler/chargepoint_module.py", line 106, in get_values
    raise FaultState.error(__name__ + " " + str(type(e)) + " " + str(e)) from e
modules.common.fault_state.FaultState: ('modules.internal_chargepoint_handler.chargepoint_module <class \'modules.common.fault_state.FaultState\'> ("modules.common.modbus <class \'modules.common.fault_state.FaultState\'> (\'modules.common.modbus Modbus Error: [Input/Output] Modbus Error: [Invalid Message] No response received, expected at least 2 bytes (0 received)\', <FaultStateLevel.ERROR: 2>)", <FaultStateLevel.ERROR: 2>)', <FaultStateLevel.ERROR: 2>)

.... und wenn er nicht weiß warum er was wann und wieviel ins Auto pumpt, dann kann er nicht regeln....

Re: Einrichtung OpenWB SW 2.x

Verfasst: So Sep 03, 2023 2:33 pm
von aiole
RFID - nach diesem Schema konfiguriert?
https://github.com/openWB/core/wiki/Lad ... ischaltung

Re: Einrichtung OpenWB SW 2.x

Verfasst: Di Sep 05, 2023 8:24 am
von Hefer
atlantic hat geschrieben: Sa Sep 02, 2023 2:47 pm Hallo zusammen,

hab heute mal einen Umstieg auf die 2er SW Version gewagt... so richtig glücklich bin bin ich aber noch nicht.

Hab auch brav nach YouTube Video eingerichtet. Zähler lese ich über iobroker aus, reiche sie per mqqt an die OpenWB weiter. Das klappt sehr gut.


Besten Dank und VG

Max
Hallo Max,

kannst du bitte eine kurze Schritt für Schritt anleitung für einen "Dummi" wie mich schreiben wie ich die Daten vom Zähler usw. aus dem iobroker bekomme über MQTT?
Habe einen Senec Speicher und der hat bisher alle Daten über die Module aus dem Forum hier eingelesen. Da dieses nicht mehr geht habe ich einen iobroker dazwischen geschaltet der erst die Daten holt und auch bekommt, diese aber nun an die openWB weiterreichen soll.
Ich komme nicht genau weiter ob auf dem iobroker nun die Serverversion oder Client vom MQTT installiert werden soll und wo ich was einstellen muß.

Wenn es hier nicht hingehört, dann bitte per PN antworten falls du dich meiner Frage annimmst.

Grüße
Heinz-Jörg

Re: Einrichtung OpenWB SW 2.x

Verfasst: Fr Sep 08, 2023 5:45 pm
von atlantic
Hallo Heinz-Jörg,

sry. für die späte Rückmeldung. Hoffe, es ist noch aktuell. Wenn die Daten schonmal im iobroker sind, ist das dann relativ einfach.

1. Mach ein komplettes Backup von iobroker (wirklich die Dateien im Verzeichnis) und der openWB

2. Dein iobroker muss mit der openWB "telefonieren" können. Ich nutze dazu den Adapter mqtt Broker/Client.
Der wird wie hier eingerichtet, deine IP der openWB rein und die gewünschten Topics ändern - oder auch nicht. Abonniere aber nicht alle Topics. Bringt außer Systemlast und einem potentiellen zerschießen der Config in der openWB gar nix. Nun noch einfach das als .txt speichern und danach kann dieser Code direkt in der Instanz (oben rechts das kleine Symbol unter dem Fragezeichen) importiert werden:

Code: Alles auswählen

{
  "type": "client",
  "clientId": "",
  "bind": "0.0.0.0",
  "port": 1883,
  "ssl": false,
  "rejectUnauthorized": false,
  "user": "",
  "pass": "",
  "url": "HIER DIE IP DER openWB",
  "patterns": "openWB/SmartHome/#,openWB/Verbraucher/#,openWB/chargepoint/#,openWB/lp/#,openWB/set/#,openWB/vehicle/#",
  "onchange": true,
  "publishAllOnStart": false,
  "debug": false,
  "publish": "mqtt.0.*",
  "certPublic": "",
  "certPrivate": "",
  "certChained": "",
  "prefix": "",
  "forceCleanSession": "no",
  "sendAckToo": false,
  "sendStateObject": false,
  "webSocket": true,
  "maxTopicLength": 100,
  "publishOnSubscribe": true,
  "extraSet": false,
  "sendOnStartInterval": 2000,
  "sendInterval": 10,
  "keepalive": 1000,
  "reconnectPeriod": 10,
  "connectTimeout": 30,
  "persistent": false,
  "defaultQoS": "0",
  "retain": false,
  "retransmitInterval": 2000,
  "retransmitCount": 10,
  "storeClientsTime": 1440,
  "removePrefix": "",
  "ignoreNewObjects": false,
  "noRetain": false,
  "allBinaries": false
}
Damit sind die Topics dann schonmal verfügbar. Wenn nicht, dann mit dem Windows Programm mqtt explorer mal alle benötigten an die WB publishen, der iobroker liest mit. Du findest die entsprechenden Topics auf der Konfigurationsseite von mqtt Zähler, mqtt Batterie und mqtt Wechselrichter in der openWB.

3. im nächsten Schritt installierst du den javaScript Adapter (wenn noch nicht geschehen) und erstellst ein kleines Script. Kannst auch in Blockly machen. In meinem Beispiel musst du natürlich aufpassen, dass du die richtigen Objekte ausgewählt hast (in meinem Beispiel kommen von dort die PV Daten). Ich lese bei mir über den Modbus aus und gebe es als Zahl bzw. auch gleich als Arrray nach json konvertiert wieder an mqtt weiter (Gleiches muss dann noch für EVU und Batterie passieren).

Neues Blockly anlegen und diesen Code reinkopieren, entsprechend anpassen:

Code: Alles auswählen

<xml xmlns="https://developers.google.com/blockly/xml">
  <variables>
    <variable id="*=j=B!6!AAeS]}A]_z.`">PV-Dachleistung</variable>
  </variables>
  <block type="schedule" id="A@R+ekSfixFJ7_2xi+@2" x="12" y="4938">
    <field name="SCHEDULE">*/3 * * * * *</field>
    <statement name="STATEMENT">
      <block type="variables_set" id="jP~3fLI]63(]d3GyGp?5">
        <field name="VAR" id="*=j=B!6!AAeS]}A]_z.`">PV-Dachleistung</field>
        <value name="VALUE">
          <block type="math_arithmetic" id="8/zZ}+/l#dgzuNFwEudZ">
            <field name="OP">ADD</field>
            <value name="A">
              <shadow type="math_number" id="{`6}PC!gzk^f:-%6Gx;s">
                <field name="NUM">1</field>
              </shadow>
              <block type="math_arithmetic" id="HPg4@rwan4(}vVS];,`K">
                <field name="OP">MULTIPLY</field>
                <value name="A">
                  <shadow type="math_number" id="tyh?iN:XN-C:O,1~rJ:/">
                    <field name="NUM">1</field>
                  </shadow>
                  <block type="get_value" id="?nz5K)d/zR=RpV0=)Uu:">
                    <field name="ATTR">val</field>
                    <field name="OID">modbus.0.holdingRegisters.40083_I_AC_Power</field>
                  </block>
                </value>
                <value name="B">
                  <shadow type="math_number" id="8a`IPFLc=oC54By3mT8T">
                    <field name="NUM">10</field>
                  </shadow>
                  <block type="math_single" id="^At!-Duvk`.1j]~Tqj-B">
                    <field name="OP">POW10</field>
                    <value name="NUM">
                      <shadow type="math_number" id="ik%,]Tre/lzlJ-(;^I6P">
                        <field name="NUM">9</field>
                      </shadow>
                      <block type="get_value" id="T%94GtN83f7}3!c6o*`g">
                        <field name="ATTR">val</field>
                        <field name="OID">modbus.0.holdingRegisters.40084_I_AC_Power_SF</field>
                      </block>
                    </value>
                  </block>
                </value>
              </block>
            </value>
            <value name="B">
              <shadow type="math_number" id="dDg37hSAUDjVC5vuEm_M">
                <field name="NUM">1</field>
              </shadow>
              <block type="get_value" id="Yh*$wXfh*3,!/JBFWrA/">
                <field name="ATTR">val</field>
                <field name="OID">modbus.0.holdingRegisters.57716_Ladeleistung_Batterie</field>
              </block>
            </value>
          </block>
        </value>
        <next>
          <block type="control_ex" id="ZiF4-d3u)[z=gGX5-w,z">
            <field name="TYPE">false</field>
            <field name="CLEAR_RUNNING">FALSE</field>
            <value name="OID">
              <shadow type="field_oid" id="he-{P4y(baCH3Z`n=Yki">
                <field name="oid">mqtt.0.openWB.set.pv.1.get.power</field>
              </shadow>
            </value>
            <value name="VALUE">
              <shadow type="logic_boolean" id="/8xMqM,d6S=OTd:(UnKy">
                <field name="BOOL">TRUE</field>
              </shadow>
              <block type="convert_tonumber" id="X6m]9IVE-+Oa~?1/Q;;E">
                <value name="VALUE">
                  <block type="math_arithmetic" id="$j~@S@ikKOMyfoS+XP~c">
                    <field name="OP">MULTIPLY</field>
                    <value name="A">
                      <shadow type="math_number" id="7TcOk/;J~enzv:s+d?m~">
                        <field name="NUM">1</field>
                      </shadow>
                      <block type="variables_get" id="}Yrbew*qri{ry4[NiWo@">
                        <field name="VAR" id="*=j=B!6!AAeS]}A]_z.`">PV-Dachleistung</field>
                      </block>
                    </value>
                    <value name="B">
                      <shadow type="math_number" id="6L!x6o+=Oh]GnYOEK3T)">
                        <field name="NUM">-1</field>
                      </shadow>
                    </value>
                  </block>
                </value>
              </block>
            </value>
            <value name="DELAY_MS">
              <shadow type="math_number" id="gpEhStKwrP@T2F:)z8tQ">
                <field name="NUM">0</field>
              </shadow>
            </value>
            <next>
              <block type="control_ex" id="YB)Xt}G.?_L)E%$){+{d">
                <field name="TYPE">false</field>
                <field name="CLEAR_RUNNING">FALSE</field>
                <value name="OID">
                  <shadow type="field_oid" id=",8)x,/_f%gAg7vpa])3V">
                    <field name="oid">mqtt.0.openWB.set.pv.get.exported</field>
                  </shadow>
                </value>
                <value name="VALUE">
                  <shadow type="logic_boolean" id="DL,raWVF^A=te+P{1Y]{">
                    <field name="BOOL">TRUE</field>
                  </shadow>
                  <block type="convert_tonumber" id="^54:LSQ1]tVg$W,w*Fe=">
                    <value name="VALUE">
                      <block type="get_value" id="[O[B2@G6v;VV-trz}|Sg">
                        <field name="ATTR">val</field>
                        <field name="OID">modbus.0.holdingRegisters.40093_I_AC_Energy_WH</field>
                      </block>
                    </value>
                  </block>
                </value>
                <value name="DELAY_MS">
                  <shadow type="math_number" id="j@`|Si{v3Q532q`)3(ZK">
                    <field name="NUM">0</field>
                  </shadow>
                </value>
              </block>
            </next>
          </block>
        </next>
      </block>
    </statement>
  </block>
</xml>
Hoffe, das hilft dir weiter. Damit fütterst du nun schonmal die openWB mit den Daten vom Wechselrichter.

LG Max