Heizung unter bestimmten Bedingungen abschalten

Begonnen von fhem024, 23 März 2024, 11:54:45

Vorheriges Thema - Nächstes Thema

Beta-User

Zitat von: Nobbynews am 24 März 2024, 08:35:54Nö, kannst auch anstatt Log1 ein Log0 nehmen.
meine 2ct:
Solange man lernt, wie FHEM tickt, ist es m.E. nicht zielführend, das Loglevel soweit runter zu ziehen. Anfänger sollten das verbose-Attribut gar nicht erst setzen!

Sonst ist es (wie hier) für potentielle Helfer in vielen Fällen auch näherungsweise unmöglich, irgendwie weiterzuhelfen...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Nobbynews

Stimmt so zu 100%.
Nur fand ich die Aussage "muss mindestens 1 sein" vom Grundsatz her falsch.
Ich persönlich kann mit dem Standard gut leben.

rudolfkoenig

ZitatWie würde man denn einfach so einen Logtext über eine Logfunktion (welche?) in die Datenbank pinseln?
trigger global Das ist ein Test
oder
{ DoTrigger("global", "Das ist ein Test") }

fhem024

Hallo an alle hier, die alle super hilfreich waren! Ganz herzlichen Dank dafür!

Ich habe nun einen at-Job wie folgt eingerichtet und der scheint auch soweit zu funktionieren:

*19:10:00 {
if(ReadingsVal('Heizung', 'Heizgeraet_1_TOB_CGB2_MGK2.9.O.Status_Brenner_Flamme', 'An') eq 'Aus' &&
    ReadingsVal('Heizung', 'Heizgeraet_1_TOB_CGB2_MGK2.4.O.Kesseltemperatur.C', 0) > (ReadingsVal('Heizung', 'Custom.911.Heizkreis_Soll', 0) + 1)) {
   
    fhem("set Heizung Direkter_Heizkreis_direktes_Warmwasser.57.Programmwahl_Heizkreis 2");
    Log 1, "Heizung abgeschaltet";
    fhem("defmod Heizung_an at +01:00:00 {fhem(\"set Heizung Direkter_Heizkreis_direktes_Warmwasser.57.Programmwahl_Heizkreis 0\");;
Log 1, \"Heizung gestartet\" }");
    }
else {
Log 1, "Die Heizung wurde nicht abgeschaltet, weil sie entweder gerade lief: Flamme ".ReadingsVal('Heizung', 'Heizgeraet_1_TOB_CGB2_MGK2.9.O.Status_Brenner_Flamme', 'An')." oder die Einschaltung kurz bevorsteht.";
}
}

Das war allerdings syntaktisch gar nicht so einfach bzw. in einem Schritt habe ich es sogar gar nicht geschafft, weil er sich immer über Klammerfehler beschwert hat.

Ich habe daher zunächst einen leeren at-Job angelegt und darin dann alles weitere definiert, so dass es dann aussieht wie oben (die Parameter sind Wolf BM-2 spezifisch bzw. selbst generierte Parameter).

Der Code oben legt einen weiteren at-Job an, der eine Stunde später die Heizung wieder in den Automatikmodus schiebt (die Tagesprogrammierung macht die BM-2), wenn die Heizung in der Nachtabschaltung ist. Von der grundsätzlichen möglichst vollständigen Steuerung durch die BM-2 möchte ich zumindest (bis auf Weiteres vorerst noch) nicht weg.

Der Code oben berücksichtigt noch nicht das Loggen in die DB. Dass man dafür trigger benutzen kann, wäre ich ohne Hilfe hier auch im Leben nicht draufgekommen.
Gibt es da die Möglichkeit, die Spalten VALUE und EVENT explizit zu füllen? Also z.B. EVENT:cron_heizung, VALUE:"Heizung gestoppt"

Was das Thema Loglevel angeht. Ja, ihr habt Recht, das ist eine böse Falle, in die ich mich da selbst gebracht habe. Das Ganze hat jedoch einen Hintergrund: Ich hatte FHEM vor einem Jahr eingerichtet und damals den Loglevel auf 0 gesetzt, nachdem alles super lief und ich auch nie Probleme hatte. Hatte ich längst vergessen. Ich hatte das damals so gemacht, um die Anzahl der Schreibvorgänge so gering wie möglich zu halten (das System läuft auf einer SD-Karte auf einer APU von pcengines).

Die vorgeschlagene Notify-Variante habe ich bis dato noch nicht vollständig durchdacht. Aber das kann ja noch später kommen.