NEWS
Offensichtlich grundlegend was nicht verstanden
-
Hallo,
ich hatte eigentlich gedacht, dass ich einen Countdown zum Abschalten der Pool Pumpe mit links mittels Blocky gelöst bekomme, leider scheine ich doch grundlegend irgendwas bzgl Blocky nicht zu verstehen.
Ich habe per Hand unter 0_userdata.0 einen Datenpunkt vom Typ Zahl erstellt und erstmal im HABpanel einen Schieberegler angelegt, der diesen Datenpunkt mit einem Wert von 0-180 befüllen kann. Das funktioniert auch soweit.
Ich habe dann folgendes Blocky Programm zusammen geklickt, das jede Minute aufgerufen wird:
- Wenn der Wert größer 0 ist zähle ihn ein runter
- Wenn der Wert dann 0 ist schalte die Pumpe aus
Aus mit unerklärlichen Gründen funktioniert es aber nicht. Es werden zwar die verbleibenden Minuten runter gezählt, aber sobald ich 0 erreiche erfolgt schon nicht mehr der 2. debug output im Programm. Hier die Log Ausgabe:
Wird der ganze Falls-Block terminiert sobald die Falls Bedingung nicht mehr zutrifft? Ich hatte das "falls ... machen" als "if ... then" aufgefasst.
Oder habe ich hier etwas anderes falsch gemacht?Vielen Danke schon einmal für eure Hilfe
-
@bubiman said in Offensichtlich grundlegend was nicht verstanden:
aber sobald ich 0 erreiche erfolgt schon nicht mehr der 2. debug output im Programm
Da Du auf "pool = wahr" prüfst, das aber nicht setzt, ist die Bedingung nie wahr.
Grundsätzlich würde ich das so umbauen, dass nicht jede Minute triggerst sondern bei Aktualisierung von "pool_aus_in_min". Allerdings musst Du dann aufpassen, dass Du keine Endlosschleife baust, da "pool_aus_in_min" ja in dem Script geändert wird.
-
@bubiman sagte: habe ich hier etwas anderes falsch gemacht?
"steuere" arbeitet asynchron, ist also noch nicht fertig, wenn der Wert wieder eingelesen wird. Deshalb verwendet man Variablen, etwa so:
-
@paul53 sagte in Offensichtlich grundlegend was nicht verstanden:
"steuere" arbeitet asynchron, ist also noch nicht fertig, wenn der Wert wieder eingelesen wird. Deshalb verwendet man Variablen
Genau, oder man macht die Abfrage anders. 'Falls Wert > 1 dann Wert -1 / sonst Wert = 0 und ausschalten'. Da spart man sich die Variable und eine zweite Abfrage.
-
@dr-bakterius @paul53
Danke für euren Hinweis, ich weiß nicht wann ... falls überhaupt ... ich darauf gekommen wäre, dass das asynchron läuft. Habe es jetzt umgeschrieben mit Variable und so funktioniert es auch -
"Pool" ist in dem Falle die HS110 Steckdose, in der die Poolpumpe steckt. Damit wollte ich prüfen ob sie überhaupt aktuell eingeschaltet ist.
Habe es jetzt wie von @paul53 beschrieben geändert und nun läuft es.