eHZ EMH SML Protokoll auswerten (veraltet kein Support mehr!)

Hier ein Script zum auswerten des EMH Bezugzähler, 2 Tarife.

Das Script kann zeitgesteuert aufgerufen werden, nach Wunsch einbauen.

Cutter und Registervariable anlegen, nach Bild einrichten und mit entsprechendem Port verbinden.

Im Anhang noch ein paar Bilder von einem Zusatzmodul zur direkten Anzeige.

<?

if($_IPS['SENDER'] == "RegisterVariable")
{
    // HerstellerID Obiskennung:129-129.199.130.3*255 Hex:81 81 C7 82 03 FF
    if(strpos($_IPS['VALUE'], chr(0x81).chr(0x81).chr(0xC7).chr(0x82).chr(0x03).chr(0xFF)) !== false)
    {
        $herstellerID = explode(chr(0x81).chr(0x81).chr(0xC7).chr(0x82).chr(0x03).chr(0xFF), $_IPS['VALUE']);
        SetValue(50710 /*[eHZ\SML\Hersteller]*/, substr($herstellerID[1], 5, 3));
    }
    else
    {
       LogMessage();
    }
    
    // Zählerstand (Wirk-Energie Total Bezug) Obiskennung:1-0.1.8.0*255 Hex:01 00 01 08 00 FF
    if(strpos($_IPS['VALUE'], chr(0x01).chr(0x00).chr(0x01).chr(0x08).chr(0x00).chr(0xFF)) !== false)
    {
       $zaehlerstand = explode(chr(0x01).chr(0x00).chr(0x01).chr(0x08).chr(0x00).chr(0xFF), $_IPS['VALUE']);
       SetValue(35552 /*[eHZ\SML\Zählerstand]*/, hexdec(Str2Hex(substr($zaehlerstand[1], 9, 5)))/10000);
    }
    else
    {
       LogMessage();
    }
    
    // Wirkleistung (Wirk-Leistung Total) Obiskennung:1-0.15.7.0*255 Hex:01 00 0F 07 00 FF
    if(strpos($_IPS['VALUE'], chr(0x01).chr(0x00).chr(0x0F).chr(0x07).chr(0x00).chr(0xFF)) !== false)
    {
       $wirkleistung = explode(chr(0x01).chr(0x00).chr(0x0F).chr(0x07).chr(0x00).chr(0xFF), $_IPS['VALUE']);
       SetValue(45421 /*[eHZ\SML\Wirkleistung]*/, hexdec(Str2Hex(substr($wirkleistung[1], 7, 4)))/10);
    }
   else
    {
       LogMessage();
    }
    
    // Bezug Tarif 1 (Wirk-Energie Tarif 1 Bezug) Obiskennung:1-0.1.8.1*255 Hex:01 00 01 08 01 FF
   if(strpos($_IPS['VALUE'], chr(0x01).chr(0x00).chr(0x01).chr(0x08).chr(0x01).chr(0xFF)) !== false)
    {
        $bezugTarif1 = explode(chr(0x01).chr(0x00).chr(0x01).chr(0x08).chr(0x01).chr(0xFF), $_IPS['VALUE']);
        SetValue(31449 /*[eHZ\SML\Bezug Tarif 1]*/, hexdec(Str2Hex(substr($bezugTarif1[1], 7, 5)))/10000);
    }
    else
    {
       LogMessage();
    }
    
    // Bezug Tarif 2 ((Wirk-Energie Tarif 2 Bezug) Obiskennung:1-0.1.8.2*255 Hex:01 00 01 08 02 FF
    if(strpos($_IPS['VALUE'], chr(0x01).chr(0x00).chr(0x01).chr(0x08).chr(0x02).chr(0xFF)) !== false)
    {
        $bezugTarif2 = explode(chr(0x01).chr(0x00).chr(0x01).chr(0x08).chr(0x02).chr(0xFF), $_IPS['VALUE']);
        SetValue(11116 /*[eHZ\SML\Bezug Tarif 2]*/, hexdec(Str2Hex(substr($bezugTarif2[1], 7, 5)))/10000);
    }
   else
    {
       LogMessage();
    }
}

function Str2Hex($daten)
{
    $hex = "";
     for($i=0; $i<strlen($daten); $i++)
   $hex .= sprintf("%02X ", ord($daten[$i]));
     return $hex;
}

function LogMessage()
{
    // Fehlermeldung nach logs schreiben
    $log = IPS_GetKernelDir()."logs\\Error eHZ_EMH.txt";
    $fp = fopen($log, "a");
    fwrite($fp, date("H:i:s ")."Datenlaenge: ".strlen($_IPS['VALUE'])." Daten: ".Str2Hex($_IPS['VALUE'])."
");
    fclose($fp);
}
?>

Aufgrund eines Auswertefehlers, hab ich den ganzen Code nochmal geändert. Zusätzlich mit Fehlerlogs.

Hallo Rainer,

Scipt installiert läuft auf Anhieb, prima Danke für die Arbeit.

Aus dem Zähler kommen ja noch etliche weitere Informatione wie z.B.

  • Strom L1 bis L3
  • Spannung L1 bis L3
  • Leistung L1 - L3
    etc.

Hast Du die Codes eventuell auch schon extrahiert?
Für eine kurze Info wäre ich die Dankbar.

Hi,

sicher?

Bei den EMH Zählern, welche ich bisher in den Fingern hatte war nicht daran zu denken.

Interessant wäre mal ein LOG der Daten, welche gesendet werden… und natürlich die genaue Bezeichnung des Zählers.

mfg

BerndJ

PS: die von Dir zitierten Werte sollten erst dann kommen, wenn Sie per rückseitiger Schnittstelle (denn nur die „lauscht“ auf der Leitung) per SML angefordert werden. So weit bin ich aber noch nicht, vielleicht hat Rainer damit schon Erfahrungen gesammelt?? und kann Tips geben.

Ohne Log ist das alles Rätselraten. Über die vordere Schnittstelle, wird bei diesem verwendeten Zähler dieses nicht übertragen.
An die hintere Schnittstelle komme ich im Moment zwecks Testobjekt nicht dran, da hängt die MUC dran.

Wenn Du bei deinem Zähler über die hintere ausliest, schick mir den Log und ich sag dir was drin steht.

Hi Rainer,

hab mehrere über die hintere Schnittstelle am Laufen. Dort kommt der gleiche, sehr magere, Mist wie an der vorderen.

mfg

Bernd

Danke für die Antwort,
Habe den hinteren Sensor eingebaut sende dir heute oder morgen den Code.
Laut Ausage von EMH kommen vorne die gleichen Daten raus wie hinten.
Es könnte jedoch sein das man das vorn freischalten muss.
Habe von meinem Energieversorger einen Code bekommen den man von vorne mit einer Lampe ueber den
Infrarotempfaenger freischalten kann. Dann werden auf dem Display wesentlich mehr Daten angezeigt z.B.
Vergangenheitswerte letzter Monat letzte drei Monate Jahresverbrauch, aktuelle Leistung und Strom der einzelnen Phasen
etc. Diese Daten stehen an den Schnittstellen alle zur Verfügung.

Nachtrag:
Hatte einzelne Daten durch probieren schon Auslesen können.
Leiter ist die Doku die ich habe mangels Kentnisse für mich nicht sehr aufschlussreich.

Mach das mal.

Dann werden auf dem Display wesentlich mehr Daten angezeigt z.B.
Vergangenheitswerte letzter Monat letzte drei Monate Jahresverbrauch

Das kann ich auch ohne Code, diese stehen (zumindest bei meinem Zähler) aber nicht an der vorderen Schnittstelle zur Verfügung.

Den Log, dann bitte als dump und in HEX.

Hallo,
log im Anhang

EHZ.txt (111 KB)

Dafür kannst Du obige Auswertung verwenden, ist genau das selbe.

Hi,

hab den ersten Datensatz mal zerlegt und nur sehr wenig Inhalt gefunden (Zählerstände und aktuelle Leistung).

Siehe Anlage

mfg

Bernd

PS: mehr Werte kenn ich von den SML Dingern auch nicht, daher die Frage an die SML Profis:

Welche Daten muss ich an die hintere Schnittstelle schicken, damit er auskunftsfreudiger wird?

EHZ WiBo.txt (112 KB)

Hallo Rainer,

bietet die OVAG schon EHz an ?

Ich hab doch schon geschrieben, es ist das selbe, da kommt weiter nichts.

Ergebnis unten. Die ID und PublikKey sind nicht berücksichtigt.

@Rainer. Ja kannst Du bekommen.

@Bernd.

Welche Daten muss ich an die hintere Schnittstelle schicken, damit er auskunftsfreudiger wird?

Da die Zähler zu Abrechnungszwecken eingesetzt werden, kommst Du da nicht dran. Erstens sind sie geschützt, zweitens sind dort Manipulationsroutinen eingebaut. Das ganze könnte unter Umständen strafrechtliche Maßnahmen nach sich ziehen.

Hi,

wenn es sich um den Zähler des EVU handelt stimme ich Dir zu. Da hängt dann hinten ja auch ein MUC dran.

Ist es hingegen ein privat gekaufter, auch einer der vom Vermieter für Abrechnungszwecke genutzt wird und bei dem über die hintere alle zwei Minuten der Befehl zum Umschalten auf den Tarif 2 gesendet werden muss;

sehe ich das ganz anders.

mfg

Bernd

Er scheint doch mehr auszuspucken, allerdings undokumentiert wie Bernd auch festgestellt hat. Ich vermute hier aber die Wirkleistung der einzelnen Phasen. In Summe, würde es passen.

Da kommt z.B.
Jahresverbrauch
Vergangener Monatsverbrauch
Letzte 3 Monate
Leistung der einzelnen Phasen
Und noch einiges mehr raus

Dann hast Du einen anderen Log als Du angehängt hast.

Das sind die OBis Kennzahlen in deinem Log, mehr ist da nicht drin.

81 81 C7 82 03 FF

01 00 00 00 09 FF

01 00 01 08 00 FF

01 00 01 08 01 FF

01 00 01 08 02 FF

01 00 0F 07 00 FF

01 00 23 07 00 FF

01 00 37 07 00 FF

01 00 4B 07 00 FF

81 81 C7 82 05 FF

Das Ergebnis ist im obigen Anhang zusehen. Den hat er gestern wohl unterschlagen.

Hi,

das sind die Werte, welche Dir auf dem Display angezeigt werden, wenn die so genannte „optische Taste“ im extendet Modus bedient wird.

Das hat aber NICHTS mit den Daten zu tun, welche diese Kisten auf der Schnittstelle liefern.

mfg

BerndJ

Hi Rainer,

ist ja interessant.

Bei allen EMH Zählern (bezogen über co.met), welche ich bisher in den Fingern hatte, fehlten diese Info´s.

Da muss sein Lieferant den ja anders parametriert haben.

Wenn man jetzt wüßte, mit welchem „Zauberstring“ man diese Dinger dazu bewegen könnte, dauerhaft diese Infos zu senden; ja dann wären sie endlich mal für IPS sinnvoll einsetzbar.

mfg

Bernd

BTW:

schön ist es, dass WiBo auf seine Anfrage:

eine Antwort erhalten hat.

Ich persönlich bekam auf meinen Wunsch, doch die fehlende Bedienungsanleitung
(gerne auch als Link) zu erhalten am 18.5.2012 folgendes:


wir bedanken uns für Ihre Nachfrage vom 18.05.2012 zu unseren Produkten,
müssen Ihnen jedoch leider mitteilen, dass wir Ihnen hierzu keine Informationen
geben können, da besondere vertragliche Vereinbarungen mit unseren Kunden
dies nicht zulassen.

Entsprechend hoffen wir auf Ihr Verständnis und bitten Sie, sich mit Ihrer Anfrage
an Ihre Bezugsquelle der Produkte zu wenden (z.B. Netzbetreiber,
Messstellenbetreiber oder Großhändler).

Dort kann Ihnen die gewünschte Auskunft gegeben werden, insbesondere auch
hinsichtlich der bei Ihnen im Einsatz befindlichen Ausführungsvariante.

Wir bitten um Kenntnisnahme, dass wir zu diesem Vorgang keine weiteren Anfragen
beantworten.


Besonders herzhaft: der letzte Satz.

Ich traue mich also nicht mehr die Frage nach undokumentierten OBIS Kennzahlen zu stellen:

Support für die eigenen Produkte sollte anders aussehen;
ich persönlich suche seitdem nach Alternativen, obwohl das Unternehmen quasi um die Ecke sitzt und ich als Einkäufer die heimische Wirtschaft unterstützen möchte, …; bzw. … wollte!

erst mal Danke für die Antworten.

Sobald ich Zeit habe werde ich mich mal näher damit beschäftigen.

Bin mir ziemlich sicher das ich den Vormonatswert schon hatte.
Habe aber irrtümlich das Script gelöscht und mir auch nicht den Code notiert.