HA-Bridge gemeinsam mit IP-Symcon betreiben

Dann einfach RequestAction als Wert dann eben -2 für Stop. Du müsstest nur rausbekommen ob der Rollladen noch läuft oder nicht um entscheiden zu können welchen Befehl Du sendest.

Hallo Fonzo,
vielen Dank für deine Einschätzung.
Ich frage mich nur, wie es dann in der WebFront funktioniert, wenn der Status während des Fahrens nicht aktualisiert wird…
Muss das überhaupt überprüft werden oder genügt es, wenn im Script der zweite Befehl immer Stop ist?

So ist es jedenfalls bei meinem Wandtaster auch…
erster Tastendruck fährt in gewünschte Richtung
zweiter Tastendruck (egal ob rauf oder runter) ist Stop
dritter Tastendruck fährt wieder in gewünschte Richtung

Und wenn der Rollladen nach dem ersten Tastendruck bis auf Endposition gefahren ist und abschaltet hat und man möchte ihn wieder entgegengesetzt bewegen ist der zweite Tastendruck aber erst wieder Stop, erst beim dritten betätigen bewegt er sich dann mit dem Wandtaster entgegengesetzt…
Mit diesem Verhalten könnte ich in der Harmoy gut leben.

Gruß Yansop.

Wie es den Anschein hat, nutzt auch die WebFront für die Statusanzeige den Shutter…oder liege ich da falsch?

Aber inwieweit ich es umsetzten kann bin ich leicht überfordert :confused:

Gruß Yansop.

zweiter Anhang vergessen…

Nicht jedes Gerät, wie Rplläden senden beim Fahren kontinuierlich den Status sondern oft erst beim erreichen des Endpunkts. Für den Webfront reicht es ja an sich auch wenn sich der Status dann aktualisiert wenn das gerät auch einen Status meldet. Wenn man einen kontinuierlichen Status haben will auch während der Rollladen fährt muss man dann eben zusätzlich die Instaz ShutterControl nutzten, diese berechnet die Position über die Laufzeit.

Wie man das macht ist ja Geschmackssache, ich persönlich versuche eine automatisierung immer aufgrund von einer Status Abfrage aufzubauen und nicht nur nach einem einfachen Zähler.
Wenn immer der zweite Befehl Stop ist, ist das auch ein wenig umständlich, weil Du dann unabhänig davon ob es Sinn macht oder nicht, ein Stop Befehl schickst. Ich würde das versuchen so zu lösen das Du eine weitere eigene Varibale anlegst vom Typ Boolean. Zu Beginn wird der Wert geprüft, sollte dieser false sein, setzt Du die Variable auf true und sendest den Schaltbefehl. Die Variable setzt du über ein Ereigniss auf false sobald eine Statusaktualisierung stattfindet, dann hat der Rollladen die Position erreicht.
Solltest Du jetzt zwichenzeitlich nachmals die Taste auf der harmony drücken und der Rollladen hat die Endposition noch nicht erreicht, wurde dann Deine eigene Variable auch noch nicht durch ein Ereignis auf false gestzt. Somit kannst Du im fall das die Varibale den Wert true hast einen Stop befehl setzten und die Variable dann selber auf false setzten.

Auch das könntest Du realisieren, dann brauchst Du eben kein Ereignis wie oben beschrieben das den Wert setzt sobald der Rollladen einen Status zurückgemeldet hat. Statt dessen hast Du eine Varibale deren Wert Du prüfst und die Du auf den entgegen gestzten Wert setzt. So wechselt der Wert jedes mal. Dann kannst Du abhänig vom Wert eben Stop schicken oder einen anderen Befehl.
Ich würde eher Option 1 probieren einzurichten (s.o.) .

Hallo Fonzo,

ich verstehe was du meinst, dennoch habe ich bei der Scripterstellung meine Probleme da ich als Newbie nicht weiß wie ich dieses so einbauen könnte.
Wäre Klasse wenn du mich hier ein wenig auf den Weg bringen könntest bei Scripterstellung :rolleyes:

Gruß Yansop.

Ich würde das versuchen so zu lösen das Du eine weitere eigene Varibale anlegst vom Typ Boolean. Zu Beginn wird der Wert geprüft, sollte dieser false sein, setzt Du die Variable auf true

etwa so?

Variable steht auf true, sobald sich die Position ändert wird die Variable auf false gesetzt

und sendest den Schaltbefehl

:confused::confused:

Natürlich andersrum: Variable für den Status steht auf false und bei Änderung der Position auf true

Ja so sollte da an sich gehen musst Du dann ausprobieren.

Die Variable wird auf false gesetzt, wenn sich die Position aktualisiert. Also must Du nur dafür sorgen das Du die Variable prüfst bzw. setzt, sobald Du einen Befehl von der HA-Bridge bekommst.


if(isset($_GET["state"]))
{
    $state = $_GET["state"];
    $current_state = GetValue(58702);
}
else
{
    $state = "unkown";
}
if(isset($_GET["level"]))
{
    $level = $_GET["level"];
 $current_state = GetValue(58702);
}
else
{
    $level = -1;
}


erst auslesen

Dann abhängig vom Wert schalten


switch ($_GET["name"]) {

case "rollladenterrasse":

if($state == "on" && $current_state == false)
{
    RequestAction(47567, true);
SetValue(58702, true); // Variable auf true setzten, wird durch Ereignis wieder auf false gesetzt
}
if($state == "on" && $current_state == true)
{
    RequestAction(59692, -2); // Stopp senden wenn die Endpostion noch nicht erreicht wurde
SetValue(58702, false); // Variable sofort auf false setzten, das Anfahren der Position wird ja gestoppt
}
elseif($level > -1)
{
    RequestAction(59692, $level);
}
elseif($state == "off")
{
    RequestAction(47567, false);
}
break;


So in der Art, ausprobieren müsstest du das selber, Du besitzt ja das Gerät.

Das Script habe ich mal so eingepflegt (es wird vorerst nur der Rollladen gesteuert):

<?php
if(isset($_GET["type"]) && isset($_GET["name"]) && isset($_GET["state"]))
{
IPS_LogMessage("hook habridge", print_r($_GET, true));

    $state = $_GET["state"];
    $current_state = GetValue(58702);
}
else
{
    $state = "unkown";
}
if(isset($_GET["level"]))
{
    $level = $_GET["level"];
 $current_state = GetValue(58702);
}
else
{
    $level = -1;
} 

switch ($_GET["name"]) {

case "rollladenterrasse":

if($state == "on" && $current_state == false)
{
    RequestAction(47567, true);
SetValue(58702, true); // Variable auf true setzten, wird durch Ereignis wieder auf false gesetzt
}
if($state == "on" && $current_state == true)
{
    RequestAction(59692, -2); // Stopp senden wenn die Endpostion noch nicht erreicht wurde
SetValue(58702, false); // Variable sofort auf false setzten, das Anfahren der Position wird ja gestoppt
}
elseif($level > -1)
{
    RequestAction(59692, $level);
}
elseif($state == "off")
{
    RequestAction(47567, false);
}
break; 

}
}
else
{
echo "Das Skript kann nur durch einen Webhook aufgerufen werden";
}

Aber es scheint noch ein Problem mit einer Klammer zu geben:
Parse error: syntax error, unexpected ‚}‘, expecting end of file in /var/lib/symcon/scripts/39071.ips.php on line 48

Die Ha-Bridge müsste bestimmt auch noch angepasst werden (Target Ithem)…?

Und die Variable „Status“ ändert sich zwar bei einer Veränderung von „true“ auf „false“ aber nicht mehr durch ein Ereignis zurück auf „true“, ist das richtig?

Da Du nur ein einziges Skript durch die HA-Bridge aufrufst solltest Du dort dann auch alle möglichen übergeben Parameter prüfen.
Also erst mal prüfen ob State, level oder color übergeben worden ist und dann auf die entsprechnde varibale zugreifen. Wenn Du auf eine Klammer mit dem Cursor gehst siehst Du auch wo die schließende Klammer sitzt.


IPS_LogMessage("hook habridge", print_r($_GET, true));

if((isset($_GET["state"]) || isset($_GET["level"]) || isset($_GET["color"])) && isset($_GET["type"]) && isset($_GET["name"])) // prüft ob alle Parameter übergeben worden sind
{
if(isset($_GET["state"]))
{
    $state = $_GET["state"];
}
else
{
    $state = "unkown";
}
if(isset($_GET["level"]))
{
    $level = $_GET["level"];
}
else
{
    $level = -1;
}
if(isset($_GET["color"]))
{
    $color = $_GET["color"];
}
else
{
    $color = '';
}
// ...

}
else
{
echo "Das Skript kann nur durch einen Webhook aufgerufen werden";
}




Das hängt ganz davon ab was Du auf der Harmony Remote auf die Tasten für das Gerät gelegt hast, in der Regel solltest Du auch bei einem Rollladen on / dim / off ausgefüllt haben. On eben für hoch, off für runter und dim bei einem Rollladen wenn Du einen Prozent Wert zum Anfahren einer Zwischenposition nutzten willst.

Dann must Du nach mal überprüfen was Du bei dem Ereignis eingestellt hast.

Wie viele Geräte willst Du am Schluss eigentlich von der Harmony Remote aus schalten können?

Hallo Fonzo,

das von dir geänderte Script scheint keine Fehler zu erkennen, nachdem ich den Doppelpunkt „:“ am Ende des Scrpts entfernt habe.
Oder hat dieser einer bestimmte Bedeutung?

Ich dachte eigentlich alles über die Dim-Taste zu regeln:
Pfeiltaste nach oben= Rollladen fährt nach oben
Pfeiltaste nach unten= Rollladen fährt nach unten
Zum Stoppen Pfeiltaste oben oder Pfeiltaste unten drücken

Die Einstellungen vom Ereignis:

Das Ereignis schaltet ja bei Änderung auf true, aber ist ist ja auch nichts hinterlegt, das das Ereignis wieder auf false umschalten soll.
Das übernimmt doch das Script, oder stehe ich da wieder auf dem Schlauch?

1x Rollladen (Rauf/Runter/Stopp)
2x Licht (An/Aus)

Nein, der : ist wie auch immer da reingerutscht, der ist falsch und überflüssig.

In dem Fall reicht es dann wohl auch aus nur bei dim etwas in der HA-bridge auszufüllen. Für die Lampen muss dann aber logischerweise etwas bei On und Off ausgefüllt sein.

Bei der Variable ging ich mal davon aus das diese auf true gesetzt wird, wenn der Vorgang noch läuft. Dementsprechend müsste dann ein Ereignis den Wert wieder auf false setzten (nicht true).

Dann musst Du das am Schluss in ein Skript packen und dann mal ausprobieren. Wenn ich Dich richtig verstanden habe würden dann die Lampen Tasten die Lampen schalten und die Tasten zum dimmen sind dann für den Rollladen.