NEWS
Probleme beim MODBus Holding Register schreiben per Skript
-
@Dolomiti O.K. jetzt habe ich es verstanden, was Du meinst... Ich probiere das mal und gebe gleich Rückinfo
-
@Atlantis
Bei mir ist es umgekehrt, ich komm nicht so richtig mit Blockly klar. -
@Dolomiti Du meintest so, oder?
-
@Atlantis Ja, so könnte es gehen.
D.h. wenn sich das Register ändert überprüfst du, ob der Wert null ist um ihn dann auf drei zu setzen.
-
@Dolomiti Erster Versuch mit dem Blocky von eben hat nach dem Erreichen des Nullwertes den Regsiterwert nicht zurück auf 3 gesetzt. Dann neuer Versuch, alle 10 Sekunden den Wert auf 3 setzen.
für Dich noch als JS:
schedule("*/10 * * * * *", async function () { setState("modbus.0.holdingRegisters.13049_EMS_mode selection", 3); });
Geht leider auch nicht.
Logeinträge im Status Debug gibt es keine, die MOD Bus Adapter laufen momentan aber in Zeitlupe, auch Handeinträge kommen oft nicht am WR an. Der Zeitstempel hinter den Holding Register EInträgen ist tlw. 4-6 Minuten alt.
Anbei mal noch meine Settings:
Weitere Ideen?Gruss ATlantis
-
@Dolomiti Nachdem auch meine VIS über 10 Minuten hinterher hing, habe ich mich jetzt für
sudo shutdown -r nowentscheiden. Mal sehen ob es was hilft...
-
@Atlantis Die Settings sehen bei mir auch so aus.
Hab das Blockly mal nachgebaut und mit meiner Heizungssteuerung probiert, die über eine Wago-SPS 750-880 läuft probiert. Wenn der Wert 22 erreicht wird er wieder auf 20 zurück gesetzt.Und noch als Blockly-Export
on({id: 'modbus.0.holdingRegisters.40771_T_WZ_W', change: "ne"}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("modbus.0.holdingRegisters.40771_T_WZ_W").val == 22) { setState("modbus.0.holdingRegisters.40771_T_WZ_W"/*Sollwert Wohnzimmer*/, 20); } });
bzw. hier der Export. Oben die Umwandlung nach JS
-
@Dolomiti Nachdem Reboot kann ich jetzt wieder die Holding Register in den Objekten zügig setzen und die gesetzten werden auch so im WR übernommen.
Per Skipt nach wie vor Fehlanzeige.
Jetzt habe ich aber eine neues, völlig unbekanntes Problem.
Die Vis hängt trotz Reboot auf dem alten Wert von 18:01 Uhr (als vor 30 Minuten) fest.O.K. dachte Browser Cache. Neues privates Fenster geöfnet. VIS zeigt das gleiche, obwohl ich um 18:23 gerebootet habe.
Manchmal ist es echt zum Verzweifeln, vor allem als IO Broker Neuling...Ich glaube nicht, das an der Logik des Blocky hängt. Im Forum hatt jemand schon einmal genau das gleiche Problem geschildert. Nach Adapter Neustart war bei ihm dann aber alles i.O.
Gruss
Atlantis -
@Atlantis @Dolomiti @UncleSam
Habe den Fehler jetzt gefunden.
VIS hing, da das Blocky Skript, welches ich zum Testen um den Eintrag mit den Holding Registern ergänzt habe,
ohne jegliche Fehlermeldung eingefroren war.Habe dann kurz alle Testeinträge zu den Holdiung Registern von vorher gelöscht, bis auf den mit den 10/20 Sekunden weisen setzen des Holding Registers und wollte das Skript abspeichern.
Dabei habe ich die JS Warnung in Rot erhalten mit einem Compiler Fehler. Also das 10 Sek. Blocky gelöscht und gespeichert.--> Siehe da! Die VIS lief wieder wie vorher.
Dann im gleichen Blocke erneut das gleiche Skript mit 20 Sekunden Register Setzen eingebaut, gespeichert. --> Keinen Compiler Fehler und....
Das Holding Regsiter wird brav alle 20 Sekunden gesetzt.
Für die, die das hier je mal nachlesen. Funktionierende Lösung sieht so aus:
Blocky:
oder als JS:
schedule("*/20 * * * * *", async function () { setState("modbus.0.holdingRegisters.13049_EMS_mode selection", 3); });
Gruss und ganz lieben Dank allen !!!!!
Atlantis -
@Atlantis Schön das es jetzt funktioniert.