neues System für Strom- Wasser und Gaszähler

Man bekommt das Ding sehr wohl wieder ab, es ist nur mit doppelseitigem Klebeband befestigt. Knifflig ist eigentlich nur, das Gerät wirklich korrekt zu positionieren bevor es fest klebt.

Eventuell ist der Kasten in dem dein Zähler hängt noch verplombt. Der Kasten gehört aber i.d.R. dem Hauseigentümer, nur der Zähler gehört dem Netzbetreiber. Die Plombe vom Kasten (nicht vom Zähler selbst!) darf zumindest hier in HH jeder Installateur entfernen und neu setzen.

Ich habe meinen jetzt auch seit einem Monat und komme nicht wirklich voran. Die indirekte Lösung mit dem RasPI gefällt mir nicht wirklich. Ich würde es gerne direkt mit IPS auswerten und habe mir einen USB MBus Funkstick besorgt. Ich scheitere jedoch schon an der Anbindung des Sticks und der Cam.

Hat das einer von euch schon so am laufen?

Gruß

Zapp

Ich antworte mir mal selbst. Mit der richtigen Einstellung für den Serial Port funktioniert es einwandfrei. Die Daten kommen jetzt direkt von der Cam über das USB w-MBUs Stick im IPS-Rechner an. Keine Anbindung nötig.

Gruß

Zapp

Hallo zapp,

damit ich es richtig verstehe: Du hast über wireless M-Bus die Kamera angebunden und hast die Daten vom USB-Stick direkt in IPS, richtig? Wie verarbeitest Du die Daten weiter? Mit einer M-Bus-Instanz? Hättest Du bitte ein Beispielskript, mit dem Du die Daten ausliest?

Wird für die Konfiguration der Cam noch ein andere Interface benötigt (z. B. USB)?

Danke für Deine Hilfe und Grüße
Weloby

Hallo,

Für den Empfang der Daten der EnergyCam in IPS brauchst Du einen wM-Bus USB Adapter. Mit dem mitgeliefertem USB Adapter geht es nicht. Der wM-Bus Stick wird dann über Serial Port und Register Variable in IPS eingebunden. Cam und USB Adapter habe ich auf T2 gesetzt. Dann kannst Du aus der Register Variable den Stand des Zählers raus lesen.


$recv = bin2hex($_IPS['VALUE']);

// Länge des Payloads und Payload 
$length   = hexdec(substr($recv,6,2));
$payload = substr($recv, 8,(2*$length));

$readingHex = substr($payload, (2*$length)-2, 2).substr($payload, (2*$length)-4, 2).substr($payload, (2*$length)-6, 2).substr($payload, (2*$length)-8, 2);
$readingDec = hexdec($readingHex)*0.1;


Die Cam musst Du über den Adapter von FastForward konfigurieren.

Gruss,
Zapp

Hallo Zapp,

vielen Dank. Dann werde ich mich mal mit FastForward in Kontakt setzen.

Grüße
Weloby

Da ich derzeit auch bei FastForward angefragt habe, folgende Frage.

D.h. man kauft sich z.B. das "Wireless Stromauge " + den USB Stick zur Einrichtung.

Zur Anbindung an IPS benötigt man dann einen MBUS Wireless USB Stick?

Wo gibts sowas / Name ?

Ich finde immer nur MBUS Seriell Produkte… (und das zu recht hohen Preisen)

Für einen spezifischen Stick kann ich hier keine Werbung machen. Mit einer online Suche nach genau diesen Begriffen ist das jedoch ganz leicht zu finden. Sonst kann ich gerne per PM weiterhelfen.

Gruß

Zapp

Hallo!

Ich hab das jetzt alles so gemacht, aber irgendwie steht in meiner Register variable nicht drinnen.

Leider bin ich auf dem Gebiet auch nicht wirklich fit, kannst du mir bitte sagen bzw. anhand deiner Einbindung zeigen wie du was eingestellt hast?
Ich wäre dir sehr dankbar.

Gruß
Gerald

Hallo!

Irgendwie stehe ich am Schlauch!

wie sehe ich dann die Werte die ausgelesen werden?

Vielen Dank
Gerald

Zur Erklärung, ich hab die Register Variable angelegt, als Ziel hab ich dann das Ausleseskript angegeben.
Das Ausleseskript ist das von ZAPP.

Im Debug von der Register Variable bekomme ich auch Werte.

Ich bin für jede Hilfe dankbar!!

Gruß Gerald

Hallo,

Nach gut einem Tag und dank der Beiträge von zapp läuft sie nun. Allerdings gab es doch so einige Fallstricke.

  • Cam mit USB adapter und ECWin Software wie beschrieben installiert und serielles Protokoll aus wmbus, nicht MODbus konfiguriert. Modus T2
  • als USB wmbus Dongle verwende ich den, der auch in der Energy CAM Anleitung erwähnt ist. MitECWin auf Modus T2 gestellt. Hier habe ich aber das Gefühl, dass der sich Dongle, wenn man ihn abzieht und wieder ansteckt, auf Modus S2 zurückstellt. Zumindest hatte ich einmal das Problem und bekam keine Daten
  • mit ECCollectorwin erste Übertragungstests gemacht. Ging mäßig bis garnicht, solange die CAM nicht installiert war. Selbst nach der Installation habe ich mit dieser Software nur einmal Daten von der CAM bekommen.
  • IP Symcon nach der Anleitung von zapp konfiguriert (Registervariable ünd Script als Target). Nun kamen zwar wie von mir gewünscht, alle 5 Minuten Daten, aber müllig (wie bei Gerald im DEBUG Bild). Ursache: Ich hatte den seriellen Port in IP Symcon auf 115200. Nach Umstellen 57600,8,N,1 kamen nun sinnvolle Daten, das Script von zapp schrieb endlich etwas in die Variablen.
  • nächstes Problem: die Daten, die das Script extrahierte, führten nicht zu sinnvollen Zählerwerten. Nach intensiver mehrstündiger Recherche und Studie des Protokollformats stellte ich fest, dass meine CAM bzw. der Dongle, die Zählerdaten an anderer Position liefert (wmbus OMS Spec. siehe auch Datei EnergyCam-white-paper-wMBus.pdf von Fast Forward (Warum steht das in einem White Paper:mad:?).
  • Script von zapp angepasst und nun läufts:D
  • noch bestehendes Problem: die Strom Cam liest die Nachkommastelle nicht, obwohl konfiguriert

Hier mein Script zur Auswertung (auf Basis von zapps Script, nochmals vielen Dank, hat mir, auch wenns nicht ganz gepasst hat, viel Zeit erspart) mit Vorbereitung für Gas und Wasser(ist aber noch nicht getestet):

<?

// Empfangsdaten holen
$recv = bin2hex($_IPS['VALUE']);

IPS_LogMessage($IPS_SENDER,"EnergyCAM RX!");

// Länge des Payloads und Payload
$length   = hexdec(substr($recv,6,2));
$payload = substr($recv, 8,(2*$length));
IPS_LogMessage($IPS_SENDER,$length);
IPS_LogMessage($IPS_SENDER,$payload); // wmBus OMS Nachricht

// HCI Frame RSSI ermitteln
// TODO: die Umrechnung ist eine Vermutung!
$RSSIreadingHex = substr($recv, 66, 2);
$RSSIreadingDec = -110.0 + (hexdec($RSSIreadingHex)*2*0.1);

// HCI Frame Timestamp ermitteln
// TODO: Umrechnung nicht klar
$TSreadingHex = substr($recv, 64, 2).substr($recv, 62, 2).substr($recv, 60, 2).substr($recv, 58, 2);
$TSreadingDec = hexdec($TSreadingHex);

// CAMID ermitteln
$CAMIDreadingHex = substr($payload, (2*$length)-38, 2).substr($payload, (2*$length)-40, 2).substr($payload, (2*$length)-42, 2).substr($payload, (2*$length)-44, 2);
IPS_LogMessage($IPS_SENDER,$CAMIDreadingHex);

// Counter Value ermitteln
$CValreadingHex = substr($payload, (2*$length)-12, 2).substr($payload, (2*$length)-14, 2).substr($payload, (2*$length)-16, 2).substr($payload, (2*$length)-18, 2);

// Meter Type ermitteln
// (Meter type: Electricity =0x02 , Gas = 0x03, Water=0x07)
$MeterTypereadingHex = substr($payload, (2*$length)-34, 2);
$MeterTypereadingDec = hexdec($MeterTypereadingHex);

	switch ($MeterTypereadingDec)
	{
	//Strom
	case 2:
	{
		IPS_LogMessage($IPS_SENDER,"EC Strom");

		// RSSI einstellen
		SetValueFloat(????? /*[EnergyCams\Strom\RSSI]*/,floatval($RSSIreadingDec));
		// TimeStamp einstellen
		SetValueInteger(????? /*[EnergyCams\Strom\TimeStamp (Dongle)]*/,intval($TSreadingDec));

		// CAMId
		SetValueString(????? /*[EnergyCams\Strom\ECId]*/,$CAMIDreadingHex );

		// Counter Value ermitteln
		// bei Strom Faktor berücksichtigen
		$CValreadingDec = hexdec($CValreadingHex)*0.1;
		SetValueFloat(????? /*[EnergyCams\Strom\KWh]*/,floatval($CValreadingDec));
		break;
	}
	//Gas
	case 3:
	{
		IPS_LogMessage($IPS_SENDER,"EC Gas");

		// RSSI einstellen
		SetValueFloat(????? /*[EnergyCams\Gas\RSSI]*/,floatval($RSSIreadingDec));
		// TimeStamp einstellen
		SetValueInteger(????? /*[EnergyCams\Gas\TimeStamp (Dongle)]*/,intval($TSreadingDec));

		// CAMID ermitteln
		SetValueString(????? /*[EnergyCams\Gas\ECId]*/,$CAMIDreadingHex );

		// Counter Value ermitteln
		// TODO: ggf. Wertanpassung erforderlich
		$CValreadingDec = hexdec($CValreadingHex);
		SetValueFloat(????? /*[EnergyCams\Gas\Kubikmeter]*/,floatval($CValreadingDec));
		break;
	}
	//Wasser
	case 7:
	{
		IPS_LogMessage($IPS_SENDER,"EC Wasser");

		// RSSI einstellen
		SetValueFloat(????? /*[EnergyCams\Wasser\RSSI]*/,floatval($RSSIreadingDec));
		// TimeStamp einstellen
		SetValueInteger(????? /*[EnergyCams\Wasser\TimeStamp (Dongle)]*/,intval($TSreadingDec));

		// CAMID ermitteln
		SetValueString(????? /*[EnergyCams\Wasser\ECId]*/,$CAMIDreadingHex );

		// Counter Value ermitteln
		// TODO: ggf. Wertanpassung erforderlich
		$CValreadingDec = hexdec($CValreadingHex);
		SetValueFloat(????? /*[EnergyCams\Wasser\Kubikmeter]*/,floatval($CValreadingDec));
		break;
	}
	default:break;
	}

	IPS_LogMessage($IPS_SENDER,$CValreadingDec);

?>

Kalle Wirsch

Hallo,

Danke für das erweiterte Skript. Werde ich in den nächsten Tagen testen. Das Protokoll wurde im letzten Update angepasst denke ich. Ich habe es noch nicht drauf. Da kann es sein, dass mein Skript die Werte nicht mehr richtig liest.

Die detaillierte Konfiguration hatte ich nicht angegeben (Baud rate, wmbus T2,…), weil alles in der Doc des Dongles steht :wink:.

Ich kann auch bestätigen, dass der Dongle bei jedem neustart des PCs den Mode wieder auf S2 stellt. Ich habe dann nach jedem Neustart ein lich in meinem Lig, bis ich drauf komme, dass er nichts mehr empfängt. Nicht optimal.

Gruß
Zapp

Sent from my Lumia using Tapatalk

Hallo Zapp!

Auch wenn ich mich jetzt als zu doof oute, aber ich hatte beim USB-Stick kein doc dabei und online finde ich es nicht.

Könntest du mir das Doc bitte zukommen lassen?
Danke

Gesendet von meinem iPhone mit Tapatalk

@ Kalle

Auch bei mir werden die Kommastellen nicht angezeigt

Gruß
Gerald

Gesendet von meinem iPhone mit Tapatalk

Hallo Gerald,

Das heißt, bei Dir läufts jetzt?
Die gesamte Doku kannst Du Dir mit dem FTP Account, der bei der CAM dabei ist,herunterladen.

@zapp: Stimmt, es steht iregendow in der Doku, aber ich hatte es irgendwie überlesen.
Zum Protokoll: Das Whitepaper ist auch ziemlich neu, man näher sich da wohl KNX RF an, wenn ich das richtig verstanden habe.

Zum T2 Problem habe ich die Idee, dem Dongle die Konfiguration per IP Sysmcon zu schicken, aber ehrlichgesagt bin ich aktuell froh, das der Empfang jetzt funktioniert. Mal sehen, wann ich wieder lange Weile habe.

Kalle Wirsch

Hallo Kalle!

ja, hab dein Script jetzt am laufen und es kommen schon mal die Werte an.
Ist schon mal ein Schritt in die richtig Richtung :slight_smile:

Vielen Dank
Gruß
Gerald

So, auch bei Gas und Wasser funktioniert es jetzt bei mir. Auch hier muss im Skript der Faktor 0,1 wie beim Strom angewendet werden.
Die Installation mit Hilfe des Zusatzteils für Gaszähler hat bei meinem Elster Zähler gut funktioniert, aber bei meiner Wasser uhr kann ich das Teil nicht ankleben. Da werde ich noch mal nachfragen.

Kalle Wirsch

Hallo,
ich verfolge diesen Fred jetzt schon eine Weile und habe inzwischen auch mit Fastforward Kontakt aufgenommen und auch die Doku bissel durchgesehen, da ich eine Aus-/Ablesemöglichkeit für meinen Wasserzähler suche. Drahtlos geht ja nur der wM-Bus - sehe ich als echten Vorteil an, da man ja dann eigentlich direkt in IPS anbinden kann(mit dem entsprechendem Dongle natürlich!). Hier ist genau der Punkt der bissel verwundert - warum hier versucht wird zu scripten, um an die Daten zu kommen, M-Bus wird doch direkt unterstützt, oder etwa nicht? :eek:
Da ja alles über emulierte COM-Ports läuft dürft doch alles glatt gehen…??? Hm…
kabo63.

Nachdem ich mit Fast Forward telefoniert habe, weiß ich nun, dass es auch für Wasseruhren einen Adapter gibt, mal sehen, ob der passt.

@kabo63:
Ein interessanter Hinweis, ehrlich gesagt habe ich diese Instanz übersehen, andererseits habe ich in der Doku mal eben keine so rechte Anleitung zum Umgang damit gefunden.
IP Symcon legt beim Einrichten der Instanz zunächst drei Variablen an, damit bin ich dann aber immer noch nicht an den Daten. Wie macht man das da?

Kalle Wirsch

…naja Du klicks jetzt doppelt auf die neue Instanz und trägst im Feld „Adresse“ dieselbe des Gerätes(Stromauge) ein, dann noch das Ganze übernehmen und schon sollten unter der Instanz die zusätzlichen Variablen erscheinen, die das Stromauge so ausgibt…Falls Fastforward Dir nicht die voreingestellte Adresse mitteilen kann, muss man diese ggfs. selbst rausfinden, das geht z.B. über die Testversion „MBSheet“ die auf der Relay-HP zu finden ist…
Gruß, kabo63.