RWN
13. August 2012 um 17:52
21
Habe aber irrtümlich das Script gelöscht und mir auch nicht den Code notiert.
Zum Glück, benutzt Du ja IPS und das hat für solche Fälle vorgesorgt. Deine gelöschten Scripts, findest Du im Script Ordner unter deleted.
@Bernd ,
normalerweise gibt EMH überhaupt keine Auskunft an Privatpersonen.
Um nochmal zum parametrieren der Zähler zukommen, dafür gibt es ja Software und ich denke mal, die wenigsten Energieversorger werden wissen wie sie einen Zähler ansteuern. Dafür haben sie ja, wenn überhaupt die Software oder einen Zulieferer der dieses alles übernimmt.
olima
25. September 2012 um 16:37
22
Hallo
Vielen Dank für das Skript. Ich habe jetzt soweit alles angeschlossen und konfiguriert. Leider verstehe ich das mit den OBISkennzahlen noch nicht ganz. Wie muss ich das skript anpassen damit ich die Daten bekomme. ? Ich habe einen EMH eHz
Ich habe mal ein log der RegV /comport angehängt.
Danke schon mal
Oliver
ehz.txt (12.7 KB)
Comdump.txt (13.9 KB)
RWN
25. September 2012 um 17:02
23
Ist das alles was da aus dem Zähler kommt. Mehr als 2 mal die Herstellerkennung, ist da nicht drinnen. Keine Daten.
olima
25. September 2012 um 17:35
24
Ich fürchte da kommt dann wohl nicht mehr… Kann das vom Energieversorger beschränkt wurden sein (EWR) ?? bzw. kann man das per „optischer Taste“ einschalten.
Danke
Oliver
olima
15. November 2012 um 16:21
25
Hallo Rainer
Wir haben jetzt durch unsere PV einen neuen Zähler bekommen (Zweirichtungszähler) der hoffentlich etwas gesprächiger ist.
Ich habe mal ein Dump angehängt. Evtl. kannst Du mal „schnell“ drüberschauen.
Vielen Dank
Oliver
dump.txt (181 KB)
RWN
15. November 2012 um 19:05
26
Jo, das sieht besser aus. Bezug-Lieferung usw, ist vorhanden. Wenn Du das Script entsprechend anpasst mit den Werten, sollte eigentlich alles funktionieren.
olima
16. November 2012 um 08:15
27
Wenn Du das Script entsprechend anpasst mit den Werten
Ich fürchte da brauche ich ein wenig Hilfe falls möglich.
Danke
Oliver
olima
18. November 2012 um 16:49
28
So
ich bastele nun schon 2 Tage an dem Skript rum, und habe jetzt eine Anzeige der Wirkleistung. War aber wohl eher ein Zufallstreffer. Ich werde aus dem SML-Protokoll in zusammenhang mit dem Skript von Rainer nicht schlau…
evtl. hat jemand noch einen Tipp oder So wie ich das Skript anpassen muss um die restlichen Werte zu erhalten. Es handelt sich um einen eHZ von Hager !
Ich will keine „Fertiglösung“ sondern nur etwas Starthilfe um das zu verstehen.
Danke
Oliver
RWN
18. November 2012 um 17:02
29
Hallo Oliver,
in meinem Script, stehen doch die Obiszahlen als Hex drinnen. Jetzt suchst Du dir in deinem Code deine raus und trägst sie im Script ein. es sind 1 bis 2 Änderungen nötig statt 1 kommt 2 rein.
Ich kannn heute so ab 20 Uhr mal schauen, dann schreib ich dir es zusammen wenn Du nicht weiter kommst.
olima
18. November 2012 um 17:26
30
Hallo Rainer
wenn Du dafür später Zeit finden würdest, wäre das klasse. Ich stehe grade komplett auf der Leitung.
Danke
Oliver
olima
21. November 2012 um 14:39
31
Update:
Wirkenergie sowie Hersteller ID scheint jetzt zu klappen.
Nur die Zählerstände bekomme ich einfach nicht hin. Es kommen zwar Daten, aber die stimmen nicht mit der Anzeige auf dem Zähler überein.
Das habe ich gefunden:
07| 01 00 00 00 09 FF
07| 01 00 01 08 00 FF
07| 01 00 01 08 01 FF
07| 01 00 01 08 02 FF --> Lieferzähler ?
07| 01 00 02 08 00 FF
07| 01 00 02 08 01 FF
07| 01 00 02 08 02 FF
07| 01 00 0F 07 00 FF --> Wirkleistung gesamt
07| 81 81 C7 82 05 FF --> Herstellerkennung
evtl. hängt es an der umrechnung oder so ?
Oliver
RWN
21. November 2012 um 20:45
32
07| 01 00 01 08 00 FF -> Wirk-Energie Total Bezug
07| 01 00 01 08 01 FF -> Wirk-Energie Tarif1 Bezug
07| 01 00 01 08 02 FF --> Wirk-Energie Tarif2 Bezug
07| 01 00 02 08 00 FF -> Wirk-Energie Total Lieferung
07| 01 00 02 08 01 FF -> Wirk-Energie Tarif 1 Lieferung
07| 01 00 02 08 02 FF -> Wirk-Energie Tarif 2 Lieferung
07| 01 00 0F 07 00 FF --> Wirkleistung gesamt
07| 81 81 C7 82 05 FF --> Herstellerkennung
olima
22. November 2012 um 14:36
33
Hallo Rainer
Vielen Dank für die Zuordnung. Leider sind die Werte für die Zählerstände die ich bekomme nicht die der Zähler anzeigt.
Bsp. Zählerstand Bezug: 257 kWh --> laut Skript 1009,00 kWh.
Ich glaube irgendwas habe ich noch nicht verstanden… Sorry
Oliver
RWN
22. November 2012 um 17:55
34
Stell doch dein Script mal rein und lass mich nicht immer raten.
Das Script im ersten Post, sollte doch passen bis auf die Lieferung oder nicht.?
Edit: Hab mir grad mal deinen Dump angesehen, ist doch etwas anderst. Die Stellen, sind teilweise verschoben. Folglich muss substr angepasst werden.
olima
22. November 2012 um 18:30
35
Hallo Rainer
Danke für deine Hilfe
Hier ist mein(Dein)Script
<?
if($_IPS['SENDER'] == "RegisterVariable")
{
// HerstellerID Obiskennung:129-129.199.130.3*255 Hex:81 81 C7 82 05 FF
if(strpos($_IPS['VALUE'], chr(0x81).chr(0x81).chr(0xC7).chr(0x82).chr(0x05).chr(0xFF)) !== false)
{
$herstellerID = explode(chr(0x81).chr(0x81).chr(0xC7).chr(0x82).chr(0x03).chr(0xFF), $_IPS['VALUE']);
SetValue(22224 /*[Keller\Technikraum\EHz\ID]*/, 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(0x01).chr(0xFF)) !== false)
{
$zaehlerstand = explode(chr(0x01).chr(0x00).chr(0x01).chr(0x08).chr(0x01).chr(0xFF), $_IPS['VALUE']);
SetValue(14844 /*[Keller\Technikraum\EHz\Zählerstand 1]*/, 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(10516 /*[Keller\Technikraum\EHz\Wirkleistung Roh]*/, hexdec(Str2Hex(substr($wirkleistung[1], 7, 4))));
}
else
{
LogMessage();
}
// Bezug Tarif 1 (Wirk-Energie Tarif 1 Bezug) Obiskennung:1-0.1.8.1*255 Hex:01 00 02 08 00 FF
if(strpos($_IPS['VALUE'], chr(0x01).chr(0x00).chr(0x02).chr(0x08).chr(0x00).chr(0xFF)) !== false)
{
$bezugTarif1 = explode(chr(0x01).chr(0x00).chr(0x02).chr(0x08).chr(0x00).chr(0xFF), $_IPS['VALUE']);
SetValue(51318 /*[Keller\Technikraum\EHz\Zählerstand 2]*/, hexdec(Str2Hex(substr($bezugTarif1[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);
}
?>
Danke
Oliver
RWN
22. November 2012 um 18:42
36
Hier mal angepasst. Lieferung musst Du noch dazu machen. Ist dann auch 11,8
Testen und Vollzug melden.
<?
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], 11, 8)))/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, 8)))/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, 8)))/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);
}
?>
olima
22. November 2012 um 19:21
37
VOLLZUG
Es klappt
Vielen vielen Dank für deine Geduld und Zeit
oliver
olima
11. Dezember 2012 um 13:54
38
Hallo Rainer, ich nochmal
gibt es eigentlich eine Unterscheidung zwischen Lieferung oder Bezug bei der Wirkleistung ?? Wenn eingespeist wird, müsste doch eigentlich ein(-) oder so vorangestellt sein.??
Danke nochmal
Oliver
Jaaaaaa … Es funktioniert.
Ich gebe zu dass ich eher „ich habe es verstanden“ schreiben müsste. Danke für die vorangegangene Arbeit.
Heuser
20. März 2013 um 15:04
40
Hallo zusammen,
ich habe mal das letzte Auswertescript in meiner IPS eingebunden. Ich bekommen vom Cutter auch ordentlich Daten geliefert aber ich bekomme keine Werte zu den Variablen.
Mein Zähler ist ein Zweirichtungszähler von EMH (eHZ-HW8E2A5L0EQ2P)
Ich hab mal mein Dump angehängt. Was könnte falsch sein?
Viele Grüße
Heuser
dump.txt (8.06 KB)