Есть приложение под windows mqtt-spy открываешь подключаешься и подписываешься на все топики (#) и видишь А тут ты видишь фигуAndrey_B писал(а): ↑22 фев 2018, 15:36Я не понимаю, что означает этот ваш ответ.
Но на всякий случай выскажу несколько мыслей, которые могут оказаться полезными.
1. Правила использования wildcards
https://www.hivemq.com/blog/mqtt-essent ... -practices
2. Контроллер публикует информацию в топике только по событиям. Например, срабатывание стандартного входа.
3. Принципы формирования топиков устройством описаны здесь
https://ab-log.ru/smart-house/ethernet/megad-2561
Mega 2561 и MQTT
Re: Mega 2561 и MQTT
Re: Mega 2561 и MQTT
Мега публикует только по событиям, а не как sonoff-tasmota например. Нажмите физические кнопки на меге, чтобы что-то увидеть в этой программе.
Re: Mega 2561 и MQTT
Функции аналогичной "srv-loop" для MQTT в данный момент нет.
Для запроса состояния любого порта в произвольный момент времени (хоть каждую секунду) предусмотрен специальный механизм, который описан здесь:
https://ab-log.ru/smart-house/ethernet/megad-2561
Кстати, ссылку эту я давал в предыдущем сообщении.
Для запроса состояния любого порта в произвольный момент времени (хоть каждую секунду) предусмотрен специальный механизм, который описан здесь:
https://ab-log.ru/smart-house/ethernet/megad-2561
Кстати, ссылку эту я давал в предыдущем сообщении.
Re: Mega 2561 и MQTT
РазобралсяAndrey_B писал(а): ↑22 фев 2018, 15:50Функции аналогичной "srv-loop" для MQTT в данный момент нет.
Для запроса состояния любого порта в произвольный момент времени (хоть каждую секунду) предусмотрен специальный механизм, который описан здесь:
https://ab-log.ru/smart-house/ethernet/megad-2561
Кстати, ссылку эту я давал в предыдущем сообщении.
Код: Выделить всё
root@Dacha-Server:/home/admin-home# mosquitto_pub -d -t rsfGa/cmd -m get:32
Client mosqpub/3063-Dacha-Serv sending CONNECT
Client mosqpub/3063-Dacha-Serv received CONNACK
Client mosqpub/3063-Dacha-Serv sending PUBLISH (d0, q0, r0, m1, 'rsfGa/cmd', ... (6 bytes))
Client mosqpub/3063-Dacha-Serv sending DISCONNECT
Re: Mega 2561 и MQTT
...
Далее есть проблема №2:
При переключении на меге порта типа OUT - НЕ выдается никакого сообщения в MQTT. Кнопки типа IN выдаются:
Соответственно из-за того что на брокере нет значений порта, который реле, я не могу считать его состояние в опенхаб, хотя управление осуществляется:
Могу считать состояние кнопки - но она ведь только переключает, порт на котором лампа включился, но порт кнопки после включения света ведь выключен.
Далее есть проблема №2:
При переключении на меге порта типа OUT - НЕ выдается никакого сообщения в MQTT. Кнопки типа IN выдаются:
Код: Выделить всё
megad/30/3 {"port":3,"m":0,"value":"ON","cnt":9}
megad/30/3 {"port":3,"m":0,"value":"ON","cnt":10}
megad/30/3 {"port":3,"m":0,"value":"ON","cnt":11}
megad/30/3 {"port":3,"m":0,"value":"ON","cnt":12}
megad/20/16 {"port":16,"m":0,"value":"ON","cnt":24}
megad/20/16 {"port":16,"m":1,"value":"OFF","cnt":24}
megad/20/16 {"port":16,"m":0,"value":"ON","cnt":25}
megad/20/16 {"port":16,"m":1,"value":"OFF","cnt":25}
megad/20/16 {"port":16,"m":0,"value":"ON","cnt":26}
megad/20/16 {"port":16,"m":1,"value":"OFF","cnt":26}
megad/20/16 {"port":16,"m":0,"value":"ON","cnt":27}
megad/20/16 {"port":16,"m":1,"value":"OFF","cnt":27}
Код: Выделить всё
Switch Bedroom_LampOnWall_Right "Бра в спальне, справа [%s]" <light> {mqtt=">[mosquitto:megad/20/cmd:command:ON:0=1],>[mosquitto:megad/20/cmd:command:OFF:0=0],<[mosquitto:megad/20/16:state:JSONPATH($.value)]"}
Switch Bedroom_LampOnWall_Left "Бра в спальне, слева [%s]" <light> {mqtt=">[mosquitto:megad/20/cmd:command:ON:1=1],>[mosquitto:megad/20/cmd:command:OFF:1=0],<[mosquitto:megad/30/3:state:JSONPATH($.value)]"}
Код: Выделить всё
megad/20/cmd 0=1
megad/20/cmd 1=1
megad/20/cmd 1=0
megad/20/cmd 0=0
megad/20/cmd 1=1
megad/20/cmd 0=1
megad/20/cmd 1=0
megad/20/cmd 0=0
Последний раз редактировалось empenoso 24 фев 2018, 07:22, всего редактировалось 1 раз.
Re: Mega 2561 и MQTT
Вообще, и при HTTP Мега ничего не сообщает серверу, что порт типа OUT переключился. Так Мега работала ВСЕГДА!
По идеологии Меги считается, что сервер и так знает, в каком состоянии находится OUT, а если не знает, то всегда может "спросить".
Я пару раз писал Андрею, что для некоторых пользователей информирование Мегой сервера о переключении OUT было бы полезным.
https://www.ab-log.ru/forum/viewtopic.p ... &start=535
https://www.ab-log.ru/forum/viewtopic.p ... start=1312
И получал обоснованный ответ, в том плане, а с чего это команды Меге посылаются, минуя сервер? Что, собственно, логично.
А что касается "Act", то это изначально рассматривалось как "аварийный" режим (когда "падает" сервер).
С моей скромной точки зрения, реализация информирования Мегой сервера при изменении OUT (при проставленной "галке" в соответствующем чекбоксе) все же была бы полезна.
Re: Mega 2561 и MQTT
Я полностью согласен и поддерживаю. Пару лет у же знаком с мегой, с релейной составляющей правда недавно только столкнулся, но все другие устройства, с которыми сталкивался, которые работают через MQTT, всегда сами информируют об изменении состоянию именно выходов, не приходится судить по косвенным показателям типа состояния подключенных кнопок.Ruslan писал(а): ↑23 фев 2018, 12:35...
Я пару раз писал Андрею, что для некоторых пользователей информирование Мегой сервера о переключении OUT было бы полезным.
..
С моей скромной точки зрения, реализация информирования Мегой сервера при изменении OUT (при проставленной "галке" в соответствующем чекбоксе) все же была бы полезна.
Re: Mega 2561 и MQTT
примерно так и выглядят, я пока MQTT тестирую только на портах типа IN/OUT/PWM(PCA9685)empenoso писал(а): ↑20 фев 2018, 16:21а у вас items для работы с mqqt для меги как выглядят сейчас?Igor78 писал(а): ↑02 фев 2018, 14:59
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)]"}
С уважением, Игорь
Re: Mega 2561 и MQTT
Писал где-то выше в этой теме, или посмотрите комментарии от Игорь: https://www.ab-log.ru/smart-house/ether ... ch-sensors
С уважением, Игорь
Re: Mega 2561 и MQTT
А как вы переключаете 15 порт и одновременно считываете его состояние? мега ведь не выдает состояния портов типа out.Igor78 писал(а): ↑26 фев 2018, 15:04примерно так и выглядят, я пока MQTT тестирую только на портах типа IN/OUT/PWM(PCA9685)Код: Выделить всё
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)]"}
Re: Mega 2561 и MQTT
Чтобы считать состояние 15 порта, Меге нужно послать запрос get=15 в топик cmd. Например:
Код: Выделить всё
.items
...
Number MegaD31_GetPort {mqtt=">[mqtt:megad/31/cmd:command:*:get=${command}]"}
...
.rules
...
MegaD31_GetPort.sendCommand(15)
...
С уважением, Игорь
Re: Mega 2561 и MQTT
Спасибо! Я как-то про это не подумал даже.
А физические кнопки как у вас переключают выходы на меге? Средствами меги или через опенхаб?
Re: Mega 2561 и MQTT
Я пишу правила для кнопки. У вас подобным образом тоже?
Код: Выделить всё
Switch Shield2_P24 "Включатель люстры на кухне [%s]" { mqtt="<[mosquitto:megad/20/24:state:JSONPATH($.value)]" }
Switch Kitchen_Lamp "Лампа на кухне [MAP(switch_ru.map):%s]" <party> (Lamp) {mqtt=">[mosquitto:megad/20/cmd:command:ON:13=1],>[mosquitto:megad/20/cmd:command:OFF:13=0]"}
Код: Выделить всё
rule "Shield2_P24"
when
Item Shield2_P24 changed to ON
then
if (Kitchen_Lamp.state == ON) { sendCommand(Kitchen_Lamp, OFF) }
else if (Kitchen_Lamp.state == OFF) { sendCommand(Kitchen_Lamp, ON) }
end
Только у меня на одной из мег постоянно отваливается mqtt - думаю на то что именно с этой меги часть данных с датчиков через http получаю?
Код: Выделить всё
Number Shield3_Top_P0_BMx280_Temp "Темп. на улице [%.2f °C]" <garden> (Pipes) { http="<[http://192.168.48.30/sec/?pt=0&scl=1&i2c_dev=bmx280&i2c_par=1:60000:REGEX((.*?))]" }
Number Shield3_Top_P0_BMx280_Hum "Влажность на улице [%.2f %%]" <humidity> (Humidity) { http="<[http://192.168.48.30/sec/?pt=0&scl=1&i2c_dev=bmx280&i2c_par=2:60000:REGEX((.*?))]" }
Number Shield3_Top_P0_BMx280_Press "Атм. давление [%.2f мм рт. ст.]" <pressure> { http="<[http://192.168.48.30/sec/?pt=0&scl=1&i2c_dev=bmx280:60000:REGEX((.*?))]" }
Number Shield3_Top_P0_HTU21D_Temp_Bedroom "Темп. в спальне [%.2f °C]" <temperature> (Indoor) { http="<[http://192.168.48.30/sec/?pt=0&scl=1&i2c_dev=htu21d&i2c_par=1:60000:REGEX((.*?))]" }
Number Shield3_Top_P0_HTU21D_Hum_Bedroom "Влажность в спальне [%.2f %%]" <humidity> (Humidity) { http="<[http://192.168.48.30/sec/?pt=0&scl=1&i2c_dev=htu21d:60000:REGEX((.*?))]" }
Number Shield3_Top_P0_MAX44009 "Освещ. улицы [%.2f lux]" <sunrise> { http="<[http://192.168.48.30/sec/?pt=0&scl=1&i2c_dev=max44009:60000:REGEX((.*?))]" }
Number Shield3_Top_P2_MH_Z14A "Датчик углекислого газа в спальне [%.2f ADC]" <carbondioxide> (Bedroom) { http="<[http://192.168.48.30/sec/?pt=2&cmd=get:60000:REGEX((.*?))]" }
Number Shield3_Top_P5_HTU21D_Temp_Bath "Темп. в ванной [%.2f °C]" <temperature> (Indoor) { http="<[http://192.168.48.30/sec/?pt=5&scl=1&i2c_dev=htu21d&i2c_par=1:60000:REGEX((.*?))]" }
Number Shield3_Top_P5_HTU21D_Hum_Bath "Влажность в ванной [%.2f %%]" <humidity> (Humidity) { http="<[http://192.168.48.30/sec/?pt=5&scl=1&i2c_dev=htu21d:60000:REGEX((.*?))]" }
String Shield3_Top_P5_SSD1306_Text "Дисплей SSD1306 Text [%s]" { http=">[*:GET:http://192.168.48.30/sec/?pt=5&text=%2$s]" }
String Shield3_Top_P5_SSD1306_SmallText "Дисплей SSD1306 SmallText [%s]" { http=">[*:GET:http://192.168.48.30/sec/?pt=5&text=%2$s&col=30&row=0]" }
Number Shield3_Top_P6_DS18B20_WC_cold "Темп. хол. трубы, °C [%.2f]" <temperature_cold> (Pipes) { http="<[http://192.168.48.30/sec/?pt=6&cmd=list:60000:REGEX(.*?ff160e631603:(.*?);(.*))]" }
Number Shield3_Top_P6_DS18B20_WC_cold_min "Мин. значение хол. трубы в месяце, °C [%.2f]"
Number Shield3_Top_P6_DS18B20_WC_hot "Темп. гор. трубы, °C [%.2f]" <temperature_hot> (Pipes) { http="<[http://192.168.48.30/sec/?pt=6&cmd=list:60000:REGEX(.*?ff7d30211605:(.*?))]" }
Number Shield3_Top_P6_DS18B20_WC_hot_max "Макс. значение гор. трубы в месяце, °C [%.2f]"
Number Shield3_Top_P6_DS18B20_Bath "Темп. ванны, °C [%.2f]" <bath> (Pipes) { http="<[http://192.168.48.30/sec/?pt=6&cmd=list:60000:REGEX(.*?ff9ec0711703:(.*?);(.*))]" }
Re: Mega 2561 и MQTT
Да, у меня все похоже. С "отваливанием" Меги от брокера мы тут с Андреем много уже времени потратили и большую часть проблем Андрей решил. Но одна проблема осталась: пока, по неустановленным причинам, в процессе активного обмена данными mosquitto сбрасывает соединение с Мегой (TCP-пакет с флагом RST), через несколько секунд Мега переподключается...
С уважением, Игорь
Re: Mega 2561 и MQTT
Igor78, я приводил пример скрипта, с помощью которого я пытался воспроизвести активный обмен данными. Проблем не заметил.
Если у вас получится написать скрипт, который бы генерировал проблему, это помогло бы найти решение.
Если у вас получится написать скрипт, который бы генерировал проблему, это помогло бы найти решение.
Re: Mega 2561 и MQTT
Я видимо все по http сделаю, но мега в состояние дисконнект каждые полчаса по mqtt к которой еще по http обращаюсь. и состояние не восстанавливает.
А другая мега нормально.
А другая мега нормально.
Re: Mega 2561 и MQTT
В последней версии прошивки брокер перестал выставлять Меге пакеты с флагом RST, но Мега стала гораздо быстрее "уходить в себя" без дисконнекта. Дисконнект в логах москиты видел только раз: по таймауту. В этом случае переподключиться Мегу заставило нажатие кнопки Save на странице Config Web-интерфейса.
Скрипт пока не получается, но вот стенд (максимально упростил) могу описать:
Centos 7.4 on Intel NUC7i7
Openhab 2.2
Mosquito 1.4.14
MegaD-2561 by ab-log.ru (fw: 4.25b7)
P1,P3 - TTP223 (IN,P+R)
P5 - PCA9685 (6 портов - 2 RGB LED, 1 порт - реле щелчка, 1 порт - питание TTP223)
P15,P16 - релейные выходы на "лампочки Ильича"
Нормальное функционирование: Прикасаемся к сенсору, щелкает реле, загорается/гаснет лампа, во время касания сенсор красный, после синий (лампа погашена) или зеленый (горит)
Что получается можно увидеть на видео и прилагаемых логах tshark и mosquitto (tshark снимал весь обмен с Мегой tshark -i eth0 host 10.5.5.31 -P -x -n)
Перед тестами Мегу перезапускал питанием.
10.5.5.3 - сервер
10.5.5.31 - мега
Файлы здесь:https://yadi.sk/d/evHj2YLD3Ss7Vo
С уважением, Игорь
-
- Сообщения: 8
- Зарегистрирован: 21 мар 2018, 15:59
Re: Mega 2561 и MQTT
Всем доброго времени суток.
Пытаюсь разобраться с обработкой длинных нажатий по MQTT. Прошивка 4.26b2. Настройки входа Act: 7:2. Mode: P. Все флажки сняты. Вне зависимости от длины нажатия всегда приходит m = 0.
Подскажите, что делаю не так и куда копать?
Пытаюсь разобраться с обработкой длинных нажатий по MQTT. Прошивка 4.26b2. Настройки входа Act: 7:2. Mode: P. Все флажки сняты. Вне зависимости от длины нажатия всегда приходит m = 0.
Код: Выделить всё
{"port":0,"m":0,"value":"ON","cnt":1}