Управление оборудованием с WB через Ethernet

Подскажите пожалуйста, как наиболее правильно и просто управлять Ethernet оборудованием с WB?
Я, честно говоря, не очень хорошо ищу инфу, но я правда пытался найти информацию у вас на форуме и вики .
Интересует несколько сценариев:

  1. постоянное подключение по TCP к некоему порту (например управление по telnet poe-коммутатором или аудио/видеоматрицей, если есть примеры с SSH - это еще лучше)
  2. создание HTTP GET и POST запросов к устройству (управление PTZ-камерами и т.д.)
  3. создание TCP-сервера и обработка сообщений клиентов
  1. WB-это обычный компьютер с линуксом, поэтому есть миллион разных способов, как это сделать и все они не специфичные для WB
  2. Если речь про движок правил Wiren Board, то там это сейчас встроенными средствами не сделать. Для TCP или HTTP клиентов можно воспользоваться выполнением произвольных shell-команд и выполнять curl или wget с заданными параметрами.

Евгений,
Если встроенного механизма нет, то мне надо написать драйвер для WB для обслуживания TCP-соединения с моими железками, который будет работать с MQTT-скелетом, верно?

Я могу написать скрипт на питоне для работы с TCP, но для него будет нужен вотчдог для старта/перезапуска, и он должен стать не скриптом, а демоном, правильно?
Ни разу такого не делал. Можете посоветовать какой-то how-to?

Вроде того, да.

Про демоны - посмотрите какой-нибудь наш https://github.com/contactless/wb-mqtt-am2320

Вот я на коленке делал управление розетками по wifi с публикацией топиков в mqtt

1 лайк

Начал я изучать, как же это все заставить работать. В линуксах и питонах я не силен, поэтому извините за возможные глупости.
Что я смог сделать и что хочу понять:

  1. Удалось сделать (спасибо bzzeke и Евгению за примеры) включение света с камеры видеонаблюдения (на WB эмулирую SMTP сервер на питоне, на который камера обращается для отправки емайла на событие “движение” , далее этот же скрипт публикует в топике релюшки команду включить свет). Это правильно с точки зрения философии WB?

2.C помощью sysv запустил скрипт как демон. Собственно, к первому вопросу - как этот скрипт сервера-эмулятора поднимать в случае падения? На WB же нет systemd, верно?

  1. Как обнулить/восстановить контроллер, если я его случайно замордую? Ну не rm -rf конечно (но и в этом случае тоже расскажите, можно ли восстановить своими силами)

  2. Так и не понял, можно ли работать на WB с mqtt из питон3. Когда пытался скрипт запустить из под третьего питона, он ругался, что не знает библиотеку mqtt. Попытался ее поставить через pip3 - на WB отсутствует pip3 и не ставится через apt-get и setup.py. Подскажите, поддерживает ли WB pip3?

  3. Основная проблема у меня при работе - я не могу понять навигацию вашего wiki. Есть ли какая-то основная карта руководств по работе с WB, наподобие навигации в Иридиуме?

Щас вот час пытался понять, почему я в Settings WB не вижу топиков, которые публикую внешней железкой. на WB, mosquitto_sub их показывает, а в вебе их нет.
Оказывается, чтобы я их видел в разделе Settings (и Devices) они должны быть в формате /device/<name_device>/controls/<и так далее>
А я публиковал /device/<name_device>/state/<и так далее>
Соответственно, ни в правилах, ни в виджетах, нет такого устройства, и работать с ним нельзя.

Занесите в вики, что надо публиковать топики в формате /device/<name_device>/controls/<и так далее>

Это тут: MQTT в контроллерах Wiren Board — Wiren Board

Вот точная ссылка на раздел документации: https://contactless.ru/wiki/index.php/MQTT#.D0.A1.D1.82.D1.80.D1.83.D0.BA.D1.82.D1.83.D1.80.D0.B0_.D1.81.D0.BE.D0.BE.D0.B1.D1.89.D0.B5.D0.BD.D0.B8.D1.8F_.D0.BE_.D1.81.D0.BE.D1.81.D1.82.D0.BE.D1.8F.D0.BD.D0.B8.D0.B8_.D1.83.D1.81.D1.82.D1.80.D0.BE.D0.B9.D1.81.D1.82.D0.B2.D0.B0
Дописал внизу раздела ремарку для разработчиков новых драйверов.