Эта библиотека работает только с версией прошивки 1.7.14 или ниже.
В новых версиях прошивки Eon отключил локальный API и сделал эту библиотеку устаревшей. ОГРОМНОЕ спасибо Eon! ?
Подробности читайте в выпуске №1.
Привет и добро пожаловать! Нажмите кнопку ниже, если вам нравится эта библиотека и вы хотите поддержать мою работу. Знаете, разработчики программного обеспечения потребляют много кофе?
Излишне говорить, что это совершенно добровольно.
Простая библиотека для встроенного API E.ON Elna, написанная на Python 3. Elna — это интеллектуальное устройство учета электроэнергии, подключаемое к порту HAN (домашняя сеть) счетчика электроэнергии с помощью разъема RJ12.
Эта библиотека использует встроенный API внутри устройства Elna для сбора информации о вашем энергопотреблении и/или производстве непосредственно с самого устройства.
Elna основана на оборудовании Net2Grid, поэтому, вероятно, она также совместима с другими устройствами семейства Net2Grid. Любая обратная связь приветствуется.
Вот небольшое демонстрационное приложение командной строки, показывающее информацию, которую можно получить с устройства.
Исходный код демо-версии можно посмотреть здесь: smartmeter-demo.py.
Это более реальное демонстрационное приложение, очень похожее на известное приложение CLI. Он проверит ваше мгновенное энергопотребление (MPC) и выведет его на консоль. При нажатии CTRL+C отображается рассчитанное минимальное, максимальное и среднее энергопотребление, а также время прохождения пакетов, отправленных в Elna, и многое другое.
Исходный код доступен здесь: powerping-demo.py.
Настройте виртуальную среду:
virtualenv venv
source venv/bin/activate
Установите последнюю версию с помощью pip
:
pip install elnasmartmeter
Для использования библиотеки вам необходимо знать IP-адрес устройства Elna. Вы можете найти его на DHCP-сервере вашего маршрутизатора (или там, где вы используете DHCP-сервер). MAC-адрес Elna напечатан на задней панели устройства.
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 ()
Получить данные о потреблении/производстве электроэнергии в вашем доме очень просто. Через мгновение мы рассмотрим, как получить доступ к информации через объекты info
и electricity
.
Все методы, вызываемые из библиотеки, в случае сбоя будут генерировать исключения. Полный список исключений можно найти здесь.
from elna import smartmeter
from elna . exceptions import *
...
try :
info = meter . get_info ()
except NewConnectionError as e :
print ( e )
Объекты, представляющие различные объекты в библиотеке, можно вывести с помощью метода print()
для упрощения проверки их свойств.
Например, вы можете вывести свойства объекта Information
, передав их методу 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'}
То же самое касается всех классов в библиотеке: Information
, Electricity
, Power
и WLANInformation
.
С помощью этой библиотеки можно получить две части данных: общую Information
об устройстве и статистику Power
.
Чтобы получить общую информацию об устройстве, мы просто вызываем метод get_info()
.
info = meter . get_info ()
Доступ к значениям через свойства класса:
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'
Чтобы получить показания мощности, мы вызываем метод get_electricity()
. Эти показания немного сложнее, поскольку информация, собранная с устройства Elna, разделена на подклассы, но это не так уж и сложно:
electricity = meter . get_electricity ()
Получите текущее энергопотребление:
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'
Получите минимальное энергопотребление за период:
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'
Получите максимальную потребляемую мощность за период:
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'
Временной интервал (период), за который были зафиксированы минимальное и максимальное значения, неизвестен (мне).
Получите импортированную энергию. Это будет полная мощность, поступающая в дом:
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'
Получите экспортируемую мощность. Это будет полная мощность, выходящая из дома:
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'
Посмотрите демоверсию смартметра вверху, чтобы опробовать ее.
Мы также можем получить информацию о WLAN устройства, вызвав метод get_wlan_info()
. Устройство может действовать как беспроводной клиент (станция) и точка доступа (AP) в зависимости от того, подключено ли оно к вашей сети Wi-Fi или нет.
wlan = meter . get_wlan_info ()
Получите доступ к информации WLAN через свойства класса объекта:
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 (?)
Примечание. Описания, следующие за приведенными выше свойствами WLAN, являются приблизительными.
Названия продуктов, товарные знаки и зарегистрированные товарные знаки в этом хранилище являются собственностью их владельцев и используются автором только в целях идентификации. Использование этих названий, товарных знаков и брендов не подразумевает одобрения или принадлежности.