RFSniffer - новый драйвер для 433МГц оборудования


#1

Альтернатива для стандартного драйвера радио 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 и приложить. В нём записаны все полученные сообщения. Это позволит смоделировать ситуацию и исправить ошибки. Особенно важно сделать это, если драйвер падает.

Ссылки

Главная страница на github (там есть README) https://github.com/contactless/rfsniffer
Все новые версии появляются в первую очередь здесь
https://github.com/contactless/rfsniffer/releases
.


#2

#3

В наличии есть 1, 2 и 3 кнопочные сенсорные выключатели VHome, пытаюсь их подключить, но похоже не работает полностью:

  1. 3-кнопочный выключатель появляется, но с именем hs24bits_1047734_1 (а не vhome_blabla, как ожидается), радиолог https://transfer.sh/biyxf/dump-all-0107-165058-001.rcf (нажимал 4 раза 1 кнопку)
  2. 1 и 2-кнопочные не работают корректно — появляется устройство VHome, но в контроле Switch всегда пустота. Вот лог rfsniffer’а, приём сообщения заканчивается ошибкой:
01/07 16:33:20 [11195] RF Received: VHome:. RSSI=-78 (-96)
01/07 16:33:20 [11195] mqtt::on_log(16, Client RFsniffer sending PUBLISH (d0, q0, r1, m34, '/devices/VHome/controls/Switch/meta/readonly', ... (1 bytes)))
01/07 16:33:20 [11195] mqtt::on_publish(34)
01/07 16:33:20 [11195] publish /devices/VHome/controls/Switch/meta/readonly=1
01/07 16:33:20 [11195] mqtt::on_log(16, Client RFsniffer sending PUBLISH (d0, q0, r1, m35, '/devices/VHome/controls/Switch', ... (0 bytes)))
01/07 16:33:20 [11195] mqtt::on_publish(35)
01/07 16:33:20 [11195] publish /devices/VHome/controls/Switch=
01/07 16:33:20 [11195] mqtt::on_log(16, Client RFsniffer sending PUBLISH (d0, q0, r1, m36, '/devices/VHome/controls/Switch/meta/order', ... (1 bytes)))
01/07 16:33:20 [11195] mqtt::on_publish(36)
01/07 16:33:20 [11195] publish /devices/VHome/controls/Switch/meta/order=1
01/07 16:33:20 [11195] mqtt::on_log(16, Client RFsniffer sending PUBLISH (d0, q0, r1, m37, '/devices/VHome/meta/name', ... (6 bytes)))
01/07 16:33:20 [11195] mqtt::on_publish(37)
01/07 16:33:20 [11195] publish /devices/VHome/meta/name=VHome
01/07 16:33:20 [11195] mqtt::on_log(16, Client RFsniffer sending PUBLISH (d0, q0, r1, m38, '/devices/VHome/controls/Switch/meta/type', ... (6 bytes)))
01/07 16:33:20 [11195] mqtt::on_publish(38)
01/07 16:33:20 [11195] publish /devices/VHome/controls/Switch/meta/type=switch
01/07 16:33:20 [11195] conn.NewMessage failed: Exception

Радиолог: https://transfer.sh/tcgWh/dump-all-0107-165219-001.rcf (нажимал одну кнопку на 2-кнопочном выключателе 4 раза).

ii  wb-homa-rfsniffer          1.0.6              armel              Wiren Board RFM69 driver

#4

Спустя произвольный период времени приложение вылетает, выводя вот это в лог:

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 не будет мешать нормальной работе?


#5

Спасибо за багрепорт. Попытаюсь воспроизвести ошибку.
Запись, не мешающую нормальной работе, тоже сделаю.


#6

Просмотрел дамп, протокол очень похож (если не совпадает) на протокол одного безымянного датчика движения (это как раз hs24bits). Как различать сообщения пока не понятно.

Еще в дампе я нашел сообщения похожие на сообщения от нажатий, но не похоже, что их было 4. Получается выделить группы, например, по 6 сообщений. Возможно помогут разобраться дампы: долгого зажатия одной кнопки, короткого зажатия одной кнопки. Зажатия разных кнопок по одному разу.

Или статья на разбор протокола.

Извините за утверждение о поддержке VHome, она была заимствована и полностью не протестирована.


#7

VHome делал я. У меня был только 3х кнопочный пульт и похоже я не угадал с поддержкой двух-кнопочного.


#8

Вот вам дампики


#9

Вот тестовая версия

Спасибо за дампы (вы даже перестарались :slight_smile: ), они помогли. Протокол vhome это частный случай использования чипов ev1527, так что по умолчанию будет определяться ими. Но в настройках, в конфиге можно отключить ev1527 и влючить vhome. Тогда будет более презентабельно отображаться.

На короткие нажатия пока не очень хорошо реагирует.


Ну а всетаки будет ли когда нибудь заявленная в рекламе поддержка китайского 433 МГц оборудования?
#10

Шикааарно, спасибо. Проверил 3-кнопочный, отлично работает. Пните ещё, пожалуйста, когда -W перестанет мешать нормальной работе.

UPD Проверил 1-, 2- и 3- кнопочные сенсорные, и 1- и 3-кнопочные не-сенсорные — все работают. Ловится правда не стабильно, но вполне приемлемо, для дешёвых китайских выключателей :slight_smile:

P.S. Ссылка на 3-кнопочный не-сенсорный выключатель ведёт на 2-кнопочный потому, что на плате там 3 кнопки, но внешне — всего 2 :slight_smile:


#11

Запись не мешающая нормальной работе: флаг -w при прямом запуске. Или в конфиге выставить dump_stream true. Но во втором случае файлы окажутся в корне (но это скоро исправится).


#12

А можно как-нибудь сделать, чтоб дамп не сожрал все мои оставшиеся 300мб диска? :slight_smile: Я его сейчас запустил, и чёрт его знает сколько придётся ждать до падения…


#13

Вау! В этот раз оно упало через 20 минут после запуска. Радиолог и предсмертный вывод консоли:

1500400182 INFO  : mqtt::on_publish(344)
1500400182 INFO  : publish /devices/oregon_rx_1D20_144_1/controls/Humidity = 60
1500400182 INFO  : mqtt::on_log(16, Client RFsniffer sending PUBLISH (d0, q0, r1, m345, '/devices/oregon_rx_1D20_144_1/controls/Battery low', ... (1 bytes)))
1500400182 INFO  : mqtt::on_publish(345)
1500400182 INFO  : publish /devices/oregon_rx_1D20_144_1/controls/Battery low = 0
1500400192 INFO  : RF got data 390 signals. RSSI=-80
1500400192 INFO  : RF Received: MotionSensor:bBbBbBbBaAbAaBaAbAaBaAbAaBbBbBaAbBbAaBbBaAbBbAaBaAbBbBbBbBbAaBaAbBbBbBbAaBbBaAbAaBaAbBbAaBaAbBbBbBbBbAaBbBaAbAaBaAbBbAaBbBaAbBbBbBbBbBbBbBbAaBbBbBbBbBaAbBbBbAaBaAbBbBbBbAaBbB. RSSI=-101 (-102)
1500400192 INFO  : RF Received: Oregon:type=EC40 id=69 ch=1 low_bat=0 t=19.6. RSSI=-101 (-102)
1500400192 INFO  : Msg from Oregon type=EC40 id=69 ch=1 low_bat=0 t=19.6
1500400192 INFO  : mqtt::on_log(16, Client RFsniffer sending PUBLISH (d0, q0, r1, m346, '/devices/oregon_rx_EC40_69_1/controls/Battery low', ... (1 bytes)))
1500400192 INFO  : mqtt::on_publish(346)
1500400192 INFO  : publish /devices/oregon_rx_EC40_69_1/controls/Battery low = 0
1500400192 INFO  : mqtt::on_log(16, Client RFsniffer sending PUBLISH (d0, q0, r1, m347, '/devices/oregon_rx_EC40_69_1/controls/Temperature', ... (4 bytes)))
1500400192 INFO  : mqtt::on_publish(347)
1500400192 INFO  : publish /devices/oregon_rx_EC40_69_1/controls/Temperature = 19.6
1500400192 INFO  : RF Received: MotionSensor:BbBbBbBbBbBbBbBbBbBbBbBbBbBbBbBaAbAaBaAbAaBaAbAaBbBbBaAbBbAaBbBaAbBbAaBaAbBbBbBbBbAaBaAbBbBbBbAaBbBaAbAaBaAbBbAaBaAbBbBbBbBbAaBbBaAbAaBaAbBbAaBbBaAbBbBbBbBbBbBbBbAaBbBbBbBbBaAbBbBbAaBaAbBbBbBbAaBbB. RSSI=-101 (-102)
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 0xb6bd7aa7, in gsignal
#1    Object "/lib/arm-linux-gnueabi/libc.so.6", at 0xb6bd8daf, in
#0    Object "/usr/bin/wb-homa-rfsniff", at 0x268ab, in
Aborted (Signal sent by tkill() 9483 0)
Aborted

В квартире стоит беспроводной комплект сигнализации iconnect 2way в следующем составе:

  1. 2 датчика движения
  2. 1 СМК
  3. Беспроводная клавиатура
    Кажется WB ловит её сигнал, и даже пытается что-то парсить, судя по RF Received: MotionSensor в логе.

#14

Спасибо вам. Исправил баг. Теперь падать не должно, по крайней мере при тех же обстоятельствах) Новая версия по ссылке выше. Если все хорошо, пожалуйста напишите, версия пойдет в репозиторий.


#15

Можно, конечно, но основной смысл в нем, чтобы в точности восстановить происходящее, а если он будет не сначала, то точности не будет, и появится много недопонимания.[quote=“Andrey_Yantsen, post:12, topic:940, full:true”]
А можно как-нибудь сделать, чтоб дамп не сожрал все мои оставшиеся 300мб диска? :slight_smile: Я его сейчас запустил, и чёрт его знает сколько придётся ждать до падения…
[/quote]


#16

Поставил-запустил. Предлагаю подождать до понедельника.


#17

Кажется демон чувствует себя хорошо и не падает, но мне приходилось несколько раз перезагружать контроллер (не всегда восстанавливается сеть при падении-поднятии линка). Но пару дней оно держалось и не падало.
Но началось другое — демон то ли начал лучше распознавать сигналы, то ли наоборот, то ли это мои ощущения :slight_smile: На старой версии на ноолайте не было “ложных” срабатываний, сейчас же — периодически нажимаешь на выключатель, а WB регистрирует 2 нажатия, и из-за этого свет включается на долю секунды и сразу выключается. А на VHome периодически путаются 1я и 3я кнопки — т.е. нажимаешь первую, а контроллер считает её третьей, или вообще видит нажатие с обеих кнопок (но тут я виню скорее китайские кнопки, хотя подсветка загорается только у той, на которую нажали).


#18

Обновил до 1.0.7. Один день работает, на следующий день нет. Нет желания и время смотреть логи, вернул 1.0.6.


#19

Здравствуйте! можно ли пояснить? где смотреть устройства от которых приходят данные? у меня имеются пульты X10, но не могу понять где мне добавлять устройство и как? спасибо!


#20

неужели никто не подскажет? здесь же как-то подключали устройства с радио передачей!


Яндекс.Метрика