Ansteuerung DBMZ und Velux Dachrollläden mit Hilfe von WebFront bzw. PHP

Hallo,

bin Newbie in Sachen IPS und Z-Wave.

Unsere 5 Velux Dachrollläden (installiert 8/2013) werden seit heute mit Hilfe von DBMZ motor controller angesteuert. Die Installation war problemlos, ebenso die Kalibration der Steuerungen und das Includen in das Z-Wave-Netzwerk.

Die Rollläden lassen sich mit Hilfe der Tasten an den Steuerungen problemlos rauf und runter fahren. Endabschaltungen inlusive Entlastung des Panzer an den Endlagen funktioniert perfekt.

Nun sitze ich vor IPS und unternehme meine ersten Gehversuche. Zum einen möchte ich die Rollläden über WebFront positionieren und zum anderen möchte ich mit PHP (erste Gehversuche) ein paar Befehle programmieren um das System kennen zu lernen.

Der Reihe nach:

Über die WebFront bekomme ich die Variablen und deren Inhalte angezeigt. Wie aber erzeuge ich nun einen Button, mit Hilfe dessen der Panzer auf eine definierte Position (z.B. Geöffnet bzw. Geschlossen) gefahren werden kann?

Trotz intensiver Suche, habe ich noch kein Beispiel dafür gefunden - vielleicht gebe ich einfach nur die falschen Suchbegriffe ein?

Habe ein kleines PHP-Skript programmiert, um einen Rollladen auf ein bestimmte Position zu fahren. Dazu verwende ich den Befehl ZW_Basic(). Dies funktioniert auch einwandfrei. Laut Handbuch hat der DBMZ COMMAND_CLASS_BASIC Commands Set (BASIC_SET) und Get (BASIC_GET). Das BASIC_SET entspricht wohl der Funktion ZW_Basic(). Wie kann ich nun ein BASIC_GET programmieren um die aktuelle Position des Rollladen abzufragen?

Wie kann ich z.B. auch die COMMAND_CLASS_SWITCH_MULTILEVEL Commands programmieren, da diese von IPS nicht angeboten werden - oder habe ich die übersehen?

Vielen Dank für eure Unterstützung.

Hallo Wolkensurfer.

Willkommen in unserem IPS-Forum.

Ich versuche dir mal etwas zu helfen…

Mit dem anlegen einer Zwave Komponente werden automatisch verschiedene Variablen mit einer Objekt-ID (Status, Intensity, u.a.) angelegt. Siehe Objektbaum.

Mit dem Befehl

SetValue(Objekt-ID, Wert);

kannst Du z.B. den Status (An=100%/Aus=0%) setzen.
Genauso funktioniert das mit Intensity (Wert zwischen 0 und 100) sollte die Jalousie auf die Position fahren.

Mit dem Befehl

GetValue(Objekt-ID);

kannst Du z.B. die Variable Status oder die Variable Intensity abfragen. Du kannst das z.B. in eine If-Abfrage einbauen.

Kannst DU damit etwas anfangen?
Sonst einfach mutig weiter fragen. Wir haben alle mal angefangen :slight_smile:

Gruß
Lutz

Hallo Lutz,

vielen Dank für Deine Antwort.

Habe die beiden Befehle ausprobiert mit folgenden Ergebnissen (und neuen Fragen):

Mit


$Test = GetValue(11987); // Abfrage Intensity Rollladen Treppenhaus
Print $Test                     // nur für Testzwecke

bekomme ich z.B. den Wert 50, d.h. der Rollladen sollte halb geöffnet sein. Da er jedoch durch die Tasten am DBMZ positioniert wurde (aktuell auf ganz geöffnet) sollte er nun den Wert 99 liefern - tut er leider nicht. Ist das ein DBMZ spezifisches Problem oder gibt es dazu einen Trick?

Mit


$Test = SetValue(11987, 80);  // Rollladen auf Position 80% geschlossen fahren
Print $ Test                          // nur für Testzwecke

bekomme ich die Meldung:

Warning: Variable wurde als „Nur-Lesen“ markiert und kann nicht verändert werden in C:\IP-Symcon\scripts\18475.ips.php on line 11

Wie schaffe ich es nun, dass ich diese Variable auch beschreiben kann?

Danke und Gruß

Andreas

Lösung für meine 2. Frage habe ich gefunden:

ZW_DimSet(52819,0);  // Rollladen schliessen

fährt den Rollladen zu :cool:

Hallo Wolkensurfer.

Zu 2. Da hab ich geschlafen und du hast dich trotzdem durchgekämpft und hast den richtigen Befehl gefunden :o.
Asche auf mein Haupt und Lob an Dich.:rolleyes:

zu 1. Ich vermute, dass die DBMZ Ihre neue (per Hand veränderte) Position nicht an die IPS melden.
Hier musst du in zeitlichen Abständen pollen (per Ereigniss ein Script aufrufen).

    z.B. wie folgt:
	$dummy = ZW_RequestStatus(Objekt-ID der Z-Wave Komponente);

zu 2. Hatte ich folgenden Befehl im Kopf:

ZW_SwitchMode(Objekt-ID der z Wave Komponente , TRUE oder FALSE);

:wink:

Hallo Lutz,

Super! Dieser Befehl führt zum gewünschten Ergebnis ;). Was mich allerdings etwas beunruhigt ist der Hinweis in der Befehlsbeschreibung, dass dieser den Funkverkehr „erheblich belastet“. Gibt es dazu Erfahrungen, aus den ich ableiten könnte, wie oft ich diesen Befehl pro Stunde sinnvollerweise aufrufe?

Danke!

Ich polle ca. alle 5 Minuten einmal.
Gibt bei mir keine Probleme.

Gruß
Lutz

Hallo Lutz,

habe gerade das Skript für die Statusabfrage unserer 5 Dachrollläden programmiert und ausgeführt. IPS gibt nach der Ausführung eine Laufzeit von 3054 ms an.

Lutz, kannst Du mir vielleicht auch eine kleine Einstiegshilfe für einen Button im WF geben, mit dem ich einen Rollladen z.B. auf und/oder zu fahren kann?

Ich danke Dir für den tollen Support!

Gruß

Andreas

Hallo Wolkensurfer.

IPS gibt nach der Ausführung eine Laufzeit von 3054 ms an.

Bei mir dauert eine Pollanfrage ins Z-Wave-Netz ca. 600-700ms. Die Zeit x 5 Stk. = 3000-3500ms. Das ist typisch.
Kann aber auch schon mal bis zu 3-5sec pro Poll dauern. (Dann könnte mal wieder Optimiert werden).

…einen Button im WF geben, mit dem ich einen Rollladen z.B. auf und/oder zu fahren…

Siehe bei mir ohne weiteres Zutun so aus:
Objektbaum (Ausschnitt eines Shutters/Jalousie)
IP-Symcon Verwaltungskonsole_2013-10-26_11-20-28.jpg

Ergibt im WFE (Webfrontend):
IP-Symcon WebFront - Mozilla Firefox_2013-10-26_11-20-59.jpg

Dort kann ich mit An/Aus direkt auf/Zu fahren und Intensity als Schieberegler nutzen.

Gruß
Lutz

Hallo Lutz,

stimmt, habe auch diesen Slider und die Tasten im WF und es funktioniert tatsächlich :cool:. Was mich allerdings etwas verwundert ist folgender Sachverhalt:

Klicke ich auf die Taste „Auf“, dann fährt der Rollladen auf, aber die Intensität bleibt auf dem alten Wert stehen, bis das Skript zur Abfrage des Rollladenstatus (alle 5 Minuten) diesen abfrägt. Erst dann wird der Wert der Intensität angepaßt.

Benutze ich statt der Taste den Slider, wird die Taste (Status) sofort auf den neuen Wert umgeschaltet.

Ist das in IPS generell so?

Die Tasten entsprechen eigentlich den beiden möglichen Werten TRUE und FALSE der Variablen „Status“ (Systemvariable). Was ich eigentlich gern hätte wäre folgende Variante:
Eine Taste mit Funktion AUF und ZU, und dazu gehörig die aktuellen Werte für „Motor läuft“ bzw. „Motor steht“ und der aktuelle Wert für die Position (z.B. in % wie bei der Intensität).

Out of the box wird quasi der neue Wert (z.B. 50% per Slider) direkt in die Anzeige 50% umgesetzt und die Variable „Status“ direkt auf „Geöffnet“ gesetzt, obwohl der Rollladenmotor noch einige Sekunden benötigt, bis er die gewünschte Position erreicht hat. Eine Variable, die den aktuellen Status oder die aktuelle Position speichert, habe ich bisher nicht gefunden.

Gibt es dazu eine Idee, ausser das nun ständig der Status per Polling abgefragt werden müsste?

Danke und Gruß

Andreas

Hallo Wolkensurfer.

Die aktuelle Panzer-Position zu jeder Fahr-Zeit (also quasi Echtzeitposition des Panzers) wirst Du nicht bekommen.
Das könnte man bestenfalls simulieren aus den Fahrzeiten !
Und Pollen wirst du wohl weiterhin müssen, da der DBMZ seine Zustände und Veränderungen nicht selber sendet (wie z.B. die Fibaros).

Wenn die "Intensity " größer 0%, ist der Status „Offen“ (stimmt ja, auch wenn nur die ersten Millimeter auf sind :D)

Gruß
Lutz