Moinsen!
Hatte zwar schon im Webfront Forum gepostet, aber da passt das nicht wirklich hin.
Verwende das Skript von „blopp“ um meine Rolladen in vordefinierte Positionen zu fahren. was eigentlich auch recht gut funktioniert.
Allerdings nur, solange ich die Jalousien aus einer definierten Position fahre, also z.B. von Geöffnet auf 75%.
Wenn sie sich gerade irgendwo befinden kommt es zu ganz zufälligen Positionen…
Denke mal das es mit den unterschiedlichen Geschwindigkeiten bei auf und ab zusammenhängt.
Daher nun die Überlegung ob man vor der eigentlichen Position erst einmal komplett hoch, bzw. runter fährt!?
Nur wie könnte man das mit dem Script von blopp umsetzen?
Es wird ja nicht funktionieren vor dem setzen der Position auf 100% zu fahren, denn das müsste ja erst einmal abgewartet werden!?
Zudem macht es ja durchaus Sinn bei 25% und 50% von oben zu fahren und bei 75% und 99% von unten, um kurzere Laufzeiten zu erzielen.
Danke euch!
/***************************************/
/* Ab hier Konfigurieren */
$id_aktor = 35808 /*[Obergeschoss\Ausbau\Atelier\Jalousie\Aktor]*/ ;
$id_MyLevel = 34968 /*[Obergeschoss\Ausbau\Atelier\Jalousie\Level]*/ ;
/* Bis hier Konfigurieren */
/***************************************/
//* Aktuellen Level des Aktor auslesen
$id_Level = @IPS_GetObjectIDByName("LEVEL", $id_aktor);
$Level = GetValue($id_Level);
//Webfront-Eingabe einlesen und Jalousie ansteuern
if ($IPS_SENDER == "WebFront") {
SetValue($IPS_VARIABLE, $IPS_VALUE);
//"MyLevel" wird der über Webfront eingelesene Wert übergeben
$MyLevel = GetValue($id_MyLevel);
//Zu setzender LEvel "SetLEvel" wird lokal bestimmt
$SetLevel = 1.0;
if ($MyLevel == 25)
$SetLevel = 0.8;
if ($MyLevel == 50)
$SetLevel = 0.65;
if ($MyLevel == 75)
$SetLevel = 0.45;
if ($MyLevel == 99)
$SetLevel = 0.1;
if ($MyLevel == 100)
$SetLevel = 0.0;
//Aktor wird mit berechnetem "SetLevel" angesteuert
HM_WriteValueFloat ($id_aktor, "LEVEL", $SetLevel);
} /*Webfront*/
else
{ //Else-Zweig soll ausgeführt werden, wenn Script durch Trigger "Working == False" gestartet wird
//Lokale Berechnung von $MyLevel
$MyLevel = 100;
if ($Level >= 0.09)
$MyLevel = 99;
if ($Level >= 0.44)
$MyLevel = 75;
if ($Level >= 0.64)
$MyLevel = 50;
if ($Level >= 0.78)
$MyLevel = 25;
if ($Level >= 0.9)
$MyLevel = 0;
//Berechneter MyLevel wird geschrieben
SetValueInteger($id_MyLevel, $MyLevel);
} /*else Webfront*/