Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. maxclaudi

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Profile
    • Following 0
    • Followers 0
    • Topics 4
    • Posts 150
    • Best 11
    • Groups 2

    maxclaudi

    @maxclaudi

    Starter

    11
    Reputation
    25
    Profile views
    150
    Posts
    0
    Followers
    0
    Following
    Joined Last Online

    maxclaudi Follow
    Pro Starter

    Best posts made by maxclaudi

    • RE: OpenDTU-onBattery

      edit:
      einfacher -> OpenDTU-onBattery Blockly DPL Ein/Aus


      @lesiflo , @Totte23

      @lesiflo sagte in OpenDTU-onBattery:

      Hallo zusammen,

      ich möchte vom iobroker aus den Dynamic Power Limiter aus/einschalten. Geht das überhaupt?

      b785d376-4856-4125-b94f-c17380740367-image.png
      Hab den openDTU Adapter installiert und openDTU über mqtt eingebunden. Hab schon einiges ausprobiert, finde aber keinen Parameter mit dem das geht.

      Das Thema ist zwar alt, aber bestimmt benötigt mal wieder jemand Hilfe dazu 🙂
      Man findet die Antwort auch nicht im Netz, deswegen habe ich die requests gelogt.

      Man kann über blockly oder javascript den OpenDTUonBattery DPL ein-, ausschalten.
      Theoretisch auch alles andere.
      Wenn's nur ums einschalten und ausschalten mit den voreingestellten Werten geht,
      z. B . mit Blockly:
      Bei Aktionen "exec Befehl" auswählen.

      Ausschalten:

      curl -u "admin:yyyyyyyy" http://xxx.xxx.xxx.xxx/api/powerlimiter/config -d 'data={"enabled": false}'
      

      Einschalten:

      curl -u "admin:yyyyyyyy" http://xxx.xxx.xxx.xxx/api/powerlimiter/config -d 'data={"enabled": true}'
      

      yyyyyyyy => Passwort
      xxx.xxx.xxx.xxx => IP von der OpenDTU

      Stark verkürzt, man kann auch alle einstellbaren Werte verändern und mit übergeben.
      Hilft bestimmt mal jemand weiter.

      Frohe Ostern 😉

      posted in Einbindung von Geräten
      maxclaudi
      maxclaudi
    • RE: Test Adapter Zendure Solarflow

      @rene55

      also ich hab vorher noch sichergestellt, dass der Server 100% keine Anmeldedaten verlangt und port 1883 frei von anderen Instanzen ist.

      edit:
      passt, laut den Bildern von Arne muss nicht mal der Port angegeben werden 🙂
      Wird wohl intern automatisch auf port 1883 gesetzt.
      Sollte der Adapter nicht die Objekte erstellen, dann einfach Port mit angeben.

      posted in Tester
      maxclaudi
      maxclaudi
    • RE: OpenDTU-onBattery Blockly DPL Ein/Aus

      einfacher:

      Dynamic Power Limiter nur über einen Datenpunkt ein- und ausschalten.

      Wird der DPL über ein Script ausgeschaltet, behält der Inverter das letzte Limit (non persistent) bei.

      Deshalb wird im folgenden Blockly beim Auschalten des DPL auch das Limit wieder auf 100% gesetzt.

      Der DPL kann einfach per Datenpunkt in einem Blockly ein- oder ausgeschaltet werden.
      Dazu wird der Datenpunkt zum Einschalten aktualisiert mit wahr.
      Zum Ausschalten mit falsch.

      01-dpl-ein-aus.png


      Im Blockly sind 2 Inverter zur DPL Steuerung berücksichtigt.
      Wird nur 1 Inverter zur DPL Steuerung verwendet, kann die Variable und der Block gelöscht werden oder einfach bei beiden Variablen die gleiche Seriennummer eintragen.
      Falls doch mal später 2 Inverter für DPL aktiviert werden sollen.

      Seriennummer werden nur nach dem Ausschalten verwendet, damit der/die Inverter wieder volle Leistung liefern.

      Werte werden nur non-persistent gesetzt, wie bei der DPL-Steuerung.


      Für das Script wurde manuell 1 Verzeichnis und 1 Datenpunkt angelegt:

      Verzeichnis:
      openDTUoB
      0_userdata.0.Datenpunkte.openDTUoB

      Datenpunkt:
      dplEinAus
      "type": "boolean"
      0_userdata.0.Datenpunkte.openDTUoB.dplEinAus


      Vor dem Ausführen des Scripts müsen folgende Eintragungen vorgenommen werden:

      IP OpenDTUon Battery
      Password
      1te Seriennummer des Inverters für die DPL-Steuerung
      2te Seriennummer des Inverters, der auch DPL steuert (bei nur einem aktivierten Inverter einfach die gleiche Seriennummer vom ersten Inverter eintragen).

      04-dpl-ein-aus.png


      Blockly:

      <xml xmlns="https://developers.google.com/blockly/xml">
        <variables>
          <variable id="P.,=V-_lWMTIt*,^9bWa">jsonObj</variable>
          <variable id="?Ekt8|,iPfa0uAPY)N%A">attr</variable>
          <variable id="y`qH:gKyqipx04VGZ@;=">val</variable>
          <variable id="T[fn@X+yakzmBpi9]n*E">openDTUonBatteryIP</variable>
          <variable id="nh}jM|3k}%Qhny;,Etjk">OpenDTUonBatteryPassword</variable>
          <variable id="/X1](JXiM-@K#NE`C4,%">InverterSerial</variable>
          <variable id="b+E=vG0=nXY*@8jhUpT1">InverterSerial2</variable>
          <variable id="2|vbm;5buC6^$eogp=fe">urlDPLstate</variable>
          <variable id="PWsI)BqL)EeZPzj!8-VY">set</variable>
          <variable id="JppG`(9.sfDt)j^gha}{">cUrlLimitPart1</variable>
          <variable id="Xy47v*SILC`=7N1mM,:5">cUrlLimitPart2</variable>
          <variable id="_+8y375~59B=8rd!@Ae%">jsonObjekt</variable>
        </variables>
        <block type="comment" id="g{c,O//*067~CDT{26F+" x="212" y="-112">
          <field name="COMMENT">OpenDTUonBattery&amp;#10;DPL Ein/Aus</field>
          <next>
            <block type="on_ext" id="MpdxhvC3:):%?cL5ChV-">
              <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
              <field name="CONDITION">ne</field>
              <field name="ACK_CONDITION"></field>
              <value name="OID0">
                <shadow type="field_oid" id="j)L11f:Db#X;sEL6awg/">
                  <field name="oid">0_userdata.0.Datenpunkte.openDTUoB.dplEinAus</field>
                </shadow>
              </value>
              <statement name="STATEMENT">
                <block type="comment" id="wPs7.T(3#lmg-Q#YnMcz">
                  <field name="COMMENT">IP von OpenDTUonBattery:</field>
                  <next>
                    <block type="variables_set" id="xiC72+QQD{FQ44VC6wQn">
                      <field name="VAR" id="T[fn@X+yakzmBpi9]n*E">openDTUonBatteryIP</field>
                      <value name="VALUE">
                        <block type="text" id="3|rd+!6W]T02z}tGd1/m">
                          <field name="TEXT">192.170.178.250</field>
                        </block>
                      </value>
                      <next>
                        <block type="comment" id="8!|A_f5hyHJr/:f!|;r.">
                          <field name="COMMENT">OpenDTUonBattery Passwort:</field>
                          <next>
                            <block type="variables_set" id="ItJFflir$91[$;pF5+MA">
                              <field name="VAR" id="nh}jM|3k}%Qhny;,Etjk">OpenDTUonBatteryPassword</field>
                              <value name="VALUE">
                                <block type="text" id="xYm]l*(;=w@0xJQnWi5-">
                                  <field name="TEXT">openDTU42</field>
                                </block>
                              </value>
                              <next>
                                <block type="variables_set" id="u:x]^bL1{Q9m2)/M*CRl">
                                  <field name="VAR" id="/X1](JXiM-@K#NE`C4,%">InverterSerial</field>
                                  <value name="VALUE">
                                    <block type="text" id="m)|9(*pwq()mn.3Ron~:">
                                      <field name="TEXT">11611111111</field>
                                    </block>
                                  </value>
                                  <next>
                                    <block type="variables_set" id="++@7g{b1u:LHh]h:CEq+">
                                      <field name="VAR" id="b+E=vG0=nXY*@8jhUpT1">InverterSerial2</field>
                                      <value name="VALUE">
                                        <block type="text" id="m8cbvw?0pnZNAUaiU8Zq">
                                          <field name="TEXT">112122222222</field>
                                        </block>
                                      </value>
                                      <next>
                                        <block type="comment" id="8ezl|ED@6X29f4k@:.2H">
                                          <field name="COMMENT">----</field>
                                          <next>
                                            <block type="variables_set" id="!#IE.`!)HPf,NcPW*miy">
                                              <field name="VAR" id="2|vbm;5buC6^$eogp=fe">urlDPLstate</field>
                                              <value name="VALUE">
                                                <block type="text_join" id="F#[x6:MOpP{a#hljyq@2">
                                                  <mutation items="5"></mutation>
                                                  <value name="ADD0">
                                                    <block type="text" id="!@~5;?O8`oIO%oN]bLJa">
                                                      <field name="TEXT">curl -u "admin:</field>
                                                    </block>
                                                  </value>
                                                  <value name="ADD1">
                                                    <block type="variables_get" id="SFT0:Zq378qj5]2?a5#b">
                                                      <field name="VAR" id="nh}jM|3k}%Qhny;,Etjk">OpenDTUonBatteryPassword</field>
                                                    </block>
                                                  </value>
                                                  <value name="ADD2">
                                                    <block type="text" id="5}ok+uklC%b/F}gtZr`^">
                                                      <field name="TEXT">" http://</field>
                                                    </block>
                                                  </value>
                                                  <value name="ADD3">
                                                    <block type="variables_get" id="C|ac)ks!*i8cZS5zb!0?">
                                                      <field name="VAR" id="T[fn@X+yakzmBpi9]n*E">openDTUonBatteryIP</field>
                                                    </block>
                                                  </value>
                                                  <value name="ADD4">
                                                    <block type="text" id="!=iiY$6m(O#=Q|km-7W1">
                                                      <field name="TEXT">/api/powerlimiter/config</field>
                                                    </block>
                                                  </value>
                                                </block>
                                              </value>
                                              <next>
                                                <block type="variables_set" id="Nw*-3DKlvV=)l.++!yg%">
                                                  <field name="VAR" id="PWsI)BqL)EeZPzj!8-VY">set</field>
                                                  <value name="VALUE">
                                                    <block type="text_join" id="b3+b3^R@5s5Vbpj^o9!6">
                                                      <mutation items="2"></mutation>
                                                      <value name="ADD0">
                                                        <block type="variables_get" id="%UJkDROf_mMO^oE4EKW.">
                                                          <field name="VAR" id="2|vbm;5buC6^$eogp=fe">urlDPLstate</field>
                                                        </block>
                                                      </value>
                                                      <value name="ADD1">
                                                        <block type="text" id="o}*[n$;A?-]x1P{Ppan.">
                                                          <field name="TEXT"> -d 'data=</field>
                                                        </block>
                                                      </value>
                                                    </block>
                                                  </value>
                                                  <next>
                                                    <block type="variables_set" id="1%5eOCEM.zYy[-sZ0a43">
                                                      <field name="VAR" id="JppG`(9.sfDt)j^gha}{">cUrlLimitPart1</field>
                                                      <value name="VALUE">
                                                        <block type="text_join" id="B,v7UaJQkq-DSzv41b;v">
                                                          <mutation items="5"></mutation>
                                                          <value name="ADD0">
                                                            <block type="text" id=";4j$FAn0X}CSE_D5:/kl">
                                                              <field name="TEXT">curl -u "admin:</field>
                                                            </block>
                                                          </value>
                                                          <value name="ADD1">
                                                            <block type="variables_get" id="Ea#Og5Jr^hwL!_Oh-[Ua">
                                                              <field name="VAR" id="nh}jM|3k}%Qhny;,Etjk">OpenDTUonBatteryPassword</field>
                                                            </block>
                                                          </value>
                                                          <value name="ADD2">
                                                            <block type="text" id="kBsI#4)FR#3@EAh.=@b]">
                                                              <field name="TEXT">" http://</field>
                                                            </block>
                                                          </value>
                                                          <value name="ADD3">
                                                            <block type="variables_get" id=",/9?^Tx*?hC1YP`-X]37">
                                                              <field name="VAR" id="T[fn@X+yakzmBpi9]n*E">openDTUonBatteryIP</field>
                                                            </block>
                                                          </value>
                                                          <value name="ADD4">
                                                            <block type="text" id="p5zvA0V{e$4V$#_9gWcY">
                                                              <field name="TEXT">/api/limit/config -d 'data={"serial":"</field>
                                                            </block>
                                                          </value>
                                                        </block>
                                                      </value>
                                                      <next>
                                                        <block type="variables_set" id="u|60ca%8U|+rvrL1*bdK">
                                                          <field name="VAR" id="Xy47v*SILC`=7N1mM,:5">cUrlLimitPart2</field>
                                                          <value name="VALUE">
                                                            <block type="text" id="`Z^Zv4qi(GN;drYs.f6I">
                                                              <field name="TEXT">","limit_value":100,"limit_type":1}'</field>
                                                            </block>
                                                          </value>
                                                          <next>
                                                            <block type="comment" id="Y+nX-p}*xExWw]O`OX~{">
                                                              <field name="COMMENT">aktueller DPL state:</field>
                                                              <next>
                                                                <block type="exec" id="I~3.fAPDzJ[1T(TlzoOT">
                                                                  <mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="true"></mutation>
                                                                  <field name="WITH_STATEMENT">TRUE</field>
                                                                  <field name="LOG"></field>
                                                                  <value name="COMMAND">
                                                                    <shadow type="text" id="9;-TT-}BY,qROECr/9_6">
                                                                      <field name="TEXT"></field>
                                                                    </shadow>
                                                                    <block type="variables_get" id="i4]srTbBS]Jm}Z^t,,i^">
                                                                      <field name="VAR" id="2|vbm;5buC6^$eogp=fe">urlDPLstate</field>
                                                                    </block>
                                                                  </value>
                                                                  <statement name="STATEMENT">
                                                                    <block type="variables_set" id="U*PNhv3v$WIWPSb|ja,I">
                                                                      <field name="VAR" id="_+8y375~59B=8rd!@Ae%">jsonObjekt</field>
                                                                      <value name="VALUE">
                                                                        <block type="convert_json2object" id="y.{-xr4=@LsO?lm{BV16">
                                                                          <value name="VALUE">
                                                                            <block type="exec_result" id="6ho:XZ{%G?n+B=|[OsSQ">
                                                                              <field name="ATTR">result</field>
                                                                            </block>
                                                                          </value>
                                                                        </block>
                                                                      </value>
                                                                      <next>
                                                                        <block type="comment" id="A(14glg}PvpJG@9qX7Z+">
                                                                          <field name="COMMENT">DPL Ein:</field>
                                                                          <next>
                                                                            <block type="controls_if" id=")aeo4TK/:D$bt5(cFhVN">
                                                                              <value name="IF0">
                                                                                <block type="logic_compare" id="%pI.k62s._dcfZnb8SHC">
                                                                                  <field name="OP">EQ</field>
                                                                                  <value name="A">
                                                                                    <block type="on_source" id="C-u,UgBdHv4sZCblY)(F">
                                                                                      <field name="ATTR">state.val</field>
                                                                                    </block>
                                                                                  </value>
                                                                                  <value name="B">
                                                                                    <block type="logic_boolean" id="e..27D@{cN0JPJc_@bv;">
                                                                                      <field name="BOOL">TRUE</field>
                                                                                    </block>
                                                                                  </value>
                                                                                </block>
                                                                              </value>
                                                                              <statement name="DO0">
                                                                                <block type="procedures_callcustomnoreturn" id="D9g{#*qgs_-7rfz6|TYD">
                                                                                  <mutation name="change">
                                                                                    <arg name="jsonObj"></arg>
                                                                                    <arg name="attr"></arg>
                                                                                    <arg name="val"></arg>
                                                                                  </mutation>
                                                                                  <value name="ARG0">
                                                                                    <block type="variables_get" id="yi4H-8|bl|J[{ecr@w?*">
                                                                                      <field name="VAR" id="_+8y375~59B=8rd!@Ae%">jsonObjekt</field>
                                                                                    </block>
                                                                                  </value>
                                                                                  <value name="ARG1">
                                                                                    <block type="text" id="/1aiKrRmt}{2sRQ`BE^S">
                                                                                      <field name="TEXT">enabled</field>
                                                                                    </block>
                                                                                  </value>
                                                                                  <value name="ARG2">
                                                                                    <block type="logic_boolean" id="]!TrP#dnQ%e`r1%@n;)0">
                                                                                      <field name="BOOL">TRUE</field>
                                                                                    </block>
                                                                                  </value>
                                                                                  <next>
                                                                                    <block type="exec" id="xWQm84D2~+;KrfUenNP|">
                                                                                      <mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="false"></mutation>
                                                                                      <field name="WITH_STATEMENT">FALSE</field>
                                                                                      <field name="LOG"></field>
                                                                                      <value name="COMMAND">
                                                                                        <shadow type="text" id="Y[J#ti:!)V_p[~D/~=BP">
                                                                                          <field name="TEXT">pwd</field>
                                                                                        </shadow>
                                                                                        <block type="text_join" id="?#1pjgc[4w-Nbot8xQpL">
                                                                                          <mutation items="3"></mutation>
                                                                                          <value name="ADD0">
                                                                                            <block type="variables_get" id=";wn*ZeQHpIf@a_40]mk$">
                                                                                              <field name="VAR" id="PWsI)BqL)EeZPzj!8-VY">set</field>
                                                                                            </block>
                                                                                          </value>
                                                                                          <value name="ADD1">
                                                                                            <block type="convert_object2json" id="`s4:$VMpnCx?$#E/lH89">
                                                                                              <field name="PRETTIFY">FALSE</field>
                                                                                              <value name="VALUE">
                                                                                                <block type="variables_get" id="akzUA)PF0iBQcIE,ZBTo">
                                                                                                  <field name="VAR" id="_+8y375~59B=8rd!@Ae%">jsonObjekt</field>
                                                                                                </block>
                                                                                              </value>
                                                                                            </block>
                                                                                          </value>
                                                                                          <value name="ADD2">
                                                                                            <block type="text" id="tazI8QS$S%YmkBw8,!R]">
                                                                                              <field name="TEXT">'</field>
                                                                                            </block>
                                                                                          </value>
                                                                                        </block>
                                                                                      </value>
                                                                                    </block>
                                                                                  </next>
                                                                                </block>
                                                                              </statement>
                                                                              <next>
                                                                                <block type="comment" id="zV97]OnS?/IjoV1xAl_T">
                                                                                  <field name="COMMENT">DPL Aus:</field>
                                                                                  <next>
                                                                                    <block type="controls_if" id="7{aiQa33_g$QnlPw!:;F">
                                                                                      <value name="IF0">
                                                                                        <block type="logic_compare" id="XYHuB8ZNE3]RuqS}0zLa">
                                                                                          <field name="OP">EQ</field>
                                                                                          <value name="A">
                                                                                            <block type="on_source" id="kRJjzY0xkd07ZrzDPb1?">
                                                                                              <field name="ATTR">state.val</field>
                                                                                            </block>
                                                                                          </value>
                                                                                          <value name="B">
                                                                                            <block type="logic_boolean" id="{2pCy)Ah-nq3V.,{DVo1">
                                                                                              <field name="BOOL">FALSE</field>
                                                                                            </block>
                                                                                          </value>
                                                                                        </block>
                                                                                      </value>
                                                                                      <statement name="DO0">
                                                                                        <block type="procedures_callcustomnoreturn" id="-Hz0vX5GM=t[9OHH8]Wg">
                                                                                          <mutation name="change">
                                                                                            <arg name="jsonObj"></arg>
                                                                                            <arg name="attr"></arg>
                                                                                            <arg name="val"></arg>
                                                                                          </mutation>
                                                                                          <value name="ARG0">
                                                                                            <block type="variables_get" id="v[6xm8C%Otou%c3=g710">
                                                                                              <field name="VAR" id="_+8y375~59B=8rd!@Ae%">jsonObjekt</field>
                                                                                            </block>
                                                                                          </value>
                                                                                          <value name="ARG1">
                                                                                            <block type="text" id="tL?JD.@HaQSk5`{9Wm]{">
                                                                                              <field name="TEXT">enabled</field>
                                                                                            </block>
                                                                                          </value>
                                                                                          <value name="ARG2">
                                                                                            <block type="logic_boolean" id="WMimixsaaPP)fhHu2.J$">
                                                                                              <field name="BOOL">FALSE</field>
                                                                                            </block>
                                                                                          </value>
                                                                                          <next>
                                                                                            <block type="exec" id="/p+Uv~V#hIePApTb=KTR">
                                                                                              <mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="false"></mutation>
                                                                                              <field name="WITH_STATEMENT">FALSE</field>
                                                                                              <field name="LOG"></field>
                                                                                              <value name="COMMAND">
                                                                                                <shadow type="text" id="Y[J#ti:!)V_p[~D/~=BP">
                                                                                                  <field name="TEXT">pwd</field>
                                                                                                </shadow>
                                                                                                <block type="text_join" id="?fTh]i~D]=Ue}GsE8^;i">
                                                                                                  <mutation items="3"></mutation>
                                                                                                  <value name="ADD0">
                                                                                                    <block type="variables_get" id="$!],od*U?4dNiG;_YIzl">
                                                                                                      <field name="VAR" id="PWsI)BqL)EeZPzj!8-VY">set</field>
                                                                                                    </block>
                                                                                                  </value>
                                                                                                  <value name="ADD1">
                                                                                                    <block type="convert_object2json" id="|pyw%?Kwve~3iciql_#f">
                                                                                                      <field name="PRETTIFY">FALSE</field>
                                                                                                      <value name="VALUE">
                                                                                                        <block type="variables_get" id="z0~!%^yv(pHWcQpw)5``">
                                                                                                          <field name="VAR" id="_+8y375~59B=8rd!@Ae%">jsonObjekt</field>
                                                                                                        </block>
                                                                                                      </value>
                                                                                                    </block>
                                                                                                  </value>
                                                                                                  <value name="ADD2">
                                                                                                    <block type="text" id="/g9Zs!_,BY#!LKzHEF`/">
                                                                                                      <field name="TEXT">'</field>
                                                                                                    </block>
                                                                                                  </value>
                                                                                                </block>
                                                                                              </value>
                                                                                              <next>
                                                                                                <block type="comment" id="ql1mac4Qf*!]/(y:*HR+">
                                                                                                  <field name="COMMENT">DPLinverter01  Limit 100%</field>
                                                                                                  <next>
                                                                                                    <block type="exec" id="iNs^J_^oAm89Vr+p^dcU">
                                                                                                      <mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="false"></mutation>
                                                                                                      <field name="WITH_STATEMENT">FALSE</field>
                                                                                                      <field name="LOG"></field>
                                                                                                      <value name="COMMAND">
                                                                                                        <shadow type="text" id="C9zK,I#|DhseRSSl*?8X">
                                                                                                          <field name="TEXT"></field>
                                                                                                        </shadow>
                                                                                                        <block type="text_join" id="~7~(vzW]+%{R35ES=iGn">
                                                                                                          <mutation items="3"></mutation>
                                                                                                          <value name="ADD0">
                                                                                                            <block type="variables_get" id=".v]Hhm{LD(-@){kzp()2">
                                                                                                              <field name="VAR" id="JppG`(9.sfDt)j^gha}{">cUrlLimitPart1</field>
                                                                                                            </block>
                                                                                                          </value>
                                                                                                          <value name="ADD1">
                                                                                                            <block type="variables_get" id="OZY@nUX[m`.Rp[12/e{g">
                                                                                                              <field name="VAR" id="/X1](JXiM-@K#NE`C4,%">InverterSerial</field>
                                                                                                            </block>
                                                                                                          </value>
                                                                                                          <value name="ADD2">
                                                                                                            <block type="variables_get" id="]wG/EOqQ!/tw6ZlRcab0">
                                                                                                              <field name="VAR" id="Xy47v*SILC`=7N1mM,:5">cUrlLimitPart2</field>
                                                                                                            </block>
                                                                                                          </value>
                                                                                                        </block>
                                                                                                      </value>
                                                                                                      <next>
                                                                                                        <block type="comment" id="aI[_!O+Ua%`p6/mqrCjz">
                                                                                                          <field name="COMMENT">DPLinverter02  Limit 100%</field>
                                                                                                          <next>
                                                                                                            <block type="exec" id="v[cN9cA@.Ejy;Z1G81kX">
                                                                                                              <mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="false"></mutation>
                                                                                                              <field name="WITH_STATEMENT">FALSE</field>
                                                                                                              <field name="LOG"></field>
                                                                                                              <value name="COMMAND">
                                                                                                                <shadow type="text" id="C9zK,I#|DhseRSSl*?8X">
                                                                                                                  <field name="TEXT"></field>
                                                                                                                </shadow>
                                                                                                                <block type="text_join" id="Wd`VvP4NqCJ}/*|~IbTV">
                                                                                                                  <mutation items="3"></mutation>
                                                                                                                  <value name="ADD0">
                                                                                                                    <block type="variables_get" id="hy+6K,WWY.Y`%h-+p;v1">
                                                                                                                      <field name="VAR" id="JppG`(9.sfDt)j^gha}{">cUrlLimitPart1</field>
                                                                                                                    </block>
                                                                                                                  </value>
                                                                                                                  <value name="ADD1">
                                                                                                                    <block type="variables_get" id="W/O@o[J$nrG+r..LB`}A">
                                                                                                                      <field name="VAR" id="b+E=vG0=nXY*@8jhUpT1">InverterSerial2</field>
                                                                                                                    </block>
                                                                                                                  </value>
                                                                                                                  <value name="ADD2">
                                                                                                                    <block type="variables_get" id="q%FGBbHAZ^N/`|V3wzs%">
                                                                                                                      <field name="VAR" id="Xy47v*SILC`=7N1mM,:5">cUrlLimitPart2</field>
                                                                                                                    </block>
                                                                                                                  </value>
                                                                                                                </block>
                                                                                                              </value>
                                                                                                            </block>
                                                                                                          </next>
                                                                                                        </block>
                                                                                                      </next>
                                                                                                    </block>
                                                                                                  </next>
                                                                                                </block>
                                                                                              </next>
                                                                                            </block>
                                                                                          </next>
                                                                                        </block>
                                                                                      </statement>
                                                                                    </block>
                                                                                  </next>
                                                                                </block>
                                                                              </next>
                                                                            </block>
                                                                          </next>
                                                                        </block>
                                                                      </next>
                                                                    </block>
                                                                  </statement>
                                                                </block>
                                                              </next>
                                                            </block>
                                                          </next>
                                                        </block>
                                                      </next>
                                                    </block>
                                                  </next>
                                                </block>
                                              </next>
                                            </block>
                                          </next>
                                        </block>
                                      </next>
                                    </block>
                                  </next>
                                </block>
                              </next>
                            </block>
                          </next>
                        </block>
                      </next>
                    </block>
                  </next>
                </block>
              </statement>
            </block>
          </next>
        </block>
        <block type="procedures_defcustomnoreturn" id="nxZk[TB}x%yvkJ058U]o" x="738" y="862">
          <mutation statements="false">
            <arg name="jsonObj" varid="P.,=V-_lWMTIt*,^9bWa"></arg>
            <arg name="attr" varid="?Ekt8|,iPfa0uAPY)N%A"></arg>
            <arg name="val" varid="y`qH:gKyqipx04VGZ@;="></arg>
          </mutation>
          <field name="NAME">change</field>
          <field name="SCRIPT">anNvbk9ialthdHRyXSA9IHZhbDs=</field>
          <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
        </block>
      </xml>
      

      Damit kann in jedem Script der Dynamic Power Limiter ein- oder ausgeschaltet werden.

      Ist bestimmt brauchbar.

      Vorschläge oder Verbesserungen willkommen.

      Würde mich mal über eine Rückmeldung oder einen Beitrag freuen.
      Nicht, dass ich hier Alleinunterhalter bin 🙂

      posted in Blockly
      maxclaudi
      maxclaudi
    • RE: Test Adapter Zendure Solarflow

      @lesiflo
      Lokal ist super.
      Es wird zuverlässig, schnell und oft aktualisiert 🙂

      posted in Tester
      maxclaudi
      maxclaudi
    • RE: Zendure Solar Flow ohne Cloud MQTT-Broker MIT Authentication

      @rene55
      👍
      DeviceID ist klar denke ich?

      Nennt sich beim Solar Flow Adapter: Device Key

      posted in Blockly
      maxclaudi
      maxclaudi
    • RE: Test Adapter Zendure Solarflow

      @nograx

      gleich installiert.
      werde es testen. Danke.


      edit: Erste 3h ohne Neustart sind vorbei.
      Läuft bis jetzt einwandrei.
      ACE1500 hat nichts zu tun Akku voll.
      Hub+ACE connected.
      Super schnelle Aktualisierung der Datenpunkte.
      ...to be continued


      18.06h
      6h ohne Neustart
      alles ok.


      21.10h
      über 9h ohne Neustart.
      alles ok.

      Unter Protokolle iobroker:
      Keine Meldung(en).
      Weder vom Solarflow-Adapter, noch vom mqtt-Server 1883, seit Start v1.13.0 (Mi, 30.04.2025 11.59h).
      Nicht mal ne Info.

      Datenpunkt-Aktualisierungen kommen schnell.
      Steuerung funktioniert.


      posted in Tester
      maxclaudi
      maxclaudi
    • RE: Zendure Solar Flow ohne Cloud MQTT-Broker MIT Authentication

      @rene55
      und Alle:

      Die generierten Passwörter wurden getestet, sind richtig und funktionieren.

      Aber:
      Der iobroker SolarFlow-Adapter hat keine Zugangsdaten für den lokalen Betrieb!
      Deshalb funktioniert der Adapter von @nograx NUR wenn mann die Anmeldedaten mit in die URL übergibt.

      Es wäre schön, wenn @nograx irgendwann in der Instanz des solarflow-Adapters eine Möglichkeit zum abspeichern von User und Password für einen lokalen MQTT-Server einpflegen würde.
      Geht aber auch so!

      Mit mosquitto-Server ausführlich getestet.

      Wenn ein mosquitto-Server läuft verbinden sich die Zendure Geräte mit Passwörtern lokal einwandfrei.

      posted in Blockly
      maxclaudi
      maxclaudi
    • RE: Test Adapter Zendure Solarflow

      @nograx sagte in Test Adapter Zendure Solarflow:

      Moin, mit der Version 1.13.2 wird der AC Mode beim ACE 1500 nun auch korrekt gesetzt. Musste erstmal checken das Zendure hier den selben Datenpunkt bei Geräten für unterschiedliche Dinge nutzt.

      Die Version 1.13.2 ist noch in Arbeit?

      Und
      die Passwort-Generierung funktioniert ja jetzt.
      Bist Du so lieb und würdest optionale mqtt-Zugangsdaten in die UI für lokalen Betrieb einpflegen?

      Mir ist klar, dass die Daten ohne SSL bzw. TLS sowieso im Klartext gesendet werden, aber es wäre schön, wenn die nicht offen in der Instanz sichtbar wären.
      (Einfachste Lösung die Verkettung des IP String?)

      Bitte.


      edit/ps:
      Von mir aus kannst auch die Passwortgenerierung mit in den Adapter einpflegen.
      Wenn Du möchtest.

      posted in Tester
      maxclaudi
      maxclaudi
    • RE: Test Adapter Zendure Solarflow

      @nograx sagte in Test Adapter Zendure Solarflow:

      Beispiel bei den Batterien: Mein ACE 1500 sendet den SOH (State of Health) der Batterie. Der HUB 2000 der im gleichen System arbeitet z.B. nicht.

      Bei mir ist es umgekehrt.
      SoH kommt vom HUB2000

      {"messageId":"123","product":"solarFlow","deviceId":"XXXXXXXX","timestamp":1748147072,"properties":{},"packData":[{"power":10,"socLevel":68,"state":2,"maxTemp":2931,"totalVol":5000,"maxVol":333,"minVol":333,"softVersion":4113,"soh":999,"sn":"XXXXXXXXXXXXXXX"}]}
      
      posted in Tester
      maxclaudi
      maxclaudi
    • RE: Test Adapter Zendure Solarflow

      @bongo sagte in Test Adapter Zendure Solarflow:

      Du machst das lokal über MQTT. Was sind die Vor-/Nachteile ausser dass man nicht von der Cloud abhängig ist?

      Vorteile:
      3 für mich entscheidende Vorteile:
      Zuverlässiger, schneller und häufiger.

      Daten kommen viel schneller rein.
      Keine Aussetzer der Cloud.
      Allgemein sehr viel schnellere Reaktionszeiten MQTT-Broker <> Solarflow
      Keine Fehlfunktionen, wenn keine Fehler im Script und/oder Solar-Flow-Adapter.

      Daten werden häufiger aktualisiert.

      Alle Geräte im lokalen Netz (gesperrt und externer Zugriff nur über VLAN).


      Nachteile:
      Original App funktioniert nicht mehr bzw. nur noch bei Bedarf über BT.
      (Dafür habe ich mir in Anlehnung an die App eine Smartphone taugliche, lokale HTML-Site im Beta-Status erstellt.
      Dort sind alle für mich wichtigen Bedienelemente (wie in der App + etwas mehr) abgedeckt.
      Auf diese Seite kann ich von überall per VLAN zugreifen.)

      Keine Satistik mehr, darum muss man sich bei Bedarf selbst kümmern (z.B. Datenbank/Grafana).

      Eigener Server muss stabil und zuverlässig funtktionieren.

      posted in Tester
      maxclaudi
      maxclaudi

    Latest posts made by maxclaudi

    • RE: Test Adapter Zendure Solarflow

      @nograx @Bernd1967
      @nograx sagte in Test Adapter Zendure Solarflow:

      Das muss unbedingt mal mit dem outputLimit ausprobiert werden...

      developer FireSon hat(te) angeblich Kontakt mit zendure.


      Auf Frage:

      Aber weißt du auch, ob sich das auf das Umschalten zwischen Modus 1 und 2 bezieht oder auf den jeweils eingestellten Lade- bzw. Entladewert?

      schrieb FireSon (übersetzt):

      Dies gilt für jeden eingestellten Lade- oder Entladewert, der in den Flash-Speicher geschrieben wird.

      öffentliche Quellen niederländisch: tweakers forum


      Bei Geräten vor 2025 muss man Glück haben.

      Geräte vor 2025 (geeignete Hardware und smartMode vorhanden) wird das Speichern ins RAM unterstützt.
      SolarFow800pro und SolarFlow 2400AC sind neue Geräte und haben smartMode (schreiben ins RAM per smartMode JSON möglich).

      Hyper 2000 ist kein 2025er Modell und soll die erforderliche Hardware für "smartMode" setzen über json nicht haben.
      Stattdessen soll der Hyper von Haus aus mit einer Smart-Mode-Option ausgestattet sein.
      Darum soll der Hyper in den Flash schreiben und falls ins RAM, dann soll das nicht selbst steuerbar sein.

      Achtung Vermutung:
      Smart-Mode-Option: Was damit beim Hyper gemeint ist, weiß ich nicht.
      Wenn das nicht per json steuerbar ist, ist meine Vermutung, dass der Hyper evtl. immer in den Flash speichert(?).
      Wie geschrieben, leicht zu testen:
      Stromlos machen und wenn Einstellungen weg: RAM
      Wenn Einstellungen weiter vorhanden: Flash.

      HUB2000 mit ACE1500 funktioniert.
      Bestätige, dass bei mir smartMode mit HUB2000 und angebundenen ACE1500 funktioniert.
      Was alles ins RAM geschrieben wird, kann ich nicht beurteilen.
      Hier wird es, was den acMode angeht, auch abhängig vom jeweiligen ACE1500 sein, der an den HUB angebunden ist.
      Ob und was der HUB2000 ohne ACE1500 kann, hängt dann wieder vom HUB2000 allein ab.
      Kann also auch sein, dass ein HUB1200 mit ACE1500 oder ein SolarFlow 1200 allein funktioniert.
      Das müsst Ihr selbst testen.

      Hoffe, dass auch niemand hier sauer auf mich ist.
      Kann nichts dafür und möchte keine wilden Gerüchte teilen und schon gar niemand ängstigen usw.
      Gebe nur weiter was ich an Infos zusammen bekomme (Foren, mails, Gespräche etc.) und (so gut es geht) selbst teste.

      zum Ende:
      Keine Panik, was kommt, das kommt sowieso. Beste daraus machen.
      Wer smartMode nicht setzen kann oder nicht unterstützt wird: nicht zu häufig den acMode schalten.
      Für die anderen Einstellungen, wie inputLimit und outputLimit ohne smartMode, fehlen mir die Ideen.

      posted in Tester
      maxclaudi
      maxclaudi
    • RE: Test Adapter Zendure Solarflow

      @bernd1967 sagte in Test Adapter Zendure Solarflow:

      3.) "mqtt.0.gDa3tb..properties.write.reply" geht auf:
      "{"messageId":134218099,"deviceId":"
      ","timestamp":1752756072,"success":0,"properties":{}}"

      somit wird RAM schreiben "per smartMode" setzen bei Deinem hyper leider nicht unterstützt, wie bei vermutlich allen Hyper nicht.
      ausführliche Antwort folgt. Kann gerade nicht.

      posted in Tester
      maxclaudi
      maxclaudi
    • RE: Test Adapter Zendure Solarflow

      @nograx
      Seltsam, müsste ok sein. Hab da i.M. keine weiteren Ideen.
      Hab auch keinen Hyper bei dem ich machen kann, was und wie ich möchte.

      posted in Tester
      maxclaudi
      maxclaudi
    • RE: Test Adapter Zendure Solarflow

      @nograx
      Ist das ein hyper mit pID: ja72U0ha?
      Firmware aktuell bzw. letzte vor der mit HEMS?

      posted in Tester
      maxclaudi
      maxclaudi
    • RE: Test Adapter Zendure Solarflow

      @nograx sagte in Test Adapter Zendure Solarflow:

      Btw. beim Hyper 2000 scheint es "SmartMode" nicht zu geben... da kommt per MQTT kein Wert an.

      Seltsam, bei der Konversation ging es hauptsächlich um einen fehlerhaften hyper.
      Weil ich keinen habe, kann ich nicht testen, was über json geht und was nicht.

      Gibt es nicht 2 unterschiedliche productId für den Hyper?
      Vielleicht liegt's daran?

      Lokal könnte man einfach ein json publishen:

      unter mqtt-Client-Instanz:
      mqtt.x.iot.xxxxxx.YYYYYYYY.properties.write

      {"properties":{"smartMode":1}}
      

      danach müsste das reply unter
      mqtt.x.xxxxxx.YYYYYYYY.properties.read.reply
      sein.

      wenn erfolgreich, dann etwa sowas:

      {
        "messageId": "123",
        "deviceId": "YYYYYYYY",
        "timestamp": 1755555552,
        "success": 1,
        "properties": {
          "smartMode": 1
        }
      }
      

      wenn unbekannt oder Fehlerhaft/nicht verarbeitet usw. passiert ja nichts.
      Dann kommt nichts, evtl. Fehlermeldung oder wahrscheinlicher im reply:

      {
        "messageId": "123",
        "deviceId": "YYYYYYYY",
        "timestamp": 1755555552,
        "success": 1,
        "properties": {}
      }
      

      Alternativ mit MQTT Explorer


      Das muss dann nicht unbedingt im .report json auftauchen.

      Bin schon einiges weiter bei Zendure mqtt json, ist halt mühsam und zeitaufwendig.

      Bei smartMode bekam ich die Info, dass bei geeigneter Hardware smartMode per Software-Update integriert wurde.
      Weil von Geräte 2025 die Rede war.
      Die Infos kann man glauben oder auch nicht.
      Werte auf jeden Fall alles Infos aus, die nützlich sein könnten.

      posted in Tester
      maxclaudi
      maxclaudi
    • RE: Test Adapter Zendure Solarflow

      @hofmann-iobrf sagte in Test Adapter Zendure Solarflow:

      Es ist natürlich ein Unterschied, ob das ab und zu manuell oder auch per Zeitplan ein paar mal am Tag umgeschaltet/geändert wird, oder ob das per Skript alle 5-30 Sekunden passiert.
      Das sind ca. 5-10 vs. 2000-5000 Speichervorgänge pro Tag.

      Hat mir keine Ruhe gelassen und wollte es bei meinem script genauer wissen.

      Habe gestern noch ein Zähler-Script geschrieben, das das Umschalten vom acMode zählt und täglich in ein file dokumentiert.

      Batterien sind heute voll aufgeladen und HUB2000 ist im Bypass.
      Script schaltet autom. acMode auf Ladung per Netz (ACE1500), wenn PV-Überschuss groß genug. Sollte der Überschuss nicht mehr vorhanden sein und allgemein PV-Leistung sinken, dass HUB2000 mit PV-Leistung unterstützend einspeisen soll, dann wird acMode umgeschaltet zur Einspeisung usw.

      Summe der acMode-Schaltungen werden sehr unterschiedlich sein: Jahreszeit/Wetter/Verbrauch.

      Zwischenstand für heute (seit 00.00h) nachdem Akku voll und System im Baypass: 4
      acMode-geschaltet.png

      😊
      Gut, war fast niemand zuhause und als Alle da waren, war die Sonne noch nicht zur AC-Ladung ausreichend vorhanden.

      counterScript läuft, dann lass ich es mal protokollieren

      posted in Tester
      maxclaudi
      maxclaudi
    • RE: Test Adapter Zendure Solarflow

      @nograx sagte in Test Adapter Zendure Solarflow:

      Release 1.15.4 ist kompiliert.
      SmartMode Parameter als Sensor und Control mit drin.

      👍

      Broker Lokal, exklusiv im autoModel: 0 mit scripts

      1.15.4 installiert. knapp ne Stunde ohne Fehler.
      Lässt sich schalten und funktioniert Fehlerfrei bei meinem setup.


      edit:
      Ergänzung zu
      @nograx sagte in Test Adapter Zendure Solarflow:

      Außerdem wäre es bei der Diskussion um den SmartMode Parameter hilfreich wenn uns jmd. der den SmartCT Modus verwendet mal den Wert vom SmartMode seines Systems posten könnte.

      der noch mit der der Cloud verbunden ist und die Werte von SmartMode mitteilt:

      im CT-Modus SmartMode: 1 ?
      in keiner oder anderer Einstellung des autoModel (Energieplan): smartMode: 0 ?

      @Hofmann-IOBRF @lesiflo
      Ihr seid noch in der Cloud mit einem hyper?


      Übrigens ist es beim hyper ganz einfach zu testen.

      Wenn smartmode: 1, dann wird ins RAM geschrieben.
      Hyper stromlos machen und dann ist die Einstellung weg.

      Wenn smartMode: 0, dann wird in Flash geschrieben.
      Hyper stromlos machen und dann bleibt die Einstellung.

      posted in Tester
      maxclaudi
      maxclaudi
    • RE: Test Adapter Zendure Solarflow

      @hofmann-iobrf
      richtig.
      War bei mir bis gestern nicht anders.
      Naja 2000-5000x am Tag schaltet man zwischen Laden und Entladen nicht um.
      Sonst hat man eine sehr fragwürdige Steuerung/Regelung.

      Wenn man natürlich den acMode als Ein-/Ausschalter oft am Tag nutzt und nicht hauptsächlich das inputLimit regelt, sieht das anders aus.
      Gut mein script hat das leider auch öfter mal gemacht, aber ist nun nicht mehr so.

      posted in Tester
      maxclaudi
      maxclaudi
    • RE: Test Adapter Zendure Solarflow

      @hofmann-iobrf
      Du hast später geantwortet, als ich editiert hatte.
      War Schreibfehler. Natürlich SmartMode:1 ->RAM

      Ja, mit lokalem Broker autoModel:0 lassen, besser so.

      Mehr möchte ich dazu nicht schreiben, würde nur verwirren 😉

      PS: Es betrifft Alle die mit Netz laden (acMode nutzen). Auch die, die das Zendure-system wie gekauft verwenden (wenn sie manuell häufig über die App Laden/Entladen umschalten, außerhalb vom CT-Modus)

      posted in Tester
      maxclaudi
      maxclaudi
    • RE: Test Adapter Zendure Solarflow

      @hofmann-iobrf sagte in Test Adapter Zendure Solarflow:

      Ich dachte das funktioniert (noch) nicht, bzw. smartMode = 1 bleibt bei autoModel = 0 nicht auf 1?
      Ansonsten sollte das im Adapter integriert werden.

      Verständnis Problem:
      Bei lokalem Broker sollte man,
      zumindest wenn man per Netz ladet und acMode schaltet,
      sicherstellen, dass smartMode: 1 ist.
      Wenn nicht: mit einem json den key: smartMode auf value:1 publishen.
      Dadurch wird dann der acMode (+ vielleicht mehr) ins RAM geschrieben.

      autoModel: 0 bleibt.
      Lokal verwendet man ja keine Energiepläne. Bzw. empfehle ich bei lokalem Broker auch alles selbst zu steuern und keine unflexiblen Energiepläne von Zendure zu verwenden.

      Nochmals: Es ist zu wenig bekannt.
      Es betrifft auf jeden Fall die acMode Umschaltung (und vielleicht mehr?)
      mit smartMode:1 wird acMode (und vielleicht mehr?) ins RAM statt Eeprom geschrieben.

      Wenn man das Zendure-System verwendet, wie gekauft: Also nur per App und Energiepläne.
      Dann werden die Werte vom acMode in den Flash geschrieben, außer im CT-Mode.

      Lokal kann man nun, wenn man keine Energiepläne verwendet mit autoModel:0 und smartMode:1 setzen, das Gerät anweisen, dass die acMode-Änderungen nur noch ins RAM geschrieben werden.

      verständlicher? 😊

      posted in Tester
      maxclaudi
      maxclaudi
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
    The ioBroker Community 2014-2023
    logo