NEWS
Blockly Telegramm Heizungsanlage (Vorlauftemperatur)
-
Hallo zusammen,
ich möchte die Vorlauftemperatur meiner Heizungsanlage überwachen und bei Unterschreitung einer bestimmten Vorlauftemperatur mit einer Verzögerung von 20 Minuten eine Telegram Nachricht versenden. Die Verzögerung von 20 Minuten ist notwendig, da es kurze Zeiträume gibt (kleiner 20 Minuten) in denen die Vorlauftemperatur unter die kritische Vorlauftemperatur fällt.
Die Vorlauftemperatur wird regelmäßig aktualisiert. Sobald die kritische Vorlauftemperatur unterschritten wird, soll eine Systemvariable ("Vorlauftemperatur_unterschritten") nach 20Minuten auf wahr gesetzt werden. Im nächsten Zyklus, wenn die kritische Vorlauftemperatur immer noch unterschritten ist und die Systemvariable ("Vorlauftemperatur_unterschritten") wahr ist, soll die Telegram Nachricht abgeschickt werden.
Das ganze soll zurück gesetzt werden, wenn die Systemvariable ("Vorlauftemperatur_unterschritten") wahr ist.
Hier ist ein bisheriges Blockly Script:
Vielen Dank im Vorraus.
VG Takahara -
@takahara du denkst zu kompliziert:
- einen trigger auf deine Vorlauftemperatur, wurde geändert
- eine Abfrage : "wert" < limit und "vorheriger Wert" >= 20.. darin: timeout 20 minuten -wenn abgelaufen Meldung
- eine Abfrage "wert" >= limit dann timeout anhalten.
fertig.
wichtig: die Bausteine "wert" und "vorheriger Wert" stammen aus dem "Trigger" Bereich und sind dort mit "Objektid" vorbelegt.
Mit dieser Methode findest du den Moment wo das erste mal der wert unter das limit fällt. wenn er bevor die 20 minuten um sind wieder darüber steigt dann wird die Meldung abgebrochen, sonst bekommst du nach 20 minuten deine Meldung.
A.
-
@asgothian Hallo Asgothian, vielen Dank für deine Rückmeldung.
Leider bin ich nicht so bewandt und daher sagen mir deine Informationen nichts bzw. ich weiß nicht wie ich ein entsprechendes Blockly Script aufbauen kann.-
eine Abfrage : "wert" < limit und "vorheriger Wert" >= 20.. darin: timeout 20 minuten -wenn abgelaufen Meldung
-
list itemeine Abfrage "wert" >= limit dann timeout anhalten.
-
wichtig: die Bausteine "wert" und "vorheriger Wert" stammen aus dem "Trigger" Bereich und sind dort mit "Objektid" vorbelegt.
Ist es für dich OK, wenn du mir da noch mal hilfst und ggf. das Blockly Script aufbauen kannst?
VG
Takahara -
-
Vorschlag:
@asgothian sagte in Blockly Telegramm Heizungsanlage (Vorlauftemperatur):
wichtig: die Bausteine "Wert" und "vorheriger Wert" stammen aus dem "Trigger" Bereich und sind dort mit "Objektid" vorbelegt.
-
@paul53 Hi Paul, auch die vielen Dank.
Müsste es in der sonst falls Bedingung nicht heißen < 50?
VG
Takahara -
@takahara sagte: Müsste es in der sonst falls Bedingung nicht heißen < 50?
Nein, da die Abfrage im sonst-Zweig erfolgt, bedeutet es: Die Temperatur unterschreitet erstmalig 50 °C (war >= 50 und ist jetzt < 50). Ohne diese Abfrage würden mehrere Timer gestartet, die sich nicht mehr stoppen lassen.
-
@paul53 Hallo Paul, so zu 100% habe ich das Blockly Script noch nicht verstanden. Heute Morgen hatten wir wieder mal einen Ausfall der Heizung. Ich hätte jetzt erwartet, das gegen 09:04:24 die Meldung geschickt wird, dass die Vorlauftemperatur zu niedrig ist. Habe allerdings keine Nachricht erhalten.
Wie du siehst, ist die Vorlauftemperatur um 08:44:24 auf unter 30°C gefallen und ist erst wieder um 11:10:47 auf über 30°C gestiegen.Eine weitere Funktion würde ich noch keine einbinden. Und zwar, dass eine Meldung abgeschickt wird, wenn (wie oben zu sehen) die Vorlauftemperatur wieder über 30° oder auch 35°C ist und ich somit sicher sein kann, dass die Heizung wieder funktioniert. Kannst du mir evtl. noch mal helfen, bitte?
Aktuellen Blockly:
VG
Takahara -
@takahara sagte: Habe allerdings keine Nachricht erhalten.
Wenn bei "falls"
Wert >= 30
verglichen wird, muss der Vergleich bei "sonst falls" ebenfallsvorheriger Wert >= 30
sein, da sonst eine Temperaturänderung von 30 °C auf 29,9 °C nicht erfasst wird.@takahara sagte in Blockly Telegramm Heizungsanlage (Vorlauftemperatur):
über 30°C ist und ich somit sicher sein kann, dass die Heizung wieder funktioniert.
falls Wert > 30 und vorheriger Wert <= 30 mache Nachricht "Heizung läuft wieder"
Besser allerdings mit einem höheren Schwellwert und einer Hilfsvariablen:
-
@paul53 Hallo Paul53, vielen Dank nochmals für deine großzügige Hilfe und Unterstützung. Das von dir zur Verfügung gestellte Script scheint aktuell genau das zu machen, was ich gesucht habe.
Ich verstehe leider noch nicht alle Blöcke und hätte noch folgende Fragen:-
Was macht der allererste Funktionblock?
-
Die Systemvariable "Heizung_an", kann nur "wahr" oder "falsch" sein, richtig?
-
Wie kann die Sonst falls Bedingung (vorheriger Wert >= 30) erfüllt sein, wenn hier eigentlich nur Werte < 30 zum Senden der Textnachricht führen sollen?
VG
Takahara
-
-
@takahara sagte: Was macht der allererste Funktionblock?
Er initialisiert die Variable beim Skriptstart auf einen sinnvollen Wert (true bei >= 30 °C). Andernfalls würde nach dem Skriptstart die Nachricht "Heizung läuft wieder" kommen, wenn die Temperatur >= 33 °C ist oder erreicht.
@takahara sagte in Blockly Telegramm Heizungsanlage (Vorlauftemperatur):
Die Systemvariable "Heizung_an", kann nur "wahr" oder "falsch" sein, richtig?
Ja. Ohne den ersten Funktionsblock wäre sie nach einem Skriptstart erst einmal undefined.
@takahara sagte in Blockly Telegramm Heizungsanlage (Vorlauftemperatur):
Wie kann die Sonst falls Bedingung (vorheriger Wert >= 30) erfüllt sein, wenn hier eigentlich nur Werte < 30 zum Senden der Textnachricht führen sollen?
Die Bedingung für den sonst-Zweig ist
Wert < 30
(Gegenteil von Wert >= 30). Die gesamte Bedingung lautet also:Wert < 30 UND vorheriger Wert >= 30
, was erstmaliges Unterschreiten des Wertes von 30 bedeutet und verhindert, dass der Timer mehrfach gestartet werden kann. -
Ich habe mir das Blockly heute morgen auch 100x angeschaut und habe es nicht verstanden.
Man(m) (zumindest ich) vergisst in seinem Kopf schnell, dass die erste Bedienung ja umgekehrt in "sonst falls" fliest.
Am ersten Blick sieht man nur, dass 2x gefragt wird ob der Wert größer als 30 ist und nichts passiert wenn der Wert kleiner ist.Musste es mir auch kurz aufschreiben
35 grad "falls" - stop timeout da Wert größer als 30
30 grad "falls" - stop timeout da Wert gleich 30
25 grad "sonst falls" greift weil "falls" nicht erfüllt wurde. Telegram wird gesendet, da vorheriger Wert >=30
20 grad "sonst falls" greift weil "falls" nicht erfüllt wurde. Telegram wird nicht versendet, da vorheriger Wert nicht >=30 -
@paul53 said in Blockly Telegramm Heizungsanlage (Vorlauftemperatur):
Die Bedingung für den sonst-Zweig ist Wert < 30 (Gegenteil von Wert >= 30). Die gesamte Bedingung lautet also: Wert < 30 UND vorheriger Wert >= 30, was erstmaliges Unterschreiten des Wertes von 30 bedeutet und verhindert, dass der Timer mehrfach gestartet werden kann.
Wenn ich deine Antwort richtig verstehe, dann sagst du mit anderen Worten:
-
Die Bedingung für den sonst-Zweig ist Wert < 30 (Gegenteil von Wert >= 30). =>Ist die erste Prüfung der "Falls Wert >= 30 ist"
-
vorheriger Wert >= 30, => Ist die erste Prüfung der "Sonst falls vorheriger Wert >=30 ist"
Da zuerst die falls-Bedingung geprüft wird und diese nicht erfüllt ist (da Wert <30 ist). Anschließend wir die sonst falls-Bedingung geprüft und diese ist zutreffend, da der aktuelle Wert <30 ist und der vorherige Wert >30 war.
wäre ich nie drauf gekommen, dass so zu programmieren, aber wenn ich das Script jetzt betrachte, macht es Sinn.
Vielen Dank noch mal für deine Hilfe.
VG
Takahara -