Diese Bibliothek funktioniert nur mit Firmare-Version 1.7.14 oder niedriger.
In neueren Firmware-Versionen hat Eon die lokale API deaktiviert und diese Bibliothek überflüssig gemacht, VIELEN Dank an Eon! ?
Lesen Sie mehr in Ausgabe Nr. 1
Hallo und herzlich willkommen! Klicken Sie auf die Schaltfläche unten, wenn Ihnen diese Bibliothek gefällt und Sie meine Arbeit unterstützen möchten. Wissen Sie, dass man als Softwareentwickler viel Kaffee trinkt?
Es versteht sich von selbst, dass dies völlig freiwillig ist.
Eine einfache Bibliothek für die integrierte E.ON Elna-API, geschrieben in Python 3. Elna ist ein intelligentes Strommessgerät, das über einen RJ12-Stecker an den HAN-Port (Home Area Network) des Stromzählers angeschlossen wird.
Diese Bibliothek nutzt die integrierte API im Elna-Gerät, um Informationen über Ihren Stromverbrauch und/oder Ihre Stromproduktion direkt vom Gerät selbst zu sammeln.
Elna basiert auf Hardware von Net2Grid und ist daher wahrscheinlich auch mit weiteren Geräten aus der Net2Grid-Familie kompatibel. Jedes Feedback ist willkommen.
Hier ist eine kleine Befehlszeilen-Demoanwendung, die die Informationen zeigt, die vom Gerät abgerufen werden können.
Schauen Sie sich den Quellcode der Demo hier an: smartmeter-demo.py.
Dies ist eine realistischere Demoanwendung mit großer Ähnlichkeit mit einer bekannten CLI-Anwendung. Es prüft Ihren aktuellen Stromverbrauch (mpc) und gibt ihn an die Konsole aus. Sobald STRG+C gedrückt wird, werden der berechnete minimale, maximale und durchschnittliche Stromverbrauch sowie die Umlaufzeit der an Elna gesendeten Pakete und mehr angezeigt.
Der Quellcode ist hier verfügbar: powerping-demo.py.
Richten Sie die virtuelle Umgebung ein:
virtualenv venv
source venv/bin/activate
Installieren Sie die neueste Version mit pip
:
pip install elnasmartmeter
Um die Bibliothek nutzen zu können, müssen Sie die IP-Adresse des Elna-Geräts kennen. Sie finden es auf dem DHCP-Server Ihres Routers (oder wo auch immer Sie Ihren DHCP-Server betreiben). Die MAC-Adresse von Elna ist auf der Rückseite des Geräts aufgedruckt.
from elna import smartmeter
# Connect the library to the Elna device
meter = smartmeter . Connect ( '192.168.0.10' )
# Get general information
info = meter . get_info ()
# Get power readings
electricity = meter . get_electricity ()
# Get WLAN information
wlan = meter . get_wlan_info ()
So einfach ist es, den Stromverbrauch/die Stromproduktion Ihres Haushalts zu ermitteln. Wir schauen uns gleich an, wie man über die info
und electricity
auf die Informationen zugreifen kann.
Alle aus der Bibliothek aufrufbaren Methoden lösen bei einem Fehler Ausnahmen aus. Eine vollständige Liste der Ausnahmen finden Sie hier.
from elna import smartmeter
from elna . exceptions import *
...
try :
info = meter . get_info ()
except NewConnectionError as e :
print ( e )
Die Objekte, die verschiedene Entitäten in der Bibliothek darstellen, können zur einfachen Überprüfung ihrer Eigenschaften mit der Methode print()
ausgegeben werden.
Beispielsweise können Sie die Eigenschaften eines Information
ausgeben, indem Sie es an die print()
-Methode übergeben:
print ( info )
# Output: <class 'elna.classes.Information'>: {'id': '01ab:0200:00cd:03ef', 'manufacturer': 'NET2GRID', 'model': 'SBWF4602', 'firmware': '1.7.14', 'hardware': 1, 'batch': 'HMX-P0D-123456'}
Das Gleiche gilt für alle Klassen in der Bibliothek: Information
, Electricity
, Power
und WLANInformation
.
Mit dieser Bibliothek können zwei Daten abgerufen werden: allgemeine Information
und Power
.
Um die allgemeinen Geräteinformationen zu erhalten, rufen wir einfach die Methode get_info()
auf.
info = meter . get_info ()
Greifen Sie über die Klasseneigenschaften auf die Werte zu:
info . id # Returns the device ID : '01ab:0200:00cd:03ef' (for example).
info . manufacturer # Returns the manufacturer : 'NET2GRID'
info . model # Returns the model : 'SBWF4602'
info . firmware # Returns the firmware version : '1.7.14'
info . hardware # Returns the hardware version : 1
info . batch # Returns the batch number : 'HMX-P0D-123456'
Um die Leistungswerte zu erhalten, rufen wir die Methode get_electricity()
auf. Diese Messwerte sind etwas komplexer, da die vom Elna-Gerät gesammelten Informationen in Unterklassen unterteilt sind, aber es ist nicht so kompliziert:
electricity = meter . get_electricity ()
Ermitteln Sie den aktuellen Stromverbrauch:
electricity . now . key # Returns the string : 'now'
electricity . now . value # Returns the power : 453 (for example).
electricity . now . unit # Returns the unit : 'W' (as in Watt)
electricity . now . timestamp # Returns a timestamp : '2022-12-24 13:37:00'
Ermitteln Sie den minimalen Stromverbrauch im Zeitraum:
electricity . minimum . key # Returns the string : 'minimum'
electricity . minimum . value # Returns the power : 202 (for example).
electricity . minimum . unit # Returns the unit : 'W' (as in Watt)
electricity . minimum . timestamp # Returns a timestamp : '2022-12-13 13:37:00'
Ermitteln Sie den maximalen Stromverbrauch im Zeitraum:
electricity . maximum . key # Returns the string : 'maximum'
electricity . maximum . value # Returns the power : 14320 (for example).
electricity . maximum . unit # Returns the unit : 'W' (as in Watt)
electricity . maximum . timestamp # Returns a timestamp : '2022-12-31 13:37:00'
Der Zeitrahmen (Zeitraum), für den die Minimal- und Maximalwerte aufgezeichnet wurden, ist (mir) unbekannt.
Holen Sie sich den importierten Strom. Dies wäre die Gesamtleistung, die in den Haushalt gelangt:
electricity . imported . key # Returns the string : 'imported'
electricity . imported . value # Returns the power : 12345678 (for example).
electricity . imported . unit # Returns the unit : 'Wh' (as in Watt hours)
electricity . imported . timestamp # Returns a timestamp : '2022-12-31 13:37:00'
Holen Sie sich die exportierte Energie. Dies wäre der Gesamtstrom, der aus dem Haushalt kommt:
electricity . exported . key # Returns the string : 'exported'
electricity . exported . value # Returns the power : 87654321 (for example).
electricity . exported . unit # Returns the unit : 'Wh' (as in Watt hours)
electricity . exported . timestamp # Returns a timestamp : '2022-12-31 13:37:00'
Schauen Sie sich die Smartmeter-Demo oben an, um es auszuprobieren.
Wir können die WLAN-Informationen des Geräts auch erhalten, indem wir die Methode get_wlan_info()
aufrufen. Das Gerät kann sowohl als Wireless-Client (Station) als auch als Access Point (AP) fungieren, je nachdem, ob es mit Ihrem WLAN-Netzwerk verbunden ist oder nicht.
wlan = meter . get_wlan_info ()
Greifen Sie über die Klasseneigenschaften des Objekts auf die WLAN-Informationen zu:
wlan . mode # Returns the current WLAN mode
wlan . ap_ssid # Returns the Access Point SSID
wlan . ap_key # Returns the Access Point Password
wlan . client_ssid # Returns the SSID of the AP Elna is connected to
wlan . join_status # Returns the number of clients joined to the Elna AP
wlan . mac # Returns the MAC address currently in use
wlan . ip # Returns the IP address
wlan . subnet # Returns the Subnet mask
wlan . gateway # Returns the Default gateway
wlan . dns # Returns the Primary DNS server
wlan . dnsalt # Returns the Secondary DNS server
wlan . n2g_id # Returns the Net2Grid ID number
wlan . sta_mac # Returns the MAC address of the WLAN Station
wlan . ap_mac # Returns the MAC address of the Access Point
wlan . eth_mac # Returns the Ethernet MAC address (?)
Hinweis: Bei den Beschreibungen im Anschluss an die WLAN-Eigenschaften oben handelt es sich um geschätzte Schätzungen.
Die Produktnamen, Warenzeichen und eingetragenen Warenzeichen in diesem Repository sind Eigentum ihrer jeweiligen Inhaber und werden vom Autor nur zu Identifikationszwecken verwendet. Die Verwendung dieser Namen, Warenzeichen und Marken stellt keine Billigung oder Zugehörigkeit dar.