Timer Steuerung der Heizung mit virtuellen Schalter

Allgemeine Fragen zum Thema "Smart Home" und Entscheidungshilfen

Moderator: seppy

Antworten
LutzTH
Beiträge: 34
Registriert: 22. Feb 2020 18:43
Answers: 0

Timer Steuerung der Heizung mit virtuellen Schalter

Beitrag von LutzTH »

Ich habe eine Rolle erstellt für meine Heizungsteuerung. Da scheint sich aber ein Fehler eingeschlichen zu haben. Über einen cron Timer steuer ich das virtuelle Item "V_Timer_Heating_Mo_Fr". Dieses schaltet dann die Heizungs Items. Allerdings nur ein und nicht wieder aus. Ich kann nicht nachvollziehen an was es liegt. Der "V_Timer_Heating_Mo_Fr" schaltet über Zeitplan korrekt ein und aus.
Anbei die Scripte dazu.


rule "Timer Heizung ON Mo - Fr"
when
Item V_Timer_Heating_Mo_Fr received command ON //Ein von Timer_Heizung Rules
then

if (V_Switch_Heating_Mo_Fr.state == ON && V_Switch_L_Temperature.state == OFF)
{

logInfo("Timer-Heizung_Mo-Fr", "Heizung Mo. - Fr. ON")
L_Heating.sendCommand(21)
K_Heating.sendCommand(19)
}
end

//Wenn Schalter Heizung an und timer geht aus
// Hier liegt das Problem. Dei Heizung schaltet nicht aus obwohl der Timer off schaltet
rule "Timer Heizung OFF Mo bis Fr"
when
Item V_Timer_Heating_Mo_Fr received command OFF
then
logInfo("Timer-Heizung_Mo-Fr", "Heizung Mo-FR OFF über Timer bei then")
if (V_Switch_Heating_Mo_Fr.state == ON)
{
L_Heating.sendCommand(5)
K_Heating.sendCommand(5)
logInfo("Timer-Heizung_Mo-Fr", "Heizung Mo-FR OFF über Timer")
}
end

opus
Beiträge: 4
Registriert: 11. Jun 2018 08:24
Answers: 0

Re: Timer Steuerung der Heizung mit virtuellen Schalter

Beitrag von opus »

Wie wird der virtuelle Schaler denn geschaltet,über .postupdate oder .sendCommand?
Werden überhaupt logInfo Zeilen der OFF rule angezeigt?

LutzTH
Beiträge: 34
Registriert: 22. Feb 2020 18:43
Answers: 0

Re: Timer Steuerung der Heizung mit virtuellen Schalter

Beitrag von LutzTH »

Ich habe 3 Zeitpläne erstellt. Mo-Fr; WE; und die gesamte Woche. Diese Pläne aktiviere ich so wie benötigt.
Die Rollen für die Timer der Heizungen habe ich so erstellt. Im log erscheinen auch die Meldungen des Schaltzustandes. Der Wert wir aber nicht immer übergeben, so das die Heizung nicht schaltet. Gibt es evt. eine debug Funktion, wo ich mehr einsehen kann.

rule "Timer Heizung ON Mo-Fr"

when
Time cron "0 31 4 ? * MON-FRI *" or //Früh an
Time cron "0 25 16 ? * MON-FRI *" //Nachmittag an
then
V_Timer_Heating_Mo_Fr.sendCommand(ON)
logInfo("Timer Heizung Rule", "Heizung Timer Mo-Fr ON")
end


rule "Timer Heizung OFF Mo bis Fr"
when

Time cron "0 15 5 ? * MON-FRI *" or //Früh aus
Time cron "0 30 20 ? * MON-FRI *" //Abens aus
then
V_Timer_Heating_Mo_Fr.sendCommand(OFF)
logInfo("Timer Heizung Rule", "Heizung Timer Mo-Fr OFF")
end

Benutzeravatar
PeterA
Beiträge: 1052
Registriert: 8. Feb 2019 12:12
Answers: 13

Re: Timer Steuerung der Heizung mit virtuellen Schalter

Beitrag von PeterA »

Benutz bitte die "Code Fences" im Editor dann wird der Code besser lesbar:

Code: Alles auswählen

rule "Timer Heizung ON Mo-Fr"

when
Time cron "0 31 4 ? * MON-FRI *" or //Früh an
Time cron "0 25 16 ? * MON-FRI *" //Nachmittag an
then
V_Timer_Heating_Mo_Fr.sendCommand(ON)
logInfo("Timer Heizung Rule", "Heizung Timer Mo-Fr ON")
end

Code: Alles auswählen

rule "Timer Heizung OFF Mo bis Fr"
when

Time cron "0 15 5 ? * MON-FRI *" or //Früh aus
Time cron "0 30 20 ? * MON-FRI *" //Abens aus
then
V_Timer_Heating_Mo_Fr.sendCommand(OFF)
logInfo("Timer Heizung Rule", "Heizung Timer Mo-Fr OFF")
end

- OpenHab 2.4
#PWRUP

limdul79
Beiträge: 28
Registriert: 30. Okt 2018 12:41
Answers: 0

Re: Timer Steuerung der Heizung mit virtuellen Schalter

Beitrag von limdul79 »

LutzTH hat geschrieben: 12. Nov 2020 20:55

Item V_Timer_Heating_Mo_Fr received command OFF
(...)
if (V_Switch_Heating_Mo_Fr.state == ON)
Die IF-Bedingung dürfe nie true werden. Da muss vermutlich == OFF rein

LutzTH
Beiträge: 34
Registriert: 22. Feb 2020 18:43
Answers: 0

Re: Timer Steuerung der Heizung mit virtuellen Schalter

Beitrag von LutzTH »

ON stimmt schon bei "V_Switch_Heating_Mo_Fr". Dieses ist der Schalter wenn ich die Heizung aktiviere. Dabei wird abgefragt, ob der Timer "V_Timer_Heating_Mo_Fr" ON oder OFF ist. Somit wird die Heizung geschaltet, wenn der timer ON ist. Wenn der Schalter weiterhin auf ON bleibt, übernimmt der Timer mit cron die automatische Schaltung der Heizung.

Benutzeravatar
udo1toni
Beiträge: 13982
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Timer Steuerung der Heizung mit virtuellen Schalter

Beitrag von udo1toni »

Das Problem an dieser Stelle ist eines, welches nur "im großen Ganzen" sichtbar wird. Ich habe auch einige Zeit gebraucht...

Du hast zwei Rules mit identischem Namen, was nicht zulässig ist. Dieser Fehler fällt erst auf, wenn man alle vier Rules gemeinsam betrachtet :)

Rules müssen systemweit eindeutige Namen haben, das heißt, auch wenn die Rules in unterschiedlichen Dateien gespeichert sind, müssen sich ihre Namen unterscheiden.

Du könntest allerdings die konkrete Umschaltung leicht anders gestalten:

Code: Alles auswählen

rule "Timer Heizung ON Mo bis Fr"
when
    Time cron "0 31  4 ? * MON-FRI" or                                          //       Früh an
    Time cron "0 25 16 ? * MON-FRI"                                             // Nachmittag an
then
    logInfo("Timer_Heizung", "Heizung Timer Mo-Fr ON")
    V_Timer_Heating_Mo_Fr.sendCommand(ON)
end

rule "Timer Heizung OFF Mo bis Fr"
when
    Time cron "0 15  5 ? * MON-FRI" or                                          //  Früh aus
    Time cron "0 30 20 ? * MON-FRI"                                             // Abens aus
then
    logInfo("Timer_Heizung", "Heizung Timer Mo-Fr OFF")
    V_Timer_Heating_Mo_Fr.sendCommand(OFF)
end

rule "Heizung schalten Mo bis Fr"
when
    Item V_Timer_Heating_Mo_Fr received command 
then
    logInfo("Timer_Heizung_Mo-Fr", "Rule Heizung Mo - FR über Timer getriggert")
    if (V_Switch_Heating_Mo_Fr.state == ON) {
        if(receivedCommand == ON) {                                             // Ein von Timer_Heizung Rules
            if(V_Switch_L_Temperature.state == OFF) {
                logInfo("Timer-Heizung_Mo-Fr", "Heizung Mo. - Fr. ON")
                L_Heating.sendCommand(21)
                K_Heating.sendCommand(19)
            }
        } else {                                                                // Aus von Timer_Heizung Rules
            logInfo("Timer_Heizung_Mo-Fr", "Heizung Mo. - Fr. OFF")
            L_Heating.sendCommand(5)
            K_Heating.sendCommand(5)
        }
    }
end
Also Time cron wie gehabt, aber nur eine Rule, welche sich um die Umschaltung kümmert.

Andererseits: Warum trennst Du die konkrete Umschaltung überhaupt vom Time cron? Du könntest die jeweiligen Umschaltungen auch direkt in den beiden Rules unterbringen, die jetzt lediglich den Befehl an das Switch Item schicken:

Code: Alles auswählen

rule "Timer Heizung ON Mo bis Fr"
when
    Time cron "0 31  4 ? * MON-FRI" or                                          //       Früh an
    Time cron "0 25 16 ? * MON-FRI"                                             // Nachmittag an
then
    logInfo("Timer_Heizung", "Heizung Timer Mo-Fr ON")
    V_Timer_Heating_Mo_Fr.postUpdate(ON)                                        // Anzeige?
    if(V_Switch_Heating_Mo_Fr.state == ON && V_Switch_L_Temperature.state == OFF) {
        logInfo("Timer_Heizung", "Schalte Heizung auf ON")
        L_Heating.sendCommand(21)
        K_Heating.sendCommand(19)
    }
end

rule "Timer Heizung OFF Mo bis Fr"
when
    Time cron "0 15  5 ? * MON-FRI" or                                          //  Früh aus
    Time cron "0 30 20 ? * MON-FRI"                                             // Abens aus
then
    logInfo("Timer_Heizung", "Heizung Timer Mo-Fr OFF")
    V_Timer_Heating_Mo_Fr.postUpdate(OFF)                                       // Anzeige?
    if(V_Switch_Heating_Mo_Fr.state == ON) {
        logInfo("Timer_Heizung", "Schalte Heizung auf OFF")
        L_Heating.sendCommand(5)
        K_Heating.sendCommand(5)
    }
end
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

LutzTH
Beiträge: 34
Registriert: 22. Feb 2020 18:43
Answers: 0

Re: Timer Steuerung der Heizung mit virtuellen Schalter

Beitrag von LutzTH »

Super, das ist mir gar nicht aufgefallen mit den gleichen Rule Name. Die Rules sind zwar in unterschiedlichen Dateien, weil ich immer dieses Probleme hatte. Jetzt weiß ich auch warum. Schade das diese Namensgleichheit nicht im log von OH als Fehler angezeigt wird.
Deine Optimierung werde ich mir morgen mal genauer ansehen.
Also besten Dank noch mal für deine Hilfe. :-)

Antworten