NEWS
Festellen, ob Ereignis von extern gekommen ist
-
hallo,
ich bin gerade dabei, mich in iobroker einzuarbeiten. Mein erstes Projektchen ist, eine Schaltbare Steckdose (Hue), über die die Umwälzpumpe geschaltet ist, für einen bestimmten Zeitraum (5, 10, 30 Minuten) über entsprechende Buttons in einer vis-Oberfläche zu schalten. Diese schaltbare Steckdose kann aber auch über die Hue-App ein- oder ausgeschaltet werden. Gibt es irgendeine Möglichkeit, festzustellen, ob das Schaltereignis über die vis-Buttons oder über die Hue-Oberfläche ausgelöst wurde?Danke und Gruß
Bernhard -
@steinheber Ich selbst habe keine HUE Steckdosen, sondern verwende Shellies. Insofern kann ich Dir nur allgemein antworten. Es ist grundsätzlich immer hilfreich, wenn Du mehr Infos - welche Datenpunkte, wie Du HUE aus dem iobroker schaltest usw. gibst.
Aber allgemein. Normalerweise sind die Datenpunkte zum Schalten und die den Zustand beschreiben unterschiedlich. Das heißt, wenn sich der Zustandsdatenpunkt geändert hat und der Zeitstempel des Kommando-Datenpunktes weit auseinander liegt, dann wurde extern geschaltet.
Falls der gleiche Datenpunkt zum Schalten und für den Zustand verwendet wird, kann man es am ACK Flag festmachen, also ob ein Wert bestätigt oder unbestätigt geändert wurde. Wenn unbestätigt, dann kommt es von VIS - wenn bestätigt, dann immer vom Adapter - also von der Lampe. Das heißt nun ebenfalls, wenn der Datenpunkt sich nie unbestätigt geändert hat, das dann immer extern geschaltet wurde. In der Regel kannst Du über Deine Logikmaschine auswählen, welche Art von Trigger (bestätigt, unbestätigt oder egal) Du selektieren willst.
-
@mickym, vielen Dank für Deine Erklärung, mit der ich - leider - noch nicht wirklich zurecht komme. Nachfolgend ein Screenshot des Objektes, um das es geht:
Der einzige Datenpunkt, der sich durch das Schalten ändert ist "on". Ansonten ändert sich nichts. In diesem Screenshot sind auch die Timestamps sichtbar. Wenn ich die Steckdose über die App schalte, dann sind die Timestamps "Zeitstempel" und "Letzte Änderung" immer identisch - wenn ich die Schaltung über den Adapter mache sind sie unterschiedlich - meistens im Millisekundenbereich. Das wäre evtl. eine Merkmal, an dem man erkennen kann, ob extern oder über den Adapter geschaltet wurde.
Dass die Datenpunkte zum Schalten und die den Zustand beschreiben unterschiedlich sind, ist in meinem Fall vermutlich nicht gegeben.
Bzgl. ACK-Flag ist für mich die Frage, wie ich diesen abfragen kann - oder auch die Timestamps. Das weiß ich leider nicht - vielleicht kannst Du mir hier noch nen Tipp geben. In der Oberfläche wird das ACK-Flag (im Screenshot "Bestätigt") aber immer mit "true" angezeigt, egal ob ich den Wert über Adapter oder die App ändere. Wenn ich das richtig verstehe, widerspricht das Deiner Aussage, dass dann immer extern geschaltet wurde.
Aber der Tipp mit der Art von Trigger war super. Damit kann ich dann tatsächlich die Ausführung von Triggern steuern.
Gruß
Bernhard -
@steinheber sagte: In der Oberfläche wird das ACK-Flag (im Screenshot "Bestätigt") aber immer mit "true" angezeigt
Ja, weil es nur kurz auf false geht und dann vom Adapter auf true gesetzt (bestätigt) wird.
Man kann auf ack = false triggern. In dem Fall kann die Aktualisierung nur aus ioBroker (Vis, Admin, Javascript, ...) kommen.EDIT: Im folgendem Blockly-Beispiel wird die Tatsache geutzt, dass die zeitliche Differenz zwischen Befehl und Bestätigung nur kurz ist:
-
Ok - ich verabschiede mich hier erst mal. Mit @paul53 bist Du ja in guten Händen. Wenn Du es mit node-red umsetzen willst, dann melde Dich einfach noch mal