[Modul] Homematic Systemvariablen, Programme und Powermeter (bis IPS 3.4)

Funktionsumfang
Abfragen von Systemvariablen inkl. Profilen und Werten von der CCU.
Schreiben von Werten der Systemvariablen zur CCU.
Standard Actionhandler für die Bedienung der Systemvariablen aus dem IPS-Webfront.
Abfragen der auf der CCU vorhandenen HM-Programme.
Ausführen der HM-Programme auf der CCU.
Standard Actionhandler für die Bedienung der HM-Programme aus dem IPS-Webfront.
Abfragen des Summenzählers der Schaltaktoren mit Leistungsmessung aus der CCU.
XML-API-Patch wird nicht benötigt.
Unterstützung von mehreren CCUs.
Einfache Einrichtung und Handhabung.
PHP-Befehle entsprechen dem vorhanden Standard von IPS.
Lauffähig unter Windows IPS 3.x

Und bevor einer fragt 'Warum ein Modul, wenn wir doch funktionsfähige PHP-Scripte haben? ',
hatte ich mehrere Gründe diese Modul zu schreiben.

[ul]
[li]Die bisherigen Scripte unterstützen den Schaltaktor mit Leistungsmessung nur bedingt.[/li][li]Die Profile aus der CCU wurden nicht automatisch gelesen.[/li][li]Um Variablen aus dem WF heraus zu bedienen mußte noch viel per Hand erledigt werden.[/li][li]Einsteiger haben häufig Probleme mit der Einrichtung von PHP-Scripten und dem Verknüpfen mit den entsprechenden Variablen und Aktionen.[/li][li]Für mich selbst war es ein Projekt um weitere Erfahrungen mit dem SDK, Delphi und INDY zu sammeln. [/li][li]Außerdem bin ich der Meinung, dass wenn Hardware (hier die CCU) schon nativ von IPS unterstützt wird; dann bitte auch so komplett und umfangreich wie möglich. Und da gehören die Systemvariablen dazu.[/li][/ul]

Da ich das Modul selbst einsetze, werde ich bei IPS-Updates Diese auch neu einstellen, sobald das jeweilige SDK released wurde.

Doku: Installation, Einrichtung & wichtige Hinweise :

Abfrage-Intervall bitte nicht kleiner 5 (=5 Sekunden) einstellen. Nutzt lieber einen Trigger aus der CCU. http://www.ip-symcon.de/wiki/Systemvariablen#Triggern_des_Scriptes

Modul (inkl. Doku) Version 1.5:

Bei der CCU1 bitte unter Vorbehalt nutzen und testen ob das WebUI der CCU noch erreichbar ist. Leider habe ich auch nach einen Test mit einer CCU1 keine ‚nachvollziehbare‘ Ursache finden können.

ChangeLog:
1.5:

  • CCU-Programme eingebunden.
    1.3:
  • XML Verarbeitung überarbeitet.
    - Bei Verwendung des Powermeter-Moduls wurde beim Shutdown ein Fehler erzeugt, welcher diesen Shutdown abbrach (Referenzzähler > 1 (=3) für Instanz #xxxxx). Dieser Fehler ist nun behoben.
  • Beim Start vom IPS-Dienst konnte unter bestimmten Umständen eine Zugriffsverletzung der Systemvariablen-Instanz auftreten.
  • Fehlermeldungen der Instanzen beim Starten des IPS-Dienst behoben.
    1.1:
  • Exception handling der XML Verarbeitung verbessert.
  • Umstellung von HTTP Ver.1.0 auf 1.1
  • Timeout angepaßt.
  • Exception handling des HTTP-Client verbessert.
  • Stress-Test mit CCU1 Vers. 1.514 verlief Erfolgreich. WebUI der CCU1 noch immer erreichbar, kein Reset feststellbar. (Einschränkung: Die CCU1 war komplett ‚nackt‘ durch einen Werksreset.)

Hinweise zum erfolgten Stress-Test:
Die CCU1 und die CCU2 können über den Remote-HM-Script Webserver max. 6 gleichzeitige Verbindungen. Nachdem ich jede CCU über 10min. lang erfolgreich 1x/5 sek abfragen konnte, habe ich mich für einen Stress-Test entschieden um nachzustellen was passiert wenn diese 6 Verbindungen überschritten werden. Also habe ich jede CCU mal mit 6Abfragen/sek befeuert. Außer dass einige Antworten aufgrund des Verbindungslimit nicht beantwortet wurden (TCP Verbindungen auf- und abbauen kostet Zeit, darum wurde das Limit manchmal überschritten), konnte ich auf beiden CCUs keine negativen Außwirkungen feststellen.

Michael

PS: Wenn Interesse besteht, kann ich das Modul noch um das Auslesen von CCU-Programmen und ausführen derselben erweitern (Version 1.5 ist online). Oder um eine native HM-Script Schnittstelle aus den PHP-Scripten von IPS.

HMSysVar.zip (587 KB)

Doku.pdf (89.3 KB)

Hallo Michael,

richtig, richtig gut! Und das ganze als Modul.

Dickes Danke. Werde ich bald ausprobieren!!

Der beste Beweis das man diese blöde XML-API nicht braucht!!

Hallo Michael,

Du bist ja göttlich.
Das klappt ja wie die sau!!:smiley:

Super klasse!!

Besten Dank.

Good Job Michael,

auch wenn ich kein Freund von 3rd-Party-Modulen bin, wir wurden in der Vergangenheit immer wieder überrascht, finde ich dieses Modul außerordentlich gut. :loveips:

Prinzipiell sollte das vom IPS-HQ direkt in den Kern übernommen werden.

Und zu deiner Interessenanfrage. Mehr ist immer gut :smiley:

Es wäre auch noch gut wenn IPS den Zustand der CCU (läuft) und umgekehrt CCU über wacht IPS. Da gibt es hier auch schon einige Skripte für.

Des weiteren wär auch nett wenn man die Störungen aus der CCU auslesen könnte.

Dann hätte man alles komplett.

Gruß Uwe

Hallo,

ich habe das Modul auch mal eingebaut und es funzt bestes - vielen Dank!

NUR - jetzt komme ich auf einmal nicht mehr auf meine CCU per WEB-Browser - ist das Zufall, oder vielleicht doch ein kleines Problem hervorgerufen durch das Modul?
Es sagt die Homematic CCU wäre nicht bereit und ich soll warten (auf was bitte :confused: )

Gruss aus Wiesbaden
Dieter

Die Meldung kenne ich nur wenn Sie gerade neu startet.
Da ich beim Testen auch immer auf der WebUi war, kann ich das so jetzt nicht nachvollziehen.

Im Debug kannst du die Kommunikation zwischen IPS und CCU sehen.
Sind dort Fehler ?
Fragst du per Intervall ab ? CCU 1/2 ?
Vielleicht ist deine CCU auch überfordert, wenn der Intervall zu klein ist.
Michael

Für IPS habe ich da noch was in Arbeit, ist aber eher universal einsetztbar.

Was sollte man da verändern ?
HM_ReadServiceMessages ist doch ab Werk dabei ?
Dieses Array jetzt fix in eine HTMLbox schreiben ist nicht hilfreich, da doch jeder sein eigenes Design bevorzugt.
Michael

Michael,

Danke für die schnelle Antwort.

Vorab: Habe das Modul mal rausgenommen und nach einer Weile lief wieder alles wie gewohnt und ich konnte die CCU1 wieder über ihre IP erreichen.

Es ist eine CCU1 und ich hatte einen 2 Sekunden Intervall takt eingestellt.
In den Fehlermeldungen war öfters zu sehen: CCU nicht erreichbar.

Irgendwie seltsam :eek:

Gruss
Dieter

Nicht seltsam, das war abzusehen :wink:
Werde mal die Dokumentation anpassen.
Die 2er schafft das, aber die 1er ist mit einem so kleinen Intervall völlig überfordert.
Kleinster Intervall sollten 5sek sein, werde das mal fest einbauen.
Da dass Abfragen auch ca. 800 bis 3000 ms dauert (je nach CCU und Anzahl der Variablen), könnte es sonst zu Überschneidungen kommen.

Ich empfehle ein Programm auf der CCU welches das Abfragen startet. (Siehe Wiki)

Michael

Dito. Bei mir selbiges. Bei 60 Sekunden Intervall. Habe es mal auf 600 gestellt.

Mal weiter beobachten.

selbes Problem bei mir… HM CCU1

Habe einen Trigger ausgewählt und den Intervall dann auf 0 (vermute das heißt Intervall ist aus)

bekomme auch im Browser dann die Meldung „Die HomeMatic CCU ist noch nicht bereitBitte warten Sie. Sie werden automatisch auf die Startseite weitergeleitet.“

Funktionierte bei mir etwa 15-20 Minuten, danach sah ich die Feldermeldung bei den Meldungen „CCU nicht erreichbar“

Modul erstmal wieder entfernt

lg,
Christian.

Verdammte…:eek:
Alle zu testen hatten eine CCU2…
Und eine 1er habe ich nicht hier.
Könnte jemand mir bitte eine Debug der Instanz und sein IPS Log per PN senden ?
Michael

die Debugseite von Homematic Systemvariablen schreibt folgendes wenn ich auf „CCU Auslesen“ klicke:

http://xxx.xxx.xxx.xxx:8181/ReadSysVar.exe
SysVars=dom.GetObject(ID_SYSTEM_VARIABLES).EnumUsedIDs();
Failed

Deine Erklärungen machen Sinn und ich werde das mal brücksichtigen.

Wahrscheinlich habe ich meine olle CCU1 total zu gebaggert :wink:

Danke noch mal und Gruß aus Wiesbaden

Habe mal die Version 1.1 Build 46 im ersten Post hochgeladen.
Neu: Timer-Intervall <5 Sekunden ist nicht mehr möglich.
Und ich habe die Abfrage für die CCU1 mal angepaßt.
Bitte testet mal, ob die Abfragen im Debug nicht mehr mit failed zurückkommen.

Michael

habe bei mir die CCU1 komplett neustarten müssen (Strom weg, Batterien raus)…

Version 1.1 vom Modul getestet… geht leider immer noch nicht.

Auszug aus dem log:

27.04.2014 18:45:04.312 | 58341 | WARNING | HomeMatic Systemvariablen | CCU unreachable
27.04.2014 18:45:04.312 | 0 | ERROR | InstanceManager | Fehler beim Verarbeiten von Nachricht: VM_UPDATE, Instanz 58341, Nachricht: Ein XML-Dokument muss ein Element der obersten Ebene enthalten.

Linie: 0

schicke dir mal den dump vom debug-Fenster per Mail

lg,
Christian.

Toll… wenn die CCU nicht erreicht wird, sollte er eigentlich gar nicht bis zum XMLParser kommen. Das ist ein Käfer.

Was mir aber eben noch eingefallen ist.
In der CCU muß die Firewall auch entsprechend eingerichtet sein:
Einstellungen -> Systemsteuerung -> Firewall

Bei ‚Remote HomeMatic-Script API‘ muß entweder
-Vollzugriff
oder

  • Eingeschränkt und dann unter ‚IP-Adressen für eingeschränken Zugriff‘ euer LAN eingegeben sein (z.B. 192.168.178.0/24 => /xx ist die Subnet für das Netzwerk. Bei 255.255.255.0 ist das 24 bei 255.255.0.0. ist es 16)

Michael

Habe mal im ersten Post die neue Version (1.1.8.13) hochgeladen und das Ergebnis meines gestrigen Tests mit einer CCU1 ergänzt.
Leider unbefriedigend, da ich keine erklärbare Ursache finden konnte und kann.
Die Test-CCU1 hat sich nicht aufgehängt, egal was ich getrieben habe. :frowning:
Allerdings war die CCU1 (V1.514) jungfräulich (Werksreset) leer.
Außerdem wurde die Netzlast an der CCU entzerrt da ich die Test-CCU1 über das Internet angesprochen habe (Kollege MCS-51 hast seine ‚Alte‘ mal eben zur Verfügung gestellt. Danke dafür.).

Also bei Lust und Gelegenheit bitte mal (an)testen.
Aufgrund kleiner Bugfixes empfehle ich das Update auch für die CCU2 nutzer.

Michael

Hallo,

Super nützliche Erweiterung , vielen Dank.