NEWS
Objekte ohne ACK ermitteln
-
Hallo, gibt es eine Möglichkeit herauszubekommen, ob ein Datenpunkt nicht mit eine ACK bestätigt wurde. (Also z.B. ein Ausgang hat nicht geschaltet)?
Wird ein device schalte, dann wird das ACK-Bit zunächst auf false und später dann vom Adapter zurück auf true gesetzt. Ich nun möchte die Datenpunkte ermitteln, die nicht zurück auf true gesetzt worden sind.
Gespielt habe ich mit nachfolgende Ansatz: Ermittelt alle "Alias" Elemente, die eine Bestätigung erhalten haben. Dies ist aber nicht das was ich suche .... Evt. ist der Ansatz auch falsch .....
on({ id: new RegExp("alias\.0\.[_a-zA-Z0-9]{1,20}\.[_a-zA-Z0-9]{1,20}\.SET"),change: "ne", ack:true}, async (obj) => { let value = obj.state.val; let oldValue = obj.oldState.val; log("ChkOnNak: deviceId: "+ obj.id + " old=" + oldValue+" -> " + value + " ack="+obj.state.ack); });
-
Schade, das keiner eine Idee hat.
Ich hatte vermutet, dass dieses Problem (das Nichtwissen, ob ein Aktor geschaltet hat) auch für andere Anlagen von Interesse ist.
Evt. ist die Lösung aber auch zu einfach und ich sehe es einfach nicht. ( kommt schon mal vor) -
@andreas_n Du willst alle Datenpunkte wissen, welche nicht bestätigt sind? Zu welchem Zeitpunkt?
Wenn man die jetzt einmal abholt, dann könnte es ja sein, dass ein Datenpunkt in der Liste 10ms später doch bestätigt ist.
Ich würde kritische Datenpunkte einfach überwachen und dann mit einem Timeout schauen, ob der Wert nach x Sekunden bestätigt wurde.
Bei einer generellen Funktion über alle Datenpunkte im System sehe ich keinen Anwendungsfall.
-
@andreas_n sagte: Datenpunkte ermitteln, die nicht zurück auf true gesetzt worden sind.
Versuche es mal so:
Wenn ständig zu viele Trigger kurz hintereinander auslösen, kann es passieren, dass der Timeout nie abläuft. Außerdem ist nicht garantiert, dass 500 ms ausreichen, um die Reaktion der Adapter zu überprüfen.
@haus-automatisierung sagte in Objekte ohne ACK ermitteln:
kritische Datenpunkte einfach überwachen und dann mit einem Timeout schauen, ob der Wert nach x Sekunden bestätigt wurde.
Das ist die bessere Vorgehensweise.
-
@andreas_n said in Objekte ohne ACK ermitteln:
Wird ein device schalte, dann wird das ACK-Bit zunächst auf false und später dann vom Adapter zurück auf true gesetzt. Ich nun möchte die Datenpunkte ermitteln, die nicht zurück auf true gesetzt worden sind.
Bitte bei diesem Ansatz nicht vergessen, dass eine Bestätigung durch den Adapter nicjht zwingend ist - wobei im Beispiel des Schalters wohl eine Feedback vom Gerät und damit ein ACK gegeben sein sollte. Aber insbesondere States mit der role Button haben keinen lesbaren Wert und müssen vom Adapter nicht zwingend bestätigt werden. Da diese oft auch nicht einem zurückgemeldeten Wert des Gerätes entsprechen kann es suchaus sein, dass hier ein sck=false normal ist.