PZEM-016 по MQTT

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

Аватара пользователя
woow
Сообщения: 821
Зарегистрирован: Пн июл 04, 2016 8:46 am
Откуда: Mazeikiai
Благодарил (а): 125 раз
Поблагодарили: 46 раз

PZEM-016 по MQTT

Сообщение woow » Вт мар 17, 2020 2:57 pm

Считываю данные пока только в сериал
Нужна помощь как вытащить данные в MQTT. Вот кусок скетча лупа энергоучёта с пзем модулем тут выводятся данные напряжения в сериал монитор.
СпойлерПоказать

Код: Выделить всё

void loop() 
{
        currentMillisPZEM = millis();                                                     // время отсчета для запуска программы каждую секунду (по умолчанию)
        if (currentMillisPZEM - startMillisPZEM >= periodPZEM)    // за каждые х секунд запускаем коды ниже 
        {    
          uint8_t result;                                                                             // Объяем переменную "результат" как 8 бит    
          result = node.readInputRegisters(0x0000, 9);         // читаем 9 регистров (информацию), начиная с 0x0000 (информация о напряжении)) 
          if (result == node.ku8MBSuccess)                                        // Если есть ответ 
            {
              uint32_t tempdouble = 0x00000000;                           // Объяем переменную «tempdouble» как 32 бита с начальным значением 0// 
              PZEMVoltage = node.getResponseBuffer(0x0000) / 10.0;     // получаем 16-битное значение для значения напряжения, разделить его на 10 (согласно инструкции)
                                                                                                          // От 0x0000 до 0x0008 - адрес регистра значения измерения
              tempdouble =  (node.getResponseBuffer(0x0002) << 16) + node.getResponseBuffer(0x0001);      // получаем текущее значение. Текущее значение состоит из 2 частей (2 цифры по 16 бит спереди и 2 цифры по 16 бит сзади) и объединяют их в 32-разрядные без знака.

              Serial.print(PZEMVoltage, 1);                                   // Выводим значение напряжения на сериал мониторе с 1 десятичным знаком 
              Serial.print("V   ");              
            } 
Тут написал строку MQTT публикации в МДМ

client.publish ("Energija/faza_A/voltage", (PZEMVoltage, 1));

в результате прилетает только Energija/faza_A/voltage а самого значения нет.
Последний раз редактировалось woow Ср май 13, 2020 12:35 pm, всего редактировалось 1 раз.
Raspberry Pi 3B+
homester
Сообщения: 194
Зарегистрирован: Вт дек 24, 2019 2:09 pm
Благодарил (а): 112 раз
Поблагодарили: 34 раза

Re: PZEM-016 по MQTT

Сообщение homester » Вт мар 17, 2020 3:10 pm

Мне кажется надо вот так:
client.publish("Energija/faza_A/voltage", String( PZEMVoltage).c_str());

(зависит от библиотеки клиента)
За это сообщение автора homester поблагодарил:
woow (Ср мар 18, 2020 7:29 pm)
Рейтинг: 1.16%
Raspberry Pi3 B+, v4.44, внешняя з/к
Аватара пользователя
woow
Сообщения: 821
Зарегистрирован: Пн июл 04, 2016 8:46 am
Откуда: Mazeikiai
Благодарил (а): 125 раз
Поблагодарили: 46 раз

Re: PZEM-016 по MQTT

Сообщение woow » Вт мар 17, 2020 5:00 pm

Ок, доберусь домой, попробую. И если повезёт буду иметь одну фазу :) , останутся ещё две. Можно к той же шине rs485 все PZEM подключить, но как их потом разобрать, или три отдельные сборки PZEM+ARDUINO+W5100
Raspberry Pi 3B+
Аватара пользователя
woow
Сообщения: 821
Зарегистрирован: Пн июл 04, 2016 8:46 am
Откуда: Mazeikiai
Благодарил (а): 125 раз
Поблагодарили: 46 раз

Re: PZEM-016 по MQTT

Сообщение woow » Вт апр 07, 2020 10:37 pm

Начал собирать информацию про этот девайс. Пока не имею преобразователя RS485 на TTL( UART), так не нечем испытывать.
Собрал сюда инфу сколько удалось найти и ознакомится.
Цель такова чтобы вести мониторинг с разных потребителей и передавать через сеть по MQTT протоколу.
Поскольку у этого девайса выход по RS485 к немy можно подсоединять много таких PZEM016 в отличии от популярного PZEM004t.
Передавать в сеть можно как при помощи ардуино, так и ESP32.
Есть вот какие наработки по этому поводу:
1. здесь одиночный вариант, на Arduino UNO+ (RS485 to TTL UART) не включена часть присоединения более одного устройства и передача ведётся только в сериал монитор.
http://solar4living.com/pzem-arduino-modbus.htm
2.На ESP32 + RS485 to TTL есть возможность подключать более одного PZEM но и здесь передача ведётся только в сериал монитор. Надо доклеивать MQtt часть. http://evertdekker.com/?p=1307
СпойлерПоказать
Изображение
https://pikabu.ru/story/monitoring_yene ... o_6314209 делали но не до конца
http://www.desert-home.com/2018/07/pzem ... 765139562 попытки и идеи реализации
http://163.117.157.189/wordpress/?p=271
Последний раз редактировалось woow Ср май 13, 2020 12:36 pm, всего редактировалось 1 раз.
Raspberry Pi 3B+
Аватара пользователя
woow
Сообщения: 821
Зарегистрирован: Пн июл 04, 2016 8:46 am
Откуда: Mazeikiai
Благодарил (а): 125 раз
Поблагодарили: 46 раз

Re: PZEM-016 по MQTT

Сообщение woow » Вт апр 07, 2020 10:38 pm

Как-то криво но одолел, есть нюансы. Через Arduino NANO и W5500. С MQTT, без Wi-Fi по проводам :)
dfhf.jpg
dfhf.jpg (39.58 КБ) 4606 просмотров
За это сообщение автора woow поблагодарил:
TrDA (Сб апр 11, 2020 10:26 am)
Рейтинг: 1.16%
Raspberry Pi 3B+
TrDA
Сообщения: 147
Зарегистрирован: Ср сен 27, 2017 9:13 pm
Откуда: MSK
Благодарил (а): 235 раз
Поблагодарили: 38 раз

Re: PZEM-016 по MQTT

Сообщение TrDA » Сб апр 11, 2020 10:26 am

woow писал(а):
Вт апр 07, 2020 10:38 pm
... С MQTT, без Wi-Fi по проводам :)
Посмотри ещё тут:
https://tasmota.github.io/docs/PZEM-0XX/#pzem-016
Всем удачи.
Спрашивайте - не стесняйтесь.
crontab
Сообщения: 6
Зарегистрирован: Пт авг 18, 2017 9:25 pm
Благодарил (а): 8 раз
Поблагодарили: 1 раз

Re: PZEM-016 по MQTT

Сообщение crontab » Сб апр 11, 2020 1:59 pm

woow писал(а):
Вт мар 17, 2020 2:57 pm
Считываю данные пока только в сериал
Нужна помощь как вытащить данные в MQTT. Вот кусок скетча лупа энергоучёта с пзем модулем тут выводятся данные напряжения в сериал
В прошивке tasmota есть возможность MQTT
Вложения
tas.jpg
tas.jpg (71.99 КБ) 4501 просмотр
Аватара пользователя
woow
Сообщения: 821
Зарегистрирован: Пн июл 04, 2016 8:46 am
Откуда: Mazeikiai
Благодарил (а): 125 раз
Поблагодарили: 46 раз

Re: PZEM-016 по MQTT

Сообщение woow » Сб апр 11, 2020 4:12 pm

Это WiFi такие решения уже давно есть.
Raspberry Pi 3B+
TrDA
Сообщения: 147
Зарегистрирован: Ср сен 27, 2017 9:13 pm
Откуда: MSK
Благодарил (а): 235 раз
Поблагодарили: 38 раз

Re: PZEM-016 по MQTT

Сообщение TrDA » Вт апр 14, 2020 10:31 am

woow писал(а):
Сб апр 11, 2020 4:12 pm
Это WiFi такие решения уже давно есть.
Не совсем понимаю чем вас не устраивает WiFi.

Как вариант вот ещё одно решение:
https://wifi-iot.com/p/wiki/210/
Всем удачи.
Спрашивайте - не стесняйтесь.
Аватара пользователя
woow
Сообщения: 821
Зарегистрирован: Пн июл 04, 2016 8:46 am
Откуда: Mazeikiai
Благодарил (а): 125 раз
Поблагодарили: 46 раз

Re: PZEM-016 по MQTT

Сообщение woow » Вт апр 14, 2020 12:08 pm

Я бы сделал вообще на RS485- USB но увы не кто не помог а сам не смог. Когда проводом не достать WiFi это выход, а так ни какого преимущества, по мне так надёжнее
Последний раз редактировалось woow Ср май 13, 2020 12:50 pm, всего редактировалось 3 раза.
Raspberry Pi 3B+
Ответить