irgendwie spielt mir das neue Webfrontend einen Streich.
Ich habe für den Homematic Rolladenaktor, statt des 0-100% Balkens, vier versichiedene Stati von „Offen“, über „Beschattung“, „Zu mit Lüftungsschlitzen“ und „ganz geschlossen“ definiert.
Nun habe ich ein sehr interessantes Verhalten.
Klicke ich auf den Butten offen, fährt der Rolladen hoch und zeigt danach auch den Butten „offen“ als aktiv an, alles gut.
Klicke ich jedoch auf Beschattung fährt der Rolladen zwar in die gewünschte Position, zeigt im Webfrondend aber „Zu mit Lüftung“ als aktiv an.
Was habe ich hier falsch gemacht?
Im Anhang die Screenshots des Webfrontends und der Konfig.
Warum muss ich das denn, wenn wohl automatisch Buttons aktiv gesetzt werden?
ich habe das versucht und immer gleich zwei Fehlermeldungen bekommen.
Vorallem die Meldung der nur-Lesen Variable irritiert mich, ich kann sie nämlich nicht ändern.
um ehrlich zu sein ich habe das Prinzip des ganzen noch nicht richtig verstanden, 44434 ist die Instanz.
Nein ich habe keine eigene Variable angelegt, ich wollte direkt mit der Homematic Level Variable (Float) arbeiten und der nur ein anderes Profil zuweisen.
OK, wenn ich eine eigene Variable anlege und nicht die Homematic Variable verwende, dann funktioniert es, dann muss ich aber diesen Aufwand für jedes Fenster extra treiben, mit Variable, Skript, etc …
Einfacher wäre doch, wenn ich der Homematic Variable „LEVEL“ einfach ein anderes Profil zuweisen könnte.
ausserdem wird der Status nicht angepasst, wenn der Rolladen von Hand oder einem anderen Skript betätigt wird. Wie kann man das denn in Griff bekommen?
so jetzt bin ich dem ganzen Thema mal auf den Grund gegangen,
Ergebnis:
Ich sage dem HM Rolladenaktor fahre auf den Wert 0,45 was macht er, er fährt auf den Wert 0,44. Sage ich fahre auf 0,15 fährt er auf 0,14.
Und dies bewirkt, dass im Webfrontend die falschen Buttons aktiviert werden, nämlich jeweils der für den kleineren Wert.
Das Script besteht damit aus 2 Teilen:
a) Aufruf über Webfront führt zu Setzen des Aktor-Level
b) Aufruf über Aktor-Working == false führt zu auslesen des Aktor-Level und setzen der Integer-Visualisierungs-Variable
Hier das Script, welches ich für jeden Aktor angelegt habe:
// Anzeige Ist Mapping (Unten-Oben)
// My_Level SetLevel
// Zu 0.0 0.0-0.1
// 20 0.3 0.1-0.4
// 40 0.5 0.4-0.6
// 60 0.7 0.6-0.75
// 80 0.8 0.75-0.9
// Offen 1.0 0.9-1.0
/***************************************/
/* Ab hier Konfigurieren */
$id_aktor = 34525 /*[Homematic\Jalousie 4]*/;
$id_MyLevel = 10766 /*[Homematic\Jalousie 4\MyLevel]*/;
/* 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 = 0.0;
if ($MyLevel == 20)
$SetLevel = 0.3;
if ($MyLevel == 40)
$SetLevel = 0.4;
if ($MyLevel == 60)
$SetLevel = 0.7;
if ($MyLevel == 80)
$SetLevel = 0.8;
if ($MyLevel == 100)
$SetLevel = 1.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 = 0;
if ($Level > 0.1)
$MyLevel = 20;
if ($Level > 0.4)
$MyLevel = 40;
if ($Level > 0.6)
$MyLevel = 60;
if ($Level > 0.75)
$MyLevel = 80;
if ($Level > 0.9)
$MyLevel = 100;
//Berechneter MyLevel wird geschrieben
SetValueInteger($id_MyLevel, $MyLevel);
} /*else Webfront*/
?>
Hole das hier gerade noch einmal hervor, denn ich habe das Script oben nun auch für zwei Aktoren im Einsatz.
Habe die Steuerzeiten entsprechend angepasst und funktioniert auch recht gut.
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?
Danke euch!
ups, sehe grade bin im Webfront Forum gelandet, passt ja ned so ganz, kann man das verschieben!?