NEWS
[gelöst] Funktionsweise Trigger in Blockly
-
Hallo zusammen
irgendwie bringe ich meine Trigger jeweils zum laufen, bin mir aber nie sicher ob ich sie richtig einsetze.
Konkret:
-
Was ist der Unterschied von "wurde geändert" und "wurde aktualisiert"
-
Wozu ist "anerkannt ist egal/Update/Kommando"
Via Forensuche finde ich zwar einige Beiträge, da funktioniert meistens etwas nicht und dann ist die Lösung den Wert umzustellen aber richtig sauber erklärt weshalb wird es meist nicht. (oder ich habe es noch nicht gefunden…). Ebenfalls in der Anleitung sind die obigen Punkte nicht genauer erklärt.
Besten Dank also wenn mir jemand diese Grundlage mal erklären könnte.
-
-
Ich versuche es mal.
Wurde geändert: der Wert des States hat sich geändert
wurde aktualisiert: ein neues Datentelegramm ist angekommen, der Wert hat sich geändert oder nicht.
Anerkannt bezieht sich auf den ack flag, zu erkennen an der Farbe des Wertes unter Objekte. Meistens nimmt man egal, was die anderen beiden exakt bedeuten weiß ich auch nicht.
Gruß Rainer
-
wurde aktualisiert: ein neues Datentelegramm ist angekommen, der Wert hat sich geändert oder nicht. `
ich nehme an das "Datentelegramm" ist ein Mechanismus im Hintergrund. Wie häufig werde denn solche gesendet?Ich überlege mir grade, ob es dann nicht besser wäre auf "wurde aktualisiert" zu triggern? Vorteil: man könnte kein Ereignis verpassen (wegen irgendeiner Systemstörung) da das Programm beim nächsten Update wieder Schritt fassen würde. Allerdings würde somit das Programm immer wieder abgearbeitet und wenn diese Aktualisierungen schnell kommen zu einer hohen Systemauslastung führen?
-
ich nehme an das "Datentelegramm" ist ein Mechanismus im Hintergrund. `
Ähm, ja!Die Geräte/Programme senden irgendwann ihren Status das kann je nach Gerät sekündlich oder alle 24h sein. Kommt drauf an was du für Geräte hast und wie die konfiguriert sind, u d auf was du triggerst.
Gruß Rainer
-
Ich überlege mir grade, ob es dann nicht besser wäre auf "wurde aktualisiert" zu triggern? Vorteil: man könnte kein Ereignis verpassen (wegen irgendeiner Systemstörung) da das Programm beim nächsten Update wieder Schritt fassen würde. Allerdings würde somit das Programm immer wieder abgearbeitet und wenn diese Aktualisierungen schnell kommen zu einer hohen Systemauslastung führen?
Das sieht du so schon richtig kommt halt drauf an auf was für Datenströme du triggerst. Ich habe mehrere solche scripte verbaut und eigentlich kein Problem mit Auslastung.
Größtes Problem wird meist das unnötige feuern von Befehlen zB zur Homematic wodurch der duty cycle gesprengt wird.
Kommt also auch auf die Situation an was du mit dem Script machen möchtest
–-----------------------
Send from mobile device
-
Ich überlege mir grade, ob es dann nicht besser wäre auf "wurde aktualisiert" zu triggern? Vorteil: man könnte kein Ereignis verpassen (wegen irgendeiner Systemstörung) da das Programm beim nächsten Update wieder Schritt fassen würde. Allerdings würde somit das Programm immer wieder abgearbeitet und wenn diese Aktualisierungen schnell kommen zu einer hohen Systemauslastung führen? `
Je mehr Aktoren desto mehr Aktualisierungen.
Immer auf "wurde aktualisiert" reagieren macht nicht viel Sinn.
Du rennst ja auch nicht jede Minute zur Tür um nachzuschauen das keiner geklingelt hat
Auf "wurde aktualisiert" zu triggern macht nur manchmal Sinn.
Z.B. Bei manchen Tastern oder Bewegungsmelder.
Da gibt es welche die ihren Status "true" nicht wieder ändern sondern nur aktualisieren.
Grüße
-
Danke allen für die Antworten!
Ich werde es also in Zukunft so handhaben:
-
im Normalfall "wurde geändert" (besser, Ressourcen-schonender)
-
wenn dies nicht geht (da Status bei "speziellen" Schaltern o. Meldern nur aktualisiert wird) auf "wurde aktualisiert"
Gruss
-
-
Nicht ganz.
Das ist schon besser, aber richtig ressourcenschonend wir des wenn du zusätzlich vor der Ausführung (sofern es sich um die Ansteuerung von Funkkomponenten handelt) erst einmal überprüfst ob eine Aktion überhaupt notwendig ist, oder ob sich das Gerät bereits in dem gewünschten zustand befindet.
Gruß
Rainer
-
Puuh, das ist schwer zu erklären, aber …
Ich habe z.B. eine Dimmer-Fernbedienung (Philips Hue). Wenn ich eine Taste drücke, wird ein fester Zahlencode gemeldet, den ich verarbeite. Wird eine Taste festgehalten, wird ein (anderer) fester Zahlencode alle x ms gesendet, den ich verarbeiten muß.
Dafür brauche ich "wurde aktualisiert", weil sich der Zhalencode nicht ändert, aber immer neu übertragen wird.
Ich habe ein Zimmer mit mehreren Schaltern/Lichtern/etc.
Es gibt einen Script, der schaltet in dem Zimmer alles aus, also setzt alle Datenpunkte für Lichter/Schalter/etc. auf "false" oder 0.
Daran hängen dann Scripte, die die Geräte schalten. Bei Funk-Verbindungen kenne ich den Schaltzustand des Gerätes nicht, da will ich immer AUS senden, da benötige ich "wurde aktualisiert".
Bei WLAN- oder ZigBee-Steckdosen kenne ich den Schaltzustand (die melden zurück!) und brauche nur bei Änderungen senden "wurde geändert".
Man kann so einen ioBroker auch überlasten, wenn man da zuviel "wurde aktualisiert" verwendet.
(Beispiel: Alexa, Licht an -> WLAN-Befehl an Schalter "ON", der meldet "ON" zurück, was als aktualisierter Status "ON" gespeichert wird. Der aktualisierte Status wird dem Zustands-Datenpunkt "Licht an" zugewiesen, weil man ja auch ein manuelles Schalten des Lichtschalters nachhalten will, und der Script hat wieder ein "wurde aktualisiert"-Ereignis... das eskaliert sehr schnell und sollte wohl überdacht sein.
Ich habe da meine eigenen Fehler gelernt...
-
Das Thema ist schon etwas älter, aber die Erklärung für "anerkannt ist Update und Befehl" , kann ich die trotzdem irgendwo finden?
-
@haselchen sagte:
Erklärung für "anerkannt ist Update und Befehl" , kann ich die trotzdem irgendwo finden?
Siehe unter Befehle und Status (Status = Update).