Cette bibliothèque ne fonctionne qu'avec la version 1.7.14 ou inférieure du firmware.
Dans les versions de firmware plus récentes, Eon a désactivé l'API locale et rendu cette bibliothèque obsolète, un GRAND merci à Eon ! ?
Lire la suite dans le numéro 1
Salut et bienvenue ! Cliquez sur le bouton ci-dessous si vous appréciez cette bibliothèque et souhaitez soutenir mon travail. On consomme beaucoup de café en tant que développeur de logiciels, vous savez ?
Inutile de dire que c’est totalement volontaire.
Une bibliothèque simple pour l'API intégrée d'E.ON Elna écrite en Python 3. Elna est un dispositif de mesure d'énergie intelligent branché sur le port HAN (Home Area Network) du compteur électrique à l'aide d'un connecteur RJ12.
Cette bibliothèque utilise l'API intégrée à l'appareil Elna pour collecter des informations sur votre consommation d'énergie et/ou votre production , directement à partir de l'appareil lui-même.
Elna est basée sur le matériel de Net2Grid, elle est donc probablement également compatible avec davantage d'appareils de la famille Net2Grid. Tout commentaire est le bienvenu.
Voici une petite application de démonstration en ligne de commande montrant les informations pouvant être obtenues à partir de l'appareil.
Consultez le code source de la démo ici : smartmeter-demo.py.
Il s'agit d'une application de démonstration plus réelle avec beaucoup de ressemblance avec une application CLI bien connue. Il vérifiera votre consommation d'énergie momentanée (mpc) et l'affichera sur la console. Une fois CTRL+C enfoncé, il affiche la consommation électrique minimale, maximale et moyenne calculée ainsi que le temps aller-retour des paquets envoyés à Elna, et plus encore.
Le code source est disponible ici : powerping-demo.py.
Configurez l'environnement virtuel :
virtualenv venv
source venv/bin/activate
Installez la dernière version avec pip
:
pip install elnasmartmeter
Pour utiliser la bibliothèque, vous devez connaître l'adresse IP de l'appareil Elna. Vous pouvez le trouver sur le serveur DHCP de votre routeur (ou partout où vous exécutez votre serveur DHCP). L'adresse MAC d'Elna est imprimée au dos de l'appareil.
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 ()
C'est aussi simple que cela pour récupérer la consommation/production d'énergie de votre foyer. Dans un instant nous verrons comment accéder à l'information via les objets info
et electricity
.
Toutes les méthodes appelables depuis la bibliothèque lèveront des exceptions en cas d'échec. Une liste complète des exceptions peut être trouvée ici.
from elna import smartmeter
from elna . exceptions import *
...
try :
info = meter . get_info ()
except NewConnectionError as e :
print ( e )
Les objets représentant diverses entités de la bibliothèque peuvent être générés avec la méthode print()
pour une inspection facile de ses propriétés.
À titre d'exemple, vous pouvez afficher les propriétés d'un objet Information
en le transmettant à la méthode 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'}
Il en va de même pour toutes les classes de la bibliothèque : Information
, Electricity
, Power
et WLANInformation
.
Deux éléments de données peuvent être récupérés avec cette bibliothèque : Information
générales sur l'appareil et les statistiques Power
.
Pour obtenir les informations générales sur le périphérique, nous appelons simplement la méthode get_info()
.
info = meter . get_info ()
Accédez aux valeurs via les propriétés de la classe :
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'
Pour obtenir les lectures de puissance, nous appelons la méthode get_electricity()
. Ces lectures sont un peu plus complexes puisque les informations recueillies à partir de l'appareil Elna sont divisées en sous-classes, mais ce n'est pas si compliqué :
electricity = meter . get_electricity ()
Obtenez la consommation électrique actuelle :
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'
Obtenez la consommation électrique minimale sur la période :
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'
Obtenez la consommation électrique maximale sur la période :
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'
La période (période) pendant laquelle les valeurs minimales et maximales ont été enregistrées est inconnue (pour moi).
Obtenez la puissance importée . Cela représenterait la puissance totale entrant dans le foyer :
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'
Obtenez la puissance exportée . Ce serait la puissance totale provenant du foyer :
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'
Consultez la démo du compteur intelligent en haut pour l'essayer.
Nous pouvons également obtenir les informations WLAN de l'appareil en appelant la méthode get_wlan_info()
. L'appareil peut agir à la fois comme client (station) sans fil et comme point d'accès (AP) selon qu'il a été connecté à votre réseau WiFi ou non.
wlan = meter . get_wlan_info ()
Accédez aux informations WLAN via les propriétés de classe de l'objet :
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 (?)
Remarque : Les descriptions qui suivent les propriétés WLAN ci-dessus sont des suppositions.
Les noms de produits, marques commerciales et marques déposées dans ce référentiel sont la propriété de leurs propriétaires respectifs et sont utilisés par l'auteur à des fins d'identification uniquement. L'utilisation de ces noms, marques et marques n'implique pas d'approbation ou d'affiliation.