Альтернатива для стандартного драйвера радио ism-radio.
В качестве основы был взят драйвер от @avp (https://github.com/avp-avp/rfsniffer), он был обернут в deb-пакет, добавлено несколько новых протоколов и других возможностей.
В настоящий момент RFSniffer НЕ включает в себя полный функционал ism-radio, он больше заточен на получение данных с датчиков (управления из веб-интерфейса нет).
В настоящий момент поддерживаются протоколы:
Oregon (V2 + V3)
Noolite
Livolo
Raex
RST
Rubitek
VHome (нет)
X10
протокол чипов HS****
В ближайшее время драйвер появится в репозитории под именем wb-homa-rfsniffer.
Установка
apt-get update apt-get install wb-homa-rfsniffer
Этот драйвер не совместим с wb-homa-ism-radio! Установить оба deb-пакета у вас и так не получится, но при самостоятельном запуске исполняемого файла это стоит учитывать. В таком случае самостоятельно отключайте сервис: service wb-homa-ism-radio stop.
Настройка
Есть json-конфиг, доступный к редактированию из веб-интерфейса.
Из полезных настроек, там можно задать:
Показывать ли все устройства, от которых приходят сообщения, или только те про которые это явно сказано
Для каждого устройства можно задать политику - показывать или скрывать это устройство, кроме этого можно сказать, что если, например, от устройства нет сигналов в течение 2 минут, то стоит выдать ошибку.
(При изменении политики само устройство не исчезнет, делаем mqtt-delete-retained/devices/noolite_rx_0x14e5/#, только с нужным названием устройства)
Сообщить об ошибке
Сначала убедитесь, что ошибка действительно есть (wb-homa-ism-radio отключен, поведение драйвера действительно ненормальное)
Подробно опишите ошибку. Это значит все названия используемых устройств, все производимые с ними действия в хронологическом порядке и прочую информацию того же рода.
Стоит приложить /run/wb-homa-rfsniffer.log
Для следующих пунктов остановить драйвер: service wb-homa-rfsniffer stop.
Или, чтобы дать больше информации запустить вручную /usr/bin/wb-homa-rfsniff -c /etc/wb-homa-rfsniffer.conf и приложить его вывод.
При проблемах с поддержкой устройства нужно запустить/usr/bin/wb-homa-rfsniff -W, смоделировать нужную ситуацию, потом скопировать файл .rcf и приложить. В нём записаны все полученные сообщения. Это позволит смоделировать ситуацию и исправить ошибки. Особенно важно сделать это, если драйвер падает.
1 и 2-кнопочные не работают корректно — появляется устройство VHome, но в контроле Switch всегда пустота. Вот лог rfsniffer’а, приём сообщения заканчивается ошибкой:
Спустя произвольный период времени приложение вылетает, выводя вот это в лог:
08/07 07:21:17 [9729] Msg from Oregon type=1D20 id=144 ch=1 low_bat=0 t=20.2 h=54
08/07 07:21:17 [9729] mqtt::on_publish(3830)
08/07 07:21:17 [9729] publish /devices/oregon_rx_1D20_144_1/controls/Temperature=20.2
08/07 07:21:17 [9729] mqtt::on_publish(3831)
08/07 07:21:17 [9729] publish /devices/oregon_rx_1D20_144_1/controls/Humidity=54
08/07 07:21:17 [9729] mqtt::on_publish(3832)
08/07 07:21:17 [9729] publish /devices/oregon_rx_1D20_144_1/controls/Battery low=0
08/07 07:21:56 [9729] RF got data 376 bytes. RSSI=-99
08/07 07:22:35 [9729] RF got data 438 bytes. RSSI=-91
08/07 07:22:42 [9729] RF got data 1406 bytes. RSSI=-92
08/07 07:22:43 [9729] RF got data 1454 bytes. RSSI=-93
08/07 07:22:44 [9729] RF got data 1566 bytes. RSSI=-89
08/07 07:22:45 [9729] RF got data 520 bytes. RSSI=-91
08/07 07:22:46 [9729] RF got data 1616 bytes. RSSI=-92
08/07 07:22:47 [9729] RF got data 2284 bytes. RSSI=-89
08/07 07:22:48 [9729] RF got data 2038 bytes. RSSI=-88
08/07 07:23:00 [9729] RF got data 628 bytes. RSSI=-94
08/07 07:23:01 [9729] RF got data 522 bytes. RSSI=-93
08/07 07:23:02 [9729] RF got data 1504 bytes. RSSI=-95
terminate called after throwing an instance of 'std::logic_error'
what(): basic_string::_S_construct null not valid
Stack trace (most recent call last):
#2 Object "/lib/arm-linux-gnueabi/libc.so.6", at 0xb6c46aa7, in gsignal
#1 Object "/lib/arm-linux-gnueabi/libc.so.6", at 0xb6c47daf, in
#0 Object "/usr/bin/wb-homa-rfsniff", at 0x1cef7, in
Aborted (Signal sent by tkill() 9729 0)
Aborted
root@wirenboard-ASXOO36V:~# date
Sat Jul 8 07:25:38 UTC 2017
Радиолог скинуть не могу, т.к. при запуске с -W приложение перестаёт обрабатывать полученные сигналы (либо сообщать о них в mqtt), а у меня весь свет в квартире на радио-выключателях, и до падения может пройти несколько дней.
Можно выпустить версию, в которой -W не будет мешать нормальной работе?
Просмотрел дамп, протокол очень похож (если не совпадает) на протокол одного безымянного датчика движения (это как раз hs24bits). Как различать сообщения пока не понятно.
Еще в дампе я нашел сообщения похожие на сообщения от нажатий, но не похоже, что их было 4. Получается выделить группы, например, по 6 сообщений. Возможно помогут разобраться дампы: долгого зажатия одной кнопки, короткого зажатия одной кнопки. Зажатия разных кнопок по одному разу.
Или статья на разбор протокола.
Извините за утверждение о поддержке VHome, она была заимствована и полностью не протестирована.
Спасибо за дампы (вы даже перестарались ), они помогли. Протокол vhome это частный случай использования чипов ev1527, так что по умолчанию будет определяться ими. Но в настройках, в конфиге можно отключить ev1527 и влючить vhome. Тогда будет более презентабельно отображаться.
На короткие нажатия пока не очень хорошо реагирует.
UPD Проверил 1-, 2- и 3- кнопочные сенсорные, и 1- и 3-кнопочные не-сенсорные — все работают. Ловится правда не стабильно, но вполне приемлемо, для дешёвых китайских выключателей
P.S. Ссылка на 3-кнопочный не-сенсорный выключатель ведёт на 2-кнопочный потому, что на плате там 3 кнопки, но внешне — всего 2
Запись не мешающая нормальной работе: флаг -w при прямом запуске. Или в конфиге выставить dump_stream true. Но во втором случае файлы окажутся в корне (но это скоро исправится).
А можно как-нибудь сделать, чтоб дамп не сожрал все мои оставшиеся 300мб диска? Я его сейчас запустил, и чёрт его знает сколько придётся ждать до падения…
Спасибо вам. Исправил баг. Теперь падать не должно, по крайней мере при тех же обстоятельствах) Новая версия по ссылке выше. Если все хорошо, пожалуйста напишите, версия пойдет в репозиторий.
Можно, конечно, но основной смысл в нем, чтобы в точности восстановить происходящее, а если он будет не сначала, то точности не будет, и появится много недопонимания.[quote=“Andrey_Yantsen, post:12, topic:940, full:true”]
А можно как-нибудь сделать, чтоб дамп не сожрал все мои оставшиеся 300мб диска? Я его сейчас запустил, и чёрт его знает сколько придётся ждать до падения…
[/quote]
Кажется демон чувствует себя хорошо и не падает, но мне приходилось несколько раз перезагружать контроллер (не всегда восстанавливается сеть при падении-поднятии линка). Но пару дней оно держалось и не падало.
Но началось другое — демон то ли начал лучше распознавать сигналы, то ли наоборот, то ли это мои ощущения На старой версии на ноолайте не было “ложных” срабатываний, сейчас же — периодически нажимаешь на выключатель, а WB регистрирует 2 нажатия, и из-за этого свет включается на долю секунды и сразу выключается. А на VHome периодически путаются 1я и 3я кнопки — т.е. нажимаешь первую, а контроллер считает её третьей, или вообще видит нажатие с обеих кнопок (но тут я виню скорее китайские кнопки, хотя подсветка загорается только у той, на которую нажали).
Здравствуйте! можно ли пояснить? где смотреть устройства от которых приходят данные? у меня имеются пульты X10, но не могу понять где мне добавлять устройство и как? спасибо!