Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - Probleme mit Heizungsteuerungsregel

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    - √ - Probleme mit Heizungsteuerungsregel

    Hi,

    ich habe mir eine Heizungsteuerungsregel gebastelt, die laut Designer fehlerfrei ist und für mein Verständnis auch funktionieren sollte. Sie tut es aber nicht und ich finde einfach nicht heraus wieso. Die Regel sieht folgendermaßen aus:
    Code:
    rule "Heizung KG Wohn-/Schlafzimmer"
    when
    	Item Temperature_GKG_Living received update  
    then
    	var Number Ist_KG_Living
    	var Number Soll_KG_Living
    	if(Shutter_ALLG_Heizung_Sommerbetrieb.state==OFF) {
    		if(Urlaubsreise.state==OFF){	
        		Ist_KG_Living = Temperature_GKG_Living.state as DecimalType
       			Soll_KG_Living = Sollwerte_GKG_Living.state as DecimalType
    
     			if (Ist_KG_Living < Soll_KG_Living) {
     			sendCommand(Heating_GKG_Living, ON)
    			} 
    			else if (Ist_KG_Living > Soll_KG_Living) {
    			sendCommand(Heating_GKG_Living, OFF)
       			}
       			}
       		else if(Urlaubsreise.state==ON){
       			Ist_KG_Living = Temperature_GKG_Living.state as DecimalType
        		Soll_KG_Living = Sollwerte_GKG_Living_Urlaub.state as DecimalType
    
     			if (Ist_KG_Living < Soll_KG_Living) {
     			sendCommand(Heating_GKG_Living, ON)
    			} 
    			else if (Ist_KG_Living > Soll_KG_Living) {
    			sendCommand(Heating_GKG_Living, OFF)
       			}
       		}
       			}
       	else if(Shutter_ALLG_Heizung_Sommerbetrieb.state==ON) {
       		sendCommand(Heating_GKG_Living, OFF)
       	}
       
    end
    Wenn ich lediglich diesen Codeschnipsel verwende, funktioniert sie, aber das hilft mir ja nur solange weiter, bis ich in Urlaub gehe, oder den Sommerbetrieb aktiviere:

    Code:
    rule "Heizung KG Wohn-/Schlafzimmer"
    when
    	Item Temperature_GKG_Living received update  
    then
    	var Number Ist_KG_Living
    	var Number Soll_KG_Living
    	Ist_KG_Living = Temperature_GKG_Living.state as DecimalType
       	Soll_KG_Living = Sollwerte_GKG_Living.state as DecimalType
    
     	if (Ist_KG_Living < Soll_KG_Living) {
     	   sendCommand(Heating_GKG_Living, ON)
    	   } 
    	else if (Ist_KG_Living > Soll_KG_Living) {
    	  sendCommand(Heating_GKG_Living, OFF)
       	  }
       	
    end
    Sieht jemand den Fehler?

    Gruß Jan

    #2
    Hallo,
    bau dir doch mal ein Logging ein, dann siehst du welchen Zustand die einzelnen Items haben:
    z.b.

    logInfo("test","BLUETOOTH.state =" + BLUETOOTH.state)

    Holger

    Kommentar


      #3
      Ok, danke für den Hinweis. Das Problem war der Urlaubsschalter. Der war nicht initialisiert, da ich diesen noch nie betätigt hatte. Folglich konnte er auch nicht an oder aus auswerten.

      Kommentar


        #4
        Zitat von Jan0815 Beitrag anzeigen
        Das Problem war der Urlaubsschalter. Der war nicht initialisiert, da ich diesen noch nie betätigt hatte. Folglich konnte er auch nicht an oder aus auswerten.
        Danke für das Update!

        Bei der Verwendung der "else if" Kontrollstruktur empfiehlt es - aus diesem Grund - immer auch den "else" Zweig zu implementieren und darin ein entsprechendes Logging auszugeben. Auf diese Weise kommst Du dem Problem schneller auf die Spur.

        Gruß,

        Thomas E.-E.
        Visualisierung, Rule/Logic-Engine, Integrationsplattform mit openhab (Supportforum)

        Kommentar

        Lädt...
        X