Automatisierungen via 'settings.xml'

Hallo zusammen,

seit gestern beschäfte ich mich mit der IP-Symcon Software - die Flexibilität
und Programmiermöglichkeiten haben von binnen weniger Tage von der ELV-Software
zu IP-Symcon gebracht :wink:

Als Programmierer bin ich normalerweise recht faul und versuche nun als erstes
generische Skripte für die Steuerung und Bearbeitung von Devices zu entwickeln.
Dabei ist mir die settings.xml aufgefallen um beispielsweise folgende Anwendungen
zu realisieren:

Anwendung 1:
Ein PHP-Skript für das Webinterface, welches mir über die settings.xml alle
Schalter und Dimmer auflistet inkl. dem aktuellen Wert und Buttons zum einstellen.

Anwendung 1a:
Durch die von Anwendung 1 gemachten Einstellungen werden automatisch PHP-Skripte
erstellt um diese in IP-Symcon einzubinden. Somit wird die Konfiguration von
komplexen Lichtszenen für mich einfacher (z.B. für einen Raum mit 16 Lichtquellen).

Anwendung 2:
Devices durch ein separates PHP-Skript erstellen lassen - die Konfigrationsparameter
werden dazu aus einer Textdatei ausgelesen. Ich verfüge derzeit über 16 Schalt/Dimmer
Devices und 4 Fernbedienungen (mit bis zu 20 Tasten) - die Hauscodes und ID’s stehen
alle fest und jetzt sollen diese Informationen möglichst ohne grosse klickerei in
IP-Symcon übertragen werden.

Alle notwendigen Informationen für obige Anwendungen stehen in der settings.xml -
diese kann in ein PHP-Array geparst werden um entsprechende Auswertungen damit
vorzunehmen (oder gibt es bereits einen anderen Weg in IP-Symcon der mir noch nicht
aufgefallen ist?).

Ich gehe auch davon aus, dass wenn man IP-Symcon beendet, auch Änderungen an der
settings.xml gemacht werden können.

Nun zu den Fragen:

  • gibt es eine Liste der UniqueID’s mit deren Bezeichnungen oder muss ich mir eine eigene
    basteln? z.B: 48FCFDC1-11A5-4309-BB0B-A0DB8042A969=FS20 Schalter/Dimmer

  • wie werden neue Device-ID’s erzeugt? Bei der ELV Software wurde einfach die höchste
    ID im eins inkrementiert - bei IP-Symcon habe ich noch kein System erkennen können. Reicht
    es ggf. irgendeine ID zu wählen, die noch nicht verwendet wird?

Grüße,
der Olli

ps: IP-Symcon bietet ungeahnte Möglichkeiten :slight_smile:

Als Programmierer bin ich normalerweise recht faul und versuche nun als erstes
generische Skripte für die Steuerung und Bearbeitung von Devices zu entwickeln.
Dabei ist mir die settings.xml aufgefallen um beispielsweise folgende Anwendungen
zu realisieren:

Als Vorwort über die Settings.XML…

Probleme…

  • Sie wird nicht neugeladen von IPS, sondern nur beim Start ausgewertet wird.
  • Sie wird alle 1 Min neugeschrieben, um auch bei Ausfällen keinen Verlust bei seinen Einstellungen zu haben
  • Fehlerhafte Einträge können zu Abstüzen/Problemen beim Start führen
  • Ich würde dir lieber PHP Funktionen anbieten, die das aus IPS heraus direkt machen :slight_smile:

Anwendung 1:
Ein PHP-Skript für das Webinterface, welches mir über die settings.xml alle
Schalter und Dimmer auflistet inkl. dem aktuellen Wert und Buttons zum einstellen.

Dazu könnte ich dir ein paar Funktionen einbinden und nach dem Wochenende zukommen lassen…

GetInstanceIDsByGUID($GUID); //Result: Array of Integer
-> GUID wäre dann die vom FS20TX Modul

FS20TX_GetSettings(12345, &$Settings);
FS20TX_SetSettings(12345, $Settings);
-> $Settings = Array ($Hauscode, $Adresscode, $Unteradresscode, $StatusVar, $IntensityVar);

Dann könntest du per GetValueBoolean($StatusVar); den Status abfragen und per FS20_SwitchMode(12345, TRUE/FALSE) den Status setzen (Die Funktionen gibt es bereits)

Anwendung 1a:
Durch die von Anwendung 1 gemachten Einstellungen werden automatisch PHP-Skripte
erstellt um diese in IP-Symcon einzubinden. Somit wird die Konfiguration von
komplexen Lichtszenen für mich einfacher (z.B. für einen Raum mit 16 Lichtquellen).

Damit hätte man nur ein dynamisches WebInterface zum schalten.

Drück mal im IPS Script Editor CTRL + SPACE, dort sind alle IPS Funktionen aufgelistet, bzw in der Doku die Befehlsreferenz.

Anwendung 2:
Devices durch ein separates PHP-Skript erstellen lassen - die Konfigrationsparameter
werden dazu aus einer Textdatei ausgelesen. Ich verfüge derzeit über 16 Schalt/Dimmer
Devices und 4 Fernbedienungen (mit bis zu 20 Tasten) - die Hauscodes und ID’s stehen
alle fest und jetzt sollen diese Informationen möglichst ohne grosse klickerei in
IP-Symcon übertragen werden.

Da fände ich die klickerei per Wizard angenehmer, da man dort gleich Namen ect vergeben kann, was per Batch Script nicht einfacher wird. Außerdem musst du die Devices zu dem FHZ1000PC Splitter verbinden.

Ich würde hier lieber 30 Minuten klicken, als 2 Stunden an einem Batch Script zu basteln :slight_smile:

Im Wizard kann man naher „Manual Configuration“ anklicken, wenn man den Hauscode ect selber eingeben will.

Alle notwendigen Informationen für obige Anwendungen stehen in der settings.xml -
diese kann in ein PHP-Array geparst werden um entsprechende Auswertungen damit
vorzunehmen (oder gibt es bereits einen anderen Weg in IP-Symcon der mir noch nicht
aufgefallen ist?).

Wenn dir mehr LowLevel IPS Funktionen fehlen bin ich gerne Bereit welche einzubauen…

Ansonsten kann man sehr vieles über das Konfigurationspanel machen, es sei den du möchstest ein Web Configuration Panel machen, wovon ich auch nicht abgeneigt wäre…

Ich gehe auch davon aus, dass wenn man IP-Symcon beendet, auch Änderungen an der
settings.xml gemacht werden können.

Dann ja. Aber das System soll ja eigentlich 24/7 ohne Unterbrechung laufen :slight_smile:

  • gibt es eine Liste der UniqueID’s mit deren Bezeichnungen oder muss ich mir eine eigene
    basteln? z.B: 48FCFDC1-11A5-4309-BB0B-A0DB8042A969=FS20 Schalter/Dimmer

Ja. Die gibt es. Lasse ich dir zukommen, sobald ich die anderen Funktionen eingebaut habe.

  • wie werden neue Device-ID’s erzeugt? Bei der ELV Software wurde einfach die höchste
    ID im eins inkrementiert - bei IP-Symcon habe ich noch kein System erkennen können. Reicht
    es ggf. irgendeine ID zu wählen, die noch nicht verwendet wird?

Random zwischen 10000 - 65535

ps: IP-Symcon bietet ungeahnte Möglichkeiten :slight_smile:

In der Tat… nur würde ich sie nicht mit der Brechstange nutzten :smiley:

Grüße, paresy

Hallo Olli,

Also ein Frontpaneel fuer Web. Kann ich nur begruessen, wenn Du es moeglichst variabel machst (Trennung Layout - Funktion) und man dadurch mit einem Standard Layout schonmal anfangen kann. Vor allem der WAF ist da sehr gefragt.

Anwendung 1a:
Durch die von Anwendung 1 gemachten Einstellungen werden automatisch PHP-Skripte
erstellt um diese in IP-Symcon einzubinden. Somit wird die Konfiguration von
komplexen Lichtszenen für mich einfacher (z.B. für einen Raum mit 16 Lichtquellen).

das sehe ich dann schon eher problematisch. Bei vielen sind voellig andere Voraussetzungen und Wuensche vorhanden. Du wirst sicher fuer Dich hier etwas machen koennen, aber das wird der Allgemeinheit wenig nuetzen. Beispiel meine Statistik: die Scripte werden in einem Examples Ordner bereitgestellt und koennen dann auf Wunsch des Users durch Import in ein Script zur Anwendung kommen. So kann jeder selbst entscheiden, wie er es gern moechte.

Anwendung 2:
Devices durch ein separates PHP-Skript erstellen lassen - die Konfigrationsparameter
werden dazu aus einer Textdatei ausgelesen. Ich verfüge derzeit über 16 Schalt/Dimmer
Devices und 4 Fernbedienungen (mit bis zu 20 Tasten) - die Hauscodes und ID’s stehen
alle fest und jetzt sollen diese Informationen möglichst ohne grosse klickerei in
IP-Symcon übertragen werden.

Hier sehe ich keinen Bedarf, oder willst Du jede Woche neu konfigurieren? Man macht diese Eingabe ein einziges Mal und dann nie wieder - dafuer ist der Aufwand unnoetig. Dann steck lieber Deine Kreativitaet und Zeit in ein ordentliches gutes Webfrontend.

Gruesse aus Leipzig

Torro

Die Aktualisierungsintervalle habe ich mitbekommen - um die Instanzen für ein Webinterface auszulesen reichen die Intervalle aus. die eigentlich Statuswerte können dann über die entsprechenden Funktionen gesetzt bzw. ermittelt werden.
Das fehlerhafte Einträge in der settings.xml zu Abstürzen führen können ist ebenfalls klar. Ich habe ein Testsystem und einen zweiten Rechner der letztendlich die Steuerung übernmimmt - auch wenn das umstöpseln des FHZ 1000 PC etwas lästig ist ;-)…

Das wäre eine Alternative - aber in eurer XML-Datei sind noch weitere interessante Informationen: z.B. LOCATION (um Gruppen via Web abzubilden und den Gerätenamen im Klartext anzuzeigen usw.). Desweiteren gibt es bei mir zukünftig auch Instancen die nicht FS20TX sind und dann müsste man immer neue Interfacefunktionen implementieren.

Gibt es evtl. die Möglichkeit es flexibler zu implementieren?
GetConfig(12345, &$Config); // Result: mehrdimensionales PHP Key-Array

Dann könnte man via PHP z.B. folgendes Abfragen:
$Config[‚Settings‘][‚Level1‘]
$Config[‚Location‘][‚Name‘]
Wenn die Keynamen gleich sind wie bei der XML-Datei kann man alle Daten der Instancen abfragen ohne weitere Interfaceänderung machen zu müssen.

für ‚Connection‘ müsste allerdings ein Unterarray erstellt werden, da es Instancen mit mehreren Verbindungen gibt.
$Config[‚Connection‘][0]
$Config[‚Connection‘][1]
usw.

Danke für CTRL+SPACE - die Tastenkombination kannte ich noch nicht :slight_smile: Die Befehlsreferenz ist mir geläufig :wink:

Über die Instance-ID vom Splitter kann man neue Geräte in dessen Connection-List eintragen - so interpretiere ich die settings.xml.

Ich muss im ersten Schritt 16 Verbraucher und 48 Tasten von Fernbedienungen konfigurieren. Alle notwendigen Daten sind bereits in Textfiles vorhanden - Hauscode, Adressen, Gerätename, Beschreibungen usw… Weitere Fernbedienungen und Verbraucher kommen dazu…

wird es irgendwann mal auch bei mir - aber noch nicht während der Entwicklungsphase :wink:

Seid bedankt :slight_smile:

Hmm, eine wirkliche Brechstange benutze ich eigentlich sehr selten… und damit ich keine Brechstange brauche lasse ich die ELV-Software ja auch im Nirwana verschwinden… :wink:

Grüße,
Olli

Ich gedenke die Integrated Templates aus dem PEAR zu verwenden.

Ich gebe dir Recht: die Beispiele 1a und 2 sind sehr speziell. Und ja, es kann passieren, dass ich jede Woche neue Lichtszenen konfiguriere - bei 10 bis 20 Lichtquellen pro Raum gibt es sehr viele Möglichkeiten :wink:

Ich könnte das ganze auch für die Fotografie benutzen - man erstellt ein Lichtset mit entsprechend geregelten Lampen, macht eine Lageskizze dazu und speichert alle Lichteinstellungen ab. Damit wären diverse Aufnahmen leichter wieder zu reproduzieren. Ideen gibt’s genug…

Grüße aus dem Oberbergischen

Das wäre eine Alternative - aber in eurer XML-Datei sind noch weitere interessante Informationen: z.B. LOCATION (um Gruppen via Web abzubilden und den Gerätenamen im Klartext anzuzeigen usw.). Desweiteren gibt es bei mir zukünftig auch Instancen die nicht FS20TX sind und dann müsste man immer neue Interfacefunktionen implementieren.

Ja eine GetLocationFromInstanceID Funktion kommt bereits im nächsten Update.

Gibt es evtl. die Möglichkeit es flexibler zu implementieren?
GetConfig(12345, &$Config); // Result: mehrdimensionales PHP Key-Array

Ich werde mal sehen, ob sich da etwas machen lässt. Ein Array der Konfig will ich nicht unbedigt einbauen, da mir das nicht „wasserdicht“ erscheint und ich auch die Möglichkeit haben will die Settings zu setzten.

Dann könnte man via PHP z.B. folgendes Abfragen:
$Config[‚Settings‘][‚Level1‘]
$Config[‚Location‘][‚Name‘]
Wenn die Keynamen gleich sind wie bei der XML-Datei kann man alle Daten der Instancen abfragen ohne weitere Interfaceänderung machen zu müssen.

für ‚Connection‘ müsste allerdings ein Unterarray erstellt werden, da es Instancen mit mehreren Verbindungen gibt.
$Config[‚Connection‘][0]
$Config[‚Connection‘][1]
usw.

Da kann man dann aber eigentlich auch den PHP Parser über die XML Datei laufen lassen. (Ich werde mich eher um eine direkte Variante bemühen)

Über die Instance-ID vom Splitter kann man neue Geräte in dessen Connection-List eintragen - so interpretiere ich die settings.xml.

Ja. Man könnte auch Funktionen einbauen um Instanzen zu erstellen und diese zu Verbinden.

Ich muss im ersten Schritt 16 Verbraucher und 48 Tasten von Fernbedienungen konfigurieren. Alle notwendigen Daten sind bereits in Textfiles vorhanden - Hauscode, Adressen, Gerätename, Beschreibungen usw… Weitere Fernbedienungen und Verbraucher kommen dazu…

Einmalig kannst du ja die Settings.xml dafür preparieren, aber wenn du ein Frontend bauen möchstest, würde ich dich bitten diese Variante nicht zu nutzten. (Wie bekommen es auch anders hin :wink: )

Grüße, paresy

Hey hey Leute … EASY

Bitte dem aufwand IPS laufende zu bekommen ist schon recht hart ! (sicher wenn mann kein fliesendes Deutsch spricht lasst sein schreibt)

Was die IPS leute bauen ist schon 10e+7 mehr was anderen machen JAYJAY

Mach den M$ fehler nicht unstabilität uber funktionalität

GetLocaltionIdByInstanzId(blabla) == „wohnzimmer“

Ich möchte das Wohnwimmer licht anschalten => FS_SwicthMode(„wohn_dekke2“,true); ist schon mal ganz ok

und vieles mehr.

KEEP IT EASY ( A problem cannot be solved by the mind who created it - A. Einstein)

Na, dann warte ich mal ab was der Weihnachtsmann an binären Geschenken austeilen wird :wink:

Ich habe eh grad festgestellt, dass mir noch der Intensity-Wert der Dimmer fehlt um sie per Web darzustellen…

Dabei viel mir noch folgendes auf:
Die Status-Variable eines Dimmers wird bei einem Dimmvorgang immer auf ‚true‘ gesetzt - auch dann, wenn auf „0“ runtergedimmt wird. Wäre es nicht sinnvoll den Status bei Dimmung auf 0 auf den Wert false zu setzen?

Ich habe eh grad festgestellt, dass mir noch der Intensity-Wert der Dimmer fehlt um sie per Web darzustellen…

In der PropertyPage kann man eine Variable dafür festlegen.

Die Status-Variable eines Dimmers wird bei einem Dimmvorgang immer auf ‚true‘ gesetzt - auch dann, wenn auf „0“ runtergedimmt wird. Wäre es nicht sinnvoll den Status bei Dimmung auf 0 auf den Wert false zu setzen?

Das ist dann ja nicht korrekt. Die Lampe ist nicht ja nicht wirklich aus :slight_smile:

Grüße, paresy

Ups, habe ich übersehen… da bin ich wohl auf den Hardware-Wizard hereingefallen - einerseits fragt er mich welches Device ich habe, aber andererseits erstellt er für Dimmer keine vordefinierte Variable. Ich werde es mir merken…

Wenn ich mich von meinem Stuhl erhebe, irgendwohin gehe und dabei feststelle, dass ich grade vor eine Wand gelaufen bin dann bedeutet das für mich, dass ich entweder nicht Zurechnungsfähig bin oder der Dimmer auf 0 und somit das Licht aus war - bei Status ‚false‘ hätte mich Klara evtl. gewarnt… :wink:

Grüße,
Olli

Hallo Olli,

naja, wenn Du den Fernseher mit der Fernbedienung aus machst, hast Du ihn sozusagen auch nur auf „Null“ gedimmt, Strom verbaucht er aber trotzdem. Genauso ist es auch bei den Steckdosendimmer. (Wobei die immer etwas Strom verbrauchen). Aber ich werde am Wochenende das mal genau messen, wie das genau ist.

Gruss Torro