NEWS
Zweiter Zeitplan in Blockly wird nicht ausgeführt
-
Soderle,
ich hab jetzt mal mit Bauklötze gespielt.
Vorab, gestern Abend ist mir noch die Idee gekommen, das ganze mit Variablen für die Temperaturlimits aufzubauen.
Da war die Vorlage von @paul53 mein "Trigger"Grundsätzlich gibt es zwei Möglichkeiten, den Ablauf zu steuern:
A: Trigger über Zeit(-fenster)
B: Trigger über Temperatur
Die letzten Tage habe ich es über Trigger Zeit versucht und bin nicht weiter gekommen.
Ich habe mich jetzt für Trigger Temperatur entschieden und folgendes Blockly erzeugt, welches aktuell läuft:
Hier habe ich noch mal entgegen der Empfehlung, nur ein mal "steuere" zu verwenden, mich für zwei entschieden.
Gibt es einen Grund, warum man das nicht machen sollte?Alternativ dazu vorbereitet und strenger an die Bsp.-vorlage gehalten:
Ist jetzt mein zweiter Pfeil im Köcher und dazu noch die Frage für was der markierte Block notwendig ist, da ich den Sinn dafür nicht ganz verstehe:
Gruß
Breiti -
Zur ersten Frage: Nur einmal "steuere", weil das für den Compiler relativ aufwändig ist und sonst im Speicher zusätzlichen Platz benötigt. Es gibt dann halt 2 Einsprungadressen.
Zum markierten Bereich: Hier wird zusätzlich geprüft, ob überhaupt etwas zu senden ist. Wenn z.B. die Heizung bereits läuft, muss ich ihr nicht sagen dass sie sich bitte einschalten soll. Bei "aus" natürlich umgekehrt.
Stichwort "Funk-Hygiene". -
Danke für die schnelle Antwort.
Das macht dann natürlich Sinn mit "steuere" nur ein mal verwenden.
Und der Block für die Schalterabfrage ist mir jetzt auch klar.Gruß
Breiti -
@breiti_74 Die Arbeit gehört in drei Blöcke
- Block - Täglich EINMALIG Zeitgesteuert ausgeführt bei Sonnenaufgang: Temperaturlimits (Oben UND Unten) für den Tagbetrieb einstellen
- Block - Täglich EINMALIG Zeitgesteuert ausgeführt bei Sonnenuntergang: Temperaturlimits (Oben UND Unten) für den Nachtbetrieb einstellen
- Block - Ausgeführt bei Temperaturänderung: Arbeiten mit den entsprechend Block 1 bzw. 2 eingestellten Limits ...
-
@martinp
Danke für diese Möglichkeit.
Eine Verständnisfrage dazu.
Die beiden Astro sind ja Trigger, heißt also wenn das Script gestartet wurde, werden die dann jedes mal bei Ereignisänderung (Sonnenauf- bzw. -untergang) aktiv oder läuft das nur ein mal durch und bleibt dann so?
Sorry wenn ich da nachfrage, ich hab schon etwas Basiswissen, aber bin mir bei manchen Dingen nicht ganz sicher.Falls das immer wieder abläuft, würde mir diese Lösung mit am Besten gefallen, dann noch mit Variablen "setze" und nur ein mal "steuere".
Gruß
Breiti -
@breiti_74 wenn das skript läuft werden die Variablen bei jedem Sonnenauf- bzw. Untergegang neu befüllt.
Bei Skriptstart sind sie jedoch undefined
Daher sollte man ohne Trigger noch ein falls-sonst Block nehmen um die Variablen bei Skriptstart zu füllen.
falls aktuelle Zeit ist zwischen Sonnenauf und untergang, setze min auf x, setze max auf y; sonst setze min auf z, setze max auf zz
-
@breiti_74 Ich habe die selber auch noch nicht eingesetzt, würde einfach mal einen Versuchsballon mit Logging starten lassen ...
Hier gibt es einen Thread zum Thema...
https://forum.iobroker.net/topic/20171/blockly-zeitsteuerung-astro/17den Einwurf von @Homoran auch bitte beachten, ich habe da etwas vereinfacht ...
Aus dem anderen Thread
-
Ihr seid echt klasse.
Vielen Dank für den Support.
Ich habe jetzt noch ein Script gebaut, welches mir bis jetzt am Besten gefällt:
Die Unschärfe mit den undefinierten Temperaturlimits bei Scriptstart lasse ich mal noch so stehen.
Ich habe vor längerem schon ein Script erstellt: Email-Benachrichtigung, falls die Steckdose nicht erreichbar ist, bzw. Temperatur unter 1°C fällt. Das ist meine Absicherung und ich kann dann manuell eingreifen.Ich lasse das Script in Beitrag 7 jetzt erst mal so weiter laufen und schaue, wie es sich verhält.
Werde dann bei Gelegenheit auf das Script in diesem Beitrag switchen und testen.Gruß
Breiti -
@breiti_74 sagte in Zweiter Zeitplan in Blockly wird nicht ausgeführt:
Die Unschärfe mit den undefinierten Temperaturlimits bei Scriptstart lasse ich mal noch so stehen.
das ist keine Unschärfe!
Das Skript funktioniert dann bis zum nächsten Astroereignis nicht und wirft bei jedem triggetn einen Fehler -
@breiti_74 Man kann einen "falls" Block über das Zahnrad-Symbol links oben erweitern durch "sonst" oder "sonst falls" Blöcke... Das erspart im Skript ein wenig Rechenzeit gegenüber drei separaten "falls" Blöcken...
-
Ok, überzeugt.
Ich habs ergänzt/geändert:
Gruß
Breiti -
@breiti_74 sagte in Zweiter Zeitplan in Blockly wird nicht ausgeführt:
Ich habs ergänzt/geändert:
nicht sonst und dann einen falls block, sondern die Variante sonst falls wählen
-
@homoran said in Zweiter Zeitplan in Blockly wird nicht ausgeführt:
@breiti_74 sagte in Zweiter Zeitplan in Blockly wird nicht ausgeführt:
Ich habs ergänzt/geändert:
nicht sonst und dann einen falls block, sondern die Variante sonst falls wählen
Die kann man dann auch mehrfach kaskadieren ...
-
Autsch,
ja, hab ich übersehen.
Korrektur im 3. Block:
Die Schalter "ungleich" Abfrage lasse ich aber noch extra stehen. Ich brauche noch für mich eine wenig einfachere visuell strukturierte Übersicht.Das mit den Zahnrädern, kaskadierend und auch den Kontextmenüs habe ich schon über mehrere Umwege teilweise leidvoll gelernt.
Aber das bin ich so als Beginner in neuen Themen gewohnt.
Hinfallen, aufstehen, Krone richten und weiter gehts.Gruß
Breiti -
Kurzes Resümee von meiner Seite.
Beide Scripte (Post 7 und Post 17 mit Korrektur Post 20) funktionieren jetzt so, wie ich es mir vorstelle:
Grün: erstes Script
Blau: optimiertes Script mit euren Tips und Hinweisen und lasse dies jetzt auch so laufen.Danke.
Gruß
Breiti