Создание и удаление устройств noolite

Здравствуйте.

Добавляю noolite устройство командой:
mosquitto_pub -t ‘/devices/wb-homa-rcd/meta/noolite_remotes_custom’ -m ‘0xeed’
Потом удаляю его командой:
mqtt-delete-retained ‘/devices/noolite_tx_0xeed/#’

при этом он удаляется, но после перезагрузки появляется вновь. Неправильно удаляю?

Т.к. публиковалось в топик без ретайн флага ( -r), то после перезагрузки и так должно исчезнуть.

Я думаю тут ситуация следуюшая:

  1. вы отправляете команду драйверу радио добавить новый блок
  2. вы удаляете структуру сообщений блока напрямую из MQTT. Драйвер радио про это не знает и продолжает писать туда же. Соответственно девайс кусками всё равно может появляться в интерфейсе.
  3. После перезагрузки драйвер уже не пишет в этот девайс, т.к. MQTT-сообщение было без retained
  4. Вы видите остатки, которые драйвер отправил в прошлый раз

Итого решение:

  1. посылайте в /devices/wb-homa-rcd/meta/noolite_remotes_custom команды с retained
  2. если хотите удалить, то пошлите в /devices/wb-homa-rcd/meta/noolite_remotes_custom новый список (пустой например)
  3. перезагрузите драйвер (или service wb-homa-ism-radio restart или перезагрузкой контроллера)
  4. удалите лишние топики через mqtt-delete-retained

после перезагрузки сразу же попытался удалить.
mqtt-delete-retained ‘/devices/noolite_tx_0xeed/#’

Пишет …
done!
и виснет, при выходе по ctrl+C выходит:
^CTraceback (most recent call last):
File “/usr/bin/mqtt-delete-retained”, line 76, in
rc = client.loop()
File “/usr/lib/python2.7/dist-packages/mosquitto.py”, line 725, in loop
rc = self.loop_write(max_packets)
File “/usr/lib/python2.7/dist-packages/mosquitto.py”, line 986, in loop_write
rc = self._packet_write()
File “/usr/lib/python2.7/dist-packages/mosquitto.py”, line 1373, in _packet_write
while self._current_out_packet:
KeyboardInterrupt

И после перезагрузки опять появляется.
По второму пункту

  1. если хотите удалить, то пошлите в /devices/wb-homa-rcd/meta/noolite_remotes_custom новый список (пустой например)

Объясните как послать пустой список.

Вместо -m “что-то” написать -n . Это написано в хелпе по mosquitto_pub.

не получилось…
Видимо пытаюсь удалить привязанный пульт. Как узнать он привязан или нет? И как удалить привязанность?

Привязать - значит записать '0xeed' (тот номер что вы сами добавляли) в память силового блока.
На стороне WB ничего не привязывается.
Попробуйте остановить драйвер: /etc/init.d/wb-homa-ism-radio stop
Потом удалить все с этим адресом из MQTT.
Запустите драйвер: : /etc/init.d/wb-homa-ism-radio start

Спасибо! Получилось удалить.

Теперь случилось еще интересный случай…
У меня теперь после всяких манипуляций с добавлением и удалением.
Мой силовой блок стал реагировать на отключение с одного девайса и включение с другого девайса.
девайс - это виртуальный пульт на WB4.
Остальные рабочие силовые блоки нормально работают.

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

Понимаю когда с двух пультов одинаково откликается.
А тут с одного только выключается с другого только включается. Т.е. тот который выключает включать не может, а который включает не может выключить.

Тут уж только стирание памяти пультов и заново привязать.

Подскажите, как настроить WB5 на работу с Ноолайт по следующей схеме - есть блок SU111-500 (исполнительный механизм).
Как управлять им с WB5? я не виже его в веб интерфейсе, не знаю какой у него адрес.

Как узнать адрес?
как потом добавить его как реле?
как потом добавить его как диммер?

WB5 в этом случае предоставляет вам виртуальные пульты nooLite. Почитайте про логику работы системы nooLite в документации на систему nooLite.

Разобрался, подключил.
теперь хочется, чтобы на опенхабе отображался статус света.
Это можно реализовать если включаться и выключаться он будет через Wb5, а не напрямую с выключателя на реле.

Для этого попробовал написать правило
defineRule(“Noolite virtual”, {
whenChanged: “noolite_rx_0x52f4/state”,
then: function (newValue, devName, cellName) {
dev[“noolite_tx_0x8e1”][“state”] = newValue;

}
});

но почему-то идет достаточно ощутимая задержка, когда замыкаю кнопку на пульте. (около 500 мс)
подскажите, как улучшить реакцию системы?

Особенности работы радио. Модуль дожидается конца пакета (а его там 2 или 3 копии в nooLite), декодирует, потом сигнал обрабатывает система правил, а потом результат опять летит по радио. Теоретически там можно что-нибудь подкрутить и оптимизировать, но для этого нужно лезть в код модуля радио (rfm69-linux).

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

Noolite это односторонняя система, приёмники только принимают, пульты только отправляют.
Боюсь, ничего тут придумать не получится.