Metainformationen zur Seite
Plugin-Daten | |
---|---|
Autor | Michael Schlenstedt Michael Kaufmann |
Logo | |
Status | STABLE |
Version | 1.2.0 |
Min. LB Version | 0.2.3 |
Release Download | https://github.com/mschlenstedt/LoxBerry-Plugin-Smartmeter/archive/refs/tags/Smartmeter-V1.2.0.zip |
Pre-Release Download | https://github.com/mschlenstedt/LoxBerry-Plugin-Smartmeter/archive/refs/tags/Smartmeter-V1.2.0.1.zip |
Beschreibung | Dieses 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. |
Sprachen | EN, DE |
Diskussion | https://www.loxforum.com/forum/projektforen/loxberry/plugins/85702-neues-plugin-smartmeter-stromz%C3%A4hler-auslesen |
Smartmeter Plugin
Version History…
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
- Das Plugin ist auf GitHub verfügbar: https://github.com/mschlenstedt/LoxBerry-Plugin-Smartmeter/releases
- Der Sourcecode ist auf GitHub verfügbar: https://github.com/mschlenstedt/LoxBerry-Plugin-Smartmeter
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 Quelle erweitern
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)
Fehler melden
Fehler bitte auf GutHub melden: https://github.com/mschlenstedt/LoxBerry-Plugin-Smartmeter