Timer Steuerung der Heizung mit virtuellen Schalter
Moderator: seppy
-
- Beiträge: 34
- Registriert: 22. Feb 2020 18:43
Timer Steuerung der Heizung mit virtuellen Schalter
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
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
-
- Beiträge: 4
- Registriert: 11. Jun 2018 08:24
Re: Timer Steuerung der Heizung mit virtuellen Schalter
Wie wird der virtuelle Schaler denn geschaltet,über .postupdate oder .sendCommand?
Werden überhaupt logInfo Zeilen der OFF rule angezeigt?
Werden überhaupt logInfo Zeilen der OFF rule angezeigt?
-
- Beiträge: 34
- Registriert: 22. Feb 2020 18:43
Re: Timer Steuerung der Heizung mit virtuellen Schalter
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
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
- PeterA
- Beiträge: 1052
- Registriert: 8. Feb 2019 12:12
Re: Timer Steuerung der Heizung mit virtuellen Schalter
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
#PWRUP
-
- Beiträge: 28
- Registriert: 30. Okt 2018 12:41
-
- Beiträge: 34
- Registriert: 22. Feb 2020 18:43
Re: Timer Steuerung der Heizung mit virtuellen Schalter
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.
- udo1toni
- Beiträge: 13982
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Timer Steuerung der Heizung mit virtuellen Schalter
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:
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:
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
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
-
- Beiträge: 34
- Registriert: 22. Feb 2020 18:43
Re: Timer Steuerung der Heizung mit virtuellen Schalter
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.
Deine Optimierung werde ich mir morgen mal genauer ansehen.
Also besten Dank noch mal für deine Hilfe.