Rollo nach bestimmten Helligkeitswerten fahren?

Hallo
Ich möchte gern das unser Küchenrollo, bei >200 Lux hochfährt, dann bei >40000 Lux auf Position 60 % herunterfährt,
dann aber bei <28000 Lux wieder hochfährt und bei <50 Lux ganz herunter fährt.

Habe versucht das mit mehreren Ereignissen wie Grenzüber und Grenzunterschreitung zu lösen,
aber das klappt nur bedingt, die Vorgabe <50 Lux wird ignoriert.

Wie könnte ich das sonst noch lösen ?

Gruß

Wäre da nicht das IPSShutterControl das richtige für dich?

Sobald man da mit Helligkeitsgesteuerten Rolläden/Jalousien anfängt, kommen die Zusatzwünsche.
Als nächstes möchte man die Rolläden/Jalousien je nach Sonnenaufgang drehen/hochfahren lassen morgens.

Moin Du kannst per Skript auf unterschiedliche Ereignisse reagieren.
In jedem Step würde ich auch immer die aktuelle Position mit abfragen.

Ereignis #1: Helligkeit >200:
Rollo öffnen wenn Position komplett zu (100% geschlossen).
Ereignis #2: Helligkeit >40000lux Rollo auf 60%.

Ereignis #3: Sinkt die Helligkeit auf 28000lux das Rollo wieder öffnen, wenn es auf 60% steht.
Es könnte ja sein, das es manuell geschlossen wurde. Dann sollte es bei unterschreiten der Helligkeit nicht öffnen.

Ereignis #4: <50lux schließen.

Du kannst auf jedes Ereignis reagieren per Skript. Schau mal nach $_IPS[‚EVENT‘].

Gruß,
Peter

Das IPSShutterControl habe ich installiert, aber noch zu wenig damit beschäftigt.

„Peter“
Das mit den Scripten, da würde mir ein Beispiel sehr helfen!
Meinst Du das so, wenn ich ein Ausgelöstes Ereignis erstelle, und dann
die Grenzwertunterschreitung mit Variable auswähle, bei Aktion nicht
Gerät ausführen auswähle sondern Script starten?

Moin,

ich hab sowas in der Art schon gemacht.

Ich habe Zeiten mit eingebaut um eine Verzögerung zu realisieren. Hatte sonst das Problem das die Rollos sich zu oft bewegen.
Also die Helligkeit muss z.B 5min durchgängig da sein sonst wird nicht gefahren. Hab das alles in einem Script und rufe dies alle paar Min auf.

Im Bild mal zu sehen was bisher gemacht wurde.

Wenn ich zusätzlich ein Ereignis Grenzwert-Unterschreitung <29000 Lux hinzufüge „Rollo ganz hochfahren“,
wird das vorhandene Ereignis Grenzwert-Unterschreitung <50 Lux ganz zu fahren nicht mehr ausgeführt.
Kann ich in den Ereignissen zusäztlich PHP Code anhägen, zwecks Abfrage und erst fahren wenn
Zustand der Variable länger als 5 Min und gleich ist?

Mir fehlt da ein wenig der Ansatz.

Da fehlt der eigentliche Befehl was gemacht werden soll wenn das Ereignis eingetreten ist.
Entweder im Ereignis unter Code eintippen oder ein eigenes Skript erstellen.

Gesendet von meinem Redmi Note 2 mit Tapatalk

Oder du führst dein Script einfach Zyklisch aus und Prüfst da wie der Wert gerade ist, also ohne Ereignisse.

Falsch, Wenn ein Ereignis unterhalb einer Instanz liegt, Wird ein Dropdown-Menü mit den verfügbaren Befehlen angezeigt.
Da braucht man kein Code eintippen.

Zu den Ereignissen allgemein, Da gibt es noch den Haken 'nachfolgende Ereignisse ausführen ’ (oder so ähnlich) welcher auch gerne zu Fehlverhalten bei grenzüber/unterschreitung führt.
Gern
Michael

Im Ereignis unter Funktinsmenue ist folgend Auswahl vorhanden. " Variablenbedingt"
A) Eib_Position
B) Eib_Move
C) Eib_RequeStatus

Bei meinen Ereignissen wird per Funktion =Eib_Position bei <50 Lux auf 100 % gefahren = Geschlosssen
bei >200 Lux auf 0 % = Offfen und
bei >40000 Lux auf 60 % = Verschattung.

Nachfolgende Ereignisse habe ich nicht aktiviert.

Wenn ich aber <29000 Lux wieder auf 0% fahren als Ergegnis hinzufüge, wird die <50 Lux ignoriert.

Mir fehlen nun die Script Kenntnisse, um die aktuelle Position abzufragen, oder einen Zeitwert
hinzuzufügen, das die <29000 Lux länger als 5 Min aktiv sein sollen bevor wieder hochgefahren wird.

Bin dabei meich einzulesen, „Du kannst auf jedes Ereignis reagieren per Skript. Schau mal nach $_IPS[‚EVENT‘].“
Oder vielleicht mit "$Rollo_Position = GetValueInteger(47788);

Moin…

… eventuell funktionert das ja für Dich. Hab das mal eben auf die schnelle gebaut.

Du musst natürlich die ID’s der Ereignisse und Variablen anpassen, das sollte aber klar sein.
Die Variable Position und Helligkeit sind da nur, weil ich Sie zum "Testen benötigt hatte.

Das Skript macht eigentlich das was Du möchtest. Die Positionsabfrage habe ich eingebaut, damit die „Automatik“ unterbrochen wird, wenn z.B.

  • morgens vor dem Erreichen des >200 lux Wertes der Rollladen eventuell schon geöffnet wurde ( auf z.B. 70 %)
  • der Rolladen während der Beschattung ( >40000 lux = 60%) oder vor der Beschattung komplett geschlossen wird ( 100% ).
    Dann würde das Skript ihn nicht wieder automatisch bei <28000 lux öffnen, weil die 60% Position abgefragt wird.

Ab <50 lux wird der Rolladen geschlossen, egal welche Position er hat.
Wenn Du diese Positionsabfrage nicht möchtest, einfach raus nehmen.

Bei Fragen, wünschen etc. einfach melden. Eventuell hilft dir das ja?!

Gruß,
Peter

EDIT: Ich habe noch ein else-Befehl dazu gepackt, welcher Dir eine weitere Aktion oder Meldung ausgeben kann, wenn das Ereignis auslöst, aber die Positionsabfrage „false“ ist. Also der Fall, das die Automatik nicht greift.
Alles recht simpel und übersichtlich gehalten…


<?

 $position = GetValueInteger(22574 /*[TEST\BESCHATTUNG\Rollladen Position]*/); // Positionsvariable eines der Rollläden
 
 
 switch ($_IPS['EVENT'])
 
 {

	case 35047: // ID-Ereignis Helligkeit >200 lux

			if ($position >90)
			{
				SetValue(22574 /*[TEST\BESCHATTUNG\Rollladen Position]*/,0); // ROLLLADEN ÖFFNEN
				echo "Ereignis 200 lux: Rollläden öffnen";
         }
         else
         {
				echo "Ereignis 200 lux: Rollläden für Automatik nicht in richtiger Position";
         }
         
	break;

   case 10491: // ID-Ereignis Helligkeit >40000 lux

			if ($position <10)
			{
				SetValue(22574 /*[TEST\BESCHATTUNG\Rollladen Position]*/,60);
				echo "Ereignis 40000 lux: Rollläden auf 60% fahren zum beschatten";
         }
         else
         {
				echo "Ereignis 40000 lux: Rollläden für Automatik nicht in richtiger Position";
         }
         
	break;
		
	case 45024: // ID-Ereignis Helligkeit <28000 lux
	      
	      if ($position == 60)
			{
				SetValue(22574 /*[TEST\BESCHATTUNG\Rollladen Position]*/,0);
				echo "Ereignis 28000 lux: Rollläden wieder komplett öffnen";
         }
         else
         {
				echo "Ereignis 28000 lux: Rollläden für Automatik nicht in richtiger Position";
         }
         
	break;
		
   case 28988: // ID-Ereignis Helligkeit <50 lux

			SetValue(22574 /*[TEST\BESCHATTUNG\Rollladen Position]*/,100);
			echo "Ereignis 50 lux: Rollläden komplett schliessen";

	break;
	
	default:
	
			echo " Skript wurde nicht durch ein Lux-Ereignis ausgeführt!!";

	break;
	
	
 }

?>

Hallo PeterChrisben,
gerade erst deine Antwort gelesen. Nun habe ich mal einen Wegweiser.
Teste das am Wochenende.
Danke.

Hab das Skript gerade noch mal bissel erweitert.
Kannst ja mal berichten…

Gruß,
Peter

Habe folgenden Hinweis unter Medlungen.

26.06.2016 16:51:36*| ScriptEngine*| Result for Event 52247
<br />
<b>Notice</b>: Undefined variable: position in <b>C:\IP-Symcon\scripts\57785.ips.php</b> on line <b>27</b><br />
<br />
<b>Warning</b>: Variable is marked as read-only and cannot be changed in <b>C:\IP-Symcon\scripts\57785.ips.php</b> on line <b>29</b><br />
Ereignis 40000 lux: Rollläden auf 60% fahren zum beschatten

Die Variable kann ich doch nicht auf schreiben setzen, oder ?

Ne. Du musst natürlich deinen Befehl nutzen um die Position des Rollladen zu setzen.
Weiß nicht welches System Du nutzt?

Gesendet von iPhone mit Tapatalk

Ich verwende KNX.

Na dann den Befehl für KNX. EIB_Move oder EIB_Position oder wie auch immer du deine Rollläden fährst!?

Gesendet von iPhone mit Tapatalk

Ich nutze die EIB_Position.

Mein Problem ist das ich im Ereignis z.B. Grenzüberschreitung >200 wähle,
dann im nächten Fenster Gerät ausführen wähle.
Dann werden unter Funktionen die Möglickeiten angezeigt welche zu der
Variablen passen. In meinem Fall EIB_Positoni 60 %.
Wo muß das Script hin.

Du musst das Skript erstellen, darunter die Ereignisse erstellen ( unter dem Skript!!!)
Dann die Ereigniss-ID’s im Skript anpassen.
Dann in jedem Step EIB_Position… eintragen mit der passenden ID.
Die Positionsanzeige-ID anpassen wenn gewünscht, ansonsten entsprechendes auskommentieren/löschen.
Fertig.
Es kommt kein Code/Befehl in die Ereignisse!!!

Gesendet von iPhone mit Tapatalk

Hallo Peter Chrisben,

dank Deiner Hilfe habe ich es mit dem Scriptvorschlag hinbekommen.
Nun fehlt mir im Script <28000 Lux ein Timer damit bei kurzer
Bewölkung nicht gleich das Script startet.
Habe aber dazu folgenden Link gefunden.

Skript-Ausführung

Denke damit kann ich es realisieren:

Gruss und Danke nochmals.