NEWS
ELV-SH-GVI per Java ansteuern / Problem
-
Ich habe mit dem ELV-SH-GVI meine Gartenbewässerung gesteuert, besser gesagt die Ventile. Und als Pumpe einen Gardena 5000/5 Automat.
Heute in der früh war es wieder der Fall. Das Ventil sollte um 6:15 schalten und nach 3 minuten wieder ausschalten. Jedoch ist es dann länger offen gewesen bis es jemand bemerkt hat und die Pumpe per Hand abgeschalten hat.Der Log aus der CCU3:
06:13:30 18.06.2025 Steuerung bewässerung 41 Kanäle im Auto-Modus 16777215 06:15:00 18.06.2025 Steuerung bewässerung:0 Konfigurationsdaten zur Übertragung: Nein, RSSI Gerät -98, Dutycycle OK, Gerätekommunikation OK, RSSI Partner -92 06:15:00 18.06.2025 Steuerung bewässerung 14 Status Sektion: Normal, Schaltzustand: Ein, Profilabschnitt: 2, Gerät nicht aktiv 06:15:03 18.06.2025 Steuerung bewässerung:0 Konfigurationsdaten zur Übertragung: Nein, RSSI Gerät -98, Dutycycle OK, Gerätekommunikation OK 06:15:03 18.06.2025 Steuerung bewässerung 13 Status Sektion: Normal, Schaltzustand: Ein, Profilabschnitt: 2, Gerät nicht aktiv 06:15:03 18.06.2025 Steuerung bewässerung 14 Status Sektion: Normal, Schaltzustand: Ein, Profilabschnitt: 2, Gerät nicht aktiv 06:21:35 18.06.2025 Steuerung bewässerung:0 Konfigurationsdaten zur Übertragung: Nein, Dutycycle OK, Gerätekommunikation OK, Überhitzung: Nein, RSSI Gerät -97, Ist-Temperatur 24.00°C, Wert Ist-Temperatur: Normal, Fehlercode 0 06:21:35 18.06.2025 Steuerung bewässerung 13 Status Sektion: Normal, Schaltzustand: Ein, Profilabschnitt: 2, Gerät nicht aktiv 06:21:35 18.06.2025 Steuerung bewässerung 14 Status Sektion: Normal, Schaltzustand: Ein, Profilabschnitt: 2, Gerät nicht aktiv
Der Script von Iobroker:
schedule("15 6 * * *", async () => { if (getState('0_userdata.0.Bewässerung.Blume_Automatikmodus').val == 'Automatik' && getState('smartgarden.0.LOCATION_5115679d-2D7834-2D45fc-2Dae20-2De1699acedece.DEVICE_d26e7d99-2D4c34-2D47da-2Db995-2D8b6d0c19c6f5.SERVICE_SENSOR_d26e7d99-2D4c34-2D47da-2Db995-2D8b6d0c19c6f5.soilHumidity_value').val <= getState('0_userdata.0.Bewässerung.Blume_Feuchte').val) { await setStateAsync('hm-rpc.0.000D20C9AF5679.14.ON_TIME' /* Steuerung bewässerung 14.ON_TIME */, (60 * getState('0_userdata.0.Bewässerung.Blume_Dauer').val)); await setStateAsync('hm-rpc.0.000D20C9AF5679.14.STATE' /* Steuerung bewässerung 14.STATE */, true); } });
Im Log von IOBroker steht nichts drinne zu der Zeit. Jemand eine Idee was der auslöser dafür sein kann?
-
@grazer2500 sagte in ELV-SH-GVI per Java ansteuern / Problem:
0_userdata.0.Bewässerung.Blume_Dauer'
was stand denn in dem DP?
-
@homoran im db stand 4 (für Minuten) und die Umrechnung in Sekunden erfolgt ja direkt im Script.
Die dbm Werte Von der Steuerung:
Steuerung bewässerung 000D20C9AF5679 -102 dBm -102 dBm
-
@grazer2500 sagte in ELV-SH-GVI per Java ansteuern / Problem:
im db stand 4
sicher?
Die Steuerung via ONTIME ist eigentlich ziemlich sicher.
Die Zeit wird im Aktor beim Start gespeichert.Wenn da was schiefgeht, istces am wahrscheinlichsten, dass kein, oder ein falscher ONTIME Wert mitgegeben wurde.
Ich kenne mich mit js nicht aus, schon gsr nicht mit await.
ONTIME und STATE müssen in der Reihenfolge und nur kurz hintereinander gesendet werden.ist das gesichert?
-
@homoran wenn ich jetzt darüber nachdenke bin ich mir nicht 100% sicher. Eventuell habe ich es bei der Fehlersuche überschrieben.
Das habe ich mir auch gedacht, und habe das auf ONTIME umgestellt.
Das Await sollte dafür sorgen, das der State Befehl erst gemacht wird, wenn der ONTIME fertig ist.
Aber das habe ich auch nur auf anraten aus einem anderen Forum eingefügt. Ursprünglich habe ich es mit Blocky gemacht, und dann auf JS umschreiben lassen von IOBroker.Wie kann ich auf Nummer sicher gehen das er immer einen und den richtigen Wert beim ONTIME mitgibt?
Denn ich bin mittlerweile ratlos -
@grazer2500 sagte in ELV-SH-GVI per Java ansteuern / Problem:
Wie kann ich auf Nummer sicher gehen das er immer einen und den richtigen Wert b
@grazer2500 sagte in ELV-SH-GVI per Java ansteuern / Problem:
mit Blocky gemacht,
z.B.
prüfe Wert von DP ist zwischen 3 und 5
falls wahr setze varDauer auf Wert
falls falsch setze varDauer auf 4
steuere ONTIME mit varDauerDer ID nach ist das ein HmIP Gerät.
Da soll es such einen "combined Parameter" DP geben.
Hab ich mich noch nie mit beschäftigt.oder du machst prophylaktisch ein timeout von max Veregnungszeit +2 Minuten und sendest, wenn state immer noch true, ein false
-
@homoran Wie ich den Post abgeschickt habe, ist mir auch die Idee gekommen. Vielleicht hängt der Wert wirklich, hin und wieder. Da ich den ONTIME wert setzen und berechnen in einem Zug habe.
Die Überprüfung wie du vorgeschlagen hast, probiere ich auch umzusetzen.
Ja, den DP "combined Parameter" habe ich. Bin noch nicht ganz schlau geworden wie ich diesen setze.
Vielleicht schaue ich dir den auch nochmal an
-
@homoran Habe das Problem, aus einem anderen Forum erfahren. Die Steuerung hat den ON_TIME Befehl nicht erhalten, sondern nur den STATE Befehl. Ich vermute auf Grund der hohen dbM Werte ist ein Befehl "liegen" geblieben.
Werde jetzt alles auf COMBINED_PARAMETER umstellen, da hier die ON_TIME und die STATE in einem Befehl geschickt werden. Dann dürfte dies theoretisch nicht mehr passieren.
Danke für die Hilfe