Этот репозиторий служит для разработки и распространения драйвера для интеграции устройств серии систем безопасности "Астра" и контроллеров автоматизации WirenBoard.
Проверена работоспособность драйвера совместно со следующими устройствами:
- Wiren Board 5 rev 5.8
- Wiren Board 3.5
- Астра РИ-М РР с прошивкой
RRs-rim-av3_0
- Различные извещатели
Преверена работа с единственным Астра РИ-М на канале. Теоретически драйвер должен работать с любым количеством РИ-М на канале (в пределах 250 штук, в связи со спецификой протокола), а так же с Астра-Z и любыми извещателями от Теко, совместимыми с Астра РИ-М и Астра-Z.
FYI: Рекомендую покупать Астра-Z, а не Астра РИ-М, из-за того, что у последнего есть небольшая путаница в радиорежимах (например если вы захотите использовать датчик протечки и датчик температуры — ничего не выйдет, т.к. первому нужен радиорежим 1, а второму — 2), в то же время для Астра-Z нет (и не будет) датчика изменения положения (впрочем и сам этот датчик для РИ-М снят с производства).
Устройства Астра-РИ-М выходят с завода в режиме "автономный", он не предполагает работу в качестве ведомого устройства на линии RS-485, в связи с этим необходимо переключить РИ-М в режим "системный". Делается это заменой прошивки, для чего потребуется загрузить и установить ПО ПКМ Астра Pro (во время установки убедитесь, что среди модулей ПКМ активирована галочка рядом с модулем смены ПО), и далее следуйте документации из Инструкции пользователя, раздел "Смена ПО на РР для работы в режиме «Системный»".
NB После обновления прошивки не забудьте обновить прошивку радиомодуля. И уже после прошивки радиомодуля необходимо сделать очистку памяти, согласно документации (очистка памяти требует сноровки и ловкости рук — может понадобиться несколько попыток, прежде чем у вас получится это сделать).
Для удобства установки и обновления, с помощью сервиса packagecloud.io был создан репозиторий,
после настройки которого вы сможете установить пакет как обычно, с помощью команды apt-get install wb-mqtt-astra
.
Так же можно установить всё вручную, из текущего репозитория: найдите последнюю версию драйвера в разделе Releases и загрузите её на WirenBoard командой (не забудьте заменить ссылку на корректную)
wget https://github.com/andrey-yantsen/wb-mqtt-astra/releases/download/v0.1/wb-mqtt-astra_0.1_armel.deb
Затем установите (имя файла определяется в результате выполнения предыдущей команды):
dpkg -i wb-mqtt-astra_0.1_armel.deb
Отредактируйте файл /etc/default/wb-mqtt-astra
в соответствии с вашей
установкой: для корректной работы драйвера достаточно указать опции serial
(по
умолчанию /dev/ttyAPP4
) и address
(при наличии нескольких устройств Астра
РИ-М на одной шине нужно указывать адреса в таков формате: -address 1 -address 2 -address 3
). Если вы ещё не регистрировали РИ-М (т.е. не изменяли стандартный
адрес), то значение адреса можно выбрать любое, в диапазоне от 1 до 250.
Чтобы работать с РИ-М, который подключен к порту /dev/ttyAPP3
и имеет (или будет
иметь) адрес 5 — необходимо установить переменную
ASTRA_OPTIONS='-serial /dev/ttyAPP3 -address 5'
.
После задания настроек запустите фоновый процесс: invoke-rc.d wb-mqtt-astra start
.
Откройте раздел Devices
в вэб-интерфейсе WirenBoard и найдите блок с
заголовком astra_1 (где 1
— адрес устройства, указанный при настройке).
Переключите триггер register
в положение on
, чтобы зарегистрировать РИ-М.
При успешной регистрации триггер delete
перейдёт в off
, а register
станет
чекбоксом с установленной галочкой.
По умолчанию РИ-М будет работать в частоте "1" (соответстует извещателям с
пометкой лит. 1), чтобы изменить канал — необходимо переключить контрол
l2_channel
в желаемое положение. При изменении частоты все
зарегистрированные извещатели будут забыты.
После регистрации РИ-М можно привязывать извещатели, для этого в том же
интерфейсе нужно активировать триггер register_l2
, дождаться, пока на РИ-М
замигает светодиод радиосеть и установить аккумулятор в регистрируемый
извещатель. После регистрации извещатель появится в списке устройств, а триггер
register_l2
переключится в состояние off
.
При регистрации нового извещателя в MQTT публикутеся минимальное количество
контроллов (в интерфейсе WB будет видно только delete
), для
получения полного списка необходимо заставить извещатель сработать — намочить
датчик протечки, передвинуть датчик изменения положения и т.д.
Видео-инструкция доступна по ссылке http://take.ms/xpOEm.
Часть контролов отображаются в 2 экземплярах — "подтверждённая" и "не
подтверджённая" тревога, например Channel1
и Channel1_confirmed
для датчика
протечки. "Подтверждённая" тревога меняет своё состояние через несколько секунд
после изменения "не подтверждённой". К сожалению мне не удалось добиться
стабильной отправки с извещателей событий об изменении состояния подтверждённой
тревоги, в связи с этим я рекомендую её игнорирвать.
Обработка и заполнение MQTT происходит в соответствии с соглашением WirenBoard. Список контроллов и описание выполняемых ими действий доступны в файле controls.md.
Чтобы удалить устройство с адресом 1 запустите следующую команду в консоли:
wb-mqtt-astra -address 1 -serial /dev/ttyAPP4 -delete-device
После удаления РИ-М / Z перестают отвечать по зарегистирированному ранее адресу и отвечают только на широковещательные запросы (поиск устройств, регистрация). После удаления необходимо очистить MQTT, удалив как информацию об удалённом РИ-М, так и данные о всех связанных извещателях (не забудьте подставить корректный адрес РИ-М и номер извещателя, и повторите вторую команду необходимое количество раз, в зависимости от количества зарегистрированных извещателей):
mqtt-delete-retained '/devices/astra_1/#'
mqtt-delete-retained '/devices/astra_1_sensor_1/#'
При возникновении нештатных ситуаций (вылетает демон, не работают какие-то функции, и т.п.) необходимо правильно составить баг-репорт, в противном случае помочь вам в решении данной проблемы у меня не получится.
- В первую очередь обновите демон до последней версии и убедитесь, что проблема всё ещё не исправлена
- Проверьте корректность подключения Астра РИ-М / Z и WirenBoard
- Выполните очистку памяти РИ-М / Z согласно документации (только при проблемах связи между Астра и WB)
- Если после выполнения первых 3 пунктов проблема не устранилась, то остановите
демоны
wb-mqtt-serial
иwb-mqtt-astra
:
invoke-rc.d wb-mqtt-serial stop
invoke-rc.d wb-mqtt-astra stop
- Запустите демон wb-mqtt-astra в отладочном режиме, с записью лога в файл:
. /etc/default/wb-mqtt-astra && wb-mqtt-astra -debug ${ASTRA_OPTIONS} >astra-debug.log 2>&1
. После того, как в интерфейсе проделаны все действия для повторения проблемы — завершите процесс нажатием Ctrl+C. Просмотрите получившийся лог-файлastra-debug.log
и убедитесь, что проблема вызвана не ошибкой конфигурирования - Опубликуйте полученный лог-файл в виде gist
- Создайте issue с детальным описанием проблемы (как минимум — полностью опишите все шаги, проделанные для воспроизведения проблемы, так же опишите, что должно было получиться в результате выполнения этих действий, и что на самом деле получилось) и добавьте ссылку на gist из предыдущего пункта.