Heizungssteuerung Rules Problem

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Benutzeravatar
leupy
Beiträge: 83
Registriert: 21. Nov 2018 19:43
Answers: 0
Wohnort: Saarlouis

Re: Heizungssteuerung Rules Problem

Beitrag 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.
Saarländer
Raspberry Pi 3 & 4 openHAB3.2
Asus Touchscreen Wandeinbau
Win 10 Rechner zum Visualisieren
Sonoff Aktoren mit Tasmota
Sonoff RF Bridge
MiLight
Shelly 1 und 2

Benutzeravatar
leupy
Beiträge: 83
Registriert: 21. Nov 2018 19:43
Answers: 0
Wohnort: Saarlouis

Re: Heizungssteuerung Rules Problem

Beitrag 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
Saarländer
Raspberry Pi 3 & 4 openHAB3.2
Asus Touchscreen Wandeinbau
Win 10 Rechner zum Visualisieren
Sonoff Aktoren mit Tasmota
Sonoff RF Bridge
MiLight
Shelly 1 und 2

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

Re: Heizungssteuerung Rules Problem

Beitrag 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?
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Antworten