Вопросы и замечания по статьям и схемам, представленным на нашем сайте

При поддержке РадиоКОТструктор.ру


Ответить

Re: Модуль отображения информации МИРТ-830 из ардуины

Вт авг 01, 2023 17:56:18

Спасибо большое за помощь и консультации. Все работает. Новую версию проверю на неделе, старая вроде тоже хорошо работает, не вылетает. Данные исправно приходят.

Re: Модуль отображения информации МИРТ-830 из ардуины

Вт авг 01, 2023 18:11:17

Небольшие очепятки нашел в коде, уменьшая размерность массива забыл циклы поправить.
Вложения
My_Mirtek_GW_upd8.zip
исправлены очепятки
(8.75 KiB) Скачиваний: 83

Re: Модуль отображения информации МИРТ-830 из ардуины

Чт авг 10, 2023 14:40:20

Небольшие очепятки нашел в коде, уменьшая размерность массива забыл циклы поправить.

В вордовом документе, который здесь был, написано про 4 байта данных о тарифах. Т.е на мой взгляд, сумма будет:
Код:
sum = float((resultbuffer[26] << 32) | (resultbuffer[25] << 16) | (resultbuffer[24] << 8) | resultbuffer[23]) / 100
и т1 и т2 соответственно.

И температура устройства может быть отрицательной. Надо знак проверять.

Можно от счетчика получить какой текущий тариф сейчас работает. Это в конфигурационном (14) байте. Как то так, например:
Код:
    MirtekCurrentT = ((resultbuffer[14] >> 2 ) & 0b00000011 ) + 1;
    Serial.print("Current Tariff: T");
    Serial.println(MirtekCurrentT);

Re: Модуль отображения информации МИРТ-830 из ардуины

Чт авг 10, 2023 21:48:18

В вордовом документе, который здесь был, написано про 4 байта данных о тарифах. Т.е на мой взгляд, сумма будет:
Код:
sum = float((resultbuffer[26] << 32) | (resultbuffer[25] << 16) | (resultbuffer[24] << 8) | resultbuffer[23]) / 100
и т1 и т2 соответственно.

Согласен, тогда будет наверное верно так (с учетом что в программе счетчика задано место для 4-х тарифов):
Всего у нас в полученном пакете после байтстаффинга 45 байт (0-44), 2-а последних это контрольная сумма и конец пакета, первых два - старт пакета.
Пример реально полученного пакета:
Packet_recive = 73 55 1E 0 FE FF XX XX 5 A8 3 5B 0 0 62 1 0 1 0 AF FE 18 0 AF FE 18 0 74 22 11 0 3B DC 7 0 0 0 0 0 0 0 0 0 DA 55
Packet_recive = start 73 55 | 1E | reserv 0 | pult FE FF | addr XX XX | command 5 | A8 3 5B 0 | type_erg 0 | 62 | koef_U 1 0 | koef_I 1 0 | sum AF FE 18 0 | sum_act_t AF FE 18 0 | t1 74 22 11 0 | t2 3B DC 7 0 | t3 0 0 0 0 | t4 0 0 0 0 | crc DA | stop 55
Код:
sum = float((resultbuffer[22] << 32) | (resultbuffer[21] << 16) | (resultbuffer[20] << 8) | resultbuffer[19]) / 100 // - полная сумма
sum_act_t = float((resultbuffer[26] << 32) | (resultbuffer[25] << 16) | (resultbuffer[24] << 8) | resultbuffer[23]) / 100 // - сумма по задействоанным тарифам
t1 = float((resultbuffer[30] << 32) | (resultbuffer[29] << 16) | (resultbuffer[28] << 8) | resultbuffer[27]) / 100;
t2 = float((resultbuffer[34] << 32) | (resultbuffer[33] << 16) | (resultbuffer[32] << 8) | resultbuffer[31]) / 100;
t3 = float((resultbuffer[38] << 32) | (resultbuffer[37] << 16) | (resultbuffer[36] << 8) | resultbuffer[35]) / 100;
t4 = float((resultbuffer[42] << 32) | (resultbuffer[41] << 16) | (resultbuffer[40] << 8) | resultbuffer[39]) / 100;

Причём sum_all равен sum_act_t.
И температура устройства может быть отрицательной. Надо знак проверять.

Кодируется так же как и для Cos ф (значение выше 128 (байтом 0x80) например 0x05 0x80 для -0,005 и 0x0F 0x80 для -0,015)?
Код:
if (resultbuffer[19] >= 128) {
cosinA = float((resultbuffer[18] | ((resultbuffer[19] - 128) << 8))) / -1000;}
else {cosinA = float((resultbuffer[18] | (resultbuffer[19] << 8))) / 1000;}

Можно от счетчика получить какой текущий тариф сейчас работает. Это в конфигурационном (14) байте. Как то так, например:
Код:
    MirtekCurrentT = ((resultbuffer[14] >> 2 ) & 0b00000011 ) + 1;
    Serial.print("Current Tariff: T");
    Serial.println(MirtekCurrentT);

А тут можно по подробнее? Это получается байт который равен 0x62? Почему +1? Какие варианты получения ответа?
Проверил, при переходе 22:59 в 23:01 байт меняется с 0x62 на 0x66.
А как расшифровать A8 3 5B 0 ? иногда принимает значение A8 43 5B 0, причём этот кусок встречается в любом ответе на запрос вне зависимости от команды, проверял прохождение 22:59 на 23:01, не повлияло, пока изменение не понятно когда происходит.

Трейтий байт принятого пакета 0x1E он же в двоичной системе:
0x00011110b --> C 0 | V0 0 | D 0 | L4 1 | L3 1 | L2 1 | L1 1 | L0 0
Parameters:
бит C – кодирование данных,
0 - данные не закодированы;
1 - данные требуют раскодирования;
биты V0 – вид структуры пакета:
0 - пакета для устройств с малыми вычислительными мощностями (счетчиков);
1 - пакета для устройств с достаточными вычислительными мощностями (УСПД).
бит D – Направление движения пакета (1 – запрос к устройству, 0 – ответ устройства);
биты L4…L0 –длинна поля Data, значения могут принимать (0 до 31) в зависимости от структуры - 0x11110b -> 30 байт.

Согласно L4-L0 - длина пакета 30 байт:
Код:
0 62 1 0 1 0 AF FE 18 0 AF FE 18 0 74 22 11 0 3B DC 7 0 0 0 0 0 0 0 0 0
в аккурат между байтов A8 3 5B 0 и CRC, причём считается с 1 по 30 байт. Причём считается что L4 старший бит, а L0 младший, иначе длина получится 15, а не 30. А при запросе даты/времени данный байт длины равен 0x07h (0x00000111b), что для L4-L0 составляет 0x00111, что соответствует длине в 7 байт.
Код:
0x07h --> 0x0000111b

0x00000111b --> C 0 | V0 0 | D 0 | L4 0 | L3 0 | L2 1 | L1 1 | L0 1
бит C – кодирование данных,
0 - данные не закодированы;
биты V0 – вид структуры пакета:
0 - пакета для устройств с малыми вычислительными мощностями (счетчиков);
бит D – Направление движения пакета (1 – запрос к устройству, 0 – ответ устройства);
биты L4…L0 –длинна поля Data, значения могут принимать (0 до 31) в зависимости от структуры - 0x00111b -> 7 байт.

Теперь понятная расшифровка байта 3 при отправке:
Дата/время - команда 1C,
Код:
transmitt_byte[3] = 0x20; //тип запроса/пакета
0x20h --> 0x00100000b

0x00100000b --> C 0 | V0 0 | D 1 | L4 0 | L3 0 | L2 0 | L1 0 | L0 0

бит C – кодирование данных,
0 - данные не закодированы;
биты V0 – вид структуры пакета:
0 - пакета для устройств с малыми вычислительными мощностями (счетчиков);
бит D – Направление движения пакета (1 – запрос к устройству, 0 – ответ устройства);
биты L4…L0 –длинна поля Data, значения могут принимать (0 до 31) в зависимости от структуры - 0x00000b -> 0 байт, дополнительная подкоманда не передается.

Остальные (0x05, 0x00; 0x2b, 0x00; 0x2b, 0x10):
Код:
transmitt_byte[3] = 0x21; //тип запроса/пакета
0x21h --> 0x00100001b

0x00100001b --> C 0 | V0 0 | D 0 | L4 0 | L3 0 | L2 0 | L1 0 | L0 1

бит C – кодирование данных,
0 - данные не закодированы;
биты V0 – вид структуры пакета:
0 - пакета для устройств с малыми вычислительными мощностями (счетчиков);
бит D – Направление движения пакета (1 – запрос к устройству, 0 – ответ устройства);
биты L4…L0 –длинна поля Data, значения могут принимать (0 до 31) в зависимости от структуры - 0x00001b -> 1 байт, передается подкоманда transmitt_byte[14] = c14;.
Последний раз редактировалось SysCat Чт авг 10, 2023 23:17:00, всего редактировалось 1 раз.

Re: Модуль отображения информации МИРТ-830 из ардуины

Чт авг 10, 2023 23:13:10

Кодируется так же как и для Cos ф? (значение выше 128 (байтом 0x80))
Да, только с учетом, что по описанию один байт.

В том же вордовом файле есть описание конфигурационного байта, который отдается на 05 команду:
Код:
*Конфигурационный байт:
Биты 1,0 – положение точки на ЖКИ
(00-«00000000»,  01-«0000000.0»,
 10-«000000.00», 11-«00000.000»)
Бит 3,2 – действующий тариф (0-1й);
Бит 5,4 – количество знаков ОУ (отчетное устройство)
   (0 - 6,1 - 7, 2 - 8, 3 - 8);
Бит 7,6 – Количество задействованных тарифов (0 - только 1й, 1 - 1й и 2й,
         2 - 1й,2й,3й, 3 - 1й,2й,3й,4й);

вот приняли в этом байте 0х66 - > 0b01100110.
10 - 000000.00
01 - действующ тариф
10 - количество знаков ОУ
01 - 2 тарифа
Отсюда и "+1" , как я понял, что 00 - Т1, 01 - Т2, 10 - Т3, 11 - Т4. Т.е биты 3,2 будут меняться от времени запроса. Все остальное должно остаться неизменным.
Смотрите на время, которое отдает счетчик. Не факт , что оно совпадает с реальным.

вот с моего счетчика ответ на команду "0x05 00"
73 55 1E 0 FE FF EC 4 5 A8 1 53 0 0 66 1 0 1 0 D1 2F 22 0 D1 2F 22 0 FB 24 15 0 D6 A D 0 0 0 0 0 0 0 0 0 D2 55
2 стартовых пакета 73 55
1 параметры+длина 1E
1 резерв 00
2 адрес EC 04 (01260)
1 команда 05
4 статус A8 01 53 00 (A8 тип счетчика, 01 53 статус, 00 ошибок нет)
дальше ответ по команде, из описания
Код:
Выходные данные (30 байт):
1 байт – тип энергии,
1 байт – конфигурационный байт;
2 байта – коэф. трансформации по напряжению;
2 байта – коэф. трансформации по току;
4 байта - сумма полная;
4 байта - сумма по задействованным тарифам;
16 байт – значения по тарифам

Re: Модуль отображения информации МИРТ-830 из ардуины

Чт авг 10, 2023 23:36:51

Понял, при прохождении отметки 22:59 - байт равен 0x62h --> 0x01100010b превращается в байт 0x66h --> 0x01100110b

Согласно расшифровке:
0x62h (после 07:00 до 23:00) --> 0x011000010b
считаем справа на лево, итого:
бит 1,0 = 0x10b;
бит 3,2 = 0x00b;
бит 5,4 = 0x10b;
бит 7,6 = 0x10b.

Конфигурационный байт:
Биты 1,0 – положение точки на ЖКИ
(00-«00000000», 01-«0000000.0»,
10-«000000.00», 11-«00000.000»)
Бит 3,2 – действующий тариф (0-1й); --> 0x00b --> 0 --> t1
Бит 5,4 – количество знаков ОУ
(0 - 6,1 - 7, 2 - 8, 3 - 8 ) 0x00b, 0x01b, 0x10b, 0x11b; --> 0x10b --> 2 --> 8
Бит 7,6 – Количество задействованных тарифов (0 - только 1й, 1 - 1й и 2й,
2 - 1й,2й,3й, 3 - 1й,2й,3й,4й); что соответствует в бинарном формате 0x00b, 0x01b, 0x10b, 0x11b --> 0x01b --> 1

0x66h (после 23:00 до 07:00) --> 0x011000110b
считаем справа на лево, итого:
бит 1,0 = 0x10b;
бит 3,2 = 0x01b;
бит 5,4 = 0x10b;
бит 7,6 = 0x10b.

Конфигурационный байт:
Биты 1,0 – положение точки на ЖКИ
(00-«00000000», 01-«0000000.0»,
10-«000000.00», 11-«00000.000»)
Бит 3,2 – действующий тариф (0-1й); --> 0x01b --> 1 --> t2
Бит 5,4 – количество знаков ОУ
(0 - 6,1 - 7, 2 - 8, 3 - 8 ) 0x00b, 0x01b, 0x10b, 0x11b; --> 0x10b --> 2 --> 8
Бит 7,6 – Количество задействованных тарифов (0 - только 1й, 1 - 1й и 2й,
2 - 1й,2й,3й, 3 - 1й,2й,3й,4й); что соответствует в бинарном формате 0x00b, 0x01b, 0x10b, 0x11b --> 0x01b --> 1

4 статус A8 01 53 00 (A8 тип счетчика, 01 53 статус, 00 ошибок нет)

У меня статусы были другие: 0x03 0x5B и 0x43 0x5B.

0xA8 - Счетчик электроэнергии 3ф трансформаторный активно-реактивный (двунаправленный с параметрами сети)
Последний раз редактировалось SysCat Пт авг 11, 2023 00:00:27, всего редактировалось 1 раз.

Re: Модуль отображения информации МИРТ-830 из ардуины

Чт авг 10, 2023 23:57:59

У меня ваш скетч не корректно работает с MQTT. Похоже, что валится при попытке отправки принятого длинного сырого пакета.
возможно эта строчка :
Код:
mqttClient.publish("mirtek/" + (String)MeterAdressValue + "/Packet_recive", packet);
Если эту строку закомментировать, то работает.

Для диагностики лог с сервера mosquitto
Код:
1691699273: Received PUBLISH from Mirtek_GW (d0, q0, r0, m0, 'mirtek/01260/Packet_send', ... (41 bytes))
1691699273: Received PUBLISH from Mirtek_GW (d0, q0, r0, m0, 'mirtek/01260/Packet_recive', ... (56 bytes))
1691699273: Received PUBLISH from Mirtek_GW (d0, q0, r0, m0, 'mirtek/01260/LastRequest', ... (22 bytes))
1691699283: Received PINGREQ from Mirtek_GW
1691699283: Sending PINGRESP to Mirtek_GW
1691699284: Received PUBLISH from Mirtek_GW (d0, q0, r0, m0, 'mirtek/01260/Packet_send', ... (43 bytes))
1691699284: Client Mirtek_GW closed its connection.
1691699289: New client connected from 192.168.13.162:57624 as Mirtek_GW (p2, c1, k10, u'mqttuser').
1691699289: Sending CONNACK to Mirtek_GW (0, 0)


Добавлено after 3 minutes 29 seconds:
У меня статусы были другие: 0x03 0x5B и 0x43 0x5B.

Можно разобрать побитно по тому же документу, понять что меняется.

Код:
Информационное поле
W SY M2 M1 P3 P2 P1 JL
JL - Есть изменения в журнале (0 - нет, 1- да);
P1 - Вскрытие пломбы крышки клеммной колодки;
P2 - Вскрытие пломбы крышки корпуса;
P3 - Вскрытие пломбы крышки модуля связи;
M1 - Воздействие постоянного магнитного поля
M2 - Воздействие переменного магнитного поля
SY - Синхронизация времени была в текущих сутках
W - Достигнут критический уровень потребительского баланса


0x43 - 0100 0011 . "Синхронизация времени была в текущих сутках". Возможно ваш вариант с двухсторонней телеметрией
Последний раз редактировалось paulerr Пт авг 11, 2023 00:05:16, всего редактировалось 1 раз.

Re: Модуль отображения информации МИРТ-830 из ардуины

Пт авг 11, 2023 00:04:46

У меня ваш скетч не корректно работает с MQTT. Похоже, что валится при попытке отправки принятого длинного сырого пакета.
возможно эта строчка :
Код:
mqttClient.publish("mirtek/" + (String)MeterAdressValue + "/Packet_recive", packet);
Если эту строку закомментировать, то работает.

Для диагностики лог с сервера mosquitto
Код:
1691699273: Received PUBLISH from Mirtek_GW (d0, q0, r0, m0, 'mirtek/01260/Packet_recive', ... (56 bytes)) - принял же 56 байт
....
1691699284: Client Mirtek_GW closed its connection. - дисконнект (возможно клиент и сервер не в одной сети)
1691699289: New client connected from 192.168.13.162:57624 as Mirtek_GW (p2, c1, k10, u'mqttuser') - коннект.

Там пакет не сырой, обработан байтстафингом, странно конечно, у меня работает и других вроде тоже, у Вас по логам MQTT принял 56 байт "сырого" пакета (с учетом пробелов). Судя по логам ESP32 разорвал соединение с сервером MQTT (такое обычно когда они не в одной сети).

Саму отправку/прием пакетов сделал как дебаг, так как удаленно смотрел пакеты для парсинга новых данных и в новой версии уже отключил.
Последний раз редактировалось SysCat Пт авг 11, 2023 00:11:08, всего редактировалось 2 раз(а).

Re: Модуль отображения информации МИРТ-830 из ардуины

Пт авг 11, 2023 00:08:35

Сырой я так обозвал.. От 05 команды явно длиннее, чем ответ на запрос времени.
То, что я сам писал висло через 1-3 суток работы. Причем висяк еще и происходил со включенным передатчиком :shock: У меня метеостанция на 433 МГц терялась :)
Так что это может быть мой конкретный ESP32 глючит...

Re: Модуль отображения информации МИРТ-830 из ардуины

Пт авг 11, 2023 00:28:30

Тогда получается так:
0x01 --> 0x00000001b --> 0xW 0 | SY 0 | M2 0 | M1 0 | P3 0 | P2 0 | P1 0 | JL 1
JL - Есть изменения в журнале (0 - нет, 1- да);
P1 - Вскрытие пломбы крышки клеммной колодки (0 - нет, 1 - да);
P2 - Вскрытие пломбы крышки корпуса (0 - нет, 1- да);
P3 - Вскрытие пломбы крышки модуля связи (0 - нет, 1- да);
M1 - Воздействие постоянного магнитного поля (0 - нет, 1- да);
M2 - Воздействие переменного магнитного поля (0 - нет, 1- да);
SY - Синхронизация времени была в текущих сутках (0 - нет, 1- да);
W - Достигнут критический уровень потребительского баланса (0 - нет, 1- да).

0x03 --> 0x00000011b
JL - Есть изменения в журнале (0 - нет, 1- да);
P1 - Вскрытие пломбы крышки клеммной колодки (0 - нет, 1 - да);
P2 - Вскрытие пломбы крышки корпуса (0 - нет, 1- да);
P3 - Вскрытие пломбы крышки модуля связи (0 - нет, 1- да);
M1 - Воздействие постоянного магнитного поля (0 - нет, 1- да);
M2 - Воздействие переменного магнитного поля (0 - нет, 1- да);
SY - Синхронизация времени была в текущих сутках (0 - нет, 1- да);
W - Достигнут критический уровень потребительского баланса (0 - нет, 1- да).

0x43 --> 0x01000011b
JL - Есть изменения в журнале (0 - нет, 1- да);
P1 - Вскрытие пломбы крышки клеммной колодки (0 - нет, 1 - да);
P2 - Вскрытие пломбы крышки корпуса (0 - нет, 1- да);
P3 - Вскрытие пломбы крышки модуля связи (0 - нет, 1- да);
M1 - Воздействие постоянного магнитного поля (0 - нет, 1- да);
M2 - Воздействие переменного магнитного поля (0 - нет, 1- да);
SY - Синхронизация времени была в текущих сутках (0 - нет, 1- да);
W - Достигнут критический уровень потребительского баланса (0 - нет, 1- да).

0x5B --> 0x01011011b --> N 0 | AR 1 | ND 0 | W 1 | R2 1 | R1 0 | R0 1 | J 1
J – Положение заводской перемычки: (1 – отсутствует, 0 – установлен);
R0 – Наличие реле: (0 не имеет реле, 1 –имеет реле);
R1 – Тип реле: (0 – реле отключения, 1 – реле управления);
R2 – Состояние реле: (0 – держит нагрузку, 1 – отключило нагрузку);
IN – Импульсный вход учета: (0 – есть, 1 – нет);
ND - Возникновение аварийной ситуации (0 - нет аварии, 1 - авария);
AR – Авто-регистрация (0 – отключена, 1 – включена).
N – Небаланс токов: (0– нет небаланса, 1 – есть небаланс).

Позже тогда внесу доработки в код, расширив парсинг.
:)) paulerr - спасибо за доработки! Вместе мы сила!

Re: Модуль отображения информации МИРТ-830 из ардуины

Пт авг 11, 2023 00:49:13

P1 - Вскрытие пломбы крышки клеммной колодки (0 - нет, 1 - да)
А что Вам на это говорят местные электросети?

R1 – Тип реле: (0 – реле отключения, 1 – реле управления);
R2 – Состояние реле: (0 – держит нагрузку, 1 – отключило нагрузку);
фигня какая-то, электричество выключили?
Может не стоит это парсить, вопросов много будет?

Возможно в веб морде стоит нарисовать по данным счетчика график потребления по месяцам. Он же в себе хранит срезы, вопрос только в месте на esp32

Re: Модуль отображения информации МИРТ-830 из ардуины

Пт авг 11, 2023 01:12:45

А что Вам на это говорят местные электросети?

У меня в свое время были перепутаны провода и при замене одиночных алюминиевых линий на витой кабель было не верное подключение, по стандарту по цветам одно, по факту те кто заводил в дом от столба руководствовался своей логикой. И при переключении мне не корректно подключили, так что получилось 2 фазы со столба в розетке сразу, возможно что-то тогда потом и ковыряли, меняли подключение, не помню точно был ли уже тогда счетчик или нет, но счетчик на столбе высоко, пока претензий не было. Мы же продвинулись и читаем значения со счетчика выше тех, которые заложены в пульте. :)

R1 – Тип реле: (0 – реле отключения, 1 – реле управления);
R2 – Состояние реле: (0 – держит нагрузку, 1 – отключило нагрузку);
фигня какая-то, электричество выключили?
Может не стоит это парсить, вопросов много будет?

При выключенном электричестве значений бы от счетчика не поступало бы, ранее пару раз срабатывало реле в самом счетчике когда станок запускал и были кз, но автоматы в доме не срабатывали, сработала защита в самом счетчике, тогда на пульте (4-х кнопочном) и рисовало разомкнутый контакт, через 15 минут оно самовосстанавливалось. Тут данные согласно Word-овскому файлу, возможно в нем тоже есть ошибки. Так же есть же реле NO и NC, может то которое установлено - инвертное и значения на самом деле нужно инвертировать?!

У Вас статус 0x01h 0x53h - Вам проще :))
0x53h --> 01010011b
J – Положение заводской перемычки: (1 – отсутствует, 0 – установлен);
R0 – Наличие реле: (0 не имеет реле, 1 –имеет реле);
R1 – Тип реле: (0 – реле отключения, 1 – реле управления);
R2 – Состояние реле: (0 – держит нагрузку, 1 – отключило нагрузку);
IN – Импульсный вход учета: (0 – есть, 1 – нет);
ND - Возникновение аварийной ситуации (0 - нет аварии, 1 - авария);
AR – Авто-регистрация (0 – отключена, 1 – включена).
N – Небаланс токов: (0 – нет небаланса, 1 – есть небаланс).


Возможно в веб морде стоит нарисовать по данным счетчика график потребления по месяцам. Он же в себе хранит срезы, вопрос только в месте на esp32

Это надо реализовывать работу с EEPROM, работу с RDTools, тема хорошая, но пока с этим не работал. В счетчике есть какие-то данные прям за разный период. Но надо делать парсинг.

Есть тоже интересный приборчик - PowerMeter там реализовано все на Demos W1 mini, данные хранятся в EEPROM откуда строятся графики в Web-интерфейсе --> вот так например:
СпойлерИзображение
Нам бы для начала реализовать OTA обновление прошивки бы :))

А вы заметили, что:
Бит 5,4 – количество знаков ОУ
(0 - 6,1 - 7, 2 - 8, 3 - 8 ) 0x00b, 0x01b, 0x10b, 0x11b;
2-я конфигурация - 8 символов и
3-я конфигурвция - 8 символов? :))

Re: Модуль отображения информации МИРТ-830 из ардуины

Пт авг 11, 2023 13:38:27

Мы тут доки смотрим от ИЭКа - может быть конфигурация разная с Миртеком
Для жилого дома точное соответствие фаз (L1, L2, L3) не сильно принципиально. Если есть 3х фазный двигатель, то прибором найти правильное чередование фаз. У нас уже пару лет идет замена старой проводки на СИП и уже раза три менялись фазы. В щитке стоит 3х фазный вольтметр, и хорошо видно изменения, ибо на разных фазах сильно напряжение гуляет по разному. Вот обещают в этом году закончить - на вводном автомате перекину провода для правильного чередования.

Про ОТА: для библиотеки IotWebConf есть пример IotWebConf04UpdateServer . Похоже на ОТА.

Re: Модуль отображения информации МИРТ-830 из ардуины

Сб авг 19, 2023 11:19:10

Всем привет!
SysCat, спасибо за старания!
В моем случае последняя сборка заработала после внесения следующих правок:
1. Почему-то принимаемый пакет после байта 0x55 содержит всегда еще один байт. Из-за этого вычисление CRC работало неверно. Для решения добавил в обработке байтстаффингом:
Код:
if (tempbuffer[i] == 0x55 and tempbuffer[i-1] != 0x73){
   break;   
   }

2. Так же как у paulerr mqtt не получал никакие данные кроме даты последнего обращения к счетчику, пока не закомментил строчку
Код:
mqttClient.publish("mirtek/" + (String)MeterAdressValue + "/Packet_recive", packet);

3. int gdo0 = 2 (вместо 22); #define STATUS_PIN 16 (вместо 2). Тут не разбирался что к чему, саму схемку паял давно для первой версии скетча, сейчас просто подставил старые значения, т.к. с новыми все зависало глухо при отправке запроса

Re: Модуль отображения информации МИРТ-830 из ардуины

Сб авг 19, 2023 18:04:37

1. Почему-то принимаемый пакет после байта 0x55 содержит всегда еще один байт. Из-за этого вычисление CRC работало неверно. Для решения добавил в обработке байтстаффингом:
Код:
if (tempbuffer[i] == 0x55 and tempbuffer[i-1] != 0x73){
   break;   
   }

У Вас случаем не однофазный счетчик? Тут у Вас проверка, что если подряд НЕ идут 0x73 0x55 (стартовый пакет), странно что у вас он в конце попадается, но таким образом при первом значении 0x55 он должен выйти из цикла и далее не обрабатывать пакет, таким образом в результирующий буффер может попасть пакет не полностью, и парсинги не будут работать, если в середине пакета встретиться зачине 0x55 как значение, а не маркер старта/стопа пакета. Если я правильно понимаю.
2. Так же как у paulerr mqtt не получал никакие данные кроме даты последнего обращения к счетчику, пока не закомментил строчку
Код:
mqttClient.publish("mirtek/" + (String)MeterAdressValue + "/Packet_recive", packet);

Очень странно у меня и знакомого все работает, но это строка более для отладки была, туда выводится полученный пакет.
3. int gdo0 = 2 (вместо 22); #define STATUS_PIN 16 (вместо 2). Тут не разбирался что к чему, саму схемку паял давно для первой версии скетча, сейчас просто подставил старые значения, т.к. с новыми все зависало глухо при отправке запроса

Тут физически надо перепаять 2 контакт на 22 между ESP32 и CC1101, что так же писалось выше.

Re: Модуль отображения информации МИРТ-830 из ардуины

Сб авг 19, 2023 22:04:40

У Вас случаем не однофазный счетчик?

Нет, счетчик 3ф, большой, с экраном.
но таким образом при первом значении 0x55 он должен выйти из цикла и далее не обрабатывать пакет, таким образом в результирующий буффер может попасть пакет не полностью, и парсинги не будут работать, если в середине пакета встретиться зачине 0x55 как значение, а не маркер старта/стопа пакета.

Почему-то в принимаемом пакете всегда есть хвост после байта 0x55. В середине 0x55 попасться не может, т.к. обрезка происходит ДО обратного байтстаффинга (то есть в сыром принимаемом пакете). А 55 в середине может появиться только после байтстаффинга.

Re: Модуль отображения информации МИРТ-830 из ардуины

Пт окт 06, 2023 18:20:54

Добрый день.
Никто не сталкивался с Миртеками у которых радиомодуль на 2400МГц? Интересно, чем к нему можно подключиться из доступных радиомодулей, какой там протокол радиосвязи, частота, модуляция и т.д. У производителя есть модем МИРТ-541, но он уж очень дорогой. Судя по всему, для MeterTools он выглядит как com-порт. Сомневаюсь, что там WiFi; по документам ZigBee - это отдельная опция.
Конкретно у меня модификация RF2400/2.

Производитель пишет очень мало:
СпойлерСкорость обмена информации при связи со счетчиком по радиоинтерфейсу
на 2400 МГц в радиоканале составляет 250 кБод/с.
• RF2400/1 – радиомодуль с модуляцией сигнала в радиоэфире №1, по умолчанию рабочая частота излучения 2404,880404 МГц;
• RF2400/2 – радиомодуль с модуляцией сигнала в радиоэфире №2;
• RF2400/3 – радиомодуль с модуляцией сигнала в радиоэфире №3, по умолчанию рабочая частота излучения 2404,880404 МГц;
• RF2400/4 – радиомодуль с модуляцией сигнала в радиоэфире №4;
• RF2400/5 – радиомодуль с модуляцией сигнала в радиоэфире №2 и возможность передачи информации об отключении питания у счетчика;
• RF2400/6 – радиомодуль работающей в стандарте Bluetooth 5.0 предназначенный для работы с индикаторным устройством. Модуль по умолчанию имеет встроенную антенну.

Re: Модуль отображения информации МИРТ-830 из ардуины

Пт окт 13, 2023 21:36:11

Добрый день.
Никто не сталкивался с Миртеками у которых радиомодуль на 2400МГц?

В MeterTools доступны следующие типы каналов связи: RS232, Ethernet, M2MConnect, HayesModem, TechReport, Bluetooth. Режима ZigBee не видно.
СпойлерИзображение

Так же вроде есть модуль на основе CC1101 на 2.4Ghz (2.4GHz Full-duplex UART 2km 100mw Wireless CC1100/CC1101 RF Transceiver Module)
СпойлерИзображение

https://www.alibaba.com/product-detail/ ... 98214.html

AS69-T20 2,4G nRF24L01 UART двунаправленный модуль беспроводной последовательной передачи
https://aliexpress.ru/item/32880748312. ... 5607378660

Re: Модуль отображения информации МИРТ-830 из ардуины

Вт ноя 14, 2023 17:52:04

Купил миртек с опцией 2400/2 для экспериментов. Спасибо продавцу, он совершенно бесплатно добавил модуль 2400/2 от неисправного трехфазного счетчика. Но задачка подключения не такая простая, как я надеялся.
Модуль называется "ComMod Z", построен на контроллере EM357. Интернет утверждает, что это разработка ООО "ТелеПозиционный Проект". Больше никакой информации не нашел, кроме той, что модули с таким же названием ставились не только в счетчики миртек. Но не факт, что с аналогичной прошивкой и настройками.

Модуль ComMod Z
СпойлерИзображение Изображение

Другой модуль, установленный в счетчик
СпойлерИзображение


Подключается он к счетчику 4 выводами, GND, 5V, Rx, Tx, протокол UART. При старте происходит обмен модуля со счетчиком, потом тишина.
СпойлерИзображение[/url]
Первый канал - Rx модуля, второй - Tx.

Запрос и ответ:
Код:
73 55 20 00 0C F5 FF FF 1C 00 00 00 00 A1 55
73 55 07 00 FF FF 0C F5 1C 98 07 53 00 29 22 02 01 06 08 12 F1 55

F50C - это адрес счетчика, команда 1C - запрос даты-времени. Запрос и ответ повторяется 2 раза, различаются только секунды в ответе. Затем полная тишина.
Получается, что модуль знает адрес счетчика и конфигурируют его заранее. И он не просто прозрачный радиомодем, а способен самостоятельно получать данные и, видимо, отправлять их в радиоканал.
EM357 это ZigBee передатчик, но он может реализовать и "ZigBee-подобный" протокол, тогда без его прошивки не разобраться, что он и как передает. И получится ли его связать с китайскими ZigBee модулями. Надеюсь, что это все же обычный ZigBee.

Пока что идеи понять что это и как работает закончились.

Re: Модуль отображения информации МИРТ-830 из ардуины

Вт ноя 14, 2023 21:47:40

Так же вроде есть модуль на основе CC1101 на 2.4Ghz (2.4GHz Full-duplex UART 2km 100mw Wireless CC1100/CC1101 RF Transceiver Module)
CC1101 работает только на частотах ниже 1 ГГц. Там на сайте ошибка в описании.
Ответить