Запись и воспроизведение произвольного сигнала 433Mhz

У меня WB3 готов присоединиться к тестирования, Да поддержка noolight была бы не плоха. Я им пользуюсь.

C WB3 есть несколько вопросов к Евгению:

  1. Распаян ли DIO2 на WB3. Если DIO2 не приходит на SOC, то это проблема. Судя по описанию, он должен приходить на 53й GPIO.
  2. Есть ли для WB3 ядро с поддержкой linux драйвера lirc и dev tree с /dev/lircXX, подключенным к GPIO53?

Если ответы на все вопросы “ДА”, то можно пробовать. Для поддержки приема noolight мне потребуется либо устройство, либо записанные пакеты, отправляемые устройством. Как их записать, я расскажу.

Про передачу пока не особо думал, т.к. не придумал зачем. Технически вроде ничего сложного нет.

См. схему: http://contactless.ru/wiki/images/4/45/СхемаWB3.5.pdf

Он сидит на одном пине с чип селектом модуля NRF24, подключается через запаиваемую перемычку SJ7

Ядро сейчас общее для всех выпускавшихся Wiren Board.

Дампы с примерами в старом формате (конвертируются в новый тривиально): rfm69-linux/tests.py at master · wirenboard/rfm69-linux · GitHub
Расшифровка протокола и описание (в конце файла): rfm69-linux/noolite.py at master · wirenboard/rfm69-linux · GitHub
Ещё дампы: rfm69-linux/noolite.txt at master · wirenboard/rfm69-linux · GitHub
Подробно про протокол: Взламываем беспроводное управление светом nooLite / Habr и Разбираем протокол новых датчиков Noolite / Habr

  1. Судя по всему без паяльника подключение DIO2 невозможно.
  2. У Вас есть устройство /dev/lirc0 ?

Я готов тестить на WB4

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

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

Сигнал с DIO2 приходит на GPIO 53, в ядре на этом GPIO уже висит устройство lirc0. Т.е. всё, что нужно сделать, это поменять в rfsniffer spidev на правильный.

Отлично, я сделаю настройку через параметры и попробую автоматически определять через переменные окружения. Я, честно говоря, не ожидал такого разнообразия устройств.

У нас обычно просто разные конфиги для разных устройств при установке пакета делаются, есть стандартный механизм.
Вы если сделаете конфиг (совсем здорово, если в JSON), то дальше мы всё сделаем как в остальных пакетах.

JSON конфиг я сделаю чуть позже. Сейчас доступны параметры командной строки:
-D - debug mode. Write good but not decoded packets to files
-s - set custom SPI device. Default /dev/spidev32766.0
-l - set custom lirc device. Default /dev/lirc0
-m - set custom mqtt host. Default localhost
-S - set custom mqtt host. Default 500000
-r - reset RSSI Threshold after each packet. 0 - Disabled. Default 0
-? - help

Т.е. нужно запустить: ./rfsniffer -s /dev/spidevXXX.YYY, в соотвествии с номером spi порта радиомодуля для Вашей версии устройства. Бинарник доступен там же ( https://www.dropbox.com/s/ymkgz7w69shmwd2/rfsniffer )

Возник интересный вопрос - у меня есть spidev1.5/1.6/1.7 какой из них использовать - major у них одинаковый, minor - 5,6,7.
Пробую с бинарником (на spidev1.5).

Если я не ошибаюсь, то
WB3 /dev/spidev1.5
WB4 /dev/spidev1.4

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

Ну пока получаем
4/06 14:31:22 [21022] RF got data 6430 bytes. RSSI=-89
14/06 14:31:23 [21022] RF got data 10544 bytes. RSSI=-89
14/06 14:31:23 [21022] Recieved 10544 signals. Not decoded
14/06 14:31:24 [21022] RF got data 2122 bytes. RSSI=-90
14/06 14:31:25 [21022] RF got data 6284 bytes. RSSI=-89
14/06 14:31:26 [21022] RF got data 10418 bytes. RSSI=-88
14/06 14:31:26 [21022] Recieved 10418 signals. Not decoded
14/06 14:31:27 [21022] RF got data 2182 bytes. RSSI=-88
14/06 14:31:28 [21022] RF got data 6214 bytes. RSSI=-89
Он ведь как чтонибудь поймает, сразу скажет?

Да. Нужно подождать. Если в течении 10 минут ничего не поймает попробовать добавить ключ: -r -120

Все успешно принятые данные можно посмотреть:
cat /run/Main.log

Важный вопрос: он ловит данные каждую секунду или есть паузы? У меня выглядит примерно вот так:
14/06 14:39:51 [28900] RF got data 33 bytes. RSSI=-97
14/06 14:39:51 [28900] Recieved 35 signals. Not decoded
14/06 14:40:01 [28900] RF got data 32 bytes. RSSI=-97
14/06 14:40:01 [28900] Recieved 32 signals. Not decoded
14/06 14:40:02 [28900] RF got data 143 bytes. RSSI=-97
14/06 14:40:02 [28900] Recieved 263 signals. Not decoded
14/06 14:40:03 [28900] RF got data 32 bytes. RSSI=-85
14/06 14:40:04 [28900] RF got data 328 bytes. RSSI=-86
14/06 14:40:04 [28900] RF Recieved: Oregon:type=1d20 id=15 ch=1 t=24.2 h=37. RSSI=-98 (-96)
14/06 14:40:04 [28900] Msg from Oregon type=1d20 id=15 ch=1 t=24.2 h=37
14/06 14:40:05 [28900] RF got data 237 bytes. RSSI=-73
14/06 14:40:06 [28900] RF got data 884 bytes. RSSI=-98
14/06 14:40:06 [28900] RF Recieved: X10:D2OFF. RSSI=-98 (-98)
14/06 14:40:06 [28900] Msg from X10 X10:D2OFF
14/06 14:40:10 [28900] RF got data 32 bytes. RSSI=-95

Т.е. данные почти каждую секунду, но бывают паузы по несколько секунд. Вообще, выглядит так, что он видит много шума с высоким уровнем сигнала (-89 dba это довольно много). Гипотезы:

  1. Антенна рядом с сильным источником помех
  2. Антенна тупо не подключена и он ловит помехи электрощита

Если ничего не поймает - попробуем записать несколько пакетов и посмотреть что он принимает…

Ловит каждую секунду.
Подключение антенны (внешняя) проверял в субботу, все было подключено (внутри тоже, разбирал, чтобы найти перемычку).
WirenBoard лежит на полу второго этажа, электрощитов рядом нет, только вайфай роутер в метре от него.
Антенна находится примерно в 50-70 см от девайса.
Датчик примерное в 6-7 метрах от антенны, через деревянное перекрытие.

Я правильно понимаю, что сигнал от датчика ни разу не был пойман? Можете содержимое /run/Main.log прислать?

Нет, ни разу не поймал.
14/06 15:44:33 [22711] Using SPI device /dev/spidev1.5, lirc device /dev/lirc0, mqtt on localhost
14/06 15:44:33 [22711] mqtt::on_connect(0)

Очень странно.
Я правильно понимаю, что с родным драйвером та же самая проблема?
А есть что-то (родная метеостанция, например), что успешно принимает сигнал от орегоновских датчиков?
Я вечером соберу версию с записью пакетов в файлы и выложу. Посмотрим, что принимает радиомодуль.

Родную метеостанцию смогу привезти не раньше субботы, т.к. все стоит на даче.
С родным драйвером такая-же проблема. Небольшое смещение антенны иногда приводило к приему, но не всегда. Может дело в фазе прихода сигнала или еще чего?