Skip to end of metadata
Go to start of metadata



Autor
Logo

Status

STABLE

Version1.0
Min. LB Version

LB 0.2.3

Downloadhttps://github.com/mschlenstedt/LoxBerry-Plugin-Smartmeter/archive/Smartmeter-V1.0.zip
ZweckDieses Plugin ermöglicht es, mit Hilfe eines USB-IR-Lesekopfs (z. B. von Volkszähler.org) viele Stromzähler über die IR-Schnittstelle auszulesen. Es werden Stromzähler unterstützt, die das SML-und das D0-Protokoll sprechen.
LanguagesEN, DE
 Version History...

Inhalt




Achtung

Aktuell unterstützt das Plugin nur Zähler, die Ihre Daten über die serielle Schnittstelle unverschlüsselt ausgeben. Hast Du einen Schlüssel zur Entschlüsselung der Daten von Deinem Netzbetreiber bekommen (meist heisst dieser AES-Schlüssel oder ähnlich), kannst Du das Plugin leider aktuell nicht verwenden. Leider haben wir keine Möglichkeit die Entschlüsselung zu testen, da wir einen derartigen Zähler nicht besitzen.


Download

Installation


Eine sehr gute und leicht verständliche Anleitung zur Einrichtung des Plugins hat Jörg in seinem Blog veröffentlicht: http://www.meintechblog.de/2017/08/loxberry-smart-meter-mit-ir-lesekopf-in-loxone-integrieren-und-stromverbrauch-visualisieren/


Nach der Installation sucht das Plugin automatisch nach neu angeschlossenen Leseköpfen. Wenn Dein Lesekopf nicht erkannt wurde, trenne bitte die USB-Verbindung und schließe den Lesekopf erneut an. Anschließend aktiviere den Button "Nach I/R Leseköpfen suchen". Das Plugin scannt dann erneut nach neuen Leseköpfen.

Für die ersten Tests solltest Du zunächst das automatische Abfragen Deiner Zähler deaktiviert lassen. Konfiguriere Deine Zähler entsprechend (siehe "Konfigurationsoptionen" weiter unten) und speichere die Konfiguration ab. Dann frage für den ersten Test den Zähler über den entsprechenden Button manuell ab. Wenn das funktioniert kannst Du das automatische Abfragen der Zähler aktivieren.

Konfigurationsoptionen

Zähler automatisch abfragen

Mit dieser Option wird der Zähler regelmäßig vom Plugin abgefragt und die Daten an den Miniserver gesendet. Es kann ein Abfragezyklus zwischen 1 Minute und 60 Minuten festgelegt werden. Du solltest beachten, dass je nach maximal möglicher Baudrate Deines Zählers das Abfragen aller Zählerdaten eine gewissen Zeit in Anspruch nimmt. Ich empfehle einen Abfragezyklus von minimal 5 Minuten, wenn Du für Deine Anwendung keinen kürzeren Abfragezyklus benötigst. Wenn Du eine große Anzahl an Zählern über das Plugin abfragst (>5), solltest Du den Abfragezyklus noch etwas größer wählen (Faustformel: mindestens 1 Minute pro Zähler).

Daten per UDP senden

Wenn Du die Zählerdaten in Deiner Programmierung per virtuellem UDP-Eingang einlesen möchtest, musst Du diese Option aktivieren und dabei noch den UDP-Port angeben, auf dem der Miniserver die Daten erwartet. Nach jedem Abruf der Zählerdaten werden die Daten dann automatisch an den Miniserver gesendet. Die Daten werden immer an alle Miniserver gesendet, die im LoxBerry eingerichtet sind!

Die Datenstruktur, die per UDP gesendet wird, sieht wie folgt aus (die einzelnen Werte werden per Semicolon getrennt). Je nachdem welche Daten Dein Zähler bereitstellt, ist es normal, dass einige Werte nicht angegeben sind. Vorangestellt ist immer die Seriennummer des I/R-Lesekopfes (hier: 0092D106). Die Nummer wird in Deiner Installation natürlich abweichen! 


Datenstruktur
0092D106:Last_Update:2017-03-14 21:20:26
0092D106:Last_UpdateLoxEpoche:258758426
0092D106:Consumption_Total_OBIS_1.8.0:0008230.850
0092D106:Consumption_Tarif1_OBIS_1.8.1:0005413.520
0092D106:Consumption_Tarif2_OBIS_1.8.2:0002817.330
0092D106:Consumption_Tarif3_OBIS_1.8.3:0000000.000
0092D106:Consumption_Tarif4_OBIS_1.8.4:0000000.000
0092D106:Consumption_Tarif5_OBIS_1.8.5:
0092D106:Consumption_Tarif6_OBIS_1.8.6:
0092D106:Consumption_Tarif7_OBIS_1.8.7:
0092D106:Consumption_Tarif8_OBIS_1.8.8:
0092D106:Consumption_Tarif9_OBIS_1.8.9:
0092D106:Consumption_CalculatedPower_OBIS_1.99.0:1.3597
0092D106:Consumption_Power_OBIS_1.7.0:
0092D106:Delivery_Total_OBIS_2.8.0:
0092D106:Delivery_Tarif1_OBIS_2.8.1:
0092D106:Delivery_Tarif2_OBIS_2.8.2:
0092D106:Delivery_Tarif3_OBIS_2.8.3:
0092D106:Delivery_Tarif4_OBIS_2.8.4:
0092D106:Delivery_Tarif5_OBIS_2.8.5:
0092D106:Delivery_Tarif6_OBIS_2.8.6:
0092D106:Delivery_Tarif7_OBIS_2.8.7:
0092D106:Delivery_Tarif8_OBIS_2.8.8:
0092D106:Delivery_Tarif9_OBIS_2.8.9:
0092D106:Delivery_CalculatedPower_OBIS_2.99.0:0.0000
0092D106:Delivery_Power_OBIS_2.7.0:
0092D106:Total_Power_OBIS_15.7.0:
0092D106:Total_Power_OBIS_16.7.0:

  

Daten per HTTP abrufen

Diese Option ist automatisch aktiviert. Die URL für den virtuellen HTTP Eingang lautet: http://IP_LOXBERRY/plugins/smartmeter/index.php

I/R-Lesekopf: Beschreibung

Hier kann eine beliebige Beschreibung des Zählers (ohne Sonderzeichen und Umlaute) hinterlegt werden. Die Beschreibung dient nur zur einfacheren Erkennung, um welchen Lesekopf es sich handelt, wenn mehrere Leseköpfe an den LoxBerry angeschlossen sind.

I/R-Lesekopf: Zähler

Viele gängige Zähler sind mit Ihren Parametersätzen bereits ins Plugin integriert. Wenn Dein Zähler bereits hinterlegt ist wähle hier den Typ aus. Du brauchst den Zähler dann nicht manuell einzurichten. Häufig funktionieren auch andere Typen des gleichen Herstellers. Funktioniert auch das nicht sollte man noch "Generic D0-Protocol" oder "Generic SML-Protocol" versuchen. Wenn Dein Zähler nicht out-of-the-box unterstützt wird, wähle hier "Manuelle Konfiguration".

I/R-Lesekopf: Manuelle Einstellungen

Wenn die voreingerichteten Zähler nicht funktionieren kannst Du Deinen Zähler von Hand einrichten. Eine gute Anlaufstelle für die notwendigen Schnittstellenparameter ist die Webseite von Volkszähler.org. Du benötigst verschiedene Optionen für die serielle I/R-Schnittstelle sowie das Protokol, welches Dein Zähler spricht (D0 oder SML).

Zu Beginn solltest Du die Baudrate jeweils auf 300 Baud einstellen, Das sprechen alle Zähler. Unterstützt Dein Zähler auch eine höhere Übertragungsrate, so muss meist die Initiale Baudrate auf 300 Baud gesetzt werden (für den Handshake) und nur die maximale Baudrate wird entsprechend erhöht. Falls Du Probleme mit dem Auslesen des Zählers hast kannst Du auch versuchen über den Parameter "Verzögerung" eine Verbesserung zu erreichen. Dieser Parameter stellt eine Wartezeit zwischen einzelnen Befehlen, die an den Zähler gesendet werden, ein.


Wenn Du funktionierende Parameter für Deinen Zähler gefunden hast wären wir Dir für eine Nachricht sehr dankbar! Wir nehmen Deinen Zähler dann in die Liste unterstützter Zähler mit auf.

Einrichtung in der Loxone Config Software

Daten per UDP empfangen

Die Einrichtung erfolgt wie bei anderen Daten auch, die per UDP an den Miniserver gesendet werden. Es werden sogenannteVirtuelle UDP-Eingangsbefehle verwendet. Für jeden Wert muss ein separater UDP-Eingangsbefehl angelegt werden. Als erstes legst Du unter Peripherie -> Virtuelle E/A (oder per Taste F4) einen virtuellen UDP-Eingang an und benennst diesen beliebig (z. B. "Stromzähler"). Den Port, auf den der Eingang hören soll, musst Du in den Eigenschaften festlegen (normalerweise 7000). Dieser muss natürlich mit dem Port übereinstimmen, den Du oben im Plugin angegeben hast. Anschließend legst Du unterhalb des virtuellen Eingangs einen "Virtuellen UDP Eingang Befehl" an und benennst diesen ebenfalls beliebig (z. B. "Zählerstand").


  


In den Eigenschaften dieses Befehls musst Du unter "Befehlserkennung" nun noch eingeben, wie die empfangenen Daten verarbeitet werden sollen. Das Plugin sendet für jeden Zähler die ausgelesenen Daten (siehe oben). Wenn Du auf "Zähler manuell auslesen" klickst, werden Dir die gesendeten Daten angezeigt. Alternativ kannst Du natürlich auch im UDP Monitor in LoxoneConfig nachschauen. Jeden Wert wird dabei die Seriennummer des I/R-Lesekopfes vorangestellt. Im Beispiel oben wird der aktuelle Zählerstand z. B. wie folgt an den Miniserver gesendet: 0092D106:Consumption_Total_OBIS_1.8.0:0008230.850. Die dazugehörige Befehlserkennung sieht dann wie folgt aus:

\i0092D106:Consumption_Total_OBIS_1.8.0:\i\v

Damit erkennt der Miniserver, dass es sich bei dem Wert um den aktuellen Zählerstand handelt und setzt diese als Wert (alles, was nach dem \i......\i Zeichen kommt: \v). Diesen Schritt muss man nun für jeden Wert, den das Plugin sendet und den man in der Programmierung verarbeiten will, wiederholen. Der Wert bleibt immer so lange aktuell bis der Miniserver einen neuen Wert per UDP übermittelt bekommt.

Eine Besonderheit gibt es bei Werten, die eine Datums-/Uhrzeitangabe enthalten, zum Beispiel die Zeit des letzten UPdates. Hier sendet das Plugin die Zeitangabe als Wert in Sekunden seit 01.01.2009 (Last_UpdateLoxEpoche). Diese Angabe erwartet der Miniserver in dieser Form. Im Virtuellen Eingang musst Du angeben, dass der empfangene Wert als Datum/Uhrzeit interpretiert werden soll: <v.u>. Wenn Du die Validierung verwenden möchtest, musst Du unbedingt darauf achten, den Parameter "Maximaler Wert" hoch genug einzustellen (Ideal: 1000000000 = 1+9 Nullen)! Ich empfehle für den Anfang die Validierung zu deaktivieren.

Per HTML bereitstellen

Anstelle von UDP kannst Du auch einen Virtuellen HTTP-Eingang verwenden. Der Vorteil ist, dass die Einrichtung im Gegensatz zu UDP häufig einfacher gelingt. Insbesondere wenn der LoxBerry nicht im eigenen Netzwerk betrieben wird solltest Du diese Methode verwenden, da man sich dann keine Gedanken über das Routing der UDP-Pakete machen muss. Der Nachteil ist, dass permanent vom Miniserver Anfragen an den LoxBerry gestellt werden, bei UDP hingegen werden nur direkt nachdem das Plugin neue Zählerdaten abgeholt hat diese an den Miniserver gesendet. Normalerweise sollten die Anfragen aber kein Problem für Dein Netzwerk und den LoxBerry darstellen.

Die Einrichtung erfolgt analog zur Einrichtung der Virtuellen UDP-Eingänge (siehe oben), als Adresse für den HTML-Eingang dient folgende Adresse, als Abfragezyklus bietet sich 60 Sekunden an:

http://IPADRESSE/plugins/smartmeter/index.php

Unterhalb des HTML-Eingangs wird analog zum UDP-Eingang ein „Virtueller HTML Eingang Befehl“ angelegt. Nach dem entsprechenden Zähler-Wert sucht man im Feld "Befehlserkennung" wieder mittels \i….\i (siehe Loxone-Doku zum HTML-Eingang).

Roadmap

  • Verschlüsselung. Wann? Sobald uns ein entsprechender Zähler für Tests zur Verfügung gestellt wird
  • Einfacher Lesekopf über die serielle Schnittstelle des RaspPi. Wann? Ist integriert, Tests stehen noch aus (siehe Forum-Thread)

Fragen stellen und Fehler melden

Fehler bitte auf GutHub melden: https://github.com/mschlenstedt/LoxBerry-Plugin-Smartmeter oder im Fourm-Thread zum Plugin melden: https://www.loxforum.com/forum/projektforen/loxberry/plugins/85702-neues-plugin-smartmeter-stromz%C3%A4hler-auslesen



10 Comments

  1. Funktioniert hervorragend! 

    Vielen Dank fuer das Plugin!

    Gruss,

    tholle

  2. Hi Michael,

    danke für das grandiose Plugin! Läuft 1a, auch mit meinem Landis & Gyre E350 (gewählt habe ich das Profil vom E320).
    Habe dazu auch ein kurzes Howto geschrieben, evtl. hilft das ja anderen Lesern weiter:

    http://www.meintechblog.de/2017/08/loxberry-smart-meter-mit-ir-lesekopf-in-loxone-integrieren-und-stromverbrauch-visualisieren/

    Grüße
    Jörg

    PS: Kann man die "Max. Baudrate" auch höher als "300 Baud" einstellen? Habe irgendwo gelesen, dass der E350 auch 4800 Baud schafft. Wenn ich den Wert hochstelle, kommen aber keine Daten mehr an...

  3.  

    Hallo Michael,

    auch von mir ein Dankeschön für Deine Arbeit!

    Ich habe ein Problem beim auslesen und zwar kommen nur Werte im .dump file im .data kommen nur die Register ohne Werte. Leider fand ich bisher keinen Grund dazu hast Du mir eine Idee an was das liegen kann, ich habe bereits mit verschiedenen Profilen versucht und auch die Werte Baudrate, Timeout, Delay verändert jedoch ohne Erfolg. Ich verwende ein IR-Lesekopf von Volszähler auf einem Landis&Gyr E350 EVU Zähler. Bisher hatte ich nur die werte in den Klammern im .dump file egal ob der E350 oder E320 gewählt ist.

    Grüsse Raffael

     

     

  4. Wird es das Plugin auch für Loxberry 1.0 geben?(Wann?!) Den im Moment macht der Umstieg für mich wenig Sinn... da ich auf das Plugin angewiesen bin...

  5. Hallo zusammen,

    danke für die tolle Entwicklung und gute Arbeit.

    Für alle die einen easymeter (Q3DA) haben - nutze ich mit folgenden settings:

    Config:manuel; Protocoll Gerneric D0-Protocol
    max. Data + init rate: 9600
    Databit: 7; Parity: even;  Stopbit: 1
    Handshake: None; Timeout 5sec; Verzögerung 1sec

    ACHTUNG -  leider läuft die Abfrage bei mir nur mit der älteren Version 0.5 - die akt. Version 0.6 geht leider nicht mehr!!

    Evtl. kann das jemand mal nachschauen, was verändert wurde. Es kommt im Log lediglich der Fehler "Write failed".

  6. Hi Michael,

    dein Plugin liefert mir jetzt bereits seit kanpp 9 Monaten verlässliche Werte meines Stromzählers. Bin wirklich begeistert, wie zuverlässig das Ganze läuft.

    Als nächtes möchte ich jetzt den Wärmezähler meiner Fernwärmestation integrieren. Dabei handelt es sich um einen Siemens UH50 / Landis+Gyr ULTRAHEAT T550, der glücklicherweise ebenfalls per IR-Kopf ausgelesen werden kann. Wie das im Detail funktioniert, hat Stefan Sedelmaier sogar in seinem Blog beschrieben: http://www.sedelmaier.at/node/112

    Wäre es möglich, dass du dieses Profil in dein Plugin mit aufnimmst? Und kann ich dann überhaupt zwei Zähler über dein Plugin gleichzeitig einbinden?

    Viele Grüße
    Jörg

  7. Hi Michael,

    auch von mir vielen Dank für das tolle Plugin! Ich habe einen Itron ACE3000 Type 260 (D0-Protocol), für den ich die Anpassungen im Forum gepostet habe. Die Anpassungen beinhalten evtl. auch den "Write failed." Fehler, der mit anderen Zählern mit D0-Protokoll mit dem Plugin v0.6. auftritt. 

    Ich habe 2 Stromzähler wg. Wärmepumpe und der 2. hat einen Hoch-/Nebentarif. Dafür habe ich mir 2 IR Leseköpfe von Weidmann Elektronik besorgt und ohne Probleme wurden beide vom Loxberry Plugin erkannt.

    Viele Grüße,

    Jan

  8. Hallo,

    oben steht, dass die Möglichkeit des Testens der Entschlüsselung gesucht wird. Ich habe einen Zähler dazu. Die offiziellen Infos zur Schnittstelle sind im Anhang.
    Spezifikation_Kundenschnittstelle_E450_korr_2.pdf
    Angeblich wird diese Art der Verschlüsselung in mehreren österreichischen Bundesländern eingesetzt und zukünftig zum Standard (in Ö?).
    Die Daten werden bei diesen Zählern auch nur noch unidirektional im 5 Sekunden-Intervall gesendet, somit sollte dazu eine Auswahl im Webinterface möglich sein. Und für den Schlüssel benötigt man ein Feld.
    Falls Interesse besteht bin ich gerne bereit zu Entwickeln und zu Testen!

  9. Hallo, nachdem ich das SmartMeter nun zwei Tage laufen hatte, bekam ich folgende Meldung im Loxberry, nach Neustart des Loxberrys war dies wieder weg, allerdings scheint durch irgendwas der Speicher vollzulaufen.

    Werden die Werte im Loxberry gespeichert oder im Miniserver?

    -----------------------------------

    Software error:

    HTML::Template::new() - Problem writing cache file /tmp/templatecache/d2/25ca29866deb84d879a5300ec415b0 (file_cache => 1) : No space left on device at /opt/loxberry/webfrontend/htmlauth/system/logmanager.cgi line 33.
    

    Depending of what you have done, report this error to the plugin developer or the LoxBerry-Core team.
    Further information you may find in the error logs.