NEWS
Zweiter Zeitplan in Blockly wird nicht ausgeführt
-
Hallo, ich bin vor ein paar Wochen in IOT mit ioBroker, influxdb und Grafana eingestiegen. Habe zuvor schon mit Fritzdect ein paar Automationen gefahren, dann noch BKW mit Hoymiles + openDTU und ein paar shellys im Einsatz.
Ich steuere jetzt alles zentral über ioBroker.Aktuell hänge ich am Problem für die tageszeitabhängige Temperatursteuerung der Hühnerstallheizung.
Im Stall sind zwei Rohrheizungen an einer FRITZ!DECT 210 angeschlossen.
Die Heizung soll astronomisch Tag im Temperaturbereich A laufen und astronomisch Nacht im Temperaturbereich B aktiv sein:
Ich habe das Script morgens vor Sonnenaufgang gestartet und lief auch an. Die Temperatursteuerung funktioniert so wie ich es mir vorstelle.
Allerdings wird beim Wechsel von astronomisch Tag auf astronomisch Nacht nicht der Temperaturbereich gewechselt, bzw. die Steckdose bleibt auf aus.
Ich hab das Script gestoppt und "Tag..." deaktiviert und neu gestartet. Funktioniert auch nicht.
Erst wenn ich den Trigger von Zeitplan auf Temperatur ändere, funktioniert alles.Wo liegt der Fehler?
Gruß
Breiti -
@breiti_74 sagte in Zweiter Zeitplan in Blockly wird nicht ausgeführt:
Wo liegt der Fehler?
warum willst du jede Minute triggern?
@breiti_74 sagte in Zweiter Zeitplan in Blockly wird nicht ausgeführt:
Erst wenn ich den Trigger von Zeitplan auf Temperatur ändere, funktioniert alles
wäre auch richtig und als Bedingung nimmst du die Zeit dazu
PS:
größer 3 ist auch gleichzeitig kleiner 4.5 -
@crunchip
ist der Minuten Trigger der Grund, warum der "Nacht" Zeitplan nicht ausgeführt wird?
Was muß ich ändern?Aber Temp größer 3 gilt ja nur für "Tag". Spätestens bei "Nacht" größer 6,5 soll ja die Steckdose wieder abschalten und bei 4,5 wieder ein.
Macht sie aber nicht.Ich habe das Blockly schon mehrfach umgestellt und getestet und auch Primärtrigger Temperatur verwendet, bzw. auch aufgeteilt in mehrere Scripte. Hat aber alles nicht so funktioniert.
Vielleicht gibt es aber einen anderen Lösungsweg als den von mir gedachten.
Was ich benötige habe ich ja schon in meinem Eingangspost beschrieben: ein Steckdosenschaltung für best. Temperaturbereich für den Tag und eine für die Nacht.Gruß
Breiti -
@breiti_74
Nimm CRON statt diesen ominösen "Wizard".
Das funktioniert nach meiner Erfahrung deutlich stabiler. -
@codierknecht sagte: Nimm CRON statt diesen ominösen "Wizard".
... und nur einen Trigger und nur einmal "steuere":
-
@Codierknecht und @paul53 Danke für die Tips.
Wenn der Wizard wirklich nicht sauber funktioniert, kann das der Grund sein.
Ich hatte irgendwann schon mal so was ähnliches wie im Schema von @paul53 , aber kam irgendwie immer auf trigger im trigger. Das soll man ja tunlichst vermeiden, habe ich gelesen.
Ich setze mich morgen Vormittag mal dran und versuche es noch mal mit deiner Vorlage.Gruß
Breiti -
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