Seite 2 von 2

Re: Kleines Rule mit zwei Switches und schon habe ich ein Problem

Verfasst: 19. Mär 2020 22:18
von Boris099
Komisch, jetzt hat er es gefressen, ich probier es gleich noch aus...

und schalte ich auch OFF wenn ich E_Touch10_3 auf OFF schalte?

Re: Kleines Rule mit zwei Switches und schon habe ich ein Problem

Verfasst: 19. Mär 2020 22:20
von Boris099
Darkwin101 hat geschrieben: 19. Mär 2020 22:14 Im Then teil benötigst du die Abfrage if(E_Touch10_3.state == ON) nicht da die Regel sowieso nur ausgeführt wird wenn E_Touch10_3 On ist
OK rausgenommen, stört ihn nicht, zweit Klammer auch gelöscht


aber wie schalte ich nun OFF bevor der Timer abgelaufen ist?

Re: Kleines Rule mit zwei Switches und schon habe ich ein Problem

Verfasst: 19. Mär 2020 22:21
von Darkwin101
Ich verstehe deine Frage jetzt nicht genau was willst du den machen wenn du den Schalter betätigst jetzt reagiert die Rule nur auf ON bei OFF wird nichts unternommen

Re: Kleines Rule mit zwei Switches und schon habe ich ein Problem

Verfasst: 19. Mär 2020 22:26
von Darkwin101
OK wenn du das OFF noch möchtest brauchst du die If Abfrage

Code: Alles auswählen


rule "Alarm Manuell"
when 
	Item E_Touch10_3 changed
then                                                              								
if(E_Touch10_3.state == ON) {
    	if(SireneTimer2 === null) {                                                                
    	logInfo("Alarm Manuell","Alarm und LED ON, Rule Ende!")									
        Steckdose54.sendCommand(ON)      	                                                 
        SireneTimer2 = createTimer(now.plusSeconds(60), [ |                                 	
            Steckdose54.sendCommand(OFF)													
            SireneTimer2 = null																
        ] )																																											
    }}	
    else{ Steckdose54.sendCommand(OFF)
    SireneTimer2?.cancel
    SireneTimer2 = null}																					
end

Re: Kleines Rule mit zwei Switches und schon habe ich ein Problem

Verfasst: 19. Mär 2020 22:35
von Boris099
Hervorragend - funktioniert 1a

Vielen Dank

nun bin ich wieder ein Stück weiter und kann noch ein bisschen erweitern

Re: [SOLVED] Kleines Rule mit zwei Switches und schon habe ich ein Problem

Verfasst: 20. Mär 2020 08:00
von udo1toni
Ich glaube eher nicht, dass diese Rule so funktioniert, denn sie verwendet eine nicht initialisierte Variable.
:)
Sauber formatiert sähe es so aus:

Code: Alles auswählen

// Globale Variablen zu Beginn der Datei definieren!
var Timer SireneTimer2 = null

rule "Alarm Manuell"
when 
    Item E_Touch10_3 changed
then
    if(E_Touch10_3.state == ON) {
        if(SireneTimer2 === null) {
            logInfo("Alarm Manuell","Alarm und LED ON, Rule Ende!")
            Steckdose54.sendCommand(ON)
            SireneTimer2 = createTimer(now.plusSeconds(60), [ |
                Steckdose54.sendCommand(OFF)
                SireneTimer2 = null
            ] )
        }
    } else {
        Steckdose54.sendCommand(OFF)
        SireneTimer2?.cancel
        SireneTimer2 = null
    }
end

Re: [SOLVED] Kleines Rule mit zwei Switches und schon habe ich ein Problem

Verfasst: 20. Mär 2020 08:45
von Boris099
Hallo,

Ja das mit der globalen Varianten Definition hatte ich auch so gemacht, das hatte ich von dir schon gelernt :-}

Re: [SOLVED] Kleines Rule mit zwei Switches und schon habe ich ein Problem

Verfasst: 20. Mär 2020 18:22
von Boris099
Also doch noch was Kleines,

das mit den Klammern ist misteriös :-)
also das rule funktioniert "fast" den else Teil führt es nicht aus.
Also wenn ich den Switch ausschalte sollen auch die beiden Steckdosen und die zugehörigen Timer ausschalten,
tun sie aber nicht, die ignorieren mich :-)

Code: Alles auswählen

var Timer AlarmManuell = null
var Timer LEDTimer3 = null													

rule "Alarm Manuell"
when 
	Item E_Touch10_3 changed
then                                                              								
if(E_Touch10_3.state == ON) {
    	if(AlarmManuell === null) {                                                                
    	logInfo("Alarm Manuell","Alarm und LED ON")									
        Steckdose54.sendCommand(ON)
		LEDTimer3 = createTimer(now.plusMillis(10), [ |                                        
            if(Steckdose53.state != ON) {                                           
                Steckdose53.sendCommand(ON)                                               
                LEDTimer3.reschedule(now.plusSeconds(3))                                      
            } else {                                                                           
                Steckdose53.sendCommand(OFF)                                                    		
                LEDTimer3.reschedule(now.plusSeconds(3))                                     
            }																							
        AlarmManuell = createTimer(now.plusSeconds(60), [ |                                 	
            Steckdose54.sendCommand(OFF)
            LEDTimer3?.cancel                                                                  
            LEDTimer3 = null																
            if(Steckdose53.state != OFF)                                                        		
                Steckdose53.sendCommand(OFF)                                                    		
            AlarmManuell = null																
        ] )																																											
    ] )
    }
	else{ Steckdose54.sendCommand(OFF)
	Steckdose53.sendCommand(OFF)
    AlarmManuell?.cancel
    AlarmManuell = null}																					
}
end

Re: [SOLVED] Kleines Rule mit zwei Switches und schon habe ich ein Problem

Verfasst: 20. Mär 2020 18:30
von Darkwin101

Code: Alles auswählen

var Timer AlarmManuell = null
var Timer LEDTimer3 = null													

rule "Alarm Manuell"
when 
	Item E_Touch10_3 changed
then                                                              								
if(E_Touch10_3.state == ON) {
    	if(AlarmManuell === null) {                                                                
    	logInfo("Alarm Manuell","Alarm und LED ON")									
        Steckdose54.sendCommand(ON)
		LEDTimer3 = createTimer(now.plusMillis(10), [ |                                        
            if(Steckdose53.state != ON) {                                           
                Steckdose53.sendCommand(ON)                                               
                LEDTimer3.reschedule(now.plusSeconds(3))                                      
            } else {                                                                           
                Steckdose53.sendCommand(OFF)                                                    		
                LEDTimer3.reschedule(now.plusSeconds(3))                                     
            }																							
        AlarmManuell = createTimer(now.plusSeconds(60), [ |                                 	
            Steckdose54.sendCommand(OFF)
            LEDTimer3?.cancel                                                                  
            LEDTimer3 = null																
            if(Steckdose53.state != OFF)                                                        		
                Steckdose53.sendCommand(OFF)                                                    		
            AlarmManuell = null																
        ] )																																											
    ] )
    }}
	else{ Steckdose54.sendCommand(OFF)
	Steckdose53.sendCommand(OFF)
    AlarmManuell?.cancel
    AlarmManuell = null}																					
end
Du hast die If Anweisung nicht richtig geschlossen
Die Syntax ist immer IF{} else{} du hast aber IF{else{}}

Re: [SOLVED] Kleines Rule mit zwei Switches und schon habe ich ein Problem

Verfasst: 20. Mär 2020 18:46
von Boris099
Jawohl das war es, sieht alles so einfach aus ...

habe zusätzlich noch den 2ten Timer (LEDTimer3) in die else Bedingung aufgenommen.
Das funktioniert nun.

Vielen Dank