Esta biblioteca solo funciona con la versión 1.7.14 o inferior de firmare.
En las versiones de firmware más recientes, Eon deshabilitó la API local y dejó esta biblioteca obsoleta. ¡MUCHAS gracias a Eon! ?
Lea más en el número 1
¡Hola y bienvenido! Haga clic en el botón a continuación si disfruta de esta biblioteca y desea apoyar mi trabajo. Como desarrollador de software se consume mucho café, ¿sabes?
No hace falta decir que esto es completamente voluntario.
Una biblioteca sencilla para la API integrada de E.ON Elna escrita en Python 3. Elna es un dispositivo de medición de energía inteligente conectado al puerto HAN (Home Area Network) del medidor de electricidad mediante un conector RJ12.
Esta biblioteca utiliza la API incorporada dentro del dispositivo Elna para recopilar información sobre su consumo de energía y/o producción , directamente desde el propio dispositivo.
Elna se basa en hardware de Net2Grid, por lo que probablemente también sea compatible con más dispositivos de la familia Net2Grid. Cualquier comentario es bienvenido.
Aquí hay una pequeña aplicación de demostración de línea de comandos que muestra la información que se puede obtener del dispositivo.
Consulte el código fuente de la demostración aquí: smartmeter-demo.py.
Esta es una aplicación de demostración más real con mucho parecido con una aplicación CLI conocida. Verificará su consumo de energía momentáneo (mpc) y lo enviará a la consola. Una vez que se presiona CTRL+C, muestra el consumo de energía mínimo, máximo y promedio calculado, así como el tiempo de ida y vuelta de los paquetes enviados a Elna, y más.
El código fuente está disponible aquí: powerping-demo.py.
Configure el entorno virtual:
virtualenv venv
source venv/bin/activate
Instale la última versión con pip
:
pip install elnasmartmeter
Para utilizar la biblioteca necesita conocer la dirección IP del dispositivo Elna. Puede encontrarlo en el servidor DHCP de su enrutador (o dondequiera que esté ejecutando su servidor DHCP). La dirección MAC de Elna está impresa en la parte posterior del dispositivo.
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 ()
Es tan simple como eso para obtener el consumo/producción de energía de su hogar. En un momento veremos cómo acceder a la información a través de los objetos info
y electricity
.
Todos los métodos invocables desde la biblioteca generarán excepciones en caso de error. Puede encontrar una lista completa de excepciones aquí.
from elna import smartmeter
from elna . exceptions import *
...
try :
info = meter . get_info ()
except NewConnectionError as e :
print ( e )
Los objetos que representan varias entidades en la biblioteca se pueden generar con el método print()
para facilitar la inspección de sus propiedades.
Como ejemplo, puede generar las propiedades de un objeto Information
pasándolo al método print()
:
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'}
Lo mismo ocurre con todas las clases de la biblioteca: Information
, Electricity
, Power
y WLANInformation
.
Hay dos datos que se pueden recuperar con esta biblioteca: Information
general del dispositivo y estadísticas Power
.
Para obtener la información general del dispositivo simplemente llamamos al método get_info()
.
info = meter . get_info ()
Acceda a los valores a través de las propiedades de clase:
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'
Para obtener las lecturas de potencia llamamos al método get_electricity()
. Estas lecturas son un poco más complejas ya que la información recopilada por el dispositivo Elna se divide en subclases, pero no es tan complicado:
electricity = meter . get_electricity ()
Obtenga el consumo de energía actual :
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'
Obtenga el consumo mínimo de energía en el período:
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'
Obtenga el consumo máximo de energía en el período:
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'
El período de tiempo (período) en el que se registraron los valores mínimo y máximo es desconocido (para mí).
Obtenga el poder importado . Esta sería la potencia total que llega al hogar:
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'
Obtenga el poder exportado . Esta sería la potencia total que sale del hogar:
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'
Consulte la demostración de Smartmeter en la parte superior para probarlo.
También podemos obtener la información de WLAN del dispositivo llamando al método get_wlan_info()
. El dispositivo puede actuar como Cliente inalámbrico (Estación) y Punto de acceso (AP) dependiendo de si se ha conectado a su red WiFi o no.
wlan = meter . get_wlan_info ()
Acceda a la información de WLAN a través de las propiedades de clase del objeto:
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 (?)
Nota: Las descripciones que siguen a las propiedades de WLAN anteriores son conjeturas.
Los nombres de productos, marcas comerciales y marcas comerciales registradas en este repositorio son propiedad de sus respectivos dueños y el autor los utiliza únicamente con fines de identificación. El uso de estos nombres, marcas comerciales y marcas no implica respaldo o afiliación.