Я думал, что речь идёт о прошивке пульта[/uquote]
v1 и v2 - прошивки отличаются, схемы тоже.
Код: Выделить всё
735520008d4effff0500000000ae55 - запрос 15
73551a00ffffxxxx0530067500 |3af51400|a2203001|0000|44050600|91240600|65cb0800|00000000|bc55 - ответ 41
73551a00ffff8d4e053006731100|bad62300|a2203001|0000|ea260b00|598d0a00|77220e00|00000000|6d55 - ответ 42
head | sum | ? | ? | tariff1| tariff2| tariff3| tariff4|
Код: Выделить всё
static uint8_t checksum(const uint8_t *src_buffer, uint8_t len) {
// skip 73 55 header (and 55 footer is beyond checksum anyway)
const uint8_t* table = &src_buffer[2];
const uint8_t packet_len = len - 4;
const uint8_t generator = 0xA9;
uint8_t crc = 0;
for(const uint8_t* ptr = table; ptr < table + packet_len; ptr++){
crc ^= *ptr;
for (uint8_t bit = 8; bit > 0; bit--)
if (crc & 0x80)
crc = (crc << 1) ^ generator;
else
crc <<= 1;
}
return crc;
}
Код: Выделить всё
73550400ffff8d4e0130067311000a048d4e0655
73551f00ffff8d4e3030067311002c0a045bb66ae617077e6cd9020000e6b0ac1b95110302000000040000fb0a2a55
73551f00ffff8d4e3030067311002c0a045bb66be617077e6cd9020000e6b0ac1b96110302000000040000fb0a1055
73551f00ffff8d4e0a3006731100013331373131313235323031303900000000000000000000000000000000001355
73551f00ffff8d4e0a300673110004cac0d1cac0c42d312dccd22d57312d41312d3233302d352d3630412d532dc655
73550700ffff8d4e1c30067311001b031301100117e655
73550500ffff8d4e2d3006731100000000a220e955
73550300ffff8d4e29300673110001a6595155
73550400ffff8d4e2c300673110001b40000fe55
Код: Выделить всё
73551f00ffff921430300675002c0a045bb6d2f9c808e00c2b010000e6b0ac1bf1d12509000000040000e10cee55
73551f00ffff92140a30067500013431383131313235303532363600000000000000000000000000000000009655
73551f00ffff92140a3006750004cac0d1cac0c42d312dccd22d57312d41312d3233302d352d3630412d532d6655
73550700ffff92141c3006750028151206150117a955
73550500ffff92142d30067500290000a220c055
73550300ffff9214293006750001185bf955
73550400ffff92142c3006750001b608002c55
Код: Выделить всё
735524009214ffff2600000000150117015655 - 19 байт, команда 26, добавочный блок 15011701 ????
73551600ffff9214263006750015011701a28a1b401b401740164013400f400d400c407155 - 37 байт, ответ


Код: Выделить всё
735524009214ffff2600000000150117015655 - 19 байт, команда 26, добавочный блок 15011701 ????
73551600ffff9214263006750015011701a28a1b401b401740164013400f400d400c407155 - 37 байт, ответ
Код: Выделить всё
#define STATUS_PIN 16Код: Выделить всё
#define STATUS_PIN 2Код: Выделить всё
int gdo0 = 2Код: Выделить всё
int gdo0 = 22Код: Выделить всё
v1>400 or v2>400 or v3>400 or i1>60 or i2>60 or i3>60



Код: Выделить всё
mqttClient.subscribe("mirtek/" + (String)MeterAdressValue + "action");Код: Выделить всё
mqttClient.subscribe("mirtek/" + (String)MeterAdressValue + "/action");Увы, но делал более строгий контроль значений, так вот иногда они умудряются прилетать практически нормальными, но рандомными. Такое редко бывает, но прилетали показания с меньшими значениями по тарифам например, или нагрузка в 50Аv1>400 or v2>400 or v3>400 or i1>60 or i2>60 or i3>60
Костыль конечно, но вроде так будет правильнее.
Там в парсере же проверяется номер счетчика, соответственно если номер не совпадает, то пакет не разбирается, это как раз и защита от ответа несколько счетчиков одновременно в эфир.Возможно это сотня счётчиков вокруг отвечает одновременно и всё бьётся, ибо вроде я не видел в функции парсинга проверки контрольной суммы (давно ковырял, не помню)