NEWS
Zählen eines Zustandes
-
@chris-1 sagte: dass sie von angehängten Blöcken in aktuallisiertem Status verwendet werden könnte?
Die angehängten Blöcke werden nur bei Skriptstart ausgeführt und sind danach nicht mehr erreichbar.
Javascript arbeitet nicht zyklisch, sondern Ereignis gesteuert. Da ist Umdenken erforderlich - ich hatte damit anfangs auch Probleme. -
@chris-1 sagte: dass sie von angehängten Blöcken in aktuallisiertem Status verwendet werden könnte?
Die angehängten Blöcke werden nur bei Skriptstart ausgeführt und sind danach nicht mehr erreichbar.
Javascript arbeitet nicht zyklisch, sondern Ereignis gesteuert. Da ist Umdenken erforderlich - ich hatte damit anfangs auch Probleme. -
@paul53 said in Zählen eines Zustandes:
Der Unterschied ist: Ablauf bei Skriptstart - Operationen innerhalb einer Callback-Funktion, die durch den Trigger aufgerufen wird.
Interessierte Nachfrage: Wie würde ich die Variable, die innerhalb der CallbackFuktion durch Trigger geändert wurde, so "setzen" (wie in Trigger Funktion), dass sie von angehängten Blöcken in aktuallisiertem Status verwendet werden könnte?
@chris-1
Nochmal: Das hat mit der Variablen oder deren "setzen" nichts zu tun.
Alles was außerhalb des Triggers (oder besser: dessen Callback) notiert ist, wird unmittelbar nach dem Starten des Scriptes ausgeführt.
Löse Dich hier von Scope und solchen Dingen.
ioBroker arbeitet hier Eventgesteuert. Was Du mit den Variablen anstellen möchtest (Werte reinschreiben, auslesen und wegschreiben) muss innerhalb des Triggers erfolgen. -
@chris-1
Nochmal: Das hat mit der Variablen oder deren "setzen" nichts zu tun.
Alles was außerhalb des Triggers (oder besser: dessen Callback) notiert ist, wird unmittelbar nach dem Starten des Scriptes ausgeführt.
Löse Dich hier von Scope und solchen Dingen.
ioBroker arbeitet hier Eventgesteuert. Was Du mit den Variablen anstellen möchtest (Werte reinschreiben, auslesen und wegschreiben) muss innerhalb des Triggers erfolgen.@codierknecht Nochmal für's Verständnis....
Bedeutet dies im (nun vermuteten) Umkehrschluss,
dass Blockly/Java mit Abarbeitung des ersten bearbeiteten Triggers das Skript beendet? -
@codierknecht Nochmal für's Verständnis....
Bedeutet dies im (nun vermuteten) Umkehrschluss,
dass Blockly/Java mit Abarbeitung des ersten bearbeiteten Triggers das Skript beendet?@chris-1 sagte in Zählen eines Zustandes:
@codierknecht Nochmal für's Verständnis....
Bedeutet dies im (nun vermuteten) Umkehrschluss,
dass Blockly/Java mit Abarbeitung des ersten bearbeiteten Triggers das Skript beendet?ja!
und dann auf den nächsten Event wartet (trigger), und wieder das Skript einmal durcharbeitet -
@chris-1 sagte in Zählen eines Zustandes:
@codierknecht Nochmal für's Verständnis....
Bedeutet dies im (nun vermuteten) Umkehrschluss,
dass Blockly/Java mit Abarbeitung des ersten bearbeiteten Triggers das Skript beendet?ja!
und dann auf den nächsten Event wartet (trigger), und wieder das Skript einmal durcharbeitet -
@chris-1 sagte in Zählen eines Zustandes:
@codierknecht Nochmal für's Verständnis....
Bedeutet dies im (nun vermuteten) Umkehrschluss,
dass Blockly/Java mit Abarbeitung des ersten bearbeiteten Triggers das Skript beendet?ja!
und dann auf den nächsten Event wartet (trigger), und wieder das Skript einmal durcharbeitet -
@homoran sagte: auf den nächsten Event wartet (trigger), und wieder das Skript einmal durcharbeitet
... und wieder die Callback-Funktion einmal durchläuft.
-
@paul53 Also viele viele "kurze" Skripts statt wenigen mit allen möglichen Fallunterscheidungen
Merk ich mir@chris-1 sagte in Zählen eines Zustandes:
@paul53 Also viele viele "kurze" Skripts statt wenigen mit allen möglichen Fallunterscheidungen
nein!
diese Fallunterscheidungen müssen aber als LOGIK (blaue Blöcke) innerhalb des Triggerbausteins (rot) liegen.
@paul53 wird das wieder korrekt übersetzen ;-) -
@codierknecht Nochmal für's Verständnis....
Bedeutet dies im (nun vermuteten) Umkehrschluss,
dass Blockly/Java mit Abarbeitung des ersten bearbeiteten Triggers das Skript beendet?@chris-1
Ich bin ja nun wirklich nicht der Experte, aber AFAIK:
Das Script selbst wird nur 1x gestartet und registriert dabei eine Ereignisbehandlung - den Trigger.
Das ist eine Callback-Function, die jedes Mal beim Eintreten des Ereignisses aufgerufen wird.
Darum werden Variablen auch üblicherweise außerhalb des Triggers initialisiert ... braucht ja nur 1x gemacht werden.
Aus dem gleichen Grund wird auch nicht das in die DP geschrieben was Du erwartest.
Was bei Dir passiert ist:
Script startet ...
1.) Variable initialisieren
2.) Ereignisbehandlung registrieren
3.) Werte der Variablen in die DP schreiben
... Scriptverarbeitung abgeschlossen.
Zum Zeitpunkt 3.) hat der Trigger noch nicht gefeuert und der Code darin wurde noch gar nicht ausgeführt. -
@paul53 Also viele viele "kurze" Skripts statt wenigen mit allen möglichen Fallunterscheidungen
Merk ich mir -
@chris-1 sagte in Zählen eines Zustandes:
@paul53 Also viele viele "kurze" Skripts statt wenigen mit allen möglichen Fallunterscheidungen
nein!
diese Fallunterscheidungen müssen aber als LOGIK (blaue Blöcke) innerhalb des Triggerbausteins (rot) liegen.
@paul53 wird das wieder korrekt übersetzen ;-) -
@chris-1
Ich bin ja nun wirklich nicht der Experte, aber AFAIK:
Das Script selbst wird nur 1x gestartet und registriert dabei eine Ereignisbehandlung - den Trigger.
Das ist eine Callback-Function, die jedes Mal beim Eintreten des Ereignisses aufgerufen wird.
Darum werden Variablen auch üblicherweise außerhalb des Triggers initialisiert ... braucht ja nur 1x gemacht werden.
Aus dem gleichen Grund wird auch nicht das in die DP geschrieben was Du erwartest.
Was bei Dir passiert ist:
Script startet ...
1.) Variable initialisieren
2.) Ereignisbehandlung registrieren
3.) Werte der Variablen in die DP schreiben
... Scriptverarbeitung abgeschlossen.
Zum Zeitpunkt 3.) hat der Trigger noch nicht gefeuert und der Code darin wurde noch gar nicht ausgeführt.@codierknecht Was ist DP?
-
@codierknecht Was ist DP?
-
@chris-1
Ich bin ja nun wirklich nicht der Experte, aber AFAIK:
Das Script selbst wird nur 1x gestartet und registriert dabei eine Ereignisbehandlung - den Trigger.
Das ist eine Callback-Function, die jedes Mal beim Eintreten des Ereignisses aufgerufen wird.
Darum werden Variablen auch üblicherweise außerhalb des Triggers initialisiert ... braucht ja nur 1x gemacht werden.
Aus dem gleichen Grund wird auch nicht das in die DP geschrieben was Du erwartest.
Was bei Dir passiert ist:
Script startet ...
1.) Variable initialisieren
2.) Ereignisbehandlung registrieren
3.) Werte der Variablen in die DP schreiben
... Scriptverarbeitung abgeschlossen.
Zum Zeitpunkt 3.) hat der Trigger noch nicht gefeuert und der Code darin wurde noch gar nicht ausgeführt.@codierknecht said in Zählen eines Zustandes:
Zum Zeitpunkt 3.) hat der Trigger noch nicht gefeuert und der Code darin wurde noch gar nicht ausgeführt.
Das irritiert mich jetzt - ist was für morgen
-
@homoran Ich fange an, den Ansatz zu verstehen.
Ich greife einen Trigger ab und verändere daraufhin A
Ich arbeite nun nicht in dem Skript mit A weiter,
sondern erstelle ein seperates Skript welches A als Trigger hatSeh ich das so richtig?
@chris-1 sagte in Zählen eines Zustandes:
Seh ich das so richtig?
nein!
Du kannst alles in einem Skript machen.
nur nicht außerhalb des Triggerbausteins.@Codierknecht hat es korrekt gesagt.
Dein Skript meldet beim Start wegen deines ausgewählten Datenpunktes (DP) im Trigger beim iobroker Controller an, dass es von diesem über jede Änderung dieses DP informiert werden will.
DANN startet dein Trigger alles, was innerhalb des Triggerbausteins an Befehlen steht -
@paul53 Also viele viele "kurze" Skripts statt wenigen mit allen möglichen Fallunterscheidungen
Merk ich mir@chris-1 sagte in Zählen eines Zustandes:
Also viele viele "kurze" Skripts statt wenigen mit allen möglichen Fallunterscheidungen
Nicht unbedingt (eher gar nicht).
Du musst in Ereignissen denken. Man braucht 'ne Weile, bis man sich daran gewöhnt hat.
Der Dreh- und Angelpunkt ist eigentlich immer, den richtigen Trigger zu definieren. Der legt fest, zu welchem Zeitpunkt das Ganze überhaupt loslegt. Und das ist oft gar nicht so einfach.
Der Rest kommt dann innerhalb ... -
@codierknecht said in Zählen eines Zustandes:
Zum Zeitpunkt 3.) hat der Trigger noch nicht gefeuert und der Code darin wurde noch gar nicht ausgeführt.
Das irritiert mich jetzt - ist was für morgen
@chris-1 sagte in Zählen eines Zustandes:
Das irritiert mich jetzt
ich glaube das ist aber der Knackpunkt für dein (fehlendes) Verständnis für Javascript
-
@chris-1 sagte in Zählen eines Zustandes:
Das irritiert mich jetzt
ich glaube das ist aber der Knackpunkt für dein (fehlendes) Verständnis für Javascript
-
@codierknecht said in Zählen eines Zustandes:
Zum Zeitpunkt 3.) hat der Trigger noch nicht gefeuert und der Code darin wurde noch gar nicht ausgeführt.
Das irritiert mich jetzt - ist was für morgen
@chris-1 sagte in Zählen eines Zustandes:
ist was für morgen
Vielleicht fällt uns bis dahin ja noch ein schöner Vergleich ein, an dem man event-driven-development irgendwie anschaulicher erklären kann :grin: