Mega 2561 и MQTT
Re: Mega 2561 и MQTT
Я не разбираюсь в MQTT, поскольку им не пользуюсь. Но исходя из идеологии Меги, которая изначально закладывалась, об изменении состояния выходов Мега вообще не сообщает на сервер. Считается, что сервер сам в любой момент может опросить Мегу о состоянии выходов.
Значит, подозреваю, что эти изменения вообще не публикуются (ни моментально, ни позже).
Мега сообщает серверу только об изменении состояния входов.
Если я не прав, пусть меня поправят.
Что касается вопроса, "где почитать", то я читаю ветку FAQ и про прошивку. Хотя да, для тех, кто давно "в теме", это вроде как само собой очевидный, устоявшийся момент. Для новичков - это все, конечно, не очевидно.
Значит, подозреваю, что эти изменения вообще не публикуются (ни моментально, ни позже).
Мега сообщает серверу только об изменении состояния входов.
Если я не прав, пусть меня поправят.
Что касается вопроса, "где почитать", то я читаю ветку FAQ и про прошивку. Хотя да, для тех, кто давно "в теме", это вроде как само собой очевидный, устоявшийся момент. Для новичков - это все, конечно, не очевидно.
Последний раз редактировалось Ruslan 02 фев 2018, 09:51, всего редактировалось 1 раз.
Re: Mega 2561 и MQTT
Да. Заработало. Спасибо!Andrey_B писал(а): ↑01 фев 2018, 17:19Попробуйте.
https://ab-log.ru/files/File/megad-2561 ... a9-hex.zip
Теперь вместо "{%for kv in value_json.value.split(';')%}{%set k_v=kv.split(':')%}{%if k_v[0]=='ff5f5fa61503'%}{{k_v[1]}}{%endif%}{%endfor%}" можно писать более лаконичное "{{ value_json.value.ff5f5fa61503 }}".
Два вопроса.
Первый. Видимо состояние busy все же лучше вместо {"port":35,"value":{busy}} возвращать {"port":35,"value":"busy"}. Потому как текущий ответ не является корректным json документом.
Второй вопрос в системности подхода - можно ли его распространить и на другие "составные" сенсоры? Например, для BMX280 возвращать вместо {"port":32,"value":"temp:26.91/press:763.02/hum:20.346"} такой ответ - {"port":32,"value":{"temp":26.91,"press":763.02,"hum":20.346}}.
Последний раз редактировалось r7s 02 фев 2018, 03:54, всего редактировалось 2 раза.
Re: Mega 2561 и MQTT
Да. Публикуются только входы. Да и те только активные ("кнопки"). Сенсоры не публикуются.martiniman писал(а): ↑01 фев 2018, 20:34Т.е. Факт включения нагрузки не публикуется моментально?
Публикуются только входы?
Не нашел где почитать, чтобы глупых вопросов не задавать.
Логика такова, что если вы "сервер" и отдали команду меге, то вы сами знаете ее состояние. Да, здесь есть некоторое "оптимистичное" предположение, что мега 100% выполнила вашу команду, что в подавляющем большинстве случаев и будет правдой. Поэтому публикация дополнительной информации о состоянии - избыточна.
Аналогично по сенсорам, если сервер нуждается в информации о их значениях, он их запрашивает. В остальное время ресурсы меги и сети не тратятся попусту. Если серверу эта информация нужна периодически, он сам может определить период, хоть динамический, и опрашивать мегу.
Вопрос только, что меге можно отдать "сложную" команду, наподобие опции smooth для pwm каналов. В этом случае сервер может только подозревать о текущем значении выхода, а для того, что бы знать точно - ему все же придется спросить мегу.
Re: Mega 2561 и MQTT
Чтобы никого не путать поправьте в этом абзаце все "входы" на "выходы".
Для новичков - практически все моменты освещены ЗДЕСЬ, правда не могу уговорить Андрея чтобы он сделал спойлеры, иначе во всем этом труде ориентироваться тяжело. Кроме этого, можно ориентироваться по обновлениям прошивки ЗДЕСЬ. Ну и если осилить всю тему про Прошивку MegaD-2561, то вы будете "Гуру"
Re: Mega 2561 и MQTT
Re: Mega 2561 и MQTT
Попробуйте.r7s писал(а): ↑02 фев 2018, 02:38Два вопроса.
Первый. Видимо состояние busy все же лучше вместо {"port":35,"value":{busy}} возвращать {"port":35,"value":"busy"}. Потому как текущий ответ не является корректным json документом.
Второй вопрос в системности подхода - можно ли его распространить и на другие "составные" сенсоры? Например, для BMX280 возвращать вместо {"port":32,"value":"temp:26.91/press:763.02/hum:20.346"} такой ответ - {"port":32,"value":{"temp":26.91,"press":763.02,"hum":20.346}}.
https://ab-log.ru/files/File/megad-2561 ... a1-hex.zip
Re: Mega 2561 и MQTT
C Wireshark не работал, поэтому пока это для меня сложно, да сервер без GUI
Могу дать вывод mosquitto -v, с моими пояснениями. Видно, что брокер получает команду от Openhab и отправляет ее на Мегу, но та исполняет не всегда все:
MegaD-2561 by ab-log.ru (fw: 4.24b1)
P3 - сенсор TTP223
P5 - SDA PCA9685 (подключен RGB LED, реле для щелчка обратной связи
P15 - релейный выход на светильник
Включение света - нормальная работа: коснулся сенсора реле щелкнуло, свет включился, диод во время касания красный, потом зеленый
Код: Выделить всё
1517559345: Received PUBLISH from megad-31 (d0, q0, r0, m0, 'megad/31/3', ... (40 bytes)) //P3 (IN,P+R) PRESS(m=0) TTP223
1517559345: Sending PUBLISH to paho63404607084452 (d0, q0, r0, m0, 'megad/31/3', ... (40 bytes))
1517559345: Received PUBLISH from paho63404607084452 (d0, q0, r0, m0, 'megad/31/cmd', ... (8 bytes)) //cmd:5e4=4095 замкнуть реле (щелчок для обратной связи)
1517559345: Sending PUBLISH to megad-31 (d0, q0, r0, m0, 'megad/31/cmd', ... (8 bytes))
1517559345: Received PUBLISH from paho63404607084452 (d0, q0, r0, m0, 'megad/31/cmd', ... (8 bytes)) //cmd:5e0=2000 включить R(красный) сегмент RGB LED
1517559345: Sending PUBLISH to megad-31 (d0, q0, r0, m0, 'megad/31/cmd', ... (8 bytes))
1517559345: Received PUBLISH from paho63404607084452 (d0, q0, r0, m0, 'megad/31/cmd', ... (5 bytes)) //cmd:5e2=0 выключить G(зеленый) сегмент RGB LED
1517559345: Sending PUBLISH to megad-31 (d0, q0, r0, m0, 'megad/31/cmd', ... (5 bytes))
1517559345: Received PUBLISH from paho63404607084452 (d0, q0, r0, m0, 'megad/31/cmd', ... (5 bytes)) //cmd:5e1=0 выключить B(голубой) сегмент RGB LED
1517559345: Sending PUBLISH to megad-31 (d0, q0, r0, m0, 'megad/31/cmd', ... (5 bytes))
1517559345: Received PUBLISH from paho63404607084452 (d0, q0, r0, m0, 'megad/31/cmd', ... (4 bytes)) //cmd:15=1 включить P15 (OUT,реле), подключен светильник
1517559345: Sending PUBLISH to megad-31 (d0, q0, r0, m0, 'megad/31/cmd', ... (4 bytes))
1517559346: Received PUBLISH from paho63404607084452 (d0, q0, r0, m0, 'megad/31/cmd', ... (5 bytes)) //cmd:5e4=0 разомкнуть реле (щелчок для обратной связи),посылается через 50 мсек после замыкания
1517559346: Sending PUBLISH to megad-31 (d0, q0, r0, m0, 'megad/31/cmd', ... (5 bytes))
1517559346: Received PUBLISH from megad-31 (d0, q0, r0, m0, 'megad/31/3', ... (41 bytes)) //P3 (IN-P+R) RELEASE(m=1) TTP223
1517559346: Sending PUBLISH to paho63404607084452 (d0, q0, r0, m0, 'megad/31/3', ... (41 bytes))
1517559346: Received PUBLISH from paho63404607084452 (d0, q0, r0, m0, 'megad/31/cmd', ... (5 bytes)) //cmd:5e0=0 выключить R(красный) сегмент RGB LED
1517559346: Sending PUBLISH to megad-31 (d0, q0, r0, m0, 'megad/31/cmd', ... (5 bytes))
1517559346: Received PUBLISH from paho63404607084452 (d0, q0, r0, m0, 'megad/31/cmd', ... (8 bytes)) //cmd:5e2=2000 включить G(зеленый) сегмент RGB LED
1517559346: Sending PUBLISH to megad-31 (d0, q0, r0, m0, 'megad/31/cmd', ... (8 bytes))
1517559346: Received PUBLISH from paho63404607084452 (d0, q0, r0, m0, 'megad/31/cmd', ... (5 bytes)) //cmd:5e1=0 выключить B(голубой) сегмент RGB LED
1517559346: Sending PUBLISH to megad-31 (d0, q0, r0, m0, 'megad/31/cmd', ... (5 bytes))
Код: Выделить всё
1517559634: Received PUBLISH from megad-31 (d0, q0, r0, m0, 'megad/31/3', ... (40 bytes)) //P3 (IN,P+R) PRESS(m=0) TTP223
1517559634: Sending PUBLISH to paho63404607084452 (d0, q0, r0, m0, 'megad/31/3', ... (40 bytes))
1517559635: Received PUBLISH from paho63404607084452 (d0, q0, r0, m0, 'megad/31/cmd', ... (8 bytes)) //cmd:5e4=4095 замкнуть реле (щелчок для обратной связи)
1517559635: Sending PUBLISH to megad-31 (d0, q0, r0, m0, 'megad/31/cmd', ... (8 bytes))
1517559635: Received PUBLISH from paho63404607084452 (d0, q0, r0, m0, 'megad/31/cmd', ... (8 bytes)) //cmd:5e0=2000 включить R(красный) сегмент RGB LED
1517559635: Sending PUBLISH to megad-31 (d0, q0, r0, m0, 'megad/31/cmd', ... (8 bytes))
1517559635: Received PUBLISH from paho63404607084452 (d0, q0, r0, m0, 'megad/31/cmd', ... (5 bytes)) //cmd:5e2=0 выключить G(зеленый) сегмент RGB LED
1517559635: Sending PUBLISH to megad-31 (d0, q0, r0, m0, 'megad/31/cmd', ... (5 bytes))
1517559635: Received PUBLISH from paho63404607084452 (d0, q0, r0, m0, 'megad/31/cmd', ... (5 bytes)) //cmd:5e1=0 выключить B(голубой) сегмент RGB LED
1517559635: Sending PUBLISH to megad-31 (d0, q0, r0, m0, 'megad/31/cmd', ... (5 bytes))
1517559635: Received PUBLISH from paho63404607084452 (d0, q0, r0, m0, 'megad/31/cmd', ... (4 bytes)) //cmd:15=1 включить P15 (OUT,реле), подключен светильник
1517559635: Sending PUBLISH to megad-31 (d0, q0, r0, m0, 'megad/31/cmd', ... (4 bytes))
1517559635: Received PUBLISH from megad-31 (d0, q0, r0, m0, 'megad/31/3', ... (41 bytes)) //P3 (IN-P+R) RELEASE(m=1) TTP223
1517559635: Sending PUBLISH to paho63404607084452 (d0, q0, r0, m0, 'megad/31/3', ... (41 bytes))
1517559635: Received PUBLISH from paho63404607084452 (d0, q0, r0, m0, 'megad/31/cmd', ... (5 bytes)) //cmd:5e4=0 разомкнуть реле (щелчок для обратной связи),посылается через 50 мсек после замыкания
1517559635: Sending PUBLISH to megad-31 (d0, q0, r0, m0, 'megad/31/cmd', ... (5 bytes))
1517559635: Received PUBLISH from paho63404607084452 (d0, q0, r0, m0, 'megad/31/cmd', ... (5 bytes)) //cmd:5e0=0 выключить R(красный) сегмент RGB LED
1517559635: Sending PUBLISH to megad-31 (d0, q0, r0, m0, 'megad/31/cmd', ... (5 bytes))
1517559635: Received PUBLISH from paho63404607084452 (d0, q0, r0, m0, 'megad/31/cmd', ... (8 bytes)) //cmd:5e2=2000 включить G(зеленый) сегмент RGB LED
1517559635: Sending PUBLISH to megad-31 (d0, q0, r0, m0, 'megad/31/cmd', ... (8 bytes))
1517559635: Received PUBLISH from paho63404607084452 (d0, q0, r0, m0, 'megad/31/cmd', ... (5 bytes)) //cmd:5e1=0 выключить B(голубой) сегмент RGB LED
1517559635: Sending PUBLISH to megad-31 (d0, q0, r0, m0, 'megad/31/cmd', ... (5 bytes))
Код: Выделить всё
1517559552: Received PUBLISH from megad-31 (d0, q0, r0, m0, 'megad/31/3', ... (40 bytes)) //P3 (IN,P+R) PRESS(m=0) TTP223
1517559552: Sending PUBLISH to paho63404607084452 (d0, q0, r0, m0, 'megad/31/3', ... (40 bytes))
1517559552: Received PUBLISH from paho63404607084452 (d0, q0, r0, m0, 'megad/31/cmd', ... (8 bytes)) //cmd:5e4=4095 замкнуть реле (щелчок для обратной связи)
1517559552: Sending PUBLISH to megad-31 (d0, q0, r0, m0, 'megad/31/cmd', ... (8 bytes))
1517559552: Received PUBLISH from paho63404607084452 (d0, q0, r0, m0, 'megad/31/cmd', ... (8 bytes)) //cmd:5e0=2000 включить R(красный) сегмент RGB LED
1517559552: Sending PUBLISH to megad-31 (d0, q0, r0, m0, 'megad/31/cmd', ... (8 bytes))
1517559552: Received PUBLISH from paho63404607084452 (d0, q0, r0, m0, 'megad/31/cmd', ... (5 bytes)) //cmd:5e2=0 выключить G(зеленый) сегмент RGB LED
1517559552: Sending PUBLISH to megad-31 (d0, q0, r0, m0, 'megad/31/cmd', ... (5 bytes))
1517559552: Received PUBLISH from paho63404607084452 (d0, q0, r0, m0, 'megad/31/cmd', ... (5 bytes)) //cmd:5e1=0 выключить B(голубой) сегмент RGB LED
1517559552: Sending PUBLISH to megad-31 (d0, q0, r0, m0, 'megad/31/cmd', ... (5 bytes))
1517559552: Received PUBLISH from paho63404607084452 (d0, q0, r0, m0, 'megad/31/cmd', ... (4 bytes)) //cmd:15=0 выключить P15 (OUT,реле), подключен светильник
1517559552: Sending PUBLISH to megad-31 (d0, q0, r0, m0, 'megad/31/cmd', ... (4 bytes))
1517559552: Received PUBLISH from paho63404607084452 (d0, q0, r0, m0, 'megad/31/cmd', ... (5 bytes)) //cmd:5e4=0 разомкнуть реле (щелчок для обратной связи),посылается через 50 мсек после замыкания
1517559552: Sending PUBLISH to megad-31 (d0, q0, r0, m0, 'megad/31/cmd', ... (5 bytes))
1517559552: Received PUBLISH from megad-31 (d0, q0, r0, m0, 'megad/31/3', ... (41 bytes)) //P3 (IN-P+R) RELEASE(m=1) TTP223
1517559552: Sending PUBLISH to paho63404607084452 (d0, q0, r0, m0, 'megad/31/3', ... (41 bytes))
1517559552: Received PUBLISH from paho63404607084452 (d0, q0, r0, m0, 'megad/31/cmd', ... (5 bytes)) //cmd:5e0=0 выключить R(красный) сегмент RGB LED
1517559552: Sending PUBLISH to megad-31 (d0, q0, r0, m0, 'megad/31/cmd', ... (5 bytes))
1517559552: Received PUBLISH from paho63404607084452 (d0, q0, r0, m0, 'megad/31/cmd', ... (5 bytes)) //cmd:5e2=0 выключить G(зеленый) сегмент RGB LED
1517559552: Sending PUBLISH to megad-31 (d0, q0, r0, m0, 'megad/31/cmd', ... (5 bytes))
1517559552: Received PUBLISH from paho63404607084452 (d0, q0, r0, m0, 'megad/31/cmd', ... (8 bytes)) //cmd:5e1=2000 включить B(голубой) сегмент RGB LED
1517559552: Sending PUBLISH to megad-31 (d0, q0, r0, m0, 'megad/31/cmd', ... (8 bytes))
Код: Выделить всё
1517559426: Received PUBLISH from megad-31 (d0, q0, r0, m0, 'megad/31/3', ... (40 bytes)) //P3 (IN,P+R) PRESS(m=0) TTP223
1517559426: Sending PUBLISH to paho63404607084452 (d0, q0, r0, m0, 'megad/31/3', ... (40 bytes))
1517559426: Received PUBLISH from paho63404607084452 (d0, q0, r0, m0, 'megad/31/cmd', ... (8 bytes)) //cmd:5e4=4095 замкнуть реле (щелчок для обратной связи)
1517559426: Sending PUBLISH to megad-31 (d0, q0, r0, m0, 'megad/31/cmd', ... (8 bytes))
1517559426: Received PUBLISH from paho63404607084452 (d0, q0, r0, m0, 'megad/31/cmd', ... (8 bytes)) //cmd:5e0=2000 включить R(красный) сегмент RGB LED
1517559426: Sending PUBLISH to megad-31 (d0, q0, r0, m0, 'megad/31/cmd', ... (8 bytes))
1517559426: Received PUBLISH from paho63404607084452 (d0, q0, r0, m0, 'megad/31/cmd', ... (5 bytes)) //cmd:5e2=0 выключить G(зеленый) сегмент RGB LED
1517559426: Sending PUBLISH to megad-31 (d0, q0, r0, m0, 'megad/31/cmd', ... (5 bytes))
1517559426: Received PUBLISH from paho63404607084452 (d0, q0, r0, m0, 'megad/31/cmd', ... (5 bytes)) //cmd:5e1=0 выключить B(голубой) сегмент RGB LED
1517559426: Sending PUBLISH to megad-31 (d0, q0, r0, m0, 'megad/31/cmd', ... (5 bytes))
1517559426: Received PUBLISH from paho63404607084452 (d0, q0, r0, m0, 'megad/31/cmd', ... (4 bytes)) //cmd:15=0 выключить P15 (OUT,реле), подключен светильник
1517559426: Sending PUBLISH to megad-31 (d0, q0, r0, m0, 'megad/31/cmd', ... (4 bytes))
1517559426: Received PUBLISH from paho63404607084452 (d0, q0, r0, m0, 'megad/31/cmd', ... (5 bytes)) //cmd:5e4=0 разомкнуть реле (щелчок для обратной связи),посылается через 50 мсек после замыкания
1517559426: Sending PUBLISH to megad-31 (d0, q0, r0, m0, 'megad/31/cmd', ... (5 bytes))
1517559426: Received PUBLISH from megad-31 (d0, q0, r0, m0, 'megad/31/3', ... (41 bytes)) //P3 (IN-P+R) RELEASE(m=1) TTP223
1517559426: Sending PUBLISH to paho63404607084452 (d0, q0, r0, m0, 'megad/31/3', ... (41 bytes))
1517559426: Received PUBLISH from paho63404607084452 (d0, q0, r0, m0, 'megad/31/cmd', ... (5 bytes)) //cmd:5e0=0 выключить R(красный) сегмент RGB LED
1517559426: Sending PUBLISH to megad-31 (d0, q0, r0, m0, 'megad/31/cmd', ... (5 bytes))
1517559426: Received PUBLISH from paho63404607084452 (d0, q0, r0, m0, 'megad/31/cmd', ... (5 bytes)) //cmd:5e2=0 выключить G(зеленый) сегмент RGB LED
1517559426: Sending PUBLISH to megad-31 (d0, q0, r0, m0, 'megad/31/cmd', ... (5 bytes))
1517559426: Received PUBLISH from paho63404607084452 (d0, q0, r0, m0, 'megad/31/cmd', ... (8 bytes)) //cmd:5e1=2000 включить B(голубой) сегмент RGB LED
1517559426: Sending PUBLISH to megad-31 (d0, q0, r0, m0, 'megad/31/cmd', ... (8 bytes))
xxx.items:
Код: Выделить всё
Switch TST_SensorSwitch_Sensor_3 "Sensor3 [%s]" {mqtt="<[mqqt:megad/31/3:state:JS(MEGADmqtt_IN.js)]"}
Number TST_SensorSwitch_R_LED_R "LED R [%d]" {mqtt=">[mqqt:megad/31/cmd:command:*:5e0=${command}]"}
Number TST_SensorSwitch_R_LED_G "LED G [%d]" {mqtt=">[mqqt:megad/31/cmd:command:*:5e2=${command}]"}
Number TST_SensorSwitch_R_LED_B "LED B [%d]" {mqtt=">[mqqt:megad/31/cmd:command:*:5e1=${command}]"}
Switch TST_SensorSwitch_Relay "Relay Power [%s]" {mqtt=">[mqqt:megad/31/cmd:command:ON:5e4=4095],>[mqqt:megad/31/cmd:command:OFF:5e4=0]"}
Switch TST_Lamp2 "Lamp2 [%s]" {mqtt=">[mqqt:megad/31/cmd:command:ON:15=1],>[mqqt:megad/31/cmd:command:OFF:15=0],<[mqqt:megad/31/15:state:JS(MEGADmqtt_OUT.js)]"}
Код: Выделить всё
var int sensor_3_flag
rule "SensorSwitch1 TIK-TAK"
when
Item Item TST_SensorSwitch_Sensor_3 changed to ON
then
sendCommand(TST_SensorSwitch_Relay,ON)
Thread::sleep(50)
sendCommand(TST_SensorSwitch_Relay,OFF)
end
rule "TST_SensorSwitch_Sensor_3 changed to ON"
when
Item TST_SensorSwitch_Sensor_3 changed to ON
then
sendCommand(TST_SensorSwitch_R_LED_R,2000)
sendCommand(TST_SensorSwitch_R_LED_G,0)
sendCommand(TST_SensorSwitch_R_LED_B,0)
if (TST_Lamp2.state==ON)
{
sensor_3_flag=0
sendCommand(TST_Lamp2,OFF)
}
else
{
sensor_3_flag=1
sendCommand(TST_Lamp2,ON)
}
end
rule "TST_SensorSwitch_Sensor_3 changed to OFF"
when
Item TST_SensorSwitch_Sensor_3 changed to OFF
then
if (sensor_3_flag==1)
{
sendCommand(TST_SensorSwitch_R_LED_R,0)
sendCommand(TST_SensorSwitch_R_LED_G,2000)
sendCommand(TST_SensorSwitch_R_LED_B,0)
}
else
{
sendCommand(TST_SensorSwitch_R_LED_R,0)
sendCommand(TST_SensorSwitch_R_LED_G,0)
sendCommand(TST_SensorSwitch_R_LED_B,2000)
}
end
Код: Выделить всё
(function(i) {
if ( /.*ON.*/.test(i) ) return "ON";
else return "OFF"
})(input)
С уважением, Игорь
Re: Mega 2561 и MQTT
Igor78, без дампа понять, что происходит в вашем случае, невозможно.
Re: Mega 2561 и MQTT
Да. Все работает. Спасибо.Andrey_B писал(а): ↑02 фев 2018, 12:10Попробуйте. https://ab-log.ru/files/File/megad-2561 ... a1-hex.zip
Из имеющегося у меня - остался еще MAX44009. У него думаю можно убрать кавычки вокруг числового значения, но это уже мелочь.
Re: Mega 2561 и MQTT
Раз без дампа не понять, будем tcpdump мы вспоминать
Обнаружил, что если нужно отправить несколько MQTT-команд подряд MQQT-Binding Openhab-а отправляет их брокеру mosquitto не по одной в одном TCP-пакете, а группируя их по 3-5 в один TCP-пакет. Брокер же отправляет их Меге как ему захочется: в приведенном ниже примере пришло 5в1 отправил 1в1 + 4в1. Вот как раз команды из таких сгрупированных посылок и пропускаются.
10.5.5.3 - Сервер OpenHAB,mosquittto
10.5.5.31 - MegaD
Одна команда - один пакет (все хорошо):
Код: Выделить всё
21:34:43.370295 IP 127.0.0.1.57252 > 127.0.0.1.1883: Flags [P.], seq 2138829963:2138829983, ack 2652044376, win 512, options [nop,nop,TS val 194402977 ecr 194353413], length 20
0x0000: 4500 0048 c949 4000 4006 7364 7f00 0001 E..H.I@.@.sd....
0x0010: 7f00 0001 dfa4 075b 7f7b f48b 9e12 fc58 .......[.{.....X
0x0020: 8018 0200 fe3c 0000 0101 080a 0b96 5aa1 .....<........Z.
0x0030: 0b95 9905 3012 000c 6d65 6761 642f 3331 ....0...megad/31
0x0040: 2f63 6d64 3238 3d31 /cmd28=1
21:34:43.370866 IP 10.5.5.3.1883 > 10.5.5.31.2851: Flags [P.], seq 265235275:265235295, ack 3886, win 14600, length 20
0x0000: 4500 003c 07d9 4000 4006 14b8 0a05 0503 E..<..@.@.......
0x0010: 0a05 051f 075b 0b23 0fcf 2b4b 0000 0f2e .....[.#..+K....
0x0020: 5018 3908 5348 0000 3012 000c 6d65 6761 P.9.SH..0...mega
0x0030: 642f 3331 2f63 6d64 3238 3d31 d/31/cmd28=1
Код: Выделить всё
21:34:43.490355 IP 127.0.0.1.57252 > 127.0.0.1.1883: Flags [P.], seq 44:150, ack 52, win 512, options [nop,nop,TS val 194403097 ecr 194403097], length 106
0x0000: 4500 009e c94c 4000 4006 730b 7f00 0001 E....L@.@.s.....
0x0010: 7f00 0001 dfa4 075b 7f7b f4b7 9e12 fc8b .......[.{......
0x0020: 8018 0200 fe92 0000 0101 080a 0b96 5b19 ..............[.
0x0030: 0b96 5b19 3016 000c 6d65 6761 642f 3331 ..[.0...megad/31
0x0040: 2f63 6d64 3565 353d 3230 3030 3013 000c /cmd5e5=20000...
0x0050: 6d65 6761 642f 3331 2f63 6d64 3565 373d megad/31/cmd5e7=
0x0060: 3030 1300 0c6d 6567 6164 2f33 312f 636d 00...megad/31/cm
0x0070: 6435 6536 3d30 3012 000c 6d65 6761 642f d5e6=00...megad/
0x0080: 3331 2f63 6d64 3137 3d31 3012 000c 6d65 31/cmd17=10...me
0x0090: 6761 642f 3331 2f63 6d64 3238 3d30 gad/31/cmd28=0
21:34:43.490385 IP 127.0.0.1.1883 > 127.0.0.1.57252: Flags [.], ack 150, win 512, options [nop,nop,TS val 194403097 ecr 194403097], length 0
0x0000: 4500 0034 dd56 4000 4006 5f6b 7f00 0001 E..4.V@.@._k....
0x0010: 7f00 0001 075b dfa4 9e12 fc8b 7f7b f521 .....[.......{.!
0x0020: 8010 0200 b320 0000 0101 080a 0b96 5b19 ..............[.
0x0030: 0b96 5b19 ..[.
21:34:43.490543 IP 10.5.5.3.1883 > 10.5.5.31.2851: Flags [P.], seq 44:68, ack 52, win 14600, length 24
0x0000: 4500 0040 07dc 4000 4006 14b1 0a05 0503 E..@..@.@.......
0x0010: 0a05 051f 075b 0b23 0fcf 2b77 0000 0f61 .....[.#..+w...a
0x0020: 5018 3908 f547 0000 3016 000c 6d65 6761 P.9..G..0...mega
0x0030: 642f 3331 2f63 6d64 3565 353d 3230 3030 d/31/cmd5e5=2000
21:34:43.492314 IP 10.5.5.31.2851 > 10.5.5.3.1883: Flags [.], ack 68, win 1024, length 0
0x0000: 4500 0028 07dc 4000 4006 14c9 0a05 051f E..(..@.@.......
0x0010: 0a05 0503 0b23 075b 0000 0f61 0fcf 2b8f .....#.[...a..+.
0x0020: 5010 0400 306c 0000 0000 0000 0000 P...0l........
21:34:43.492376 IP 10.5.5.3.1883 > 10.5.5.31.2851: Flags [P.], seq 68:150, ack 52, win 14600, length 82
0x0000: 4500 007a 07dd 4000 4006 1476 0a05 0503 E..z..@.@..v....
0x0010: 0a05 051f 075b 0b23 0fcf 2b8f 0000 0f61 .....[.#..+....a
0x0020: 5018 3908 2499 0000 3013 000c 6d65 6761 P.9.$...0...mega
0x0030: 642f 3331 2f63 6d64 3565 373d 3030 1300 d/31/cmd5e7=00..
0x0040: 0c6d 6567 6164 2f33 312f 636d 6435 6536 .megad/31/cmd5e6
0x0050: 3d30 3012 000c 6d65 6761 642f 3331 2f63 =00...megad/31/c
0x0060: 6d64 3137 3d31 3012 000c 6d65 6761 642f md17=10...megad/
0x0070: 3331 2f63 6d64 3238 3d30 31/cmd28=0
С уважением, Игорь
Re: Mega 2561 и MQTT
Igor78, круто... кто бы мог подумать... Это считается нормой?
С другой стороны, конечно, так оно эффективнее, чем разными пакетами.
Контроллер теоретически можно научить работать с такими пакетами.
С другой стороны, конечно, так оно эффективнее, чем разными пакетами.
Контроллер теоретически можно научить работать с такими пакетами.
Re: Mega 2561 и MQTT
Скорее всего это норма если так делает, и binding openhaba, и москито. В настройках москиты есть параметр max_inflight_messages, который задает максимальное количество сообщений, передаваемых одновременно, но действует он только при QoS 1 и 2. Давайте научим, это же не сложно
С уважением, Игорь
-
- Сообщения: 528
- Зарегистрирован: 09 авг 2016, 15:09
- Откуда: Сочи
Re: Mega 2561 и MQTT
Igor78, как бы еще такие пакеты научиться генерировать без OH...
Re: Mega 2561 и MQTT
Вообще, после изучения спецификации протокола MQTT 3.1.1 у меня сложилось стойкое ощущение, что он рассчитан на работу поверх низлежащих протоколов с сохранением соединения, т.е. классического TCP. Режим работы клиента "подключился - передал одну команду в одном TCP-сегменте одним IP-пакетом - отключился" позволяет реализовать только QoS 0 при общении брокера с подобным клиентом. Поэтому удел "полноценного" MQTT - это аппаратные устройства с достаточной вычислительной мощностью для реализации "полноценного" TCP, с установлением и поддержанием соединения. Насколько я понимаю, это ESP-шки и выше.
Re: Mega 2561 и MQTT
Для реализации TCP, MQTT, HTTP и т.д. без шифрования трафика не нужна какая-то особенная вычислительная мощность. Микроконтроллеры уровня atmega с этим могут справляться легко.
Конкретно сейчас речь не об этом.
Конкретно сейчас речь не об этом.
Re: Mega 2561 и MQTT
Вот такой скрипт на Python
Код: Выделить всё
import paho.mqtt.publish as publish
msgs = [{'topic':"paho/test/multiple", 'payload':"5e0=1"},
("megad/31/cmd", "5e0=2", 0, False),
("megad/31/cmd", "5e0=3", 0, False),
("megad/31/cmd", "5e0=4", 0, False),
("megad/31/cmd", "5e0=5", 0, False),
("megad/31/cmd", "5e0=6", 0, False),
("megad/31/cmd", "5e0=7", 0, False),
("megad/31/cmd", "5e0=8", 0, False),
("megad/31/cmd", "5e0=9", 0, False),
("megad/31/cmd", "5e0=10", 0, False),
("megad/31/cmd", "5e0=11", 0, False),
("megad/31/cmd", "5e0=12", 0, False),
("megad/31/cmd", "5e0=13", 0, False),
("megad/31/cmd", "5e0=14", 0, False)]
publish.multiple(msgs, hostname="localhost")
(в результате выполнения скрипта Мега установила значение порта 5e0=120, что неверно)
Код: Выделить всё
[root@smarthouse ~]# tcpdump -i any -nn -X port 1883
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on any, link-type LINUX_SLL (Linux cooked), capture size 65535 bytes
23:20:03.894354 IP 127.0.0.1.45981 > 127.0.0.1.1883: Flags [S], seq 3495795551, win 65495, options [mss 65495,sackOK,TS val 11649984 ecr 0,nop,wscale 7], length 0
0x0000: 4500 003c 589f 4000 4006 e41a 7f00 0001 E..<X.@.@.......
0x0010: 7f00 0001 b39d 075b d05d 9b5f 0000 0000 .......[.]._....
0x0020: a002 ffd7 64da 0000 0204 ffd7 0402 080a ....d...........
0x0030: 00b1 c3c0 0000 0000 0103 0307 ............
23:20:03.894408 IP 127.0.0.1.1883 > 127.0.0.1.45981: Flags [S.], seq 1497950162, ack 3495795552, win 65483, options [mss 65495,sackOK,TS val 11649984 ecr 11649984,nop,wscale 7], length 0
0x0000: 4500 003c 0000 4000 4006 3cba 7f00 0001 E..<..@.@.<.....
0x0010: 7f00 0001 075b b39d 5948 e7d2 d05d 9b60 .....[..YH...].`
0x0020: a012 ffcb 5f48 0000 0204 ffd7 0402 080a ...._H..........
0x0030: 00b1 c3c0 00b1 c3c0 0103 0307 ............
23:20:03.894446 IP 127.0.0.1.45981 > 127.0.0.1.1883: Flags [.], ack 1, win 512, options [nop,nop,TS val 11649984 ecr 11649984], length 0
0x0000: 4500 0034 58a0 4000 4006 e421 7f00 0001 E..4X.@.@..!....
0x0010: 7f00 0001 b39d 075b d05d 9b60 5948 e7d3 .......[.].`YH..
0x0020: 8010 0200 8604 0000 0101 080a 00b1 c3c0 ................
0x0030: 00b1 c3c0 ....
23:20:03.896320 IP 127.0.0.1.45981 > 127.0.0.1.1883: Flags [P.], seq 1:15, ack 1, win 512, options [nop,nop,TS val 11649986 ecr 11649984], length 14
0x0000: 4500 0042 58a1 4000 4006 e412 7f00 0001 E..BX.@.@.......
0x0010: 7f00 0001 b39d 075b d05d 9b60 5948 e7d3 .......[.].`YH..
0x0020: 8018 0200 fe36 0000 0101 080a 00b1 c3c2 .....6..........
0x0030: 00b1 c3c0 100c 0004 4d51 5454 0402 003c ........MQTT...<
0x0040: 0000 ..
23:20:03.896361 IP 127.0.0.1.1883 > 127.0.0.1.45981: Flags [.], ack 15, win 512, options [nop,nop,TS val 11649986 ecr 11649986], length 0
0x0000: 4500 0034 2413 4000 4006 18af 7f00 0001 E..4$.@.@.......
0x0010: 7f00 0001 075b b39d 5948 e7d3 d05d 9b6e .....[..YH...].n
0x0020: 8010 0200 85f2 0000 0101 080a 00b1 c3c2 ................
0x0030: 00b1 c3c2 ....
23:20:03.896808 IP 127.0.0.1.1883 > 127.0.0.1.45981: Flags [P.], seq 1:5, ack 15, win 512, options [nop,nop,TS val 11649987 ecr 11649986], length 4
0x0000: 4500 0038 2414 4000 4006 18aa 7f00 0001 E..8$.@.@.......
0x0010: 7f00 0001 075b b39d 5948 e7d3 d05d 9b6e .....[..YH...].n
0x0020: 8018 0200 fe2c 0000 0101 080a 00b1 c3c3 .....,..........
0x0030: 00b1 c3c2 2002 0000 ........
23:20:03.897305 IP 127.0.0.1.45981 > 127.0.0.1.1883: Flags [.], ack 5, win 512, options [nop,nop,TS val 11649987 ecr 11649987], length 0
0x0000: 4500 0034 58a2 4000 4006 e41f 7f00 0001 E..4X.@.@.......
0x0010: 7f00 0001 b39d 075b d05d 9b6e 5948 e7d7 .......[.].nYH..
0x0020: 8010 0200 85ec 0000 0101 080a 00b1 c3c3 ................
0x0030: 00b1 c3c3 ....
23:20:03.898845 IP 127.0.0.1.45981 > 127.0.0.1.1883: Flags [P.], seq 15:37, ack 5, win 512, options [nop,nop,TS val 11649989 ecr 11649987], length 22
0x0000: 4500 004a 58a3 4000 4006 e408 7f00 0001 E..JX.@.@.......
0x0010: 7f00 0001 b39d 075b d05d 9b6e 5948 e7d7 .......[.].nYH..
0x0020: 8018 0200 fe3e 0000 0101 080a 00b1 c3c5 .....>..........
0x0030: 00b1 c3c3 3014 000c 6d65 6761 642f 3331 ....0...megad/31
0x0040: 2f63 6d64 3565 303d 3134 /cmd5e0=14
23:20:03.899155 IP 10.5.5.3.1883 > 10.5.5.31.2850: Flags [P.], seq 1548996215:1548996237, ack 5650, win 14600, length 22
0x0000: 4500 003e ace2 4000 4006 6fac 0a05 0503 E..>..@.@.o.....
0x0010: 0a05 051f 075b 0b22 5c53 ce77 0000 1612 .....[."\S.w....
0x0020: 5018 3908 3543 0000 3014 000c 6d65 6761 P.9.5C..0...mega
0x0030: 642f 3331 2f63 6d64 3565 303d 3134 d/31/cmd5e0=14
23:20:03.900224 IP 10.5.5.31.2850 > 10.5.5.3.1883: Flags [.], ack 22, win 1024, length 0
0x0000: 4500 0028 ace2 4000 4006 6fc2 0a05 051f E..(..@.@.o.....
0x0010: 0a05 0503 0b22 075b 0000 1612 5c53 ce8d .....".[....\S..
0x0020: 5010 0400 3a39 0000 0000 0000 0000 P...:9........
23:20:03.906012 IP 127.0.0.1.45981 > 127.0.0.1.1883: Flags [FP.], seq 37:322, ack 5, win 512, options [nop,nop,TS val 11649996 ecr 11649987], length 285
0x0000: 4500 0151 58a4 4000 4006 e300 7f00 0001 E..QX.@.@.......
0x0010: 7f00 0001 b39d 075b d05d 9b84 5948 e7d7 .......[.]..YH..
0x0020: 8019 0200 ff45 0000 0101 080a 00b1 c3cc .....E..........
0x0030: 00b1 c3c3 3014 000c 6d65 6761 642f 3331 ....0...megad/31
0x0040: 2f63 6d64 3565 303d 3133 3014 000c 6d65 /cmd5e0=130...me
0x0050: 6761 642f 3331 2f63 6d64 3565 303d 3132 gad/31/cmd5e0=12
0x0060: 3014 000c 6d65 6761 642f 3331 2f63 6d64 0...megad/31/cmd
0x0070: 3565 303d 3131 3014 000c 6d65 6761 642f 5e0=110...megad/
0x0080: 3331 2f63 6d64 3565 303d 3130 3013 000c 31/cmd5e0=100...
0x0090: 6d65 6761 642f 3331 2f63 6d64 3565 303d megad/31/cmd5e0=
0x00a0: 3930 1300 0c6d 6567 6164 2f33 312f 636d 90...megad/31/cm
0x00b0: 6435 6530 3d38 3013 000c 6d65 6761 642f d5e0=80...megad/
0x00c0: 3331 2f63 6d64 3565 303d 3730 1300 0c6d 31/cmd5e0=70...m
0x00d0: 6567 6164 2f33 312f 636d 6435 6530 3d36 egad/31/cmd5e0=6
0x00e0: 3013 000c 6d65 6761 642f 3331 2f63 6d64 0...megad/31/cmd
0x00f0: 3565 303d 3530 1300 0c6d 6567 6164 2f33 5e0=50...megad/3
0x0100: 312f 636d 6435 6530 3d34 3013 000c 6d65 1/cmd5e0=40...me
0x0110: 6761 642f 3331 2f63 6d64 3565 303d 3330 gad/31/cmd5e0=30
0x0120: 1300 0c6d 6567 6164 2f33 312f 636d 6435 ...megad/31/cmd5
0x0130: 6530 3d32 3019 0012 7061 686f 2f74 6573 e0=20...paho/tes
0x0140: 742f 6d75 6c74 6970 6c65 3565 303d 31e0 t/multiple5e0=1.
0x0150: 00 .
23:20:03.906640 IP 10.5.5.3.1883 > 10.5.5.31.2850: Flags [P.], seq 22:44, ack 1, win 14600, length 22
0x0000: 4500 003e ace3 4000 4006 6fab 0a05 0503 E..>..@.@.o.....
0x0010: 0a05 051f 075b 0b22 5c53 ce8d 0000 1612 .....[."\S......
0x0020: 5018 3908 352e 0000 3014 000c 6d65 6761 P.9.5...0...mega
0x0030: 642f 3331 2f63 6d64 3565 303d 3133 d/31/cmd5e0=13
23:20:03.907181 IP 127.0.0.1.1883 > 127.0.0.1.58826: Flags [P.], seq 4195544984:4195545011, ack 4276421518, win 512, options [nop,nop,TS val 11649997 ecr 11608078], length 27
0x0000: 4500 004f cd75 4000 4006 6f31 7f00 0001 E..O.u@.@.o1....
0x0010: 7f00 0001 075b e5ca fa12 ef98 fee5 038e .....[..........
0x0020: 8018 0200 fe43 0000 0101 080a 00b1 c3cd .....C..........
0x0030: 00b1 200e 3019 0012 7061 686f 2f74 6573 ....0...paho/tes
0x0040: 742f 6d75 6c74 6970 6c65 3565 303d 31 t/multiple5e0=1
23:20:03.907217 IP 127.0.0.1.58826 > 127.0.0.1.1883: Flags [.], ack 27, win 512, options [nop,nop,TS val 11649997 ecr 11649997], length 0
0x0000: 4500 0034 262e 4000 4006 1694 7f00 0001 E..4&.@.@.......
0x0010: 7f00 0001 e5ca 075b fee5 038e fa12 efb3 .......[........
0x0020: 8010 0200 145d 0000 0101 080a 00b1 c3cd .....]..........
0x0030: 00b1 c3cd ....
23:20:03.907274 IP 127.0.0.1.1883 > 127.0.0.1.45981: Flags [.], ack 323, win 520, options [nop,nop,TS val 11649997 ecr 11649989], length 0
0x0000: 4500 0034 2415 4000 4006 18ad 7f00 0001 E..4$.@.@.......
0x0010: 7f00 0001 075b b39d 5948 e7d7 d05d 9ca2 .....[..YH...]..
0x0020: 8010 0208 84a4 0000 0101 080a 00b1 c3cd ................
0x0030: 00b1 c3c5 ....
23:20:03.907346 IP 127.0.0.1.1883 > 127.0.0.1.45981: Flags [F.], seq 5, ack 323, win 520, options [nop,nop,TS val 11649997 ecr 11649989], length 0
0x0000: 4500 0034 2416 4000 4006 18ac 7f00 0001 E..4$.@.@.......
0x0010: 7f00 0001 075b b39d 5948 e7d7 d05d 9ca2 .....[..YH...]..
0x0020: 8011 0208 84a3 0000 0101 080a 00b1 c3cd ................
0x0030: 00b1 c3c5 ....
23:20:03.907376 IP 127.0.0.1.45981 > 127.0.0.1.1883: Flags [.], ack 6, win 512, options [nop,nop,TS val 11649997 ecr 11649997], length 0
0x0000: 4500 0034 0000 4000 4006 3cc2 7f00 0001 E..4..@.@.<.....
0x0010: 7f00 0001 b39d 075b d05d 9ca2 5948 e7d8 .......[.]..YH..
0x0020: 8010 0200 84a3 0000 0101 080a 00b1 c3cd ................
0x0030: 00b1 c3cd ....
23:20:03.907945 IP 10.5.5.31.2850 > 10.5.5.3.1883: Flags [.], ack 44, win 1024, length 0
0x0000: 4500 0028 ace3 4000 4006 6fc1 0a05 051f E..(..@.@.o.....
0x0010: 0a05 0503 0b22 075b 0000 1612 5c53 cea3 .....".[....\S..
0x0020: 5010 0400 3a23 0000 0000 0000 0000 P...:#........
23:20:03.907982 IP 10.5.5.3.1883 > 10.5.5.31.2850: Flags [P.], seq 44:278, ack 1, win 14600, length 234
0x0000: 4500 0112 ace4 4000 4006 6ed6 0a05 0503 E.....@.@.n.....
0x0010: 0a05 051f 075b 0b22 5c53 cea3 0000 1612 .....[."\S......
0x0020: 5018 3908 7e6e 0000 3014 000c 6d65 6761 P.9.~n..0...mega
0x0030: 642f 3331 2f63 6d64 3565 303d 3132 3014 d/31/cmd5e0=120.
0x0040: 000c 6d65 6761 642f 3331 2f63 6d64 3565 ..megad/31/cmd5e
0x0050: 303d 3131 3014 000c 6d65 6761 642f 3331 0=110...megad/31
0x0060: 2f63 6d64 3565 303d 3130 3013 000c 6d65 /cmd5e0=100...me
0x0070: 6761 642f 3331 2f63 6d64 3565 303d 3930 gad/31/cmd5e0=90
0x0080: 1300 0c6d 6567 6164 2f33 312f 636d 6435 ...megad/31/cmd5
0x0090: 6530 3d38 3013 000c 6d65 6761 642f 3331 e0=80...megad/31
0x00a0: 2f63 6d64 3565 303d 3730 1300 0c6d 6567 /cmd5e0=70...meg
0x00b0: 6164 2f33 312f 636d 6435 6530 3d36 3013 ad/31/cmd5e0=60.
0x00c0: 000c 6d65 6761 642f 3331 2f63 6d64 3565 ..megad/31/cmd5e
0x00d0: 303d 3530 1300 0c6d 6567 6164 2f33 312f 0=50...megad/31/
0x00e0: 636d 6435 6530 3d34 3013 000c 6d65 6761 cmd5e0=40...mega
0x00f0: 642f 3331 2f63 6d64 3565 303d 3330 1300 d/31/cmd5e0=30..
0x0100: 0c6d 6567 6164 2f33 312f 636d 6435 6530 .megad/31/cmd5e0
0x0110: 3d32 =2
23:20:03.911165 IP 10.5.5.31.2850 > 10.5.5.3.1883: Flags [.], ack 278, win 1024, length 0
0x0000: 4500 0028 ace4 4000 4006 6fc0 0a05 051f E..(..@.@.o.....
0x0010: 0a05 0503 0b22 075b 0000 1612 5c53 cf8d .....".[....\S..
0x0020: 5010 0400 3939 0000 0000 0000 0000 P...99........
23:20:08.731490 IP 10.5.5.31.2850 > 10.5.5.3.1883: Flags [P.], seq 1:3, ack 232, win 1024, length 2
0x0000: 4500 002a ace1 4000 4006 6fc1 0a05 051f E..*..@.@.o.....
0x0010: 0a05 0503 0b22 075b 0000 1612 5c53 cf5f .....".[....\S._
0x0020: 5018 0400 795c 0000 c000 0000 0000 P...y\........
23:20:08.732023 IP 10.5.5.3.1883 > 10.5.5.31.2850: Flags [P.], seq 278:280, ack 3, win 14600, length 2
0x0000: 4500 002a ace5 4000 4006 6fbd 0a05 0503 E..*..@.@.o.....
0x0010: 0a05 051f 075b 0b22 5c53 cf8d 0000 1614 .....[."\S......
0x0020: 5018 3908 3424 0000 d000 P.9.4$....
23:20:08.733411 IP 10.5.5.31.2850 > 10.5.5.3.1883: Flags [.], ack 280, win 1024, length 0
0x0000: 4500 0028 ace5 4000 4006 6fbf 0a05 051f E..(..@.@.o.....
0x0010: 0a05 0503 0b22 075b 0000 1614 5c53 cf8f .....".[....\S..
0x0020: 5010 0400 3935 0000 0000 0000 0000 P...95........
^C
23 packets captured
43 packets received by filter
0 packets dropped by kernel
Конфигурация тестовой машины
Intel NUC (Atom E3815, 1.46 ГГц)
CentOS release 6.9
Python 2.7.13 + paho-mqtt 1.3.1 https://pypi.python.org/pypi/paho-mqtt/1.3.1
С уважением, Игорь
Re: Mega 2561 и MQTT
А нет в ли в настройках какого-то пунктика насчёт этой вот отправки нескольких команд в одном пакете?
Re: Mega 2561 и MQTT
Я не нашел..
Посмотрел описание протокола MQTT, вроде, стал понятен формат:
Перед каждым PUBLISH сообщением идет заголовок вида:
30 14 00 0С - для сообщения "megad/31/cmd5e0=10"
,где
3 - говорит что то PUBLISH сообщение MQTT
0 - четыре бита флагов. Для PUBLISH это: DUP-флаг повторной передачи, два бита указывают тип QoS, RETAIN-флаг говорит нужно ли брокеру сохранять сообщение
14 - (20 в десятичной системе) Remaining Length длина сообщения в байтах включая первые два байта, которые сообщают длину строки с именем топика, для длинных сообщений может быть более одного байта (макс. 4)
00 0С - (12 в десятичной системе) первые два байта сообщения, которые хранят длину (в байтах) строки с именем топика (megad/31/cmd)
Таких сообщений в одном пакете TCP может быть много...
С уважением, Игорь
Re: Mega 2561 и MQTT
Формат то понятен... Как сделаю, напишу.