У меня WB3 готов присоединиться к тестирования, Да поддержка noolight была бы не плоха. Я им пользуюсь.
C WB3 есть несколько вопросов к Евгению:
- Распаян ли DIO2 на WB3. Если DIO2 не приходит на SOC, то это проблема. Судя по описанию, он должен приходить на 53й GPIO.
- Есть ли для 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
- Судя по всему без паяльника подключение DIO2 невозможно.
- У Вас есть устройство /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 это довольно много). Гипотезы:
- Антенна рядом с сильным источником помех
- Антенна тупо не подключена и он ловит помехи электрощита
Если ничего не поймает - попробуем записать несколько пакетов и посмотреть что он принимает…
Ловит каждую секунду.
Подключение антенны (внешняя) проверял в субботу, все было подключено (внутри тоже, разбирал, чтобы найти перемычку).
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)
Очень странно.
Я правильно понимаю, что с родным драйвером та же самая проблема?
А есть что-то (родная метеостанция, например), что успешно принимает сигнал от орегоновских датчиков?
Я вечером соберу версию с записью пакетов в файлы и выложу. Посмотрим, что принимает радиомодуль.
Родную метеостанцию смогу привезти не раньше субботы, т.к. все стоит на даче.
С родным драйвером такая-же проблема. Небольшое смещение антенны иногда приводило к приему, но не всегда. Может дело в фазе прихода сигнала или еще чего?