Seite 4 von 4
Re: Heizungssteuerung Rules Problem
Verfasst: 16. Dez 2019 17:39
von leupy
Hallo,
ich benutze VSCode leider funktioniert die Fehlererkennung nicht mehr.
Das end war ein Kopierfehler und die anderen Fehler versuche ich jetzt mal zu beseitigen wenn ich sie finde.
Re: Heizungssteuerung Rules Problem
Verfasst: 16. Dez 2019 18:31
von leupy
So hab mich wieder daran versucht und die Bedingungen für die Stufen 0%-50% und 100% auf Items gelegt damit ich die Zustände besser überprüfen kann bei der Fehlersuche.#
Desweiteren hoffe ich das ich alle Fehler ausgebügelt habe.
Regel läuft ohne Syntax Fehler aber ich hab aus irgend einem Grund immer ein On bei 0% und 100% (Merker 0% und 100% sind ON)
Das Ventil wird auch bei überschreiten der Solltemp nicht abgeschaltet
Code: Alles auswählen
//---------------------------------------------------
// Heizung Esszimmer
//---------------------------------------------------
// Globale Variablen werden zu Beginn der Datei definiert
var Timer tP55 = null // ein Timer
var Timer tP5 = null // ein Timer
var Boolean bOn_HE = false //
var Number nPWM = 0 // ON in %
rule "Init Heizung"
when
System started or
Time cron "0 00 21 * * ?"
then
Heizung_E_Soll.postUpdate(21.0)
Heizung_E_Soll_N.postUpdate(18.0)
end
//----------------------------------------------------
//Essimmer Einschaltbedingung über Zeit
//----------------------------------------------------
rule "Heizung Tag"
when
Time cron "0 45 5 ? * MON-FRI" or // Werktags 05:45:00 Uhr
Time cron "0 0 8 ? * SAT-SUN" // Wochenende 08:00:00 Uhr
then
HeizungMode.postUpdate(ON) //Heizung Tag an wenn ON Komfort
end
rule "Heizung Nacht"
when
Time cron "0 0 20 * * ?" // Täglich 20:00:00 Uhr
then
HeizungMode.postUpdate(OFF) //Heizung Nacht an wenn OFF
end
//----------------------------------------------------
//Esszimmer Soll/ist Vergleich Temperatur und setzen von Puls Variablen
//----------------------------------------------------
rule "Heizung WZ Ist/Soll vergleich"
when
Item Sonoff86Temp changed or // Istwert Temp
Item Heizung_E_Soll changed or // Sollwert Heizung
Item Heizung_E_Soll_N changed or // Sollwert Nacht Heizung
Item HeizungMode changed
then
val Number wtsi_E = (Sonoff86Temp.state as Number).doubleValue // Temperatur Ist
var Number nSoll = (Heizung_E_Soll_N.state as Number).doubleValue // erstmal Temperatur Soll Nacht setzen
if(HeizungMode.state == ON) {
logInfo("heizung", "Komfort")
nSoll = (Heizung_E_Soll.state as Number ).doubleValue // Falls Komfort, Temperatur Soll Tag setzen
}
if(wtsi_E > nSoll) // Ist größer Soll
sendCommand (Heizung_E_0,ON) //Merker 0% setzen
sendCommand (Heizung_E_50,OFF)
sendCommand (Heizung_E_100,OFF)
if(wtsi_E < nSoll - 0.5) // Ist kleiner Soll-0,5°C
sendCommand (Heizung_E_0,OFF)
sendCommand (Heizung_E_50,ON) //Merker 50% setzen
sendCommand (Heizung_E_100,OFF)
if(wtsi_E < nSoll -1 ) // Ist kleiner Soll-1°C
sendCommand (Heizung_E_0,OFF)
sendCommand (Heizung_E_50,OFF)
sendCommand (Heizung_E_100,ON) // //Merker 100% setzen
end
//------------------------------------------------------------------
// Stuerung Heizungsventil
//------------------------------------------------------------------
rule "Ventil Esszimmer"
when
Item Sonoff86Temp changed or // Istwert Temp
Item Heizung_E_Soll changed or // Sollwert Heizung
Item Heizung_E_Soll_N changed or // Sollwert Nacht Heizung
Item HeizungMode changed // Temperatur hat sich geändert
then
sendCommand (Heizung_E,ON)
if (Heizung_E_0.state == ON) // Heizung aus bei Wert 0
logInfo("Heizung","Aus")
sendCommand (Heizung_E, OFF)
if (Heizung_E_50.state == ON) and (bOn_HE = false)
sendCommand (Heizung_E,ON) // erstmal Heizung an
logInfo("Heizung","50%") // Heizung 50%
tP5?.cancel // falls Timer bereits vorhanden, entfernen
tP5 = createTimer(now.plusSeconds(300)) [| // Timer 5min
sendCommand (Heizung_E, OFF) // Heizung aus
bOn_HE = true ] // Variabel setzen
if (Heizung_E_100.state == ON)
sendCommand (Heizung_E,ON) // Heizung an
logInfo("Heizung", "100%") // Heizung 100%
bOn_HE = false
if(bOn_HE = true) // Heizung Pausenzeit 5min
logInfo("Heizung","Aus 5min")
tP55?.cancel // falls Timer bereits vorhanden, entfernen
tP55 = createTimer(now.plusSeconds(300)) [|
bOn_HE = false ] // Variable rücksetzen
end
Re: Heizungssteuerung Rules Problem
Verfasst: 16. Dez 2019 19:55
von udo1toni
leupy hat geschrieben: ↑16. Dez 2019 17:39ich benutze VSCode leider funktioniert die Fehlererkennung nicht mehr.
Das wäre das wichtigste Problem, um das Du Dich zuerst kümmern solltest.
Hat es mal funktioniert?
Hast Du mal openHAB aktualisiert?
Hast Du mal die Einstellungen überprüft?
Ich verstehe nicht, warum Du so überaus kompliziert vorgehst. Warum nutzt Du zur Moduswahl drei Switch Items, statt einem Number Item? Warum nutzt Du zwei Timer?