Seite 1 von 1

Rolläden Endlosschleife?

Verfasst: 29. Sep 2015 20:30
von Cyrelian
Hi,

hab ich mir mit der Rule ne astreine Endlosschleife gebaut?

Code: Alles auswählen

rule "Rolläden runter Test"
when
        Item Sonnenuntergang_Event received update ON 
then
 		   	if (EGWohnzimmerRolladenTerrasse.state!=100 || EGWohnzimmerRolladenSofa.state!=100)
 		   		sendCommand(EGWohnzimmerRolladenTerrasse, DOWN)
    			sendCommand(EGWohnzimmerRolladenSofa, DOWN)
    				if (now.getHourOfDay >= 21 && now.getMinuteOfHour >=15){
    					sendCommand(EGWohnzimmerRolladenTuer, DOWN)
    	}
    	else{
  		createTimer (now.plusMinutes(5))[|
  			postUpdate (Sonnenuntergang_Event, ON)] 
    		}

end
CYA

Re: Rolläden Endlosschleife?

Verfasst: 29. Sep 2015 20:41
von seppy
Hmm als erstes sehe ich mal Klammerfehler. So würde das meiner Meinung nach Sinn ergeben:

Code: Alles auswählen

rule "Rolläden runter Test"
when
        Item Sonnenuntergang_Event received update ON 
then
	if (EGWohnzimmerRolladenTerrasse.state!=100 || EGWohnzimmerRolladenSofa.state!=100) {
		sendCommand(EGWohnzimmerRolladenTerrasse, DOWN)
		sendCommand(EGWohnzimmerRolladenSofa, DOWN)
	}
	
	if (now.getHourOfDay >= 21 && now.getMinuteOfHour >=15){
		sendCommand(EGWohnzimmerRolladenTuer, DOWN)
	} else {
		createTimer (now.plusMinutes(5))[|
			postUpdate (Sonnenuntergang_Event, ON)] 
	}

Re: Rolläden Endlosschleife?

Verfasst: 29. Sep 2015 20:55
von Cyrelian
Hi Seppy, sauber dank Dir. Ich werde mal an meiner Formatierung arbeiten, dann ist es echt übersichtlicher.[emoji4]


Gesendet von iPad mit Tapatalk

Re: Rolläden Endlosschleife?

Verfasst: 17. Okt 2015 11:09
von Cyrelian
Hi Gemeinde,

ich bin mal wieder am "rulen" ;) .

Ich möchte gerne die Rollos abhängig von der Jahreszeit steuern.

Fall 1. (Frühjahr und Sommer)
Rollos sollen 30min. nach Sonnenuntergang zu gehen

Fall 2. (Herbst und Winter)
Rollos sollen mit dem Sonnenuntergang zu gehen.

Bisher habe ich das:

ITEMS:

Code: Alles auswählen

String		Jahreszeit				"Jahreszeit [MAP(Jahreszeit.map):%s]"			<sun_clouds>	(gAstro)		{astro="planet=sun, type=season, property=name"}
Switch	Sonnenuntergang_Event			{astro="planet=sun, type=set, property=end"}
Switch	Sonnenuntergang_Event_After30_back	{astro="planet=sun, type=set, property=end, offset=30"}
Rule:

Code: Alles auswählen

rule "Rolläden Hausrückseite runter"
when
        Item Sonnenuntergang_Event_back received update ON or Item Sonnenuntergang_Event_After30_back received update ON
then
   if (Jahreszeit.state=="Autumn" || Jahreszeit.state=="Winter"){
   		if (EGWohnzimmerRolladenTerrasse.state!=100 || EGWohnzimmerRolladenSofa.state!=100) {
    	  sendCommand(EGWohnzimmerRolladenTerrasse, DOWN)
	      sendCommand(EGWohnzimmerRolladenSofa, DOWN)
   		}
   }

   if ((Jahreszeit.state=="Spring" || Jahreszeit.state=="Summer") && Sonnenuntergang_Event_After30_back.state==ON){
   		if (EGWohnzimmerRolladenTerrasse.state!=100 || EGWohnzimmerRolladenSofa.state!=100) {
    	  sendCommand(EGWohnzimmerRolladenTerrasse, DOWN)
	      sendCommand(EGWohnzimmerRolladenSofa, DOWN)
   		}
   }
   
   if ((Jahreszeit.state=="Autumn" || Jahreszeit.state=="Winter") && now.getHourOfDay >= 21 && now.getMinuteOfHour >=15){
      sendCommand(EGWohnzimmerRolladenTuer, DOWN)
   } else {
      createTimer (now.plusMinutes(5))[|
         postUpdate (Sonnenuntergang_Event_back, ON)] 
   }
end
Irgendwie hab ich das Gefühl als würde das noch was fehlen. Bin mir aber nicht sicher. Leider sind diese "Rules" nicht so einfach zu testen.

CYA

Re: Rolläden Endlosschleife?

Verfasst: 17. Okt 2015 19:49
von Cyrelian
und noch ne kleine Änderung: :D

Code: Alles auswählen

rule "Rolläden Hausrückseite runter"
when
        Item Sonnenuntergang_Event_back received update ON or Item Sonnenuntergang_Event_After30_back received update ON
then
   if (Jahreszeit.state=="Autumn" || Jahreszeit.state=="Winter"){
   		   if (now.getHourOfDay >= 21 && now.getMinuteOfHour >=15){
      		sendCommand(EGWohnzimmerRolladenTuer, DOWN)
   			} else {
      		createTimer (now.plusMinutes(5))[|
         		postUpdate (Sonnenuntergang_Event_back, ON)] 
   			}
   		if (EGWohnzimmerRolladenTerrasse.state!=100 || EGWohnzimmerRolladenSofa.state!=100) {
    	  sendCommand(EGWohnzimmerRolladenTerrasse, DOWN)
	      sendCommand(EGWohnzimmerRolladenSofa, DOWN)
   		}
   }

   if ((Jahreszeit.state=="Spring" || Jahreszeit.state=="Summer") && Sonnenuntergang_Event_After30_back.state==ON){
   		if (EGWohnzimmerRolladenTerrasse.state!=100 || EGWohnzimmerRolladenSofa.state!=100) {
    	  sendCommand(EGWohnzimmerRolladenTerrasse, DOWN)
	      sendCommand(EGWohnzimmerRolladenSofa, DOWN)
	      sendCommand(EGWohnzimmerRolladenTuer, DOWN)
   		}
   }

end