Hallo zusammen,
für meine Heizungssteuerung habe ich mir ein Notify angelegt (n_AUTO_HZ) innerhalb des notify steuere ich meine Heizung mit dem folgenden Code.
Waermebedarf1:valve_average:.* { if(ReadingsVal("Waermebedarf1","valve_average","") > 0) { fhem("set K_B_AKT_1_Sw_01 on") } elsif ( $value{KB_SENS_1_Sw_01 eq ,,0") { fhem("set K_B_AKT_1_Sw_01 off") }}
folgendes soll geschehen:
1. Wenn ein Heizkörper Wärmebedarf meldet schaltet sich meine Heizung ein.
2. Wenn kein Wärmebedarf gemeldet wird und der Brenner gerade nicht läuft soll die Heizung ausgeschaltet werden.
Das mit dem Brenner überprüfen soll über die elsif Verknüpfung erfolgen.
Ich habe hier nun zwei Verständnisfragen:
1. Der notify wir ja nur ausgelöst wenn sich am Valve_average etwas ändert. Was passiert mit meiner Verknüpfung wenn der Brenner läuft und der Notify wird durchlaufen, bleibt der Brenner an oder geht der Schalter K_B_AKT_1_Sw_01 auf aus wenn der Brenner abschaltet?
2. Wie kann ich einen Notify zeitgesteuert schalten? Hintergrund: Da ich die Heizung auch manuell steuere entstehen manchmal Zustände die undefiniert sind. Diese möchte ich mit einem Notify durchlauf bereinigen.
Vielen dank auch an andere Tipps da ich mit der FHEM Programmierung erst anfange.
Gruß
Bison
Hallo Bison,
so wie ich das jetzt verstanden habe, sollte eigentlich zwei mögliche Trigger-Events abgefangen werden: valve_average und der KB_SENS_1_Sw_01. Letzterer soll nur zur Abschaltung führen, wenn auch ...average == 0 ist. Zur Verwendung alternativer Trigger würde ich mal den Event-Monitor empfehlen. Beispiel:
defmod n_Rolladen_Window notify .*(closed|open|tilted)|(Rolladen_.*|Jalousie_.*).(motor:.stop.*|set_.*|motor..down.*) { HM_ShutterUtils_Notify($NAME,$EVENT) }
(Reagiert auf Fensteröffnung bzw. Änderungen meiner Rolladen-Devices und führt dann eine myUtils-Routine aus).
Wenn das nicht so recht nachvollziehbar ist, solltest du dir das Einsteigerdokument nochmal ansehen, da stehen einige grundlegende Infos zum Thema Programmierung drin. Auch zur Verwendung von myUtils-Routinen gibt es einen guten Wiki-Betrag, ebenso zum Event-Monitor.
Ob du dann noch eine zeitgesteuerte Prüfung benötigst, ist mir nicht klar, ggf. könntest du das mit einem at (+ trigger oder Aufruf der perl-Funktion) machen.
Ansonsten sieht mir dein Code sehr zusammenkopiert aus - es fehlt vermutlich eine schließende Klammer, wobei du auch im elsif besser mit ReadingsVal arbeiten solltest, und es sind "seltsame" Anführungszeichen verwendet (jedenfalls in meiner Web-Ansicht).
Gruß, Beta-User