znachok88

 
<<< Назад

Получение данных с електросчетчика подключеного по rs485 (SDM 120, SDM220, SDM 230, SDM 630...и т.д)

Есть счетчик SDM 220 подключеный по rs485 к малине
Есть утилита mbmd
https://github.com/volkszaehler/mbmd
и есть дай Боги ему здоровья человек @agafonov_d
он же Скай который написал скрипт и библиотеку что бы можно было получвть данные без запросов и костылей
И так:
Скачиваем:
https://github.com/volkszaehler/mbmd/releases/down...
розпаковываем по пути
/usr/local/bin

потом создаем сервис
sudo nano /etc/systemd/system/mbmd.service
вставляем

[Unit]
Description=mbmd
After=syslog.target
[Service]
ExecStart=/usr/local/bin/mbmd run -a /dev/ttyS0 -d SDM220:1 -r 30s
//вместо ttyS0 пишите свой порт к которому   подключен rs485
//вмнсто SDM220 пишите свой девайс (список там обширный на сайте)
//-r 30s это период с которым утилита отдает данные, если убрать этот параметр, то будет отдавать каждую секунду
Restart=always
[Install]
WantedBy=multi-user.target

потом делаем:
sudo systemctl start mdmb
sudo systemctl enable mbmd

если все нормально то по адресу:
http://вашip:8080 вы увидите вэб рожу mbmd

наконец то подключение к мажору:
скачиваем

https://github.com/znachok88/mbmd_majordomo/raw/ma...

розпаковываем, файл
mbmd.class.php ложим в /var/www/html/lib/
файл

cycle_mbmd.php ложим в /var/www/html/scripts/
в x-ray запускаем скрипт руками, если не запустился
или
sudo -u www-data php /var/www/html/scripts/cycle_mbmd.php

создаем объект
Count
в нем метод
mbmd
и в него вносим:

if (isset($params['Voltage'])) $this->setProperty("V", $params['Voltage']);
if (isset($params['Current'])) $this->setProperty("A", $params['Current']);
if (isset($params['Sum'])) $this->setProperty("kWh", $params['Sum']);
Если все впорядке, то у вас появятся свойства с данными.
Дальнейшая обработка, это ваш полет фантазии.
Спасибо Скай.

Обсуждение (3) (9)

Смотрите так же:
29.10.2020 Fail2ban для Magordomo на ngnix

Ірпінь, Украина