Subscribe + парсинг

Есть топики вида {“device_ID”:“001202099”,“DT_UNIX”:15000002222,“Temp 1-wire”:25.5}
Как можно их ‘отлавливать’ и разбирать?

Добрый день!

Вы имеете в виду из движка правил?

Как самый простой вариант, ДА
А вообще подойдет любой вариант с пояснениями

Идея такая:
Получаем по подписке топика, типа AAA/BBB/CCC - json {“device_ID”:“001202099”,“DT_UNIX”:15000002222,“Temp 1-wire”:25.5}
Парсим и получаем значение, например DT_UNIX
И решаем включать или нет реле.

Если эти данные прилетают в топик с именем “/devices/ЧТО-НИБУДЬ/controls/ЧТО-НИБУДЬ-ЕЩЁ/on” , то их можно принять и разобрать в движке правил, в противном случае придётся писать какой-нибудь отдельный скрипт или программу на любимом языке программирования.

  1. Какие операторы существуют в правилах для работы со строками (для парсинга)?
  2. Как можно использовать скрипты и т.д. для отлавливания топиков и работы с ними?

Добрый день!
Парсинг json:

var json = '{"result":true,"count":1, "test":2}',
obj = JSON.parse(json);

log(obj.result);
log(obj.count);
log(obj.test);

Про работу с топиками читайте тут: https://contactless.ru/wiki/index.php/%D0%94%D0%B2%D0%B8%D0%B6%D0%BE%D0%BA_%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D0%BB_wb-rules

Супер. Спасибо.
В том то и дело что в Вики мало что есть.

На Wiki мы стараемся специфичные вещи писать, а так изучение ECMAScript /Javascript даст понимание базовых вещей.

Помогите решить задачу:

  1. Чтение данных rs485
  2. Получение сообщений json из ‘нестандартных’ топиков
  3. Парсинг топиков
  4. Обработка данных

По отдельности получается я знаю как решить, а вот вместе не склеивается

  1. Самое простое решение - через встроенный драйвер и получить топики “/devices/ЧТО-НИБУДЬ/controls/ЧТО-НИБУДЬ-ЕЩЁ/param-1”
    2.3. Встроенного нет. Из того что я умею это python. Есть опыт subscribe, парсинг и потом в базу sql.
    Но не умею запускать скрипты в качестве сервиса. И если скрипт падает, то прекращается вся обработка. И требуется постоянный контроль запущенного скрипта.

Какие решить?

Ну если умеете в питон - то вот я делал драйвер, который опрашивает wifi розетки и постит в mqtt

1 Like

Большое спасибо
С питоновским файлом все понятно. Но я всегда запускал из командной строки (или автозапуск на Винде) и не понятно куда и что в линуксе. А у Вас там ещё куча файлов. Зачем они и куда их класть?

Погуглите sysvinit, это система запуска скриптов на WB5. И поймете, зачем там другие файлы.

И, в общем, если захотите что-то сделать на WB продвинутое - то придется чутьчуть изучать линукс. Либо продавать его и смотреть в сторону другой платформы. (где со временем тоже придется что-то изучать)

Основной файл там один - wb-mqtt-orvibo.py, а остальное - это скрипты для инициализации и запуска этого файла в виде демона. Для разработки и отладки вам достаточно одного этого файла. А как все будет готово - можно повторить структуру файлов/каталогов, как у меня в репозитории и собрать из него .deb пакет.