LINUX.ORG.RU

Управление настройками MQTT клиентов на лету через специальный topic

 , ,


0

1

У меня запущен MQTT брокер и я планирую залить прошивку в ESP8266/ESP32 для работы в качестве MQTT клиента.

Допустим, к пинам 0 и 1 подключен светодиод. Клиент в лице ESP подписывается на топик test/led1 и включает/выключает светодиод при получении соответствующего сообщения от брокера.

Через неделю я подключаю еще один светодиод к пинам 0 и 2. Теперь я желаю управлять вторым светодиодом отдельно через топик test/led2. Как быть? Заливать новую прошивку на ESP (пусть даже и по воздуху)?

А что если создать административный топик для каждого устройства, через который настраивать его поведение? Например, посылать в топик admin/esp8266_kitchen сообщение

{
    "type": "switch",
    "pin": 2,
    "topic": "test/led2"
}

при получении которого клиент подпишется на test/led2 и начнет управлять соответствующим светодиодом.

Что думаете на этот счет. Cast @ncrmnt, @quickquest.

★★★★★

Последнее исправление: aquadon (всего исправлений: 1)

Как быть? Заливать новую прошивку на ESP (пусть даже и по воздуху)?

Ага, зачем лишний «огород городить»? Хитрые прошивки с поведением, зависящим от неочевидных условий допустимы на этапе экспериментов, а для работы чем проще – тем лучше.

quickquest ★★★★★
()
Ответ на: комментарий от colok

Не только реально, но и совсем не сложно.

стоит ли оно того? не стоит.

Если не стоит, то предложи лучшую альтернативу. Пока я весьма скептически настроен к обновлению прошивки IoT устройств для изменения конфигурации.

aquadon ★★★★★
() автор топика
Ответ на: комментарий от aquadon

Пока я весьма скептически настроен к обновлению прошивки IoT устройств для изменения конфигурации.

это пока. не, конечно, если у тебя это просто игрушка на кухне, которую в случае чего раскирпичить — пятиминутное дело, то можешь клепать что хочешь. когда тебе понадобится чтобы оно просто работало — потрахаешься со своей хитрой обновлялкой, выпилишь её и вернешься к перепрошивке. не ты первый, не ты последний.

colok
()

Это выглядит стройно, пока у тебя задачи игрушечные (ну или если щёлкать пинами по булевой команде из топика — единственная задача, которая в принципе будет у тебя в системе).

Но я как бы извиняюсь, набор пинов, подключенных к полезным нагрузкам, конечен и задаётся при проектировании/пайке/сборке устройства. Что ты менять-то там собрался после сборки? А если конечное устройство — это макетка, на которой ты будешь раз в неделю что-то перетыкать, то и перепрошить не проблема.


А в противном случае у тебя это всё выродится в то, что ты переизобретёшь Device Tree и ещё какой-нибудь самодельный полудекларативный ЯП, на котором ты будешь писать по сути драйвера.

Ну тоже можно.

Но тогда проще не мелочиться, залить в контроллер эмбеддед луа или нодежс (что там сейчас более модно), написать себе личную библиотеку-DSL, на этом DSL написать всю логику и присылать в служебный топик тупо новый скрипт целиком.

intelfx ★★★★★
()
Ответ на: комментарий от intelfx

Но тогда проще не мелочиться, залить в контроллер эмбеддед луа или нодежс (что там сейчас более модно)

Оно уже там из коробки :)

aquadon ★★★★★
() автор топика
Ответ на: комментарий от intelfx

Плюсую.

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

@aquadon

Оно уже там из коробки

А действительно есть смысл использовать это с ESP?

Brillenschlange
()

Обновляй прошивку по воздуху. И внимательно смотри в сторону esphome.

ncrmnt ★★★★★
()

Чтобы к старости не стать совковым радиогубителем-маразматиком, используй исключительно современный бессвинцовый припой. ≥3% серебра - и всё будет отлично паяться.

Когда будешь орудовать паяльником - позови, приведу тебе мудака придумавшего гуглорекапчу для ректотермального убийства с особой жестокостью.

anonymous
()
Ответ на: комментарий от aquadon

Если ты отнёсся к мною сказаному серъезно - не стоит. Бессвинцовый припой тугоплавкий и тяжело им паять. Любителю точно не стоит, если ты не продаешь продукцию, на которую распространялся бы RoHS.

С уважением,

другая личность.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.