Подскажите, пожалуйста, каким образом передать радиопакеты ? какой командой ? не нашел информации про это…
Антенна подключена.
С какого-либо устройства передать, я хотел сказать: нажать на радиовыключатель, например, или любой пульт 433 MHz, в городе что-то обычно само прилетает через некоторое время.
Вот что выдает сразу:
root@wirenboard-A7NAXHXU:~# /usr/bin/python /usr/bin/wb-homa-rcd 0 75 -1
close failed in file object destructor:
IOError: [Errno 16] Device or resource busy
0x6c
0x7a
0xe1
ModeReady
Traceback (most recent call last):
File “/usr/bin/wb-homa-rcd”, line 425, in
mqtt_handler = MQTTHandler()
File “/usr/bin/wb-homa-rcd”, line 95, in init
serial_parts = [int(x,16) for x in self.serial.split(’:’)[-2:]]
ValueError: invalid literal for int() with base 16: ‘’
сервис wb-homa-ism-radio остановлен
Так понятнее! Покажите, пожалуйста, что у вас в файле /mnt/data/var/lib/wirenboard/serial.conf ?
Он пустой
Что-то с обновлениями разъехалось. Я бы попробовал перепрошить контроллер заново к заводским настройкам.
Но, возможно, будет достаточно команды:
ip link show eth0 | grep ether | tr -s ' ' |cut -f 3 -d ' ' > /mnt/data/var/lib/wirenboard/serial.conf
Выполните команду и запустите для проверки еще раз
/usr/bin/python /usr/bin/wb-homa-rcd 0 75 -1
Попробовал пару раз. Вот результаты.
-
root@wirenboard-A7NAXHXU:~# /usr/bin/python /usr/bin/wb-homa-rcd 0 75 -1
close failed in file object destructor:
IOError: [Errno 16] Device or resource busy
0x6c
0x7a
0xe1
ModeReady
absent val noolite_remotes_custom
absent val noolite_remotes
absent val room
absent val rssi_threshold
^CTraceback (most recent call last):
File “/usr/bin/wb-homa-rcd”, line 431, in
data = radio.getDataBlocking()
File “/usr/lib/wb-homa-ism-radio/rfm69.py”, line 251, in getDataBlocking
self.data_event.wait(timeout)
File “/usr/lib/python2.7/threading.py”, line 614, in wait
self.__cond.wait(timeout)
File “/usr/lib/python2.7/threading.py”, line 359, in wait
_sleep(delay)
KeyboardInterrupt
Exception in thread Thread-3 (most likely raised during interpreter shutdown):
Traceback (most recent call last):
File “/usr/lib/python2.7/threading.py”, line 801, in __bootstrap_inner
File “/usr/lib/python2.7/threading.py”, line 754, in run
File “/usr/lib/python2.7/dist-packages/mosquitto.py”, line 2051, in _thread_main
File “/usr/lib/python2.7/dist-packages/mosquitto.py”, line 1174, in loop_forever
File “/usr/lib/python2.7/dist-packages/mosquitto.py”, line 729, in loop
File “/usr/lib/python2.7/dist-packages/mosquitto.py”, line 1010, in loop_misc
<type ‘exceptions.AttributeError’>: ‘NoneType’ object has no attribute ‘time’ -
root@wirenboard-A7NAXHXU:~# /usr/bin/python /usr/bin/wb-homa-rcd 0 75 -1
close failed in file object destructor:
IOError: [Errno 16] Device or resource busy
0x6c
0x7a
0xe1
ModeReady
^CTraceback (most recent call last):
File “/usr/bin/wb-homa-rcd”, line 431, in
data = radio.getDataBlocking()
File “/usr/lib/wb-homa-ism-radio/rfm69.py”, line 251, in getDataBlocking
self.data_event.wait(timeout)
File “/usr/lib/python2.7/threading.py”, line 614, in wait
self.__cond.wait(timeout)
File “/usr/lib/python2.7/threading.py”, line 359, in wait
_sleep(delay)
KeyboardInterrupt
Последний запуск, похоже, успешный. Вы не пробовали передавать что-то на 433 Mhz с любого устройства? Появились ли виртуальные устройства для noolite ?
Появились вот такие устройства в веб-интерфейсе:
Noolite TX 0x304
Noolite TX 0x305
Noolite TX 0x306
Noolite TX 0x307
Позже попробуем передать что-нибудь на 433 Mhz
Через MQTT теперь можно будет управлять устройствами Noolite ?
Да, можно, всеми noolite-овскими устройствами, которые работают на старом протоколе.
Правильно ли я понял, что “Noolite TX 0x304” - это виртуальный пульт ?
Есть ли инструкция по управлению устройствами Noolite через MQTT ?
Да, совершенно верно, Noolite TX 0xXXX – это виртуальные пульты.
Смотрите, берем например модуль “Силовой блок SLF-1-300” (это, правда, старая модель, сейчас они не выпускают такие. Модели с шифрованием и обратной связью (nooLite-F), несовместимы с контроллером, выбирайте те, которые поддерживают просто nooLite, без “-F”. Есть модели, которые поддерживают и тот, и другой протоколы связи, SLF-1-300 входит в их число).
Подключаем модуль в сеть и к нагрузке, нажимаем кнопку привязки, заморгает светодиод на модуле. После этого на любом из пультов (для примера 0xb61) нажимаем кнопку Bind, светодиод заморгает часто, значит, модуль готов привязаться. Еще раз нажимаем кнопку, светодиод станет мигать относительно редко — значит, модуль привязан к виртуальному пульту.
В случае модуля SLF-1-300 управлять им можно с виртуального пульта переключателем state (включать или выключать) и кнопкой switch (изменять состояние включено-выключено-включено-…):
В MQTT этим органам управления соответствуют топики
/devices/noolite_tx_0xb61/controls/state
и /devices/noolite_tx_0xb61/controls/switch
Попробуем в командной строке управлять нагрузкой:
команда
mosquitto_pub -t "/devices/noolite_tx_0xb61/controls/state/on" -m 1
включит нагрузку, а команда
mosquitto_pub -t "/devices/noolite_tx_0xb61/controls/state/on" -m 0
— выключит.
Команда
mosquitto_pub -t "/devices/noolite_tx_0xb61/controls/switch/on" -m 0
будет изменять состояние (в топик можно публиковать любое значение)
Поскольку обратной связи нет, переключатель “state” в веб-интерфейсе не отражает текущее состояние реле!
В движке правил управлять реле можно следующим образом:
//включить реле
dev["noolite_tx_0xb61"]["state"]=true;
//выключить реле
dev["noolite_tx_0xb61"]["state"]=false;
//изменить состояние реле (= true или =false)
dev["noolite_tx_0xb61"]["switch"]=true;
Дополню документацию.
Большое спасибо, теперь работает!
Замечательно! Успехов вам!
Подскажите пожалуйста, а как сымитировать нажатие клавиш пульта типа Vhome и Livolo? При помощи rfsniffer Эти пульты отобразились в списке устройств WB. А Livolo показал свой двоичный код команды.
В MQTT появились новые топики. Как теперь вызвать отправку необходимых команд для livolo и Vhome?