Weihnachtslichter und Hausbeleuchtung

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Benutzeravatar
djuscha
Beiträge: 130
Registriert: 14. Mai 2016 00:12

Weihnachtslichter und Hausbeleuchtung

Beitrag von djuscha »

Hab bei mir im Haus aussen Beleuchtung die schalte ich mit Sonnenuntergang ein und um 12 uhr aus..Jetz wollte ich die gedimmt einschalten aber nur über Weihnachten( damit Weihnachtslichter die ich zusätzlich einschalte , besser zur geltung kommen) dafür hab ich Weihnachtschalter der zum ersten Advent an geht und im Jahnuar aus. Die rule reagiert aber nicht Hausbeleuchtung geht an und aus aber nicht gedimmt:(
mit dem Timer schalte ich nochmal zur Sicherheit.
Was hab ich denn falsch gemacht

Code: Alles auswählen

rule "Licht Sonnerunter an"
when
    Item NightState received update ON 
   
    
then
   if ( Weihnachtsbeleuchtung.state == ON ){
     
  
    Light4_Color. sendCommand ("227,30,100")
    Light4_Dimmer. sendCommand ("50")
   createTimer(now.plusSeconds(300)) [|sendCommand(Light4_Dimmer ,50)]


     Light6_Color. sendCommand ("227,30,100")
     Light6_Dimmer. sendCommand ("50")
     createTimer(now.plusSeconds(300)) [|sendCommand(Light4_Dimmer ,50)]


     
 
  }
else 
     
   
   Light4_Color. sendCommand ("227,30,100")
   createTimer(now.plusSeconds(300)) [|sendCommand(Light4_Toggle ,ON)]

    Light6_Color. sendCommand ("227,30,100")
    createTimer(now.plusSeconds(300)) [|sendCommand(Light6_Toggle ,ON)]

    
end



 rule "Licht  12 Uhr aus"
when
   Time cron "0 0 0 * * ?" 
  
   
then

   Light4_Toggle.sendCommand ("OFF")
   Light6_Toggle.sendCommand ("OFF")
   
  logInfo("rule","Licht  12 Uhr aus")
  end
  
  

Benutzeravatar
peter-pan
Beiträge: 2564
Registriert: 28. Nov 2018 12:03
Answers: 25
Wohnort: Schwäbisch Gmünd

Re: Weihnachtslichter und Hausbeleuchtung

Beitrag von peter-pan »

Ich kenne dein Items nicht, aber vielleicht lässt du mal die Leerzeichen zwischen Item und dem "sendCommand" (Methode) weg.
von:

Code: Alles auswählen

 Light6_Dimmer. sendCommand ("50")
auf:

Code: Alles auswählen

 Light6_Dimmer.sendCommand (50)
ohne Anführungszeichen.

Ich weiss auch nicht, ob der Befehl (Action) sendCommand(Light4_Dimmer ,50) im Timer funktioniert, da hier eigentlich nur ein String übergeben werden kann (soweit ich weiss).

Bekommst du keine Fehlermeldungen im Log ?
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.1.1 openhabian

Benutzeravatar
Cyrelian
Beiträge: 601
Registriert: 24. Sep 2015 17:55
Answers: 4

Re: Weihnachtslichter und Hausbeleuchtung

Beitrag von Cyrelian »

Hi,

so sollte es passen:

Code: Alles auswählen

rule "Licht Sonnerunter an"
when
    Item NightState changed from OFF to ON
then
   if (Weihnachtsbeleuchtung.state == ON){
		Light4_Color.sendCommand ("227,30,100")
		Light4_Dimmer.sendCommand (50)
		createTimer(now.plusSeconds(300)) [|Light4_Dimmer.sendCommand(50)]
		Light6_Color.sendCommand ("227,30,100")
		Light6_Dimmer. sendCommand (50)
		createTimer(now.plusSeconds(300)) [|Light4_Dimmer.sendCommand(50)] 
  }
else 
   	Light4_Color.sendCommand ("227,30,100")
   	createTimer(now.plusSeconds(300)) [|Light4_Toggle.sendCommand(ON)]
    Light6_Color. sendCommand ("227,30,100")
    createTimer(now.plusSeconds(300)) [|Light6_Toggle.sendCommand(ON)]
end


rule "Licht  12 Uhr aus"
when
   Time cron "0 0 0 * * ?"    
then
   	Light4_Toggle.sendCommand (OFF)
   	Light6_Toggle.sendCommand (OFF)
	logInfo("rule","Licht  12 Uhr aus")
end
CU
Cyrelian

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

Re: Weihnachtslichter und Hausbeleuchtung

Beitrag von udo1toni »

Die Definition der Timer ist so eigentlich Quatsch. Beide Timer, die "hintereinander" gestartet werden, enden quasi zeitgleich, da nur wenige Millisekunden dazwischen liegen. Die Frage ist nun: sollen die Lichter zeitgleich eingeschaltet werden, oder sollen sie im Abstand von 5 Minuten eingeschaltet werden? Aber auch sonst wirft die Rule einige Fragen auf.
Etwas aufgeräumt sieht der Code so aus (er sollte funktionsidentisch zum Originalcode sein, bis auf die Fehler...):

Code: Alles auswählen

// Globale Variablen zu Beginn der Datei 
var String strXmasColor = "227,30,100"
var Timer tXmas = null


rule "Licht Sonnerunter an"
when
    Item NightState changed from OFF to ON
then
    tXmas?.cancel
    Light4_Color.sendCommand(strXmasColor)
    Light6_Color.sendCommand(strXmasColor)
    if (Weihnachtsbeleuchtung.state == ON){
        Light4_Dimmer.sendCommand(50)
        Light6_Dimmer.sendCommand(50)
        tXmas = createTimer(now.plusSeconds(300), [| // ?
            Light4_Dimmer.sendCommand(50)            // ? Warum nach 5 Minuten identisch wiederholen?
            Light6_Dimmer.sendCommand(50)            // ?
        ])
    } else {
        tXmas = createTimer(now.plusSeconds(300), [|
            Light4_Toggle.sendCommand(ON)
            Light6_Toggle.sendCommand(ON)
        ]
    }
end

rule "Licht  12 Uhr aus"
when
   Time cron "0 0 0 * * ?"    
then
    Light4_Toggle.sendCommand(OFF)
    Light6_Toggle.sendCommand(OFF)
    logInfo("rule","Licht 12 Uhr aus")
end
Man sollte Timer grundsätzlich nicht einfach so erzeugen, ohne die Möglichkeit, den Timer auch zu stoppen.

Aber zurück zu meiner Frage...
Ist die Weihnachtsbeleuchtung aktiv, wird sofort eine Farbe gewählt und unmittelbar der zugehörige Dimmer auf 50% gesetzt. Nach fünf Minuten wird der Dimmer erneut auf 50% gesetzt.
Ist die Weihnachtsbeleuchtung nicht aktiv, wird ebenfalls sofort eine Farbe gewählt. Nach 5 Minuten werden die Lichter eingeschaltet. Diese Regel sieht für mich ehre danach aus, dass da etwas durcheinander geraten ist. Also:

Was bezweckst Du überhaupt?
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Benutzeravatar
djuscha
Beiträge: 130
Registriert: 14. Mai 2016 00:12

Re: Weihnachtslichter und Hausbeleuchtung

Beitrag von djuscha »

Hatte früher Verbindungsproblemme bei Hue, deswegen hab ich gedacht ich schalte die Lampen zweimal an mit Abstand...wenn erstemal nicht ging dann ging beim zweitenmal deswegen der Timer dazwischen. So lief das bis ich mit Weinachtsbeleuchtung anfing.
Aber eigentlich sollen die Hue nur wärend der Weihnachtsbeleuchtung.state == ON gedimmt auf 50 eingeschaltet werden Kaltweiss . ansonsten ganz normal auf 100 % auch Kaltweiss. Alle zeitgleich
also wäre das ohne den Timmer so richtig?

Code: Alles auswählen

// Globale Variablen zu Beginn der Datei 
var String strXmasColor = "227,30,100"
var Timer tXmas = null


rule "Licht Sonnerunter an"
when
    Item NightState received update ON 
then
    
    Light4_Color.sendCommand(strXmasColor)
    Light6_Color.sendCommand(strXmasColor)
    if (Weihnachtsbeleuchtung.state == ON){
        Light4_Dimmer.sendCommand(50)
        Light6_Dimmer.sendCommand(50)
    } 
    
    else {
           Light4_Color.sendCommand(strXmasColor)
           Light6_Color.sendCommand(strXmasColor)
        
            Light4_Toggle.sendCommand(ON)  
            Light6_Toggle.sendCommand(ON)
        
        
    }
end

rule "Licht  12 Uhr aus"
when
   Time cron "0 0 0 * * ?"    
then
    Light4_Toggle.sendCommand(OFF)
    Light6_Toggle.sendCommand(OFF)
    logInfo("rule","Licht 12 Uhr aus")
end

Antworten