PZEM004T
Модератор: Alex
-
- Сообщения: 2575
- Зарегистрирован: Пт ноя 06, 2015 10:22 am
- Откуда: Кишинёв
- Благодарил (а): 303 раза
- Поблагодарили: 282 раза
Re: PZEM004T
Отправить готовые данные одним залпом не проблема. Главное отправить их в AMS. И тут несколько вариантов. Самый простой - по сериалу. Точно так же как в плате от RobotDyn. Но тогда далеко не утащишь контроллер.По радио отправлять - то же не вариант.
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
-
- Сообщения: 72
- Зарегистрирован: Пт янв 13, 2017 11:48 pm
- Благодарил (а): 6 раз
- Поблагодарили: 3 раза
Re: PZEM004T
Так он у меня физически подключен к пинам 18, 19 это serial1. Я же говорю, что надо так скетч написать, чтобы он был с паузами и не грузил полностью контроллер, так же надо написать get для мажордомо.
-
- Сообщения: 2575
- Зарегистрирован: Пт ноя 06, 2015 10:22 am
- Откуда: Кишинёв
- Благодарил (а): 303 раза
- Поблагодарили: 282 раза
Re: PZEM004T
Get для МД это последнее дело. Сейчас надо распарсить данные по сериалу. Если это сделано как на той плате - то ничего не грузит...Думаю как принять данные.
...Залей в Мегу скетч от RobotDyn. Подключись к Сериал3. Посмотрим что там вывалиться. Если всё пойдет правильно , должен увидеть осмысленную инфу в квадратных скобках.
...Залей в Мегу скетч от RobotDyn. Подключись к Сериал3. Посмотрим что там вывалиться. Если всё пойдет правильно , должен увидеть осмысленную инфу в квадратных скобках.
- [20;1;1;0;38;3236]
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
-
- Сообщения: 72
- Зарегистрирован: Пт янв 13, 2017 11:48 pm
- Благодарил (а): 6 раз
- Поблагодарили: 3 раза
-
- Сообщения: 2575
- Зарегистрирован: Пт ноя 06, 2015 10:22 am
- Откуда: Кишинёв
- Благодарил (а): 303 раза
- Поблагодарили: 282 раза
Re: PZEM004T
На сайте Алекса , там же где и АМС. Похоже придумал. Статья про протокол написана Тут. Интернет шилд можно не ставить пока. Что бы он стартанул пропиши
Эту.
Код: Выделить всё
// time provider
#define TIME_NONE 0
#define TIME_NETWORK 1
#define TIME_RTC 2
//byte timeProvider = TIME_NETWORK;
byte timeProvider = TIME_NONE;
СпойлерПоказать
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
-
- Сообщения: 18
- Зарегистрирован: Сб апр 29, 2017 9:38 am
- Благодарил (а): 2 раза
- Поблагодарили: 9 раз
Re: PZEM004T
Друзья. Я уже больше года пользуюсь связкой PZEM004T+ESP8266. Еспешка отправляет данные по MQTT в MD. Очень простенький скетч написал сам, кому интересно можете повторить.
ESP и PZEM004T соединяем Tx -Rx, Rx-Tx, земля с землёй и даем питание 3,3 вольта.
Кроме того впаиваем одно сопротивление на 1к как на картинке:
Есть только один минус.Чтобы перепрошить еспшку, нужно отключать PZEM004T, потому что Tx, Rx заняты. Но больше чем за год использования, я только один раз туда лазил, когда менял сервер и его айпишник. А так все работает безотказно и круглосуточно.
ESP и PZEM004T соединяем Tx -Rx, Rx-Tx, земля с землёй и даем питание 3,3 вольта.
Кроме того впаиваем одно сопротивление на 1к как на картинке:
Есть только один минус.Чтобы перепрошить еспшку, нужно отключать PZEM004T, потому что Tx, Rx заняты. Но больше чем за год использования, я только один раз туда лазил, когда менял сервер и его айпишник. А так все работает безотказно и круглосуточно.
Код: Выделить всё
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <PubSubClient.h>
#include <ESP8266mDNS.h>
#include <SoftwareSerial.h>
#include <PZEM004T.h>
PZEM004T pzem(&Serial);
IPAddress ip(192,168,1,1); //адрес оставляйте этот
const char *mqtt_server = "192.168.0.100"; //адрес mqtt брокера
const char* ssid = "Keenetic-4568"; //имя своей сети
const char* password = "12345678"; // пароль к сети
IPAddress ip_addr(192,168,0,53); //айпичник этого устройства
IPAddress router(192,168,0,1);
IPAddress netmask(255,255,255,0);
#define v_topic "PZEM/voltage" //топик вольты
#define i_topic "PZEM/current" //топик амперы
#define p_topic "PZEM/power" //топик ваты
#define e_topic "PZEM/energy" //топик ватчасы
WiFiClient espClient; //инициализация wifi
PubSubClient client(espClient); //инициализация mqtt клиента
void callback(char* topic, byte* payload, unsigned int length) {
Serial.print("Message arrived [");
Serial.print(topic);
Serial.print("] ");
for (int i = 0; i < length; i++) {
Serial.print((char)payload[i]);
}
Serial.println();
}
void setup(void){
Serial.begin(9600);
pzem.setAddress(ip);
WiFi.mode(WIFI_STA);
WiFi.config(ip_addr,router,netmask);
WiFi.begin(ssid, password);
client.setServer(mqtt_server, 1883);
client.setCallback(callback);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
}
}
void loop(void){
float v = pzem.voltage(ip);
float i = pzem.current(ip);
float p = pzem.power(ip);
float e = pzem.energy(ip);
if (WiFi.status() != WL_CONNECTED)
{
WiFi.begin(ssid, password);
if (WiFi.waitForConnectResult() != WL_CONNECTED)
return;
}
if (WiFi.status() == WL_CONNECTED)
{
if (!client.connected())
{ // то подключаемся к mqtt
client.setServer(mqtt_server, 1883);
client.setCallback(callback);
client.connect("ESPPZEM");
}
if (client.connected()) {
client.loop();
client.publish(v_topic, String(v).c_str()); // публикуем вольты
client.publish(i_topic, String(i).c_str()); // публикуем вольты
client.publish(p_topic, String(p).c_str()); // публикуем вольты
client.publish(e_topic, String(e).c_str()); // публикуем вольты
}
}
delay(6000); // задержка
}
- Рейтинг: 3.49%
-
- Сообщения: 18
- Зарегистрирован: Сб апр 29, 2017 9:38 am
- Благодарил (а): 2 раза
- Поблагодарили: 9 раз
Re: PZEM004T
И это не предел. Бывает и 160 вольт.
У меня стоит стабилизатор на весь дом, замеры делаю до стабилизатора.
У меня стоит стабилизатор на весь дом, замеры делаю до стабилизатора.