HomeMatic Funk-Schaltaktor 1fach mit Leistungsmessung

Moin Zusammen.
Wie sendet das Gerät?
Alle wie viel Minuten?
Zusätzlich bei Lastveränderungen?

Ich hoffe nicht überlesen zu haben, dass die Antwort schon mal kam.
Grüße Matthias

Hallo Inspra

Scheint richtig dein Ansatz so in einem Überflug. Wie hast du die HM-Werte nun ausgelesen, hast du ein cgi gefunden wo du direkt diese eine Variable ausliest? Wäre für die anderen vermutlich interessant wie du das machst also code. Ich könnte so vielleicht einen wöchentlichen Abgleich meiner eigenen internen Stati mit dem Totalstatus aus HM durchführen.

Sehr fein jedenfalls. Ich kann sozusagen den Puls meiner Waschmaschine fühlen :smiley:

Alles klar. Das sieht gut aus. danke Sokkederheld!

Ich wollte eigentlich auch mein Script anhängen, hatte wohl irgendwie nicht geklappt, jetzt nachgeholt, also hier:
Script Post

Ich nehme also den Gerätezähler, in die andere Richtung (CCU-Zähler) weiterzumachen hatte ich mir dann gespart.

Zur Frage des Sendeintervalls, das kann man relativ genau einstellen in den Einstellungen, im Anhang ein Bild. Da man das Mindestintavall bis auf 0 Sek runterstellen kann, gehe ich davon aus, das der Aktor dann auch wirklich sofort bei einer Änderung eines Parameters im eingestellten Bereich Sendet. Wenn man das übertreibt, wird man wohl schnell in den Dutycycle kommen.

Gruß

Julian

Nachrichtenbild(487226493).png

Ok, ja da werden einige sicher ne Freude haben. Leider halt nur die lokale Variante. Mal schauen, je länger je mehr finde ich es gut wenn man zwar lokal alles in IPS macht aber ein Quervergleich schadet nie… sprich auslesen aus CCU und wöchentlich den Totalwert mit IPS abgleichen wäre sexy. In den Anfangsphasen kann halt immer mal was schiefgehen und so merkt man es. Zähler in IPS verwalten ist denke ich wirklich der beste Approach… aber is nicht einfach wenn man alle Spezialsituationen mit abfangen will. (Strom weg, Counterreset etc.)

Also, da ich es auch gleich brauchen konnte um meinen lokal geführten Counterwert abgleichen zu können, hier der Vorgang wie Ihr den Wert von der CCU auslesen könnt und entweder gleich diesen verwenden könnt oder wie ich für einen Abgleich. Die Sache besteht aus zwei Teilen, das eine müsst Ihr auf der Homematic machen und das andere in IPS um die Variable von Homematic auszulesen. Warum zwei Schritte… Naja die Zählerstände auf der CCU können nicht einfach so ausgelesen werden weil vermutlich die XML-API Schnittstelle diese noch nicht kennt/auflistet. Sie sind vorhanden und kamen ja mit einer neuen Firmware bei der Homematic aber in der Api vermutlich noch nicht. Deswegen müssen wir auf der Homematic zuerst ein Programm erstellen, welches bei Veränderung dieser lokalen Zählerstände den Wert in eine globale Variable überträgt. Danach lesen wir diese globale Variable mit IPS aus und füllen damit eine Variable in IPS. Und dann… na dann könnt ihr damit machen was ihr wollt :slight_smile:

Also Teil auf der HM
–> Zuerst unter Einstellung Systemvariable eine neue Systemvariable erfassen wie im Printscreen vermerkt (Wenn Ihr mehrere Messaktoren so auswerten wollt genau so viele Variablen erfassen)
–> Neues Programm erstellen unter Programme&Verknüpfungen Programme siehe Screenshot… ich habe 3 solche Messaktoren und wenn ihr einen habt könnt Ihr die Oder-Verknüpfungen vergessen und erfasst nur den einen. Die Variable svEnergyCounter_5016_KEQ0964968:2 wird bei euch natürlich ein wenig anders aussehen… aber der Anfang mit svEnergyCounter bleibt gleich und Ihr findet so heraus zu welchem Messaktor die Variable gehört(Hier sieht man auch das die Zählerständsvariablen auf der Homematic bestehen aber von der Api-XML einfach noch nicht gelistet werden…)
Und zuletzt trägt ihr unter Script folgendes ein


dom.GetObject("TotEnergyCountBZWT").Variable(dom.GetObject("svEnergyCounter_5016_KEQ0964968:2").Value()
);
dom.GetObject("TotEnergyCountWZWA").Variable(dom.GetObject("svEnergyCounter_4941_KEQ0965373:2").Value()
);
dom.GetObject("TotEnergyCountWZSP").Variable(dom.GetObject("svEnergyCounter_4866_KEQ0966457:2").Value()
);

Achtung, zbsp TotEnergyCountxxxx müsst Ihr durch den Namen eurer globalen Variable austauschen die Ihr im Schritt eins erfasst habt. Die Variable svEnergyCounter_xxxxxx müsst Ihr durch den Namen der Variable bei euch austauschen welche vermutlich auch mit svEnergyCounter beginnt aber sicher anders endet. (Kanalname)

Danach könnt Ihr unter status Bedienung programme dieses Programm einmal Manuel starten und prüfen ob unter status Bedienung Systemvariable ob die Variablen die Ihr erstellt nun mit dem Wert des CCU-Counters abgefüllt wurden

Teil IPS

Wenn der erste Teil soweit funktioniert könnt Ihr nun die Variable entweder einzeln mit Sysgetvarlist.cgi auslesen oder Ihr sucht hier im Forum nach dem: HM Systemvariablen auslesen und in IPS anlegen (dort findet Ihr ganz am Anfang ein Script von ChristanS)

Erstellt das Script wie von ChristianS publiziert. Das Script macht am Ende des Tages nichts anderes, als das es euch für alle Systemvariablen aus der CCU eine entsprechende Variable in IPS erstellt. Dann habt ihr auch die neue Variable mit dem Counterwert und könnt nun die Werte abgleichen oder nur die von der HM verwenden ohne lokal einen Counter in IPS mitzuführen.

Schaut doch mal im Wiki nach.
Dort ist ein Script welches ohne XML-Api Patch die Sysvars der CCUs auslesen kann.
Und da dies auch HM-Script nutzt, braucht es dann den Umweg über das seperate CCU-Programm nicht.
Michael
PS: Habe meinen Aktor noch nicht… kann also noch nicht testen (Jetz bestellt :smiley: ).

Hallo Nall Chan

Dein Vorschlag ist eigentlich gut aber das Script wollt ich nicht zitieren da es fehlerhaft ist. Vielleicht hast du da aber gerade Zugriff und kannst den Fehler beheben, dann macht diese Variante nämlich Sinn. Nach diesem Code


$xml_values = simplexml_load_file('http://'.$ccu_ip.':8181/sysvar.exe?'.$url_values);
$xml_ids = simplexml_load_file('http://'.$ccu_ip.':8181/sysvar.exe?'.$url_ids);
$xml_types = simplexml_load_file('http://'.$ccu_ip.':8181/sysvar.exe?'.$url_types);
$xml_timestamps = simplexml_load_file('http://'.$ccu_ip.':8181/sysvar.exe?'.$url_timestamps);

musst du das noch hinzufügen


$xml_values = new simpleXMLElement($xml_values->asXML());
$xml_ids = new simpleXMLElement($xml_ids->asXML());
$xml_types = new simpleXMLElement($xml_types->asXML());
$xml_timestamps = new simpleXMLElement($xml_timestamps->asXML());

Sonst geht da gar nix und es kommt immer nur eine Fehlermeldung. Mit der Korrektur ist es aber richtig, dann kann man sich das Programm auf der CCU sparen und eine Abfrage direkt auf die CCU-Zählervariable funktioniert. Als Beispiel hier

$ccu_sysvars= Array („svEnergyCounter_4941_KEQ0965373:2“);

Gruss

Also ich bekomme keinen Fehler…
Und im Wiki kann auch jeder gerne selber Fehler ausbessern. Dafür ist es ja da.

Wenn jetzt auch etwas OT, aber vielleicht bin ich ja zu blöd.
Was ist der Sinn dahinter ein die Daten eines Objektes vom Typ simpleXMLElement welches durch simplexml_loadfile erzeugt wird, noch mal mit new simpleXMLElement asXML zu bearbeiten ?
Der Inhalt ist doch absolut identisch.
Eben noch mal einen var_dump gezogen.
EDIT: Ok ein Vorteil/Nachteil könnte das decoden von Sonderzeichen sein (Function asXML decodes special chars), wobei das bei mir mit beiden Varianten und egal ob XML-API oder HM-Script-Socket etwas komisch aussieht (Gerät statt Gerät).

Michael

Naja wenns bei dir geht und bei mir nicht… ist es ja besser wenn ich es im Wiki nicht einfach so anpasse… finde es halt gut wenn es einen Verantwortlichen gibt der jeweils so was etwas kontrolliert. Bin kein super Programmierer und will da keinen Stuss reinschreiben. Das Problem ist aber real. Unten ein Printscreen mit Erweiterung auskommentiert und darauf „Fehler“ und einen mit Erweiterung ohne „Fehler“. Dieses Verhalten habe ich bei zwei Installationen nachgeprüft.

Warum oder wie das bei dir ohne gehen soll kann ich mir aktuell nicht erklären, ausser du (oder ich aber wüsste nix davon) hättest vielleicht andere PHP-Settings/ini global definiert als im Default mit IPS daherkommt. Mir war mal was, dass Michael (der andere… :-)) sagte es braucht hier eine genaue Typendefinition (Sonderzeichen etc.) sonst ist das XML-Subset -> $xml_values hier nicht gültig womit es zur Fehlermeldung kommt nach der Überprüfung.

Vielleicht kann das ja noch einer unabhängig prüfen und je nachdem passen wir es im Wiki an oder es ist ein Fehler nur bei mir. Deine Idee sonst ist ja putzig und gut, weil es dann auch ohne das zusätzliche Programm auf der CCU läuft und das macht es sicher einfacher. Danke für diesen Hinweis.

Gruss

Hallo Kronos… naja das war nur der Stein der Weisen am Ende des Threads hier

Gruss

Also bei mir funktioniert das Script zum SysVar auslesen, so wie es im Wiki steht.
Beim ausführen über Konsole legt es die definierten Variablen in IPS an und liest sie aus.

Install...
CCU gelesen

Danach werden sie allerdings nicht mehr aktualisiert, wenn der Timer das Script erneut aufruft.
Habe aber im Moment keine Zeit mehr weiterzuforschen, woran das jetzt liegt.

Und: das Script auf der CCU brauche ich trotzdem noch oder ? Ich kann ja nach wie vor nur die Systemvariablen auslesen (halt ohne XML-Patch), nicht die Gerätevariable selbst ?

Mein Script, um die Zähler Variable in IPS zu führen habe ich übrigens noch erweitert, es kann jetzt mehr als ein Zwischenstecker.

Gruß

Julian

Hallo Inspra. Noch die Frage, hast du dieses Script (das untere Script) eingebunden

Ohne XML-API Patch ?

Diese/Deine Meldung kommt so bei beiden Varianten aber du müsstest die ohne XML-API Patch nehmen.

Gruss

Habe eben auch meinen endlich in Betrieb genommen.
Nun kann ich auch sinnvollere Antworten geben :smiley:

Die Scripte im Wiki sind erstmal so eingestellt, das nur Systemvariable welche eine neuere Aktualisierungszeit in der CCU als in IPS haben, neu gelesen werden. Also nur wenn die CCU die Var aktualisiert hat, wird sie auch in IPS aktualisiert.
Wenn du das nicht möchtest, nimm die // bei $getall=true; raus. Dann wird immer alles gelesen.

Zum Aktor, ich habe einfach beim lesen ohne XML-API Patch, die interne Sysvar vom Aktor mit eingefügt und schon habe ich sie in IPS. Ohne Script in der CCU (außer das Original-Script, welches automatisch angelegt wird)

$ccu_sysvars= Array ("Anwesenheit","Regen gestern","Regen heute","Soll Temp Nacht","Soll Temp Tag","svEnergyCounter_12345_KEQ123456:2");

Einfacher (einzurichten) geht es nicht.

Die Gerätevariable hast du doch automatisch in der HM-Instanz in IPS, warum noch mal auslesen ?

Michael

PS: Ohne XML-API Patch ist meine CCU wieder ein Stück sicherer geworden. (Der Patch ist toll, aber er sorgt auch immer für ein extrem offenes Scheunentor, da er keinerlei Authentifizierung unterstützt.)

Kann man den aufgezeichneten Verbrauch (Wh) eigentlich auch irgendwie wieder per IPS zurück setzten oder geht es nur per reset der Steckdose? :open_mouth:

Hier mal was zum auslesen des Summenzählers des Schaltaktors aus der CCU:
http://www.ip-symcon.de/forum/threads/24633-Modul-Homematic-Systemvariablen-und-Powermeter
Michael

Hallo,

ich nutze 2 Stecker um emails zu versenden wenn die Waschmaschine fertig ist - also Stromverbrauch unter 5 Watt ist.

Das Problem ist, dass vor allem der Trockner hier immer wieder mal die Trommel dreht und somit der Verbrauch auf 200 Watt steigt und dann wieder abfällt - somit geht wieder eine Email raus.

Hat jemand so etwas am laufen?

Vielen Dank

Musst halt einen Timer setzen, der nach x Minuten „schaut“, ob immer noch unter 5W sind und dann erst die Mail.

Gruß
Bruno

Ich macht mit den durchschnittlichen Werten der letzten 5min . Das Script kann ich dir senden , ab Montag oder du machst es schnell selber.

Gesendet von meinem iPhone mit Tapatalk