Oregon - поддержка разных датчиков

Переделал немного работу с орегоновскими датчиками. Основывался на описании http://www.osengr.org/WxShield/Downloads/OregonScientific-RF-Protocols-II.pdf и том, что наловил от своих датчиков от WMR88. Так как публика не проявила ажиотажа с предоставлением других данных для проверки, код имеет статус беты, и нормальная работа с прочими датчиками не гарантируется (“why do you call it beta? 'cose its betta than nothing!”)

Инструкция:
Скачать mqtt_devices.py с http://rghost.ru/59315317 и oregon.py с http://rghost.ru/59315349
Остановить сервис /etc/init.d/wb-homa-ism-radio stop
Скопировать эти два файла в /usr/lib/wb-homa-ism-radio/ (старые версии можно, на всякий случай, сохранить)
Скачать https://raw.githubusercontent.com/contactless/mqtt-tools/master/delete_retained.py сделать ему chmod +x и вычистить из MQTT имеющиеся определения орегоновских датчиков, напуская delete_retained.py на каждый орегоновский датчик, который выведет при старте mosquitto_sub -v -t '#' (т.е. если в выводе есть строчка /devices/oregon_rx_fa28_89_2/meta/name Oregon Sensor [fa28] (89-2), то нужно запускать ./delete_retained.py /devices/oregon_rx_fa28_89_2/# и так для всех oregon_rx_*)
Запустить сервис /etc/init.d/wb-homa-ism-radio start
Запустить mosquitto_sub -v -t '#' и смотреть, что происходит (можно еще смотреть в web-интерфейс).
Писать сюда о замеченных проблемах

P.S. В NinjaBlocks новые датчики почему-то не передаются (вернее, у меня отчего-то в NinjaBlocks видны только релюшки и FETы).

тут народ разбирает протоколы тоже: http://forum.pilight.org/Thread-Oregon-THGR122NX?page=3

Качнул, проверяю. У меня Oregon THGN132N.
Работает: температура, влажность, батарейка.
Что значит forced?

hamster, а можете выложить код на github? Так гораздо проще будет это слить с основным кодом и обновить пакет.

Надо форкнуть основной rfm69-linux и прислать pull request.

hamster, ещё вопрос: я смотрю, что вы в коде убрали некоторые ID, которые раньше поддерживались, например 0x1A2D и т.д., ещё несколько закомментированы. Зачем это сделано?

Отвечу на все сразу одним постом.

  1. В гит пока не стал заливать, так как хотелось убедиться, что это не только у меня работает. Если косяков не всплывет, еще немного допилю, и залью.
  2. Насчет убранных кодов. Там, похоже, в какой-то момент в packet стал попадать синхронибл (0xa), а вычисление sensor_type не поменяли, так что в нем один нибл оказался константой, а один, реально кодирующий тип - выпал. Таблицу тоже не поменяли, а просто стали добавлять туда неправильно декодируемые типы. Так что 0x1a2d - это на самом деле 0x1d20 (в кодировке упомянутого pdf). То, что можно было однозначно исправить, я исправил, а те приборы для которых правильно определить тип не получилось - закомментировал.
  3. Про forced - в некоторых источниках утверждается, что у некоторых приборов есть кнопка принудительной (т.е. не по времени) отправки текущего значения. Флаг forced именно про это. (Есть еще соображение, что на приборах, у которых такой кнопки нет, forced взводится в первой посылке после сброса, но я это не проверял…)

“Так что 0x1a2d – это на самом деле 0x1d20” - вот у меня как раз и поменялось.
Работает.
Почему в веб морде HomA - все значения в скобках кроме температуры?
Это к тому - если загнать комманду в mqtt которая не поддерживается - она в веб морде появляется в скобках.

в скобках отображаются значения, у которых /meta/type неизвестен веб-интерфейсу.

Список того, что известно, тут: https://github.com/contactless/homA/blob/master/interfaces/webinterface/js/app.js#L269
Патчи принимаются.

Единственное, /meta/type - это тип величины, подразумевается, что их должно быть не бесконечное количество.
Поэтому вместо


        if 'windSpeed' in data:
            self.controls_desc['windSpeed'] =     { 'value' : 0,
                                                   'meta' :  { 'type' : 'wind_speed', 'units' : 'meters_per_second', 
                                                             },
                                                   'readonly' : True,
                                                 }
        if 'windAvgSpeed' in data:
            self.controls_desc['windAvgSpeed'] =     { 'value' : 0,
                                                   'meta' :  { 'type' : 'wind_average_speed', 'units' : 'meters_per_second', 
                                                             },
                                                   'readonly' : True,
                                                 }

по смыслу должно быть


        if 'windSpeed' in data:
            self.controls_desc['windSpeed'] =     { 'value' : 0,
                                                   'meta' :  { 'type' : 'wind_speed', 'units' : 'meters_per_second', 
                                                             },
                                                   'readonly' : True,
                                                 }
        if 'windAvgSpeed' in data:
            self.controls_desc['windAvgSpeed'] =     { 'value' : 0,
                                                   'meta' :  { 'type' : 'wind_speed', 'units' : 'meters_per_second', 
                                                             },
                                                   'readonly' : True,
                                                 }

(в обоих местах wind_speed).

Конечно такие вещи уместнее будет обсуждать уже в гитхабе.

@hamster
Спасибо за включение новых датчиков.
Единственное непонятное значение у датчика 2914
TotalRain=2460.752.
и ИМХО у датчика F824 PGR800 заряд батареи измеряется в процентах
LowBat=0, это заряженная батарея или пустая?

tammat, пользуйтесь на здоровье!

TotalRain - это накопленная величина осадков (как я понимаю, с последней замены батарейки)
Про PGR800 ничего не знаю. Если пришлёте raw дампы c соответствующими показателями станции - посмотрю, можно ли добавить обработку.
LowBat - это предупреждение, что уровень заряда батарейки мал, и её нужно менять (если LowBat==1)

посмотри http://smartliving.ru/Main/OregonTHN132N
Там для arduino Oregon и др.
http://arduino.ru/forum/proekty/chtenie-i-emulyatsiya-datchikov-oregon-scientific-433mhz

Там только про датчики, которые уже поддерживаются. Ничего нового.

hamster, появляются датчики oregon с только с полем lowbat. Надо добавить условие чтобы появлялись только те, которые передали все свои параметры.

ags, лог сообщений из /events/# пожалуйста выложите.

Я может не точно написал, датчик THGN132N - отлично работает, а в HomA появились другие орегоны только с lowbat.
Появились не сегодня. https://dl.dropboxusercontent.com/u/4094156/events.txt

Ссылки в первом посте похоже закончились. Где можно взять исправленные файлы?

Хм… не ожидал, что там все так быстро экспайрится :frowning:

Положил еще на месяц сюда: http://pastebin.com/DqH5MGAw и http://pastebin.com/buGp4Azk

Постараюсь на этой неделе запулить в гит…

Спасибо, скачал запустил.
Проблема с датчиками 132 осталась. У меня два датчика THN132N и THGN132N, оба новые муха не сидела (купил пару недель назад). Собственно не декодятся от них сообщения никак. Вообщем состояние также как и было - 122 датчики работают 132е датчики не работают.

Glaz, а выложите логи из MQTT из /events/ пожалуйста.

Вот логи.