Mega 2561 и MQTT

Обсуждение статей, технологий домашней автоматизации, программных и аппаратных решений
Ruslan
Сообщения: 2184
Зарегистрирован: 06 янв 2014, 20:44

Re: Mega 2561 и MQTT

Сообщение Ruslan » 01 фев 2018, 20:40

Я не разбираюсь в MQTT, поскольку им не пользуюсь. Но исходя из идеологии Меги, которая изначально закладывалась, об изменении состояния выходов Мега вообще не сообщает на сервер. Считается, что сервер сам в любой момент может опросить Мегу о состоянии выходов.
Значит, подозреваю, что эти изменения вообще не публикуются (ни моментально, ни позже).
Мега сообщает серверу только об изменении состояния входов.

Если я не прав, пусть меня поправят.

Что касается вопроса, "где почитать", то я читаю ветку FAQ и про прошивку. Хотя да, для тех, кто давно "в теме", это вроде как само собой очевидный, устоявшийся момент. Для новичков - это все, конечно, не очевидно.
Последний раз редактировалось Ruslan 02 фев 2018, 09:51, всего редактировалось 1 раз.

r7s
Сообщения: 34
Зарегистрирован: 24 янв 2018, 10:20

Re: Mega 2561 и MQTT

Сообщение r7s » 02 фев 2018, 02:38

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 раза.

r7s
Сообщения: 34
Зарегистрирован: 24 янв 2018, 10:20

Re: Mega 2561 и MQTT

Сообщение r7s » 02 фев 2018, 02:59

martiniman писал(а):
01 фев 2018, 20:34
Т.е. Факт включения нагрузки не публикуется моментально?
Публикуются только входы?
Не нашел где почитать, чтобы глупых вопросов не задавать.
Да. Публикуются только входы. Да и те только активные ("кнопки"). Сенсоры не публикуются.
Логика такова, что если вы "сервер" и отдали команду меге, то вы сами знаете ее состояние. Да, здесь есть некоторое "оптимистичное" предположение, что мега 100% выполнила вашу команду, что в подавляющем большинстве случаев и будет правдой. Поэтому публикация дополнительной информации о состоянии - избыточна.
Аналогично по сенсорам, если сервер нуждается в информации о их значениях, он их запрашивает. В остальное время ресурсы меги и сети не тратятся попусту. Если серверу эта информация нужна периодически, он сам может определить период, хоть динамический, и опрашивать мегу.
Вопрос только, что меге можно отдать "сложную" команду, наподобие опции smooth для pwm каналов. В этом случае сервер может только подозревать о текущем значении выхода, а для того, что бы знать точно - ему все же придется спросить мегу.

Alex_Jet
Сообщения: 1251
Зарегистрирован: 12 янв 2014, 18:00
Откуда: Россия, г.Томск

Re: Mega 2561 и MQTT

Сообщение Alex_Jet » 02 фев 2018, 06:18

Ruslan писал(а):
01 фев 2018, 20:40
Я не разбираюсь в MQTT, поскольку им не пользуюсь. Но исходя из идеологии Меги, которая изначально закладывалась, об изменении состояния входов Мега вообще не сообщает на сервер. Считается, что сервер сам в любой момент может опросить Мегу о состоянии входов.
Чтобы никого не путать поправьте в этом абзаце все "входы" на "выходы".

Для новичков - практически все моменты освещены ЗДЕСЬ, правда не могу уговорить Андрея чтобы он сделал спойлеры, иначе во всем этом труде ориентироваться тяжело. Кроме этого, можно ориентироваться по обновлениям прошивки ЗДЕСЬ. Ну и если осилить всю тему про Прошивку MegaD-2561, то вы будете "Гуру" :)

Ruslan
Сообщения: 2184
Зарегистрирован: 06 янв 2014, 20:44

Re: Mega 2561 и MQTT

Сообщение Ruslan » 02 фев 2018, 09:53

Alex_Jet писал(а):
02 фев 2018, 06:18
Ruslan писал(а):
01 фев 2018, 20:40
Я не разбираюсь в MQTT, поскольку им не пользуюсь. Но исходя из идеологии Меги, которая изначально закладывалась, об изменении состояния входов Мега вообще не сообщает на сервер. Считается, что сервер сам в любой момент может опросить Мегу о состоянии входов.
Чтобы никого не путать поправьте в этом абзаце все "входы" на "выходы".
Спасибо за бдительность, поправил.

Andrey_B
Администратор
Сообщения: 5327
Зарегистрирован: 18 мар 2011, 12:06

Re: Mega 2561 и MQTT

Сообщение Andrey_B » 02 фев 2018, 12:10

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

Igor78
Сообщения: 143
Зарегистрирован: 26 янв 2015, 14:44
Откуда: Москва

Re: Mega 2561 и MQTT

Сообщение Igor78 » 02 фев 2018, 14:59

Andrey_B писал(а):
01 фев 2018, 11:55
Igor78, сделайте пожалуйста дамп с "пропусками" с помощью Wireshark.
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))
Конфигурация OPENHAB 2.2

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)]"}
xxx.rules:

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

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
/transform/MEGADmqtt_OUT.js = /transform/MEGADmqtt_IN.js

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

(function(i) {
	if ( /.*ON.*/.test(i) ) return "ON";
	else return "OFF"
})(input)
С уважением, Игорь

Andrey_B
Администратор
Сообщения: 5327
Зарегистрирован: 18 мар 2011, 12:06

Re: Mega 2561 и MQTT

Сообщение Andrey_B » 02 фев 2018, 16:56

Igor78, без дампа понять, что происходит в вашем случае, невозможно.

r7s
Сообщения: 34
Зарегистрирован: 24 янв 2018, 10:20

Re: Mega 2561 и MQTT

Сообщение r7s » 02 фев 2018, 17:04

Andrey_B писал(а):
02 фев 2018, 12:10
Попробуйте. https://ab-log.ru/files/File/megad-2561 ... a1-hex.zip
Да. Все работает. Спасибо.

Из имеющегося у меня - остался еще MAX44009. У него думаю можно убрать кавычки вокруг числового значения, но это уже мелочь.

Igor78
Сообщения: 143
Зарегистрирован: 26 янв 2015, 14:44
Откуда: Москва

Re: Mega 2561 и MQTT

Сообщение Igor78 » 02 фев 2018, 23:14

Andrey_B писал(а):
02 фев 2018, 16:56
Igor78, без дампа понять, что происходит в вашем случае, невозможно.
Раз без дампа не понять, будем 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
Брокеру пришло 5 команд в одном пакете, он отправил 1 (выполнена) и 4 (выполнена только первая)

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

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
С уважением, Игорь

Andrey_B
Администратор
Сообщения: 5327
Зарегистрирован: 18 мар 2011, 12:06

Re: Mega 2561 и MQTT

Сообщение Andrey_B » 03 фев 2018, 10:55

Igor78, круто... кто бы мог подумать... Это считается нормой?
С другой стороны, конечно, так оно эффективнее, чем разными пакетами.
Контроллер теоретически можно научить работать с такими пакетами.

Igor78
Сообщения: 143
Зарегистрирован: 26 янв 2015, 14:44
Откуда: Москва

Re: Mega 2561 и MQTT

Сообщение Igor78 » 03 фев 2018, 17:09

Andrey_B писал(а):
03 фев 2018, 10:55
...Это считается нормой?
С другой стороны, конечно, так оно эффективнее, чем разными пакетами.
Контроллер теоретически можно научить работать с такими пакетами.
Скорее всего это норма если так делает, и binding openhaba, и москито. В настройках москиты есть параметр max_inflight_messages, который задает максимальное количество сообщений, передаваемых одновременно, но действует он только при QoS 1 и 2. Давайте научим, это же не сложно :)
С уважением, Игорь

martiniman
Сообщения: 528
Зарегистрирован: 09 авг 2016, 15:09
Откуда: Сочи

Re: Mega 2561 и MQTT

Сообщение martiniman » 03 фев 2018, 20:38

Igor78 писал(а):
02 фев 2018, 23:14

Раз без дампа не понять, будем tcpdump мы вспоминать
Блин, снимаю шляпу, после такого перехотелось вообще писать сюда вопросы :shock:

Andrey_B
Администратор
Сообщения: 5327
Зарегистрирован: 18 мар 2011, 12:06

Re: Mega 2561 и MQTT

Сообщение Andrey_B » 04 фев 2018, 12:24

Igor78, как бы еще такие пакеты научиться генерировать без OH...

Taurus
Сообщения: 56
Зарегистрирован: 23 мар 2015, 14:15

Re: Mega 2561 и MQTT

Сообщение Taurus » 04 фев 2018, 13:05

Вообще, после изучения спецификации протокола MQTT 3.1.1 у меня сложилось стойкое ощущение, что он рассчитан на работу поверх низлежащих протоколов с сохранением соединения, т.е. классического TCP. Режим работы клиента "подключился - передал одну команду в одном TCP-сегменте одним IP-пакетом - отключился" позволяет реализовать только QoS 0 при общении брокера с подобным клиентом. Поэтому удел "полноценного" MQTT - это аппаратные устройства с достаточной вычислительной мощностью для реализации "полноценного" TCP, с установлением и поддержанием соединения. Насколько я понимаю, это ESP-шки и выше.

Andrey_B
Администратор
Сообщения: 5327
Зарегистрирован: 18 мар 2011, 12:06

Re: Mega 2561 и MQTT

Сообщение Andrey_B » 04 фев 2018, 13:21

Для реализации TCP, MQTT, HTTP и т.д. без шифрования трафика не нужна какая-то особенная вычислительная мощность. Микроконтроллеры уровня atmega с этим могут справляться легко.
Конкретно сейчас речь не об этом.

Igor78
Сообщения: 143
Зарегистрирован: 26 янв 2015, 14:44
Откуда: Москва

Re: Mega 2561 и MQTT

Сообщение Igor78 » 05 фев 2018, 00:44

Andrey_B писал(а):
04 фев 2018, 12:24
Igor78, как бы еще такие пакеты научиться генерировать без OH...
Вот такой скрипт на 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
С уважением, Игорь

alex946
Сообщения: 204
Зарегистрирован: 05 дек 2015, 22:48
Контактная информация:

Re: Mega 2561 и MQTT

Сообщение alex946 » 05 фев 2018, 09:02

А нет в ли в настройках какого-то пунктика насчёт этой вот отправки нескольких команд в одном пакете?

Igor78
Сообщения: 143
Зарегистрирован: 26 янв 2015, 14:44
Откуда: Москва

Re: Mega 2561 и MQTT

Сообщение Igor78 » 07 фев 2018, 16:01

alex946 писал(а):
05 фев 2018, 09:02
А нет в ли в настройках какого-то пунктика насчёт этой вот отправки нескольких команд в одном пакете?
Я не нашел..
Andrey_B писал(а):
04 фев 2018, 12:24
Igor78, как бы еще такие пакеты научиться генерировать без OH...
Посмотрел описание протокола 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 может быть много...
С уважением, Игорь

Andrey_B
Администратор
Сообщения: 5327
Зарегистрирован: 18 мар 2011, 12:06

Re: Mega 2561 и MQTT

Сообщение Andrey_B » 07 фев 2018, 17:08

Формат то понятен... Как сделаю, напишу.

Ответить