Jalousieaktor definierte Positionen nicht korrekt

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*/

Hallo,

ich benutze zum normalen steuern kein Programm, da funktionieren die Standardaktionen bestens.
Einfach die „LEVEL“-Variable ins WEbfront nehmen und fertig.

Ein Steuerprogramm habe ich nur zum zeit- oder aktionsbedingten Steuern der Rollos.

Gruß, Peter

Ja, schon klar, dann habe ich den Slider im WF.

Das möchte ich aber nicht, mir reichen da die festen Positionen, ist schon optisch schöner;)

Nimm doch Shutter-Control dazu…

Aber da ist es doch auch nicht anders!?

Zumal ich darüber keine aktualisierung der WF-Anzeige bei Tasten-Bedienung erhalte.

Kann ich nicht bestätigen.
Ich kann meine Rollladen sogar ziemlich genau in 10%-Schritten einstellen.
Voraussetzung ist natürlich, das die AUF/ZU-Fahrwege genau eingemessen sind und auch die im Aktor programmierten Fahrzeiten von AUF-ZU und ZU-AUF stimmen.

du kannst ja der LEVEL-Variablen ein eigenes Profil zuordnen (siehe Grafik)
Gruß, Peter

grafik2.PNG

Wie genau ist bei dir denn genau?
Habe es auf eine halbe sek. genau eingemessen, also im Aktor direkt.

Wie gesagt das was mich am Shutter am meisten stört, dass die Variablen nicht bei manueller betätigung aktualisiert werden. Deshalb ist das eigentlich raus.

Okay, also hier mal mein Denkansatz.

Ich starte aus dem Skript heraus, über if Bedingungen ein zweites via IPS_RunScriptWait.
Jetzt muss ich es nur hinbekommen, dass es nicht schon nach abarbeitung des Scripts, das ist ja quasi sofort, sondern nach erreichen der Endposition weiter geht im ursprünglichen skript.

Wie gehe ich das am schlauesten an?
Ein If Schleife mit WORKING ist denke ich nicht so elegant!?

Wär super wenn ihr mir da unter die Arme greifen könntet.
Danke!

Hm, keiner eine Idee?

Wo sind denn die ganzen php Pro´s? :wink: