Seite 1 von 1

zusätzliche Bedingung in Rule einfügen ?

Verfasst: 14. Mai 2020 17:52
von Steinspiel
Moin,

Im Moment komme ich nicht weiter: ich habe folgende Rule, welche meinen "GIGASET G-TAG Schlüsselfinder" beim Nachhause kommen erkennt und wenn ein paar Kriterien erfüllt sind Licht einschaltet sowie Musik streamt. Funktioniert auch alles!

Code: Alles auswählen

var Number gruenCount = 0											// Variable fuer gruenen Counter  wird auf "0" definiert


rule "GTag_2 Nachmittag"

when   
    Item GTag_2 changed to ON										// GTag_2 EIN geloggt

then
    if(UHR_nachmittags.state == ON) {								// und es ist werktags zwischen 13:00 und 19:00 Uhr

            if(Flur1_Brightness.state > 0) {						// Abfrage ob Flur1 schon an ist, wenn ja -> Abbruch
                return;
                }

                    if(GTag_1.state == ON){							//Abfrage: ist GTag_1 eingeloggt? Wenn ja -> Abbruch
                    return;
                    }

                        if(gruenCount > 0){							//Abfrage: ist gruenCount schon hochgezählt? Wenn ja -> Abbruch
                        return;
                        }

                            Flur1_Brightness.sendCommand(80)		// Flurlampe 1 auf 80% Dimmen, Ein
                            Flur2_Brightness.sendCommand(80)		// Flurlampe 2 auf 80% Dimmen, Ein
                            Flur3_Brightness.sendCommand(80)		// Flurlampe 3 auf 80% Dimmen, Ein   

                            Mini_Playuri.sendCommand("https://ndr-ndr2-hamburg.sslcast.addradio.de/ndr/ndr2/hamburg/mp3/128/stream.mp3")            // streamt Radio
                            Mini_Volume.sendCommand(40) 
     
    
                                gruenCount = gruenCount + 1			// Counter wird um "1" hochgezaehlt
    }
end
Nun will ich gerne das das Licht nur einschaltet wenn der Lichtlevel Wert meines HUE Bewegungsmelder unter 3600 ist, also ich dachte:

Code: Alles auswählen

    if(Hue_AmbientLight_Sensor1_LightLevel.state as Number > 3600) {		// Abfrage des Bewegungsmelders   
	return;
Nun meine Frage:
Ich weiß nicht wo ich diese Zeile Einfüge bzw. wie ich sie mit dem Flurlicht verknüpfe damit, egal wie der Lichtlevel ist, die Musik auf jeden Fall gestreamt wird.

Kann mir jemand auf die Sprünge helfen?

Re: zusätzliche Bedingung in Rule einfügen ?

Verfasst: 14. Mai 2020 18:52
von Darkwin101
Na die Abfrage muss da hin wo du die Lampen Schalten willst

Code: Alles auswählen

......
			if(Hue_AmbientLight_Sensor1_LightLevel.state as Number > 3600) {
                            Flur1_Brightness.sendCommand(80)		// Flurlampe 1 auf 80% Dimmen, Ein
                            Flur2_Brightness.sendCommand(80)		// Flurlampe 2 auf 80% Dimmen, Ein
                            Flur3_Brightness.sendCommand(80)		// Flurlampe 3 auf 80% Dimmen, Ein
                            }
                              Mini_Playuri.sendCommand("https://ndr-ndr2-hamburg.sslcast.addradio.de/ndr/ndr2/hamburg/mp3/128/stream.mp3")            // streamt Radio
                            Mini_Volume.sendCommand(40) 
.....
indem Fall darf das return nicht vorkommen da sonst die Regel abgebrochen wird.
Die Punkte stehen dort im Code für den Rest deiner Rule

Re: zusätzliche Bedingung in Rule einfügen ?

Verfasst: 14. Mai 2020 18:57
von violine21
Wenn ich Dich richtig verstanden habe, versuch es mal damit:

Code: Alles auswählen

...
if(gruenCount > 0){							//Abfrage: ist gruenCount schon hochgezählt? Wenn ja -> Abbruch
                        return;
                        }
                            if(3600 > Hue_AmbientLight_Sensor1_LightLevel.state as Number) {		// Abfrage des Bewegungsmelders 
                                Flur1_Brightness.sendCommand(80)		// Flurlampe 1 auf 80% Dimmen, Ein
                                Flur2_Brightness.sendCommand(80)		// Flurlampe 2 auf 80% Dimmen, Ein
                                Flur3_Brightness.sendCommand(80)		// Flurlampe 3 auf 80% Dimmen, Ein   
                            }
                            Mini_Playuri.sendCommand("https://ndr-ndr2-hamburg.sslcast.addradio.de/ndr/ndr2/hamburg/mp3/128/stream.mp3")            // streamt Radio
                            Mini_Volume.sendCommand(40) 
     
    
                                gruenCount = gruenCount + 1			// Counter wird um "1" hochgezaehlt
                                ...
                                

Re: zusätzliche Bedingung in Rule einfügen ?

Verfasst: 14. Mai 2020 19:00
von violine21
Oh, da war einer schneller. ;)

Bei der Schreibweise meckert bei mir immer VSC:

Code: Alles auswählen

if(Hue_AmbientLight_Sensor1_LightLevel.state as Number > 3600)
Ich muss mir dann immer so behelfen:

Code: Alles auswählen

if(3600 > Hue_AmbientLight_Sensor1_LightLevel.state as Number)
Kennt jemand evtl. den Grund dafür?

Re: zusätzliche Bedingung in Rule einfügen ?

Verfasst: 14. Mai 2020 21:00
von Steinspiel
Darkwin101 hat geschrieben: 14. Mai 2020 18:52 [...]
indem Fall darf das return nicht vorkommen da sonst die Regel abgebrochen wird.
Jetzt wo ich es lese, sehe ich es auch: das "return" war mein falscher Ansatz. Danke.

Aber, so wie Du es geschrieben hast, heißt es doch das Licht geht an wenn Lichtlevel größer als 3600, oder?
Ich habe ">" gegen "<" getauscht aber dann meckert VSC bei mir rum!

Schreibe ich wie @violine21 es geschrieben hat, nur mit "<"

Code: Alles auswählen

if(3600 < Hue_AmbientLight_Sensor1_LightLevel.state as Number)
nimmt VSC das auch ohne zu meckern und ich denke das war es,

Wieder was gelernt und Danke!

Re: zusätzliche Bedingung in Rule einfügen ?

Verfasst: 14. Mai 2020 21:04
von Darkwin101
Ich habe nur deinen Code Kopiert von oben und an die richtige stelle eingefügt ;)
Natürlich ist < richtig warum er das nun nicht annimmt da bin ich überfragt

Re: zusätzliche Bedingung in Rule einfügen ?

Verfasst: 14. Mai 2020 21:48
von udo1toni
Du kannst auch einfach Klammern setzen ;)
as hat eine geringere Priorität als >, also entsprechend einfach so schreiben:

Code: Alles auswählen

if((Hue_AmbientLight_Sensor1_LightLevel.state as Number) > 3600)