NEWS
Blockly-Ersatz für BWM "Time No Motion"?
-
hatte ich auch vermutet/probiert. Und Nutze die DP-Werte 0/1/2 u.a. um auf der VIS mir das zu visualisieren.
Funktioniert aber leider praktisch nicht:
Schaue ich mir manuell den Zeitstempel an, ist er älter als 5 Minuten:
Trotzdem wird durch das Blockly der Status schon fast 10 Sekündlich verändert:
-
@dieter_p 30000 ms ist ja auch größer als 10 Sekunden
Deine Bedingung mal genauer anschauen
EDIT: Oder ich verstehe die Ansteuerung nicht (was ist 0, 1, 2?). Es könnte auch daran liegen, dass der Sonst-Fall ausgeführt wird obwohl die erste Bedingung zutrifft. Warum arbeitest Du mit zwei getrennten "falls"-Blöcken?
Und: "Aktuelle Zeit als Millisekunden" gibt die den "Millisekunden-Teil" der aktuellen Zeit. Also das ist nie größer als 999
-
@dieter_p sagte: Funktioniert aber leider praktisch nicht:
Nicht "Millisekunden", sondern "Datum-Objekt":
Unter welchen Bedingungen soll der DP "BWM_Flur" die Werte 0/1/2 annehmen?
-
Danke. also so?
@paul53 said in Blockly-Ersatz für BWM "Time No Motion"?:
Unter welchen Bedingungen soll der DP "BWM_Flur" die Werte 0/1/2 annehmen?
Status 0 Letzte Bewegung vor weniger als 5 Minuten
Status 1 Letzte Bewegung vor weniger als 10 Minuten
Status 2 Letzte Bewegung > 10 Minuten
-
@dieter_p sagte: also so?
Ist "BWM_Flur" ein Adapter-Datenpunkt? Denn du verwendest steuere.
Falls ja, dann besser so:Du schreibst den DP alle 10 s, auch dann, wenn er sich nicht ändern soll.
-
@paul53 said in Blockly-Ersatz für BWM "Time No Motion"?:
Ist "BWM_Flur" ein Adapter-Datenpunkt? Denn du verwendest steuere.
Nein, ist ein manuell angelegter Datenpunkt unter 0_Userdata
-
@dieter_p sagte: manuell angelegter Datenpunkt unter 0_Userdata
Dann verwende den Block "aktualisiere".
-
Danke Euch. Funktioniert
-
@dieter_p funktionieren tut es, aber was genau willst du erreichen ? Du hast da dauerhaft alle 10 Sekunden einen heartbeat der 90% der Zeit nichts macht.
Erklär doch mal was du genau haben willst, dann lässt sich das sicherlich einfacher und besser lösen.
A.
-
@asgothian said in Blockly-Ersatz für BWM "Time No Motion"?:
Erklär doch mal was du genau haben willst, dann lässt sich das sicherlich einfacher und besser lösen.
Gerne, ich mag überhaupt keine Zeitschleifen und wenn das besser geht
Dieser Fall ist einfach nur auf der VIS eine Darstellung um Rückschlüsse zu ziehen (manuell) wann wo was in welchem Raum los ist. Mag sein, dass ich auf diese Stati mal etwas weiteres definieren/automatisien möchte wie z.B. <5Min keiner im Raum -> Dreh die Lüftung hoch zB aber das ist aktuell nicht der Fall.
Mit "Time No Motion" hatte ich hier eine für mich einfach auswertbare Option.
-
@dieter_p sagte in Blockly-Ersatz für BWM "Time No Motion"?:
Gerne, ich mag überhaupt keine Zeitschleifen und wenn das besser geht
Besser und besser.
Diese Methode ist halt Ressurcenverschwendung, da du pro BWM einen Heartbeat hat, der letztendlich nur in verhaeltnismaessig seltenen Fällen wirklich was tut. Selbst wenn der BWM alle 20 Minuten auslöst werden nur bei ca. 0.16% der Heartbeats irgendwelche Aktionen durchführt. Das ist ineffektiv.
Wie du schon merkst bin ich absolut kein Freund von Heartbeats - insbesondere wenn man gleich mehrere davon laufen lässt. Insbesondere wenn du das obige Skript für (z.Bsp.) 5 BWM in Kopie einsetzt geht zu festen Zeiten die Systemlast hoch weil gleich 5x das gleiche ausgeführt wird, "gleichzeitig". (nicht wirklich gleichzeitig, aber zumindest fast)
Letztendlich ist der Wegfall des
Time No Motion
DP auf genau diesen Umstand zurück zu führen. Auch wenn ich den nicht aktiv beseitigt habe - nachdem der in den Zigbee-Herdsman-Converters wegen Ressourcenverschwendung entfallen ist habe ich mich aktiv dagegen entschieden diesen im Zigbee-Adapter wieder aufstehen zu lassen.Auch wenn Du Zeitschleifen nicht magst ist das folgende Konstrukt deutlich besser, angehängt an den Trigger auf den BWM:
Ja, das ist eine Zeitschleife, aber dafür wird die nur aktiv wenn der BWM wirklich ausloest.
A.
-
-
Danke Euch. Funktioniert und hab nun alle umgebaut.
Darf ich Euch mal etwas dazu fragen was mir noch nie klar war.
Solche Funktionen wie "Zyklus", timouts wie "timeout" und Variablen wie "CNT".
Sind die global im IOB gültig? D.H. ich kann von jedem Blockly darauf zugreifen und ändern? Oder gelten solche Dinge immer nur für das eine Blockly auf dem sie angewendet sind und alles was ich überfreifend nutzen möchte muß ich über einen angelegten Datenpunkt führen? Letzteres war meine bisherige Herangehensweise.
Danke!
-
@dieter_p sagte: Sind die global im IOB gültig?
Funktionen und Variablen sind nur innerhalb des Skripts gültig. Deshalb kann man in einem anderen Skript die gleichen Bezeichner wählen, ohne dass sie sich gegenseitig in die Quere kommen.
EDIT: 4 Variablenbezeichner sind global in ioBroker. -
@dieter_p sagte in Blockly-Ersatz für BWM "Time No Motion"?:
etzteres war meine bisherige Herangehensweise.
Das ist die korrekte Herangehensweise.
A.
Nachtrag: Das soll nicht heissen dass es nicht auch anders geht - das sind aber meiner Meinung nach Sonderlösungen mit ihren eigenen Eigenheiten, Vorteilen und Nachteilen. Im Standard sollte es heissen: Skript-Intern: Variablen. Skript-übergreifend; Datenpunkte.
-
@asgothian said in Blockly-Ersatz für BWM "Time No Motion"?:
Skript-Intern: Variablen. Skript-übergreifend; Datenpunkte
Das hoffe selbst ich behalten zu können. Danke