Seite 7 von 18

Re: ioBroker / MQTT

Verfasst: Mi Jul 21, 2021 3:06 pm
von mading
ich bin etwas weiter gekommen: mit folgendem Blockly kann ich den Ladepunkt aktivieren oder deaktivieren:
1.PNG
1.PNG (5.52 KiB) 2469 mal betrachtet
Das funktioniert zuverlässig. Der angelegte Datenpunkt darf aber kein bool sein, sondern eine Zahl.

Lt. MQTT Wissenssammlung hier im Forum sollte folgendes set verwendet werden, um den Lademodus zu setzen:

Code: Alles auswählen

SCHREIBEND:
openWB/set/Lademodus
# 0 = Sofort Laden (Direct), 1 = Min und PV, 2 = Nur PV, 3 = Stop, 4 = Standby
Versuche ich das mit gleichem Blockly wie oben analog zu setzen (ebenfalls Datenpunkt mit Zahl erstellt), funktioniert es nicht.

Interessant ist:
verwende ich den eigentlich nur zum Lesen zu verwendenden openWB/global/ChargeMode
3.PNG
3.PNG (5.1 KiB) 2469 mal betrachtet
dann geht es.

@skyflying hier mal das Blockly mit den zwei funktionierenden Bausteinen. Du musst wie geschrieben unter mqtt.0.openWB.set.lp1.ChargePointEnabled einen Datenpunkt nach Typ Zahl anlegen.

Code: Alles auswählen

<xml xmlns="https://developers.google.com/blockly/xml">
  <block type="control" id="acynNsk|t,)qF1nBzLGr" x="-337" y="-260">
    <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
    <field name="OID">mqtt.0.openWB.global.ChargeMode</field>
    <field name="WITH_DELAY">FALSE</field>
    <value name="VALUE">
      <block type="convert_tonumber" id="r|,QFY81fh[c0ChZ^[%0">
        <value name="VALUE">
          <block type="math_number" id="M2uPE-KwOWz_^2q(B/ej">
            <field name="NUM">4</field>
          </block>
        </value>
      </block>
    </value>
    <next>
      <block type="control" id="%ybV66FEE`=c|j8q^Xg^">
        <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
        <field name="OID">mqtt.0.openWB.set.lp1.ChargePointEnabled</field>
        <field name="WITH_DELAY">FALSE</field>
        <value name="VALUE">
          <block type="convert_tonumber" id="?VNMpVAN]L3yxSbXwQq1">
            <value name="VALUE">
              <block type="math_number" id="1yy~OQUu$Ges-Yy|TsOC">
                <field name="NUM">1</field>
              </block>
            </value>
          </block>
        </value>
      </block>
    </next>
  </block>
</xml>

Re: ioBroker / MQTT

Verfasst: Mi Jul 21, 2021 3:53 pm
von mading
es hat mich nicht los gelassen. Ich habe nun in den eigenen Datenpunkten einen Datenpunkt gesetzt für ChargeMode und ChargePoint enabled. Meine Vis steuert den eigenen Datenpunkt. Ein Blockly überwacht diese und setzt die Parameter im mqtt.0/openWB/... entsprechend.

Wie oben geschrieben nutze ich global/ChargeMode, weil es funktioniert.

Mit folgendem Blockly Script lässt sich über eine vis der Ladepunkt aktivieren und der ChargeMode einstellen. Weiter bin ich noch nicht.
4.PNG

Code: Alles auswählen

<xml xmlns="https://developers.google.com/blockly/xml">
  <variables>
    <variable id="~wZ)n(-tznPq0[{zY5`m">ChargePointEnabledStatus</variable>
    <variable id="YDydck(vi-SaN.WZ4;Zw">ChargeModeStatus</variable>
  </variables>
  <block type="comment" id="7qW+2bm!RI[7#|LO5]oa" x="-538" y="-913">
    <field name="COMMENT">Ladepunkt ein oder ausschalten</field>
    <next>
      <block type="on" id=",IS[4)e@NF,oeytw6k)O">
        <field name="OID">javascript.0.scriptEnabled.EigeneDatenpunkte.openWB.ChargePointEnabled4JS</field>
        <field name="CONDITION">ne</field>
        <field name="ACK_CONDITION"></field>
        <statement name="STATEMENT">
          <block type="variables_set" id="o#W{amjxS~NNDP3e4D7(">
            <field name="VAR" id="~wZ)n(-tznPq0[{zY5`m">ChargePointEnabledStatus</field>
            <value name="VALUE">
              <block type="convert_tonumber" id="h!1+G[;Xk|BpQFzO5e*8">
                <value name="VALUE">
                  <block type="get_value" id="|+X%@seAYLztvP4rk(}N">
                    <field name="ATTR">val</field>
                    <field name="OID">javascript.0.scriptEnabled.EigeneDatenpunkte.openWB.ChargePointEnabled4JS</field>
                  </block>
                </value>
              </block>
            </value>
            <next>
              <block type="controls_if" id="37WU}q|f:=oyS{sJQTK^">
                <value name="IF0">
                  <block type="logic_compare" id="0knOghK7yvNS_zBR*vL9">
                    <field name="OP">EQ</field>
                    <value name="A">
                      <block type="variables_get" id="+OxlltUSUt:0M_^+6QMM">
                        <field name="VAR" id="~wZ)n(-tznPq0[{zY5`m">ChargePointEnabledStatus</field>
                      </block>
                    </value>
                    <value name="B">
                      <block type="math_number" id="+tTFF4l](4X_=IW:G[A%">
                        <field name="NUM">1</field>
                      </block>
                    </value>
                  </block>
                </value>
                <statement name="DO0">
                  <block type="control" id="%ybV66FEE`=c|j8q^Xg^">
                    <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                    <field name="OID">mqtt.0.openWB.set.lp1.ChargePointEnabled</field>
                    <field name="WITH_DELAY">FALSE</field>
                    <value name="VALUE">
                      <block type="convert_tonumber" id="?VNMpVAN]L3yxSbXwQq1">
                        <value name="VALUE">
                          <block type="math_number" id="1yy~OQUu$Ges-Yy|TsOC">
                            <field name="NUM">1</field>
                          </block>
                        </value>
                      </block>
                    </value>
                  </block>
                </statement>
                <next>
                  <block type="controls_if" id="wD$iZ{VCXOH4s2E/onOE">
                    <value name="IF0">
                      <block type="logic_compare" id=",ZgDh@Vr`Ax+1x{L5E=$">
                        <field name="OP">EQ</field>
                        <value name="A">
                          <block type="variables_get" id="S?@_m:_S|kC2u1u61~fj">
                            <field name="VAR" id="~wZ)n(-tznPq0[{zY5`m">ChargePointEnabledStatus</field>
                          </block>
                        </value>
                        <value name="B">
                          <block type="math_number" id="3c8EbtOU~:XbZLZXl^;4">
                            <field name="NUM">0</field>
                          </block>
                        </value>
                      </block>
                    </value>
                    <statement name="DO0">
                      <block type="control" id="kF2/HyA+kI=Fym)4YguO">
                        <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                        <field name="OID">mqtt.0.openWB.set.lp1.ChargePointEnabled</field>
                        <field name="WITH_DELAY">FALSE</field>
                        <value name="VALUE">
                          <block type="convert_tonumber" id="+f$AG.9^=VK+Go+_i}c6">
                            <value name="VALUE">
                              <block type="math_number" id="e0O?JUmho~Hs?8e6]9/=">
                                <field name="NUM">0</field>
                              </block>
                            </value>
                          </block>
                        </value>
                      </block>
                    </statement>
                  </block>
                </next>
              </block>
            </next>
          </block>
        </statement>
        <next>
          <block type="comment" id="B$^Rp(~4lo{g]UP;aS[n">
            <field name="COMMENT">Lademodus setzen: 0 Sofortladen, 1 PV only, 2 Min+PV, 3 Standby, 4 Stop</field>
            <next>
              <block type="on" id="I5un{R:^(zkex?yTQ8.N">
                <field name="OID">javascript.0.scriptEnabled.EigeneDatenpunkte.openWB.ChargeMode4JS</field>
                <field name="CONDITION">ne</field>
                <field name="ACK_CONDITION"></field>
                <statement name="STATEMENT">
                  <block type="variables_set" id="pHk#Qcz#0MdmtQ~gse2Y">
                    <field name="VAR" id="YDydck(vi-SaN.WZ4;Zw">ChargeModeStatus</field>
                    <value name="VALUE">
                      <block type="convert_tonumber" id="X)s^}jnuPz!9zv/JX[Be">
                        <value name="VALUE">
                          <block type="get_value" id="9#zneZG$}SE55cc`@lc$">
                            <field name="ATTR">val</field>
                            <field name="OID">javascript.0.scriptEnabled.EigeneDatenpunkte.openWB.ChargeMode4JS</field>
                          </block>
                        </value>
                      </block>
                    </value>
                    <next>
                      <block type="controls_if" id="*[R(w]:ZzU-#W+KL^qDV">
                        <value name="IF0">
                          <block type="logic_compare" id="q-V1pUX|vJoY~Sa_TL:H">
                            <field name="OP">EQ</field>
                            <value name="A">
                              <block type="variables_get" id="#J$#IdMKk{_VjPQa1@!O">
                                <field name="VAR" id="YDydck(vi-SaN.WZ4;Zw">ChargeModeStatus</field>
                              </block>
                            </value>
                            <value name="B">
                              <block type="math_number" id="bCsM~5yQH^ybf`RJeO_,">
                                <field name="NUM">0</field>
                              </block>
                            </value>
                          </block>
                        </value>
                        <statement name="DO0">
                          <block type="control" id="acynNsk|t,)qF1nBzLGr">
                            <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                            <field name="OID">mqtt.0.openWB.global.ChargeMode</field>
                            <field name="WITH_DELAY">FALSE</field>
                            <value name="VALUE">
                              <block type="convert_tonumber" id="r|,QFY81fh[c0ChZ^[%0">
                                <value name="VALUE">
                                  <block type="math_number" id="M2uPE-KwOWz_^2q(B/ej">
                                    <field name="NUM">0</field>
                                  </block>
                                </value>
                              </block>
                            </value>
                          </block>
                        </statement>
                        <next>
                          <block type="controls_if" id="]N_Zpv)Eg/:a.)-quGiH">
                            <value name="IF0">
                              <block type="logic_compare" id="P|15G}%yKB3O7CVvhiaX">
                                <field name="OP">EQ</field>
                                <value name="A">
                                  <block type="variables_get" id="zE,4;:88X+w~?Z7]x#X6">
                                    <field name="VAR" id="YDydck(vi-SaN.WZ4;Zw">ChargeModeStatus</field>
                                  </block>
                                </value>
                                <value name="B">
                                  <block type="math_number" id="wAsJ1@iE2sF`#QqtDwk5">
                                    <field name="NUM">1</field>
                                  </block>
                                </value>
                              </block>
                            </value>
                            <statement name="DO0">
                              <block type="control" id="]6wg+Q3_34k/H|_cFC#b">
                                <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                <field name="OID">mqtt.0.openWB.global.ChargeMode</field>
                                <field name="WITH_DELAY">FALSE</field>
                                <value name="VALUE">
                                  <block type="convert_tonumber" id="`WQx8E,EA8MDrYiy/uwp">
                                    <value name="VALUE">
                                      <block type="math_number" id="^-0R4Mw`kvhM`5ws~g)^">
                                        <field name="NUM">1</field>
                                      </block>
                                    </value>
                                  </block>
                                </value>
                              </block>
                            </statement>
                            <next>
                              <block type="controls_if" id="D/.`Vh5hA!!^Z6P4v@Z5">
                                <value name="IF0">
                                  <block type="logic_compare" id="d#B5vX@$b,gGDb^[,(7i">
                                    <field name="OP">EQ</field>
                                    <value name="A">
                                      <block type="variables_get" id="yl[P9B`3d*dgrPEbK|49">
                                        <field name="VAR" id="YDydck(vi-SaN.WZ4;Zw">ChargeModeStatus</field>
                                      </block>
                                    </value>
                                    <value name="B">
                                      <block type="math_number" id="oh6`Mm1p*E}q2LA?644-">
                                        <field name="NUM">2</field>
                                      </block>
                                    </value>
                                  </block>
                                </value>
                                <statement name="DO0">
                                  <block type="control" id="?V={Y@1YD?X:^LkXMcex">
                                    <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                    <field name="OID">mqtt.0.openWB.global.ChargeMode</field>
                                    <field name="WITH_DELAY">FALSE</field>
                                    <value name="VALUE">
                                      <block type="convert_tonumber" id=":#@r:%#Im/X-g5iPWn$k">
                                        <value name="VALUE">
                                          <block type="math_number" id=")T|s)GzYP~71,+IqEgpP">
                                            <field name="NUM">2</field>
                                          </block>
                                        </value>
                                      </block>
                                    </value>
                                  </block>
                                </statement>
                                <next>
                                  <block type="controls_if" id="y_Hf19q7+7kLpMLtjMft">
                                    <value name="IF0">
                                      <block type="logic_compare" id="95fk*s1gwkTgXS.s|832">
                                        <field name="OP">EQ</field>
                                        <value name="A">
                                          <block type="variables_get" id="{Y*:|NNp/*.R8^{rYD58">
                                            <field name="VAR" id="YDydck(vi-SaN.WZ4;Zw">ChargeModeStatus</field>
                                          </block>
                                        </value>
                                        <value name="B">
                                          <block type="math_number" id="fS6KQK]ILtGQklpD}c].">
                                            <field name="NUM">3</field>
                                          </block>
                                        </value>
                                      </block>
                                    </value>
                                    <statement name="DO0">
                                      <block type="control" id="H]IbQuKy6*[{yucxO6y|">
                                        <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                        <field name="OID">mqtt.0.openWB.global.ChargeMode</field>
                                        <field name="WITH_DELAY">FALSE</field>
                                        <value name="VALUE">
                                          <block type="convert_tonumber" id="fogzU,yek$%V9XE5pnd^">
                                            <value name="VALUE">
                                              <block type="math_number" id="!4*3rLbM^tD?=(`*{}_U">
                                                <field name="NUM">3</field>
                                              </block>
                                            </value>
                                          </block>
                                        </value>
                                      </block>
                                    </statement>
                                    <next>
                                      <block type="controls_if" id="IpPCAwPq3{sI/S7dfC?F">
                                        <value name="IF0">
                                          <block type="logic_compare" id="0g[y.=)XtrDhX]_}:rdI">
                                            <field name="OP">EQ</field>
                                            <value name="A">
                                              <block type="variables_get" id="rI-~Wri12*xpAoMPcn[r">
                                                <field name="VAR" id="YDydck(vi-SaN.WZ4;Zw">ChargeModeStatus</field>
                                              </block>
                                            </value>
                                            <value name="B">
                                              <block type="math_number" id="[LnA~6ycxZDWA/:so1`N">
                                                <field name="NUM">4</field>
                                              </block>
                                            </value>
                                          </block>
                                        </value>
                                        <statement name="DO0">
                                          <block type="control" id="l8_(7ERXfaJ8t*`NBk}G">
                                            <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                            <field name="OID">mqtt.0.openWB.global.ChargeMode</field>
                                            <field name="WITH_DELAY">FALSE</field>
                                            <value name="VALUE">
                                              <block type="convert_tonumber" id="KIMp`!dC_ppulz$3LE_u">
                                                <value name="VALUE">
                                                  <block type="math_number" id="K:Nr`(eHkQ/J7ReF7vaA">
                                                    <field name="NUM">4</field>
                                                  </block>
                                                </value>
                                              </block>
                                            </value>
                                          </block>
                                        </statement>
                                      </block>
                                    </next>
                                  </block>
                                </next>
                              </block>
                            </next>
                          </block>
                        </next>
                      </block>
                    </next>
                  </block>
                </statement>
              </block>
            </next>
          </block>
        </next>
      </block>
    </next>
  </block>
</xml>

Re: ioBroker / MQTT

Verfasst: Mi Jul 21, 2021 3:58 pm
von LutzB
Dir fehlt das "set" in dem Topic. ;)

Re: ioBroker / MQTT

Verfasst: Mi Jul 21, 2021 4:15 pm
von mading
LutzB hat geschrieben: Mi Jul 21, 2021 3:58 pm Dir fehlt das "set" in dem Topic. ;)
in welchem meinst du? Ich habe es mit mqtt.0.openWB.set.Lademodus getestet, geht leider nicht.

Der Sub Charge Mode mit mqtt.0.openWB.set.lp1.DirectChargeSubMode geht leider auch nicht. Stehe ich auf dem Schlauch?

Re: ioBroker / MQTT

Verfasst: Mi Jul 21, 2021 5:08 pm
von skyflying
@Mading,

wie sieht es denn aus, wenn Du die Werte manuell indem jeweiligen Set Objekt einträgst? Geht es denn dann?

Das ist nämlich mein Problem, das die Werte nicht ankommen. Tippe ich den Wert manuell in das Objekt, wird der Wert „abgeholt“ und danach auch wieder aus dem Set Objekt wieder bereinigt. Übergebe ich den Wert über Blockly, wann wir er auch in das Set Objekt eingetragen aber nicht „abgeholt“ und folglich nicht gesetzt.

Kannst Du das bitte mal prüfen.

Danke für das Blocklyscript. Ich werde später oder morgen mal weiter testen. Bis dato wollte ich PV.1.W Werte übertragen. Um den Fehler weiter einzukreisen, teste ich das mal mit Chargemode und Blockly zusammen.

Re: ioBroker / MQTT

Verfasst: Mi Jul 21, 2021 5:26 pm
von mading
beim SubChargeMode bringt es nichts den Datenpunkt direkt zu setzen (auch nicht im mqtt/openWb/set/lp1 direkt. Wird also auch nicht „abgeholt“.

Re: ioBroker / MQTT

Verfasst: Mi Jul 21, 2021 5:40 pm
von LutzB
Schau doch am Besten in der mqttsub.py nach, welche Topics erwartet werden.

https://github.com/snaptec/openWB/blob/ ... mqttsub.py

Re: ioBroker / MQTT

Verfasst: Mi Jul 21, 2021 5:53 pm
von mading
👍🏼 mach ich spätestens morgen. Am iPad ists bisl umständlich

Re: ioBroker / MQTT

Verfasst: Do Jul 22, 2021 7:50 am
von skyflying
Ich kann das Verhalten von "Mading" bestätigen. Das direkte schreiben der Werte über den direkten Weg geht sowie auch der Weg über den Pfad "set/....", wobei es auch nicht immer greift. Den Hintergrund konnte ich noch nicht rausbekommen.

Zum Thema: SubChargeMode - dies wird im mqttsub.py nicht mit berücksichtigt


Generell wird in dem Script z.B. bei ChargeMode nur über "openWB/set/ChargeMod" geprüft und in "openWB/global/ChargeMode" gepublisht.
Vom Prinzip her (und das ist das was gerade so hier passiert), können auch die Werte direkt in den Parameter geschrieben werden. Also hier als Beispiel "openWB/global/ChargeMode". Denke das sollte aber nicht im Sinne des Erfinders sein.

So wie ich es interpretiere, sollte es eigentlich so sein, das man über alle Daten von extern (hier iobroker) nur eine abgreifende/lesende Möglichkeit hat und wenn Daten an openWB übergeben werden sollen, diese ausschließlich nur über den Pfad "set/..." erfolgen darf.

@LutzB: Sehe ich das richtig?

Re: ioBroker / MQTT

Verfasst: Do Jul 22, 2021 8:25 am
von LutzB
Stimmt, alles darf gelesen werden, Änderungen immer über set.