NEWS
Zendure SmartMode:1 SolarFlow2400 AC SolarFlow800 ( u. Pro)
-
@michi-0 sagte in Zendure SmartMode:1 SolarFlow2400 AC SolarFlow800 ( u. Pro):
Heute Morgen sind mir 2 Sachen aufgefallen:
Ich hab den Proxmox-Host gestern von 0.00 Uhr bis 5.00 Uhr schlafen gelegt. Vor dem Herunterfahren von ioBroker habe ich den Zendure auf konstante Entladung von 280 Watt eingestellt. Bei Neustart kommen alle Skripte auch wieder ans leben wie sie sollen.
ABER: Anscheinend ist bei dem Neustart von ioBroker von Zendure-Seite aus die MQTT Verbindung geblockt. Mein Steuerungsskript hatte zwar geregelt, das hat den Stromspeicher aber nicht interessiert. Erst als ich in der App in den MQTT Einstellungen wieder auf speichern gegangen bin, hat alles funktioniert. Ich würde den ioBroker/Proxmox künftig gerne über Nacht aus lassen, bzw. zumindest wöchentlich einmal neu starten lassen. Dann jedes mal in die App zu müssen ist lästig...
Habe die Lösung dazu gefunden. Benötige aber parameter, weil ich ja kein Gerät habe.
@Daniel-8 oder @Michi-0
ist jemand anwesend und hat Zeit schnell was zu testen und mir die Antworten hier jeweils als Code </> zur Verfügung stellt?Dazu hab ich ein Blockly vorbereitet.
Dort muss nur die IP des Zendure Geräts eingegeben werden.
Danach speichern und ausführen.Im debug Output steht dann die Antwort.
Benötige ich 2x:- 1x die Antwort, wenn mqtt über App eingeschaltet ist und Blockly ausgeführt wurde.
Antwort hier rein kopieren und Blockly stoppen. - In App mqtt ausschalten und dann Blockly noch einmal starten.
Die Antwort dann auch wieder hier rein kopieren.
Falls sn (seriennummer) in der Antwort mit übertragen wird, einfach ersetzen durch:
EXXXXXXXXXXXXX0
Blockly-Bild:
Blockly:
<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="WKVzKkF]CQz`6gllim#?">IPzendure</variable> <variable id="PK*aTcO_h5[q.Mm,#VS_">curlStep01</variable> <variable id="a)jjJ@5@VTIz;JG^H%B:">curlStep02</variable> <variable id="lt9bQKdr:bCWUXjSXbh-">mqttStatus</variable> </variables> <block type="comment" id="Tq])09rP3m]6LRyx{]A;" x="-112" y="88"> <field name="COMMENT">IP von Zendure-Gerät eintragen:</field> <next> <block type="variables_set" id="+lg1CnCO96pB4U$d2LI?"> <field name="VAR" id="WKVzKkF]CQz`6gllim#?">IPzendure</field> <value name="VALUE"> <block type="text" id="7my^9C{WQM%Ro=zaX2r."> <field name="TEXT">192.168.177.103</field> </block> </value> <next> <block type="comment" id="CHN^=n~%z+6/Z_uvsFr!"> <field name="COMMENT">----</field> <next> <block type="comment" id="gi4m2(WRneBA3!Iu]K3Q"> <field name="COMMENT">folgendes nicht aendern</field> <next> <block type="variables_set" id="LHK~ASG%TAkM?[mBvKy:"> <field name="VAR" id="PK*aTcO_h5[q.Mm,#VS_">curlStep01</field> <value name="VALUE"> <block type="text" id="PI7JX0+SuOgaLe9YA+e2"> <field name="TEXT">curl -X GET "http://</field> </block> </value> <next> <block type="variables_set" id="**4~9..5=~xFn(?t1h#}"> <field name="VAR" id="a)jjJ@5@VTIz;JG^H%B:">curlStep02</field> <value name="VALUE"> <block type="text" id="E|iEDh+Mi}[EB4fc`SX2"> <field name="TEXT">/rpc?method=HA.Mqtt.GetStatus"</field> </block> </value> <next> <block type="variables_set" id="eGdwc0]EX(re|0pM;@$["> <field name="VAR" id="lt9bQKdr:bCWUXjSXbh-">mqttStatus</field> <value name="VALUE"> <block type="text_join" id="K*az/})Xda}5YAq}KlLX"> <mutation items="3"></mutation> <value name="ADD0"> <block type="variables_get" id="h.Iv*O%k$s(c]dR[E_W_"> <field name="VAR" id="PK*aTcO_h5[q.Mm,#VS_">curlStep01</field> </block> </value> <value name="ADD1"> <block type="variables_get" id="Y0`DMbV#c4OO45i/D(AY"> <field name="VAR" id="WKVzKkF]CQz`6gllim#?">IPzendure</field> </block> </value> <value name="ADD2"> <block type="variables_get" id="FcN*2RYH]Re*)W_4gmFj"> <field name="VAR" id="a)jjJ@5@VTIz;JG^H%B:">curlStep02</field> </block> </value> </block> </value> <next> <block type="exec" id="s`+h.dZ/(m/#e1XRQC!K"> <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="vU~ffyXke.dX]yajp3,*"> <field name="TEXT"></field> </shadow> <block type="variables_get" id="S9nQE4y*sKo=VyT98o0x"> <field name="VAR" id="lt9bQKdr:bCWUXjSXbh-">mqttStatus</field> </block> </value> <statement name="STATEMENT"> <block type="debug" id="G#%Jm[L_QdFH610@K02x"> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="d$y7xmLq8PV01kmH0![x"> <field name="TEXT">test</field> </shadow> <block type="exec_result" id="~YDu`4S_nk45Bv7cAHl*"> <field name="ATTR">result</field> </block> </value> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </xml>
- 1x die Antwort, wenn mqtt über App eingeschaltet ist und Blockly ausgeführt wurde.
-
Bin grad noch unterwegs. Und über VPN am Tablet wäre das grausam. Ich versuche die die Daten am späten Nachmittag zukommen zu lassen!
-
-
Hier die Egebnise
Mit MQTT an
javascript.0 13:59:49.838 info {"connected":true}
Mit MQTT aus
javascript.0 14:00:35.614 info {"connected":false}
-
@daniel-8 sagte in Zendure SmartMode:1 SolarFlow2400 AC SolarFlow800 ( u. Pro):
Hier die Egebnise
Mit MQTT an
javascript.0 13:59:49.838 info {"connected":true}
Mit MQTT aus
javascript.0 14:00:35.614 info {"connected":false}
Das ist jeweils die komplette Antwort?
-
@maxclaudi sagte in Zendure SmartMode:1 SolarFlow2400 AC SolarFlow800 ( u. Pro):
@daniel-8 sagte in Zendure SmartMode:1 SolarFlow2400 AC SolarFlow800 ( u. Pro):
Hier die Egebnise
Mit MQTT an
javascript.0 13:59:49.838 info {"connected":true}
Mit MQTT aus
javascript.0 14:00:35.614 info {"connected":false}
Das ist jeweils die komplette Antwort?
Ja mehr gab es nicht
-
@daniel-8 sagte in Zendure SmartMode:1 SolarFlow2400 AC SolarFlow800 ( u. Pro):
Ja mehr gab es nicht
Dann mach ich mich mal an die Arbeit
-
@daniel-8 sagte in Zendure SmartMode:1 SolarFlow2400 AC SolarFlow800 ( u. Pro):
Hier die Egebnise
Mit MQTT an
javascript.0 13:59:49.838 info {"connected":true}
Mit MQTT aus
javascript.0 14:00:35.614 info {"connected":false}
Same here!
-
@maxclaudi sagte in Zendure SmartMode:1 SolarFlow2400 AC SolarFlow800 ( u. Pro):
Wenn HEMS aktiviert ist, automatisch smartMode:0 aktiviert wurde und Du dann wieder (bei aktiviertem HEMS) smartMode:1 setzt:
- wird von smartMode:0 auf smartMode:1 gesetzt? ----> Ja
- wenn ja, wechselt smartMode zurück auf 0? ----> Nein / Nur wenn ich in HEMS den Modus von Grundlast auf Stromtarif ändere
- wenn zurück auf 0, nach welcher Zeit ca? ----> XXX
- wenn zurück auf 0, falls feststellbar: was machte HEMS? bzw. wurde ein Limit geändert? ----> XXX
Wenn ich HEMS aktiviere (SmartMode auf 0) und wieder deaktiviere und anschließend MQTT wieder aktiviere ändert sich der SmartMode bei mir nicht von alleine wieder auf 1. Allerdings wurden auch keine Eingaben von ioBroker übernommen solange der SmartMode auf 0 war...
-
Siehe Eingangspost vom Thread.
mit Datenpunkte in iobroker steuerbar per http:
- MQTT ein- und ausschalten mit aktueller Status-Info: MQTT verbunden oder nicht.
- smartMode ein-/auschalten mit aktueller Status-Info von smartMode: 1 (ein) oder 0 (aus).
Bitte testen und viel Spaß
-
Frage:
Mit dem Script liefert MqttConnectInfo Strings: "connected" / "disconnected"Soll das zum leichteren Auswerten in Blockly umgeschrieben werden zu einer Nummer?
1 wenn MQTT verbunden / enabled
0 wenn getrennt / disabled -
@maxclaudi
Skript läuft. Steuerung funktioniert und Änderungen werden angezeigt. Die Umstellung bei MQTT auf 1 / 0 hast Du schon erledigt? Zumindest lässt es sich bei mir schon damit steuern. Die Umstellung bei MQTT dauert zwar sehr lange (gefühlt mehr als 1 Minute), aber es macht dennoch das was es soll!Werde gleich mal meine Skripte etwas tunen
-
@michi-0 sagte in Zendure SmartMode:1 SolarFlow2400 AC SolarFlow800 ( u. Pro):
@maxclaudi
Skript läuft. Steuerung funktioniert und Änderungen werden angezeigt. Die Umstellung bei MQTT auf 1 / 0 hast Du schon erledigt?Guten Morgen
Jetzt ja.
Scripte im ersten post wurden verändert: mqttConnectInfo: 0 = MQTT aus / 1 = MQTT an
Statt disconnected / connected.
So kann es in Blockly/scripts einfacher verwendet verwendet werden.
Falls Wert von mqttConnectInfo == 0 mache: steuere .... und... steuere setMqttConnect mit 1Zumindest lässt es sich bei mir schon damit steuern.
Die Datenpunkte zum Steuern sind nur zum Setzen des Wertes:
- setSmartMode = 0 Speichern in Flash
- setSmartMode = 1 Speichern nur im RAM (empfohlen!)
- setMqttConnect = 0 MQTT am Zendure-Gerät deaktivieren
- setMqttConnect = 1 MQTT am Zendure-Gerät aktivieren
Hinweis:
Die Set-Datenpunkte (setSmartMode, setMqttConnect) werden nach dem Schreiben nicht automatisch aktualisiert und sind daher nicht für das Auslesen aktueller Zustände gedacht.Ist bewusst so umgesetzt, damit dieselben Set-Werte jederzeit erneut geschrieben werden können – auch wenn sie bereits zuvor gesendet wurden.
Beispiel:
setMqttConnect = 1, MQTT wird eingeschaltet.Wird MQTT anschließend über die Zendure-App oder das Gerät selbst ausgeschaltet, bleibt der Wert in ioBroker trotzdem auf 1.
Dadurch ist es möglich, einfach erneut setMqttConnect = 1 zu setzen, um MQTT wieder zu aktivieren.
Zum reinen Auslesen / Vergleichen der aktuellen Zustände in Blockly/Scripts bitte nur diese Datenpunkte verwenden:
- mqttConnectInfo: 0 = MQTT aus / 1 = MQTT an
- smartModeInfo: 0 = Flash / 1 = RAM
Die Umstellung bei MQTT dauert zwar sehr lange (gefühlt mehr als 1 Minute), aber es macht dennoch das was es soll!
Ja, das ist normal
Das hängt an zwei Stellen:
-
Hauptsächlich Geräteseitig
Wenn du den Schaltbefehl schickst, braucht das Zendure-Gerät ein paar Sekunden, bis es den MQTT-Stack sauber herunterfährt und connected=false meldet. Das ist kein sofortiges "Stecker ziehen", sondern ein geregeltes Disconnect. Beim Einschalten genauso. -
Scriptseitig (Polling)
Script fragt den Status nur alle intervalMqtt Sekunden ab (default 300s).
Direkt nach dem Verbinden/Trennen, steht da evtl. noch 0, bis das nächste Polling kommt.
Deshalb kann es zusätzlich noch maximal die Länge des Poll-Intervalls dauern, bis die Änderung sichtbar wird.
Werde gleich mal meine Skripte etwas tunen
-
Vielen Dank für die Skripte. Werde die bei nächster Gelegenheit umsetzen. Haben nur leider seit gestern Nachmittag einen Wasserschaden in unserer Wohnung. Das hatte natürlich Vorrang
-
@daniel-8
ohje, wie bemerkt und entstanden? -
Wir haben eine Wohnung für die Schwiegereltern gekauft und zum Glück kam der küchenbauer gestern zum ausmessen.
Da war das hauptrohr verstopft und da lief es dann wie ein Wasserfall raus.
-
Heute Nacht ging mein Smartmode um 23.37 Uhr automatisch auf 0. Ich kann nur noch nicht sagen woher das kommt. Eventuell von der cloud. Noch ist meiner da angemeldet.
-
@daniel-8
Kann völlig normal sein. smartMode:1 sollte bei autoModel:0 einwandfrei funktionieren.Sobald ein anderes Model oder irgend eine Cloud-Automatik eingreift, könnte er auf 0 gesetzt werden.
Finde das macht nichts.
Entscheidend ist, dass wenn man selbst mit scripts über autoModel:0 steuert, der smartMode:1 gesetzt ist.
Dafür den smartMode überwachen lassen.Das System/Cloud geht auch nicht davon aus, dass smartMode:1 (schreiben ins RAM) Dauerzustand sein soll. Obwohl wir uns das wünschen.
-
@maxclaudi sagte in Zendure SmartMode:1 SolarFlow2400 AC SolarFlow800 ( u. Pro):
@daniel-8
Kann völlig normal sein. smartMode:1 sollte bei autoModel:0 einwandfrei funktionieren.Sobald ein anderes Model oder irgend eine Cloud-Automatik eingreift, könnte er auf 0 gesetzt werden.
Finde das macht nichts.
Entscheidend ist, dass wenn man selbst mit scripts über autoModel:0 steuert, der smartMode:1 gesetzt ist.
Dafür den smartMode überwachen lassen.Das System/Cloud geht auch nicht davon aus, dass smartMode:1 (schreiben ins RAM) Dauerzustand sein soll. Obwohl wir uns das wünschen.
Welches autoModel ich habe kann ich nicht sagen. Muss mal sehen ob das auch ausgelesen wird. Bin grad nicht vor Ort.
Ich habe den speicher aus hems raus und ist quasi nur als Gerät in der cloud. Somit sollte ja da keine automatik eingreifen. Aber ich habe den smartMode ja überwacht. Muss das nur mal noch machen das er automatisch wieder auf 1 springt
-