NEWS
[gelöst] Javascript-adapter ruft on ereignis doppelt auf
-
@paul53 so funktioniert es.
So ging es allerdings vorher nicht.
Und der sinn von meiner abfrage war, dass ich den trigger erst auslöse, wenn der shellyadapter bestätigt hat.
Hat sich da was geändert? -
@paul53 sagte in Javascript-adapter ruft on ereignis doppelt auf:
und außerdem
setStateDelayed(IdZisternenstellmotor,false, getState(verfahrzeitFrischwasserstellmotor).val * 1000); // ID stimmt?Warumsollte die nicht stimmen
-
@ben1983 sagte: Warumsollte die nicht stimmen
Wenn verfahrzeitFrischwasserstellmotor eine ID ist, fehlte bei Dir getState() um die ID.
-
@paul53 Die Id ist nur die zu setzende.
Das zu schreibende ist eine interne Variabel (Deshalb steht auch kein Id davor)
Aber davon abgesehen funktioniert es ja, nur reagiert die on() Abfrage anders als auf dem windows system. -
@ben1983 sagte: ist eine interne Variabel
Ein Objekt (wegen .val)?
-
@paul53 Nein, weil ich das nicht nur da verwende.
Ich lese es bei änderung ein und reagiere darauf indem ich es in den Arbeitsspeicher schreibe.
So muss ich nicht überall getState aufrufen. -
@paul53 Frage mich jetzt nur, warum er den aufruf doppelt absetzt?
-
@ben1983 sagte: Frage mich jetzt nur, warum er den aufruf doppelt absetzt?
Welcher Adapter setzt den DP mit IdFrischwasserstellmotor?
-
@paul53 Shelly…. Ist ein Adapter im beta
@haus-automatisierung
Kann das an dem Beta liegen? -
@ben1983 sagte in Javascript-adapter ruft on ereignis doppelt auf:
Kann das an dem Beta liegen?
Dass irgendwas den (hier nicht genannten) Datenpunkt 2x schreibt? Wie soll ich darauf antworten
Kenne dein System nicht und weiß nichtmal um welche Geräte es geht.
Was erwartest da für eine Antwort?
-
@ben1983
Um zu sehen, woher es kommt, bau mal in das Skript einen zweiten Trigger auf Aktualisierung ein, der es im Log zeigt:on({id: IdFrischwasserstellmotor}, (dp) => { log('Frischwasser: ' + dp.state.val + ', Ack: ' + dp.state.ack + ', From: ' + dp.state.from); });
-
@paul53 mache ich
-
@haus-automatisierung sorry.
Es wird ein Shelly 2.5 geschaltet.
Diesen schalte ich mit setstatedelayed.
Jeweils(val=true oder false) mit dem ack nicht angegeben, also false.
Die on Methode, welche ich auf ack=true Abfrage wird zwei mal mit val=true und ack=true aufgerufen. Aber frage ich auf lediglich die id ab, dann wird bei Änderung nur einmal mit ack = fAlse aufgerufenMein Gedanke war nun, dass irgendwie bei der Abfrage auf ack=true der Wert für ack nicht richtig übergeben wird.
-
@ben1983 sagte in Javascript-adapter ruft on ereignis doppelt auf:
Mein Gedanke war nun, dass irgendwie bei der Abfrage auf ack=true der Wert für ack nicht richtig übergeben wird.
Müsste ich in Ruhe testen, aber würde mich sehr wundern wenn das passiert. Die Versionen werden ja von tausenden Leuten schon genutzt. Das wäre sicherlich aufgefallen
-
@haus-automatisierung ja,
Das hat ja auf meiner Windows Installation auch funktioniert.
Jetzt bei der neuen auf Docker trat es auf. -
@paul53 @haus-automatisierung Das hier habe ich wie beschrieben eingefügt:
on({id: IdFrischwasserstellmotor}, (dp) => { log('Frischwasser: ' + dp.state.val + ', Ack: ' + dp.state.ack + ', From: ' + dp.state.from); });
Im Log steht dann:
16:27:46.649 info javascript.0 (32410) script.js.common.eventtest: Frischwasser: false, Ack: false, From: system.adapter.javascript.0 16:27:46.652 info javascript.0 (32410) script.js.common.eventtest: Frischwasser: false, Ack: true, From: system.adapter.shelly.0 16:27:46.930 info javascript.0 (32410) script.js.common.eventtest: Frischwasser: false, Ack: true, From: system.adapter.shelly.0
also für michsieht es so aus, dassichim script auf false setze und der shelly adapter 2 x mit true zurück meldet.
Oder? -
@ben1983 sagte: im script auf false setze und der shelly adapter 2 x mit true zurück meldet. Oder?
Ja, so sieht es aus: Im Abstand von ca. 300 ms wird val = false und ack = true gesendet.
-
@ben1983 sagte in Javascript-adapter ruft on ereignis doppelt auf:
also für michsieht es so aus, dassichim script auf false setze und der shelly adapter 2 x mit true zurück meldet.
Ich würde das ja gerne nachvollziehen oder testen. Aber Du lieferst ja keine Infos
- Shelly 2.5 in welchem Modus (Switch oder Shutter)
- Welche Firmware-Version
- Welcher Datenpunkt genau
- Wie integriert (MQTT oder CoAP?), ...
-
@haus-automatisierung wie es ausschaut sind es alle shellys (shelly 1,shelly2,shelly2.5) die ich im Einsatz habe.
Alle über CoAP.
Alle auf der neuesten Firmware: Datenpunkt "Relais0.switch" "Relais1".switch (Wobei ich andere jetzt nicht abfrage)
Installiert ist die Beta:
-
@ben1983 sagte in Javascript-adapter ruft on ereignis doppelt auf:
Alle auf der neuesten Firmware: Datenpunkt "Relais0.switch" "Relais1".switch (Wobei ich andere jetzt nicht abfrage)
Fehler gefunden. Problem war, dass die Änderung einmal bestätigt wurde, wenn der Wert geändert wurde und zum Gerät geschickt wird. Zusätzlich antwortet das Gerät dann aber direkt über CoAP oder MQTT direkt mit dem neuen Wert. Was wiederum zu einem Event mit ack geführt hat.
Ist in 5.3.1 behoben.