Heizungssteuerung Rules Problem

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

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

Re: Heizungssteuerung Rules Problem

Beitrag von udo1toni »

Ändere mal bitte die letzte log-Zeile ab in

Code: Alles auswählen

        logInfo("pwm","Heizphase: {} Länge: {} Sekunden",sHeiz,nTime)
nTime ist die eine Veriable, die wir noch nicht im log sehen...
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

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

Re: Heizungssteuerung Rules Problem

Beitrag von leupy »

Erste Phase läuft korrekt 10 Min nach starten der Regel

Code: Alles auswählen

2019-12-06 16:41:19.397 [INFO ] [lipse.smarthome.model.script.heizung] - Komfort
2019-12-06 16:41:19.408 [INFO ] [lipse.smarthome.model.script.heizung] - Komfort
2019-12-06 16:41:19.478 [INFO ] [g.eclipse.smarthome.model.script.pwm] - Timer wird ausgeführt!
2019-12-06 16:41:19.483 [INFO ] [g.eclipse.smarthome.model.script.pwm] - Pulsphase: true
2019-12-06 16:41:19.489 [INFO ] [g.eclipse.smarthome.model.script.pwm] - Pulslänge: 0
2019-12-06 16:41:19.494 [INFO ] [g.eclipse.smarthome.model.script.pwm] - Heizphase: OFF Länge: 600 Sekunden
Zweite Startet danach mit Fehler

Code: Alles auswählen

2019-12-06 16:50:30.144 [INFO ] [lipse.smarthome.model.script.heizung] - Komfort
2019-12-06 16:51:19.502 [INFO ] [g.eclipse.smarthome.model.script.pwm] - Timer wird ausgeführt!
2019-12-06 16:51:19.511 [INFO ] [g.eclipse.smarthome.model.script.pwm] - Pulsphase: false
2019-12-06 16:51:19.523 [INFO ] [g.eclipse.smarthome.model.script.pwm] - Pulslänge: 30
2019-12-06 16:51:19.537 [INFO ] [g.eclipse.smarthome.model.script.pwm] - Heizphase: OFF Länge: 420 Sekunden
2019-12-06 16:51:19.546 [ERROR] [org.quartz.core.JobRunShell         ] - Job DEFAULT.2019-12-06T16:41:19.475+01:00: Proxy for org.eclipse.xtext.xbase.lib.Procedures$Procedure0: [ | {
Müsste nicht nach der ersten Phase OFF auch eine ON Länge folgen ?
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 »

Hallo nochmal,
ich habe jetzt doch Abstand von der PWM genommen da die nicht sauber läuft und versucht das ganze zu vereinfachen.
Ich wollte in der folgenden Regel jetzt 3 Modi realisieren.
Heizung 100 % > Heizung an
Heizung 50 % > bedeutet Ventil 5 min an 5 min aus.
Heizung 0 % > Heizung aus.

Leider habe ich wie immer Problem mit dem erstellen von Regeln :cry:
Kann mir da jemand weiter helfen :?:

Code: Alles auswählen

//--------------------------------------------------- 
// Heizung Esszimmer
//--------------------------------------------------- 
// Globale Variablen werden zu Beginn der Datei definiert


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
    }
    nPWM = 0                                                            // erst mal PWM 0
    if(wtsi_E < nSoll)       nPWM = 0                                   // Ist > Soll minus 0,5 bis Soll
    if(wtsi_E < nSoll - 0.5) nPWM = 50                                  // Ist => Soll minus 0,5 - 1 Grad
    if(wtsi_E < nSoll -1 )   nPWM = 100                                 // ansonsten
end
//------------------------------------------------------------------
// Stuerung Heizungsventil
//------------------------------------------------------------------
rule "Ventil Esszimmer"
when
    (nPWM = 0) or
    (nPWM = 50) or
    (nPWm =100) and 
    (bOn_HE = false)                                               //Variable
then
    sendCommand (Heizung_E, ON)                                  // erstmal Heizung an
    if(nPWM = 0)                                              // Heizung aus bei Wert 0
      {logInfo("Heizung", "Aus") 
      sendCommand (Heizung_E, OFF)   
      }
    if(nPWM =50) 
      {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(bOn_HE = true) 
     {logInfo("Heizung", "Aus 5min")
     tP55?.cancel                                                 // falls Timer bereits vorhanden, entfernen
     tP55 = createTimer(now.plusSeconds(300) 
     bOn_HE = false                                               // Variable rücksetzen 
     }
         
end
Fehlermeldung

Code: Alles auswählen

2019-12-15 12:29:31.027 [WARN ] [el.core.internal.ModelRepositoryImpl] - Configuration model 'E_heizung copy.rules' has errors, therefore ignoring it: [63,5]: no viable alternative at input '('
[64,5]: no viable alternative at input '('
[65,5]: no viable alternative at input '('
[77,6]: missing ')' at 'sendCommand'
[84,6]: missing ')' at 'bOn_HE'
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
peter-pan
Beiträge: 2573
Registriert: 28. Nov 2018 12:03
Answers: 25
Wohnort: Schwäbisch Gmünd

Re: Heizungssteuerung Rules Problem

Beitrag von peter-pan »

Schau dir mal die Trigger-Bedingungen hier an:

Code: Alles auswählen

when
    (nPWM = 0) or
    (nPWM = 50) or
    (nPWm =100) and 
    (bOn_HE = false)                                               //Variable
then
das wird nicht funktionieren.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.1.2 openhabian

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

Re: Heizungssteuerung Rules Problem

Beitrag von leupy »

peter-pan hat geschrieben: 15. Dez 2019 13:48 Schau dir mal die Trigger-Bedingungen hier an:

Code: Alles auswählen

when
    (nPWM = 0) or
    (nPWM = 50) or
    (nPWm =100) and 
    (bOn_HE = false)                                               //Variable
then
das wird nicht funktionieren.
Okay hab das auf
rule "Ventil Esszimmer"
when
Item Sonoff86Temp changed
then

geändert da ja die Werte dann in der if abgefragt werden und 2 Klammern haben gefehlt.

Code: Alles auswählen

//------------------------------------------------------------------
rule "Ventil Esszimmer"
when
     Item Sonoff86Temp changed                                      // Temperatur hat sich geändert
then
      sendCommand (Heizung_E, ON)                                  // erstmal Heizung an
    if(nPWM = 0)                                              // Heizung aus bei Wert 0
      {logInfo("Heizung", "Aus") 
      sendCommand (Heizung_E, OFF)   
      }
    if(nPWM =50) and (bOn_HE = false)
      {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(bOn_HE = true) 
     {logInfo("Heizung", "Aus 5min")
     tP55?.cancel                                                 // falls Timer bereits vorhanden, entfernen
     tP55 = createTimer(now.plusSeconds(300)) 
     bOn_HE = false                                               // Variable rücksetzen 
     }
     
Hab jetzt keinen Fehler mehr muss jetzt schauen ob die so läuft.
Zuletzt geändert von leupy am 15. Dez 2019 15:04, insgesamt 1-mal geändert.
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
peter-pan
Beiträge: 2573
Registriert: 28. Nov 2018 12:03
Answers: 25
Wohnort: Schwäbisch Gmünd

Re: Heizungssteuerung Rules Problem

Beitrag von peter-pan »

...das wird immer noch nicht funktionieren.
Du kannst keine Variablen als Trigger benutzen. Schau mal hier, da sind die Triggermöglichkeiten aufgeführt.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.1.2 openhabian

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

Re: Heizungssteuerung Rules Problem

Beitrag von leupy »

peter-pan hat geschrieben: 15. Dez 2019 14:59 ...das wird immer noch nicht funktionieren.
Du kannst keine Variablen als Trigger benutzen. Schau mal hier, da sind die Triggermöglichkeiten aufgeführt.
habs gerade geändert
Läuft jetzt ohne Fehler muss nur schauen ob das auch funst.
Danke
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 »

Läuft doch nicht, zu Früh gefreut.

Code: Alles auswählen

==> /var/log/openhab2/openhab.log <==

2019-12-15 15:14:35.320 [INFO ] [lipse.smarthome.model.script.Heizung] - 50%

2019-12-15 15:14:35.325 [ERROR] [ntime.internal.engine.RuleEngineImpl] - Rule 'Ventil Esszimmer': An error occurred during the script execution: index=1, size=1
:?:
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
peter-pan
Beiträge: 2573
Registriert: 28. Nov 2018 12:03
Answers: 25
Wohnort: Schwäbisch Gmünd

Re: Heizungssteuerung Rules Problem

Beitrag von peter-pan »

...Puuh!!! :?:

Also was ich gesehen habe, ist dass das "end" in der Regel fehlt. Aber das ist wahrscheinlich beim Kopieren verloren gegangen.

Die Regel läuft aber an, bis zum

Code: Alles auswählen

    {logInfo("Heizung", "50%")      // Heizung 50% 
Danach bricht sie dann ab. Hab aber im Moment keine Ahnung warum. Vielleicht liegt's am Timer ? Vielleicht kann @udo1toni weiterhelfen.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.1.2 openhabian

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

Re: Heizungssteuerung Rules Problem

Beitrag von udo1toni »

Ich sehe nur eine Rule voller Fehler.

Es fängt mit (mindestens) unorthodoxer Schreibweise an, Leerzeichen, wo keine hingehören, geschwungene Klammern an unüblicher Stelle...
Es geht weiter mit komplett falschen Vergleichen (= statt ==) und createTimer ohne gültiges Lambda. Das am Ende fehlende end ist da nur das Tüpfelchen auf dem i.

Welchen Editor verwendest Du zur Erstellung der Rules? Ich möchte Dir dringend empfehlen, Visual Studio Code (oder kurz VSCode) zu installieren (nicht Visual Studio!). In VSCode gibt es Plugins, die sich direkt aus dem Editor heraus installieren lassen, unter Anderem das openHAB Plugin. Nach der Installation richtet man das Konfigurationsverzeichnis als Arbeitsverzeichnis ein (üblicherweise über einen zugewiesenen Laufwerksbuchstaben) und konfiguriert in den Einstellungen von VSCode -> Plugins -> openHAB die IP des eigenen openHAB Servers. Wenn der Server läuft, hat man danach in VSCode autocompletion und Fehleranzeige.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Antworten