Elektronische Haushalts Zähler [eHZ] auslesen

Hallo Proxima,

ich bin aufgrund zeitlicher Probleme bisher noch nicht fertig mit diesem Modul.

Ich denke aber in den nächsten Tagen werde ich dies fertigstellen.

Dann kann ich dir auch gerne das Script senden.

Grüße

Oli

Hallo Oli,

vielen Dank bereits im Voraus. Ich hoffe Du findest Zeit das Skript fertig zu stellen. Probiere schon seit Tagen den sch… Zähler auszulesen, aber mehr als damals bei Dir (Zählerkennung) kam bei mir auch nicht raus.

Freue mich schon auf’s Skript.

Gruß Proxima

Hallo,

mein OKK hat einen USB-Anschluss. Wie bringe ich diesen jetzt kostengünstig ins LAN ???

Gruß Proxima

Hallo Proxima,

ich verwende den Sharkoon USB Lanport 400.

Grüße

Oli

Hi,

@ Oli:
Macht der Sharkoon irgendwelche Probleme, oder ist er absolut zuverlässig??? Wie geht’s mit dem Skript für’s Auslesen des L+G - Zählers voran??? Bin schon ganz heiss drauf!!! :D:D:D

Gruß Proxima

Bei mir läuft der Sharkoon Lanport 400 seit 1 1/2 Jahren ohne Probleme…

Also ich habe ja mehrere und das Einrichten unter W2008 (wird offiziell nicht unterstützt) ist etwas hakelig, die Teile funktionieren anschließend aber absolut zuverlässig …

Hi,

was meinst Du damit genau??? Was ist zu beachten??? Mein IPS läuft auf WindowsHomeServer 2011 welcher ja auf dem Windows Server 2008 R2 aufbaut.

Gruß Proxima

Hi,

mit hakelig meine ich halt, dass die Dienstinstallation manuell (srvany oder ähnlich) erfolgen muss, weiterhin sollten die USB-Gerate zuerst mit der SHARKOON-Software UNTER DEM GLEICHEN KONTO (welches später auch der Dienst nutzt) verbunden werden. Ich musste mein Windows mehrfach neu starten bis es lief.
Weiterhin habe ich den IP-SYMCON Dienststart vom Start des SHARKOON-Dienstes abhängig gemacht (DependOnService). Wie das unter W2012 funkt weiß ich nicht …

Hallo zusammen,

hier kommt nun mal mein Script zum auslesen von eHZ Zähler.
Hab dieses Script mit 3 Zähler gleichzeitig laufen.

Geht auch mit EnbW/ODR Zähler.

Es wird nach wie vor ein ein COM-Port -> Cutter und eine RegisterVarible benötigt.

RegisterVarible

COM-Port (der COM-Port muss auf 300,7,1,e eingestellt werden.)

Cuttereinstellung: Wobei das Linke Trennzeichen durch deinen Zählerdaten ersetz werden sollte.

Des weiteren wird eine Variable benötigt in der ihr eure Zählernummer eintragt.

Diese wird zum abgleich benötigt, damit es keine Probleme bei mehreren Zählern gibt.

Alle weiteren Var´s legt das Script selbst an.

Das Script muss nur noch in einem Zyklus gestartet werden, damit der Zähler eine anfrage zum senden der Werte bekommt.

<?
//Hier die Instanz wo das alles rein soll. z.B. eure RegisterVariable
$ParentID = 55371 /*[Strom\Zähler\EnbW Zähler]*/ ;

// Archiv Handler damit das Logging eingeschaltet werden kann.
$arhid = 32568 /*[Archive Handler]*/ ;

// Hier die Instanz in der die Zählernummer angegeben ist. (muss manuel gemacht werden.
$Zaehler_nr = GetValue(45873 /*[Strom\Zähler\EnbW Zähler\Zählernummer]*/);

//Hier die COM-Port Instanz
$com_Port = 39264 /*[Bezugzähler]*/ ;

if ($_IPS['SENDER'] == "RegisterVariable")
{
    $content = $IPS_VALUE;

  $zaehler_nr_ist = anfragezahlernr('Zählernummer','0.0(',')',$content);
 // Hier sind die werte die abgefragt werden sollen.
    if ($Zaehler_nr == $zaehler_nr_ist){
		anfrage('Zählerstand EnbW Einkauf','1.8.0(','*kWh)',$content,3,'',$arhid,$ParentID);
		anfrage('Zählerstand PV Verkauf','2.8.0(','*kWh)',$content,3,'',$arhid,$ParentID);
		anfrage('Spannung L1','32.7(','*V)',$content,2,'~Volt.230',$arhid,$ParentID);
		anfrage('Spannung L2','52.7(','*V)',$content,2,'~Volt.230',$arhid,$ParentID);
		anfrage('Spannung L3','72.7(','*V)',$content,2,'~Volt.230',$arhid,$ParentID);
		anfrage('Strom L1','31.7(','*A)',$content,2,'~Ampere',$arhid,$ParentID);
		anfrage('Strom L2','51.7(','*A)',$content,2,'~Ampere',$arhid,$ParentID);
		anfrage('Strom L3','71.7(','*A)',$content,2,'~Ampere',$arhid,$ParentID);
		//anfrage('Verbrauch aktuell L1','1.6.1(','*kW)',$content,2,'~Power',$arhid,$ParentID);
		//anfrage('Verbrauch aktuell L2','1.6.2(','*kW)',$content,2,'~Power',$arhid,$ParentID);
		//anfrage('Verbrauch aktuell L3','1.6.3(','*kW)',$content,2,'~Power',$arhid,$ParentID);
		anfrage('Verbrauch aktuell','16.7(','*kW)',$content,2,'~Power',$arhid,$ParentID);
		//anfrage('cos phi L1','33.7(','*cos)',$content,3,'',$arhid,$ParentID);
		//anfrage('cos phi L2','53.7(','*cos)',$content,3,'',$arhid,$ParentID);
		//anfrage('cos phi L3','73.7(','*cos)',$content,3,'',$arhid,$ParentID);
	};
}else{
	COMPort_SetDTR($com_Port , true);
	COMPort_SendText($com_Port ,"\x2F\x3F\x21\x0D\x0A");
	ips_sleep(1550);
	COMPort_SendText($com_Port ,"\x06\x30\x30\x30\x0D\x0A");
};

function anfragezahlernr($varname,$anfang,$ende,$content){
	$zaehler_nr_ist = Auswerten($content,$anfang,$ende);
	return $zaehler_nr_ist;
};

function anfrage($varname, $anfang, $ende, $content, $vartyp, $VariProfile, $arhid, $ParentID){
	$wert = Auswerten($content, $anfang, $ende);
	vars($arhid, $ParentID, $varname, $wert, $vartyp, $VariProfile);
};

function Auswerten($content,$anfang,$ende){
 $result_1 = explode($anfang,$content);
 $result_2 = explode($ende,$result_1[1]);
 $wert = str_replace(".", ",", $result_2[0]);
 return $wert;
};


function vars($arhid,$ParentID, $varname, $wert, $vartyp, $VariProfile)
  {
$VariID = IPS_GetVariableIDByName($varname, $ParentID);
    if ($VariID == false)
    {
        $VariID = IPS_CreateVariable ($vartyp);
        IPS_SetVariableCustomProfile($VariID, $VariProfile);
        IPS_SetName($VariID,$varname);
          AC_SetLoggingStatus($arhid, $VariID, true);
        IPS_SetParent($VariID,$ParentID);
    }
    SetValue($VariID, $wert);
  };


?>

Solltet ihr Fragen haben, einfach melden.

Grüße

Oli

Hi,

@Oli:

Hättest Du vielleicht noch genaue Infos wie der COM-Port, der Cutter und die Registervariable anzuordnen sind. Welche übergeordneten Instanzen wo einzutragen sind ??? Würde mir sehr helfen, sonst muß ich sämtliche Varianten durchprobieren. Vielleicht kannst Du Screenshots dazu machen, auch von Deinem Objektbaum ???

Auf welches Intervall hast Du das zyklische Ereignis für das Script eingestellt ???

Gruß Proxima

Hi,

der COM-Port muss auf 300,7,1,e eingestellt werden.

COM-Port -> Cutter -> RegisterVariable

Cuttereinstellung. Wobei das Linke Trennzeichen durch deinen Zählerdaten ersetz werden sollte.
Laut deinem Screenshot: /LGZ4ZMF100AC.M25

Der Intervall sollte nicht kleiner 10sec sein.

Bei mir läuft er im 1min takt…

Morgen kann ich noch paar Screenshots posten.

Grüße

Oli

Hallo,

@proxima: siehe http://www.ip-symcon.de/forum/threads/11505-Elektronische-Haushalts-Zähler-eHZ-auslesen?p=181190#post181190

Habe diesen Beitrag mit Daten und Bilder erweitert :wink:

Grüße

Oli

Hallo zusammen,

habe noch 3x IR / RS-232 Schnittstellenadapter von Voltcraft übrig.

Hat jemand Interesse an dennen?

Einfach kurz eine PM senden.

Grüße

Oli

Hallo zusammen,

mir wurden vom Energieversorger zwei Zähler montiert.
Es handelt sich um EasyMeter Q3D welche nach DIN EN 62056-21 auszulesen sind.
Das Problem ist, dass die Zähler mir nur folgendes senden:

zähler.png

Meine Frage jetzt ob es möglich ist, dass der Energieversorger die Firmware des Zählers
verändert und nur den Typ senden läst?
Leider komm ich nicht weiter um dem Zähler mehr als seinen Namen zu entlocken.
Vielen Dank für Eure Hilfe.

Gruss
Michael

Hi,

bekomme den Sharkoon Server einfach nicht als Dienst gestartet. Ich habe ihn mittels "sc create … " angelegt, was auch funktionierte. Wenn ich den Dienst dann unter „Verwaltung --> Dienste“ starten will, erhalte ich eine Fehlermeldung, das der Dienst beim Start nicht rechtzeitig antwortet. Was mache ich falsch ??? Kann jemand vielleicht seine Einstellungen des Dienstes posten???

Ausserdem bekomme ich immer wieder die angehängten Fehler. Im Textdokument (unten im Bild) sieht man den Inhalt des Cutters. Was ist falsch ???

Gruß Proxima

Hi,

welches Script benutzt du?

Das von mir?

Hast du was geändert?

Dein String sieht soweit ok aus.

Grüße

Oli

Hi oheidinger,

ja, nutze Dein Script und habe nur die ID’s oben im Script geändert.

Ich habe den Fehler mittlerweile eingegrenzt: Ich hatte ein Abfrageintervall von 10 Sek. eingestellt und es kamen nicht immer die 300 Zeichen des Strings an. Mal 300, mal weniger. Als ich das Intervall auf 1 Min. hoch gestellt hatte, kamen am COM-Port immer die 300 Zeichen an und der Fehler blieb bis jetzt aus.

Falls er wieder auftaucht werde ich mich melden.

Gruß Proxima

P.S: Nochmals vielen Dank für Dein Script. Ich hätte das nie so hinbekommen!!!

Weil noch per Mail hierzu eine Frage kam, nochmals mit Bildchen: (Anhang)

Sharkoon Software ist die vom GIGA (auch für ANDERE(100MBIT)): LAN_Utility_GIGA_14532

Welche Software für Dienst benutzt wird ist egal, in meinem Beispiel Basta Computing:

Erläuterungen zum Bild:

ImagePath ist:
C:\Program Files (x86)\Basta Computing\AppToService\AppToService.exe /sys „C:\Program Files (x86)\Sharkoon\USB Server\Sharkoon USB Server.exe“

object name: muss das konto stehen z.B.: domain\kontoname

UNTER DIESER ANMELDUNG MUSS SHARKOON INSTALLIERT WORDEN SEIN und auch BEI JEDEM GERÄT ein HAKEN bei
AUTOMATISCH VERBINDEN gesetzt werden.!!!

Hi,

das Basta Computing Tool ist kostenpflichtig. Kennst Du zufällig auch kostenlose Tools die das gleiche können, oder funktioniert das Ganze auch mit Bordmitteln???

Gruß Proxima