[Modul] Rollladensteuerung (BlindControl)

Wenn ich einen Rollladen per Script bewegen willl

BLC_MoveBlind(17377, 100, 0);

bekomme ich folgende Meldung…(ist die Doku da noch nicht korrekt?, bin in der Beta…)

Warning: Variable mit dem Namen STATE konnte nicht gefunden werden in /var/lib/symcon/scripts/28677.ips.php on line 18

Warning: Variable #0 existiert nicht in /var/lib/symcon/scripts/28677.ips.php on line 18

Fatal error: Uncaught ArgumentCountError: Too few arguments to function BLC_MoveBlind(), 3 passed in /var/lib/symcon/scripts/28677.ips.php on line 42 and exactly 4 expected in /var/lib/symcon/scripts/__generated.inc.php:503
Stack trace:

Da stimmt die Doku noch nicht ganz. Die Methode hat einen zusätzlichen Parameter ($hint) bekommen. Hier kannst du zur Protokollierung einen Hinweis mitgeben, der in die Variable ‚Last Message‘ geschrieben wird.

Im Skripteditor wird die Schnittstelle korrekt angezeigt:

Es gibt eine neue Version als Stable im Module Store:

1.30 build 1
neu:

  • Gruppenmaster: im neuen Gruppenmaster können für mehrere Rollläden auf einen Rutsch Eigenschaften gelesen und gesetzt werden
  • Durchschnittsberechnung bei Helligkeiten
  • Nutzung des Testcenters
  • Link zur Dokumentation
  • Angabe einer optionalen Nachtposition, falls der Rollladen in der Nacht nicht komplett geschlossen werden soll
  • Konfigurationsformular: Testfunktion zum prozentualen Fahren des Rollladens
  • Prüfung der eingegebenen Level

korrigiert:

  • verbesserte Debug Ausgabe
  • Doku vervollständigt
  • Layout des Konfigurationsformulars verbessert
  • einige Übersetzungen
  • Fehlerbehandlung verbessert
  • Prozentangaben in den Meldungen konnten falsch sein
  • RegisterReferences war nicht vollständig
  • Fehler bei der Ausgabe von geöffneten Kontakten
  • doppeltes Element in Konfigurationsformular entfernt
  • Zeit von 00:00 bis 24:00 konnte nicht genutzt werden

Und wieder bleibt nur… „vielen Dank“ zu sagen… :):):slight_smile:

@bumaas

Ich möchte einzelne Paramter die in der Konfiguration des Modul gesetzt sind auslesen und auf dem WebFront anzeigen und dort auch ändern und Zurück schreiben.

Ich hänge beim auslesen:
Beispiel ein neues Script:

<?php

// Werte aus Modul BlindControl auslesen
// https://github.com/bumaas/BlindControl/blob/master/README.md
// BLCGM_GetPropertyOfBlinds(int $InstanceID, $Property): array
// Liefert in einer Liste die gewählte Eigenschaft von allen als ausgewählt markierten Rollläden.

//$Property = "NightLevel";
$Info = array();
$Info[0] = BLCGM_GetPropertyOfBlinds(int 37351, "NightLevel");

Bekomme folgende Fehlermeldung:

syntax error, unexpected '37351' (T_LNUMBER), expecting ')' in C:\IP-Symcon\scripts\18073.ips.php on line 12

Ich vermute, du möchtest das ‚NightLevel‘ für eine Gruppe von Rollläden setzen? (Wenn nicht, dann bist du falsch und solltest IPS_SetProperty und IPS_GetProperty nutzen.)

Dann definierst du dir zunächst im Objektbaum eine Instanz vom Typ ‚Blind Control Group Master‘. In diese Instanz nimmst du alle Rollläden auf, die zu dieser Gruppe gehören sollen.

Dann kannst du auf diese Gruppe den Befehl anwenden um das Property ‚NightLevel‘ für alle zugeordneten Rollläden abzufragen:


$prop = BLCGM_GetPropertyOfBlinds(47111, 'NightLevel'); 
print_r($prop);

Das kannst du aber auch direkt im Testbereich des ‚Gruppenmasters‘ durchführen.

Aber vielleicht erläuterst du erst einmal genauer was du vorhast. Eigentlich sind die Properties nicht dazu gedacht, über das Webfront geändert zu werden.

Hallo
Lass mal das „int“ weg.

Gesendet von iPad mit Tapatalk

Hi Buumas,

eine Verständnisfrage noch zur „Erkennung von manueller Bedienung“…
Damit ist die Steuerung über das Webfront gemeint, oder?
Nicht das schalten über HM-Taster die direkt mit dem Aktor verknüpft sind…

Damit ist jede Rollladenfahrt gemeint, die nicht vom Modul initiiert wurde. Also Bedienung über Taster, das Webfont, eigene Skripte etc.

Das Modul merkt sich das Änderungsdatum der Rollladenposition bei eigener Aktion. Ist bei einem späteren Vergleich das aktuelle Änderungsdatum verschieden vom gemerkten, dann liegt eine manuelle Bedienung vor.

Ich wollte mal in einer Testumgebung schauen was Du da fleißig zusammengebaut hast. Wenn ich das richtig sehe muss ich ja für jeden Rollladen einen Wochenplan anlegen. Gäbe es die Möglichkeit das zukünftig auch gleich das Modul erledigen zu lassen? Schließlich ist das Modul ja das einzige das diesen Wochenplan braucht und greift nicht auf einen existenten Wochenplan zurück, das würde das Einrichten erleichtern.

Ich selber nutzte ja nach wie vor IPSShadowing. Planst Du eventuell für die Zukunft auch so was wie das automatische Erstellen von Einträgen für den Webfront, wie es IPSShadowing zur Zeit auch macht?

Gäbe es die Möglichkeit Werte wie Azimuth, Alitude, es ist Tag usw. automatisch in das Modul eintragen zu lassen? Du kannst ja über die Guid suchen ob z.B. Location Control vorhanden ist oder das Astronomiemodul. Die Variablen lassen sich ja per Ident eindeutig indentifizieren. Das würde das Angeben im Modul erübrigen und die Einrichtung schneller machen.

Hi Fonzo,

du musst nur einen Wochenplan für jeden Rollladen anlegen, der anders als die anderen gesteuert werden soll…
Es reicht also theoretisch ein Wochenplan, wenn alle Rollos gleich laufen… :slight_smile:

@Buumas

Wie würde ich denn folgende Zeiteinstellung vornehmen?

Die Rollladen sollen
morgens um 5:30
und abends zum Sonnenuntergang jedoch spätestens um 21:30 runtergehen…

Hab bisher noch nicht rausbekommen, wie ich das einstellen könnte…

Wie Marc schon sagte, einen Wochenplan - wie auch alle anderen Verweise - braucht minimal nur einmal zu existieren. Von daher ist es schwierig, beim Anlegen einen Wochenplan zu kreieren, zumal es keine übergeordnete Stelle im Objektbaum gibt, unter der man ihn anlegen könnte.

Nein, da ist nichts vorgesehen. Webfront, App und IPSView sind zu individuell um da allen gerecht werden zu können. Das würde meiner Ansicht nach auch dem Modul Konzept wiedersprechen.

Da das alles optionale Werte sind, können sie nicht automatisch eingetragen werden. Das würde das Verhalten ja beeinflussen.

Das Anlegen von Rollladeninstanzen ist aber eigentlich nicht so aufwändig. Wenn die Steuerung für einen Rollladen erst einmal steht, dann kopiert man die Instanzen einfach und ändert nur noch ab.:slight_smile:

Für nachträgliche Änderungen gibt es dann den ‚Gruppenmeister‘.

Du erstellst einen Wochenplan mit ‚Hoch‘ von 5:30 - 21:30.
Zusätzlich stellst du den ‚Ist es Tag‘ Indikator ein.

Er fährt den Rollladen hoch, wenn beide Bedingungen erfüllt sind: ‚Wochenplan hoch‘ und ‚Es ist Tag‘
Das ist schon alles. Dann fährt er jedoch auch morgens erst ab 5:30 bei Helligkeit hoch.

Soll er aber auf jeden Fall um 5:30 hochfahren, dann stellst du zusätzlich noch die ‚übersteuernde Tagesanfangszeit‘ ein.

Ok… dann kommen wir mit dem Tagesanfang hin…

Aber abends klappt es ja dann nicht…
Da sollen die Rollladen ja zum Sonnenuntergang aber spätestens um 21:30 runter…

Wenn jetzt der Sonnenuntergang vor 21:30 liegt, funktioniert es dann ja nicht, da die 21:30 Bedingung nicht erfüllt ist…

– Edit…
Wenn Du Tagesanfang und Tagesende als einzelne Variablen anlegen würdest, könnte man Scripten wie welche Zeit gefüllt wird…

Doch:)

Ich formuliere meinen Satz anders:

Der Rollladen wird/bleibt nur dann hochgefahren, wenn beide Bedingungen erfüllt sind: ‚Wochenplan hoch‘ und ‚Es ist Tag‘

Ich hoffe, so wird es klarer.

Ahhhh…Sobald eine Bedingung wegfällt wird runtergefahren…Dann macht das auch wieder Sinn… ;-)))))

Dankeeeeee…

Ich habe dennoch ein Problem Deiner Dokumenation zu folgen bzw. wie das genau einzurichten ist. Erstes Problem ich bekomme auf einmal keine LEVEL Variable bei Homematic angezeigt, wie füge ich die denn wieder hinzu bzw. bringe IP-Symcon dazu diese anzuzeigen? Wenn ich das richtig verstanden habe muss ich den Wochenplan dann ja auf die Level Variable legen oder? Wie schaffe ich es in einem Wochenplan die Aktion leer zu lassen wie in Deinem Beispiel?

Ok kann ich verstehen, in der Regel will jeder das sowieso anders dargestellt haben, wäre höchstens eine Hilfestellung einen „Beispiel Webfront“ mitzuliefern.

Es würde ja aber auch Alternativ funktionieren wenn Du statt den Wert auszuwählen einfach einen Haken im Konfigurationsformular anbietest ob die Option genutzt werden soll. Wenn der Haken aktiv ist muss man dann auch nicht so Werte wie es ist Tag usw. zusätzlich eingeben, die kann sich das Modul selber holen.

Wie gesagt ich weis nicht ob es eine individuelle Einstellung bei mir ist oder ob es an der Version 5.1 liegt, aber ich scheitere momentan schon an so einfachen Dingen wie der LEVEL Variable des Rollladen Aktors.

Nein, den Wochenplan legst du unter eine Kategorie deiner Wahl. Bei den Aktionen wählst du den Aktionstyp ‚Führe PHP Code aus‘ aus, lässt den Code aber leer.

Das ist ja schon Thema des anderen Threads.

@Bumaas

Mit der Übersteuernde Tagesanfangzeit hab ich doch noch ein Problem…

Die macht ja keinen Unterschied ob Wochenende oder Wochentag ist… Wenn ich also da jetzt 05:30 eintrage bekomme ich am Samstag Ärger mit der Regierung, wenn die Rolllos hochgehen…:confused: