Homematic Messwerte auslesen

Alles was speziell mit der Anbindung der HomeMatic Zentrale und anderen Smart Home Zentralen zu tun hat. (FHEM, ioBroker usw.) Fragen Ideen und Erfolgsmeldungen.

Moderator: Ulrich

Antworten
dstockm
Beiträge: 15
Registriert: So 29. Jan 2023, 17:54
Hat sich bedankt: 3 Mal
Danksagung erhalten: 1 Mal

Homematic Messwerte auslesen

Beitrag von dstockm »

Hallo,

ich bin ganz neu in dem Thema und noch im Probebetrieb. Da ich mein eigentliches Ziel (openDTU auslesen) mangels fehlender Hardware noch nicht angehen kann, habe ich schon mal ein wenig geübt. Die sich daraus ergebenen Erkenntnisse und Fragen will ich hier mal festhalten.

1. Installation der 64-Bit-Version auf einem Pi4 mit einem Regler (Senec ) lief überraschend gut.

2. Der Desktop hat bei mir keine Menüleiste und der Firefox zeigt (fast) nie etwas an. Ok, brauche ich auch nicht...

3. Umstellung auf Multi-Regler: Ich wollte noch Daten aus meiner Homematic einbinden. Da bin ich ein wenig durcheinander gekommen, weil ich nach der Anleitung erstmal Kapitel 6.2. abgearbeitet hatte. Das gab dann Fehlermeldungen "zu viele php-Dateien". Es hat gedauert bis ich verstanden hatte, dass ich für diesen Weg vermutlich keine Multi-Regler-Variante (2.user.config.php) benötigt hätte. Als ich dann zu dem XML-API-Teil kam, klärte sich das dann einigermaßen (habe jetzt $HM_auslesen = false;). Und wenn zusätzlich über den Weg ohne API, müsste man das dann vermutlich in die 1.user.config.php packen?

4. Homematic-Geräte über API. Ich bin zum Glück über diesen Beitrag gestolpert: viewtopic.php?t=2576
Ich habe derzeit folgende HM-Geräte:
a) Messsteckdose im Einspeise-Modus (HMIP-PSM)
b) Schalt-Mess-Aktor im einspeise-Modus (HMIP-FSM16)
c) Stromzähler mit IEC-Sensor (HM-ES-TX-WM)

Die wollten out-of-the-box alle nicht so recht. Nachdem ich die hm_geraet.php mit dem o.g. Beitrag ein wenig verstanden hatte, konnte ich alle zum Laufen bringen.
a) Die wurde als HMIP-PS eingetütet. Ich habe in der Abfrage der PS die PSM explizit ausgeschlossen:

Code: Alles auswählen

elseif ((strtoupper(substr( $HM_Geraetetyp[$s], 0, 7 )) == "HMIP-PS") and (strtoupper( substr( $HM_Geraetetyp[$s], 0, 8 )) !== "HMIP-PSM"))
b) Den FSM16 gab es bislang nicht. Der sendet aber identische Werte wie die PSM:

Code: Alles auswählen

elseif ((strtoupper( substr($HM_Geraetetyp[$s], 0, 8 )) == "HMIP-PSM") or (strtoupper(substr($HM_Geraetetyp[$s], 0, 8)) == "HMIP-FSM"))
c) Beim HM-ES-TX-WM gab es mehrere Probleme:
c1) Bei meinem IEC-Sensor heißen die Datenpunkte "IEC_POWER" und "IEC_ENERGY_COUNT". Ich weiß nicht wie das bei den anderen Sensoren ist.
c2) Beim ENERGY_COUNTER war der Faktor falsch (100 anstatt 1000)
c3) Da mein Zähler zwei Zählwerke hat, bekomme ich Daten auf zwei Kanälen. Leider heißen die Datenpunkte gleich, so dass der Bezug (Kanal 1) immer durch die Einspeisung (Kanal 2) überschrieben wurde. Das habe ich mit einer Abfrage auf den Kanal "hart" verdrahtet:

Code: Alles auswählen

          elseif ($HM_Geraetetyp[$s] == "HM-ES-TX-WM") {
            // Gas und Stromzähler
            $funktionen->log_schreiben( $i." ".$k." ".(string) $doc["device"][0]->channel[$i]->datapoint[$k]["type"], "   ", 8 );
            if ((string) $doc["device"][0]->channel[$i]->datapoint[$k]["type"] == "OPERATING_VOLTAGE") {
              $aktuelleDaten["HM_Seriennummer".$s]["Batteriespannung"] = round( (string) $doc["device"][0]->channel[$i]->datapoint[$k]["value"], 1 );
              $aktuelleDaten["HM_Seriennummer".$s]["Batteriespannung_Unit"] = "V";
            }
            if ((string) $doc["device"][0]->channel[$i]->datapoint[$k]["type"] == "GAS_ENERGY_COUNTER") {
              $aktuelleDaten["HM_Seriennummer".$s]["Kubikmeter_Gas"] = round( (string) $doc["device"][0]->channel[$i]->datapoint[$k]["value"], 1 );
              $aktuelleDaten["HM_Seriennummer".$s]["Gas_Unit"] = "m³";
            }
            //Datenpunkte von Kanal 1 und 2 haben beim IEC-Sensor identische Bezeichnungen
            //Kanal 1 (=Bezug)
            if ($i == 1) {
                if ((string) $doc["device"][0]->channel[$i]->datapoint[$k]["type"] == "IEC_ENERGY_COUNTER") {
                  $aktuelleDaten["HM_Seriennummer".$s]["Wh_BezugGesamt"] = round( (string) $doc["device"][0]->channel[$i]->datapoint[$k]["value"] * 1000, 0 );
                  $aktuelleDaten["HM_Seriennummer".$s]["Wh_BezugGesamt_Unit"] = "Wh";
                }
                if ((string) $doc["device"][0]->channel[$i]->datapoint[$k]["type"] == "IEC_POWER") {
                  $aktuelleDaten["HM_Seriennummer".$s]["W_Bezug_Leistung"] = (string) $doc["device"][0]->channel[$i]->datapoint[$k]["value"];
                  $aktuelleDaten["HM_Seriennummer".$s]["W_Bezug_Leistung_Unit"] = "W";
                }
            }
            //Kanal 2 (= Einspeisung)
            if ($i == 2) {
                if ((string) $doc["device"][0]->channel[$i]->datapoint[$k]["type"] == "IEC_ENERGY_COUNTER") {
                  $aktuelleDaten["HM_Seriennummer".$s]["Wh_EinspeisungGesamt"] = round( (string) $doc["device"][0]->channel[$i]->datapoint[$k]["value"] * 1000, 0 );
                  $aktuelleDaten["HM_Seriennummer".$s]["Wh_EinspeisungGesamt_Unit"] = "Wh";
                }
            //Einspeiseleistung wird vom Zähler nicht ausgegeben
            //  if ((string) $doc["device"][0]->channel[$i]->datapoint[$k]["type"] == "IEC_POWER") {
            //    $aktuelleDaten["HM_Seriennummer".$s]["W_Einspeisung_Leistung"] = (string) $doc["device"][0]->channel[$i]->datapoint[$k]["value"];
            //    $aktuelleDaten["HM_Seriennummer".$s]["W_Einspeisung_Leistung_Unit"] = "W";
            //  }
            }
          }
Soweit so gut. Ich habe das Dashboard der Senec ex- und importiert. Bislang wird für die Homematic trotzdem noch gar nichts angezeigt. Ich denke ich muss jetzt erstmal herausfinden wie man die Felder mappt, ohne alles neu bauen zu müssen.
Und dann kommt hoffentlich bald die Hardware für die openDTU...

dstockm
Beiträge: 15
Registriert: So 29. Jan 2023, 17:54
Hat sich bedankt: 3 Mal
Danksagung erhalten: 1 Mal

Re: Homematic Messwerte auslesen

Beitrag von dstockm »

Soooo. Das läuft jetzt alles wunderbar. Homematic-Dashboard ist fertig.

openDTU direkt mit der solaranzeige verarbeitet. Ohne Zusatzsoftware.
Siehe viewtopic.php?p=23561#p23561

Super!

Antworten

Zurück zu „HomeMatic, FHEM, ioBroker, Smart Home Zentralen und Solaranzeige“