NEWS
Aquara P1 Motion Sensor, Datenpunkt "no_motion" fehlt
-
Hallo Gemeinde,
Ich hoffe ich bin hier richtig!
Ich habe mir 3 Stück Aquara P1 Motion Sensoren gekauft wegen des Lichtsensors.
Beim Einbinden per Zigbee Adapter (mittels Sonoff Zigbee 3.0 Stick) ist mir dann aufgefallen, dass sie im Gegensatz zu den "Vorgänger-Modellen" keinen Time of last motion Datenpunkt mehr anbieten. (Dieser setzt sich bei meinen anderen Sensoren automatisch auf 0 zurück und zählt solange in 5 oder 10 Sekunden Schritten nach oben bis die nächste Bewegung erkannt wird. Dieser Datenpunkt macht es sehr einfach Automationen zu erstellen.
laut diesen beiden Links:
unterstützten beide die Option no_occupancy_since *
(Sends a message the last time occupancy (occupancy: true) was detected. When setting this for example to [10, 60] a {"no_occupancy_since": 10} will be send after 10 seconds and a {"no_occupancy_since": 60} after 60 seconds. The value must be a list of [object Object].:*)
Ich habe leider keine wirkliche Ahnung an was es scheitert, vermute aber dass der Zigbee Adapter für das Neue Modell den Datenpunkt nicht erstellt.
(A) Kann mir jemand sagen, ob ich eventuell mit ein paar Zeilen Code im Adapter selbst etwas ändern kann?
(B) Alternativ müsste ich als Workarround dann wohl ein Javascript schreiben welches einen Time since last Motion Datenpunkt bei Änderung des Occupancy Datenpunktes erstellt und aktualisiert.
(C) Besser wäre es jedoch, wenn der Datenpunkt vom Zigbee Adapter direkt geliefert würde. Richtig? <- Ist ein Issue im Zigbee Adapter erstellen sinnvoll?
-
um die Begriffe noch zu präzisieren:
-
der Datenpunkt in der Objektstruktur heisst "no_motion"
-
die Zigbee Option heisst "no_occupancy_since"
-
in der Zigbee-Adapter GUI heisst es "Time from last motion"
-
-
Ich habe es jetzt mit einem Script gelöst, falls jemand auch den no_motion Datenpunkt benötigt!
Hinweis: ihr müsst einmalig im Objektbaum jedes einzelnen P1 den Datenpunkt "no_motion" mit Typ "number" anlegen.
Das Script aktualisiert diesen Datenpunkt dann bei Bewegung und zusätzlich im festen Intervall (zb 10 Sekunden).Zusätzlich wird no_motion dann auch automatisch in der Zigbee GUI des Bewegungsmelders angezeigt!
////////////////////////////////////////////////////// Bei Scriptstart Subscription-Objekte festlegen ////////////////////////////////////////////////////// var object_P1_occupancy = $('channel[state.id=zigbee.1.54ef*.occupancy]'); //MEINE P1 Sensoren haben eine Zigbee ID welche mit 54ef beginnt, ggf. anpassen! //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// function Schleife() { object_P1_occupancy.each //Alle Aquara P1 durchgehen ( function (id, i) { var occupancy = getState(id).val; //occupancy Wert ermitteln (true/false) var occupancy_changezeitpunkt = getState(id).lc; //Zeitstempel letzte Änderung var aktuelles_Datum = new Date().getTime(); if (occupancy == false) { //wenn Occupancy auf false steht, ermitteln seit wann var parentDeviceId = id.split(".").slice(0,-1).join("."); var differenz = Math.round(((aktuelles_Datum - occupancy_changezeitpunkt)/1000)); //Differenz in Sekunden setState(parentDeviceId + '.no_motion', differenz, true); } if (occupancy == true) { //wenn occupancy auf true -> last Motion auf 0 setzen var parentDeviceId = id.split(".").slice(0,-1).join("."); setState(parentDeviceId + '.no_motion', 0, true); } } ); }; //////// Trigger //////// object_P1_occupancy.on(function() { // bei Zustandänderung occupancy (true/false) Schleife(); }); schedule("*/10 * * * * *", function () { // jede 10 Sekunden ("* * * * *"") Schleife(); });
-
@kaskadeur111 sagte in Aquara P1 Motion Sensor, Datenpunkt "no_motion" fehlt:
Hinweis: ihr müsst einmalig im Objektbaum jedes einzelnen P1 den Datenpunkt "no_motion" mit Typ "number" anlegen.
das ist suboptimal.. was du da machst.. der objectbaum des adapter gehört dem adapter.. da sollstest du nicht rumpfuschen
erstelle eher ein allias dafür und itteriere da drüber..damit bist du auch unabhängiger und musst nicht auf 54ef abfragen
-
@arteck Hi! Prinzipiell hast du recht mit dem Script im Adapter Ordner. Aber die Vorteile (identische Datenpunktnamen no_motion, Anzeige des Datenpunkts im Zigbee Adapter und Identische Pfade der Datenpunkte bei 3 verschiedenen Aquara Motion Sensor Typen) wiegen hier (in diesem speziellen Fall) das Risiko auf (finde ich).
Ich habe daher bewusst den Datenpunkt nicht per Script anlegen lassen, sondern nur aktualisiert, um ein späteres Update des Zigbee Adapters (wo es den Datenpunkt dann evtl irgendwann mal gibt) nicht zu behindern.
Den Alias Adapter zu verwenden hat für mich zu viele Nachteile.
Was passiert im schlimmsten Falle beim Update des Zigbee Adapters? Der no_motion Datenpunkt könnte Readonly sein und ich hab n paar Fehler im Protokoll. Damit kann ich leben. Ich müsste jetzt alle scripte für diese beiden P1 überarbeiten wenn ich den Alias Adapter verwende.
Das würde ich nur tun, wenn du mir einen guten Grund nennen könntest, den DP nicht direkt im Objektbaum des Adapters anzulegen.
Ein "man tut das einfach nicht" reicht mir da jetzt in diesem speziellen Fall nicht.
-
@kaskadeur111 sagte in Aquara P1 Motion Sensor, Datenpunkt "no_motion" fehlt:
Was passiert im schlimmsten Falle beim Update des Zigbee Adapters?
der von dir angelegte Datenpunkt wird gelöscht.. mehr nicht..
es ist dein System.. du musst es pflegen.. fängst an wild Datenpunkte im Adaptern zu erstellen weil "es ist bequemer"..ist es dein Bier
-
@arteck Na dann passts ja. Genau damit rechne ich. Und im Falle eines Updates des Zigbee Adapters kann ich einfach mein Script deaktivieren (falls nicht mehr von Nöten), oder die 2 DP wieder anlegen.
Demnach ist diese Lösung für mich optimal und nicht suboptimal.
Jetzt erstmal n Bier
Cheers!