RF433, пожарная сигнализация
26.01.2020
Как-то по случаю купил я простых пожарных датчиков для подключения к GSM-сигнализации. Причём саму сигнализацию купить я так и не собрался – не нашёл никакого варианта, которым можно было бы адекватно управлять со стороны умного дома.
Датчики в целом достаточно неплохие. Врать не буду – в работе проверить их не довелось. Да надеюсь и не доведётся. Но в остальном вполне живые. Батарейки хватает года на два.
Но вот как получить от них сигнал аварии? GSM-сигнализация – вариант странный. Что бы ещё придумать? Купил я странный модуль… MP323RX3.
Модуль несложный, но какой-то нелепый. Невнятный. Неуправляемый. Короче, даже несмотря на то, что он как-то заработал и проработал пару лет вполне неплохо – не рекомендую его к использованию, поскольку штука необслуживаемая. Хорошо, наверное, подойдёт в проекте, который нужно сделать один раз и забыть о нём навсегда. Для дома лучше всё-таки что-то более наглядное.
Эта мысль меня мучала какое-то время и тут я нашёл пару свободных часов и решил вспомнить про эту проблему.
Попытки немного погуглить показали, что в мире появились прекрасные датчики дыма от Xiaomi. Заявленные характеристики в 5 лет работы от батарейки выглядели очень впечатляюще. Но выбрасывать мои старые датчики было как-то жалко, да и не даёт покоя политика Xiaomi, связанная с управлением чисто из приложения и тем, что постоянно ставятся новые палки в колёса гейтования мимо серверов Xiaomi. Всё это не радостно, особенно для такой системы, как пожарная сигнализация.
Вспомнилось мне, что когда-то я уже пытался найти сил решить эту проблему и даже что-то для этого купил. Покопавшись в глубинах домашних завалов я обнаружил несколько интересных устройств.
CC1101 USB Wireless RF Transceiver Module
Прекрасное устройство с простым USB-подключением. На борту и передатчик и приёмник. Может почти всё. У него только один недостаток – вообще отсутствует документация и упоминания в сети о том, что кому-то удалось его запустить. Поэтому - не подошло.
SV613 433MHz USB Interface Wireless RF Transceiver
Долго на него смотрел… 100% друг предыдущего устройства. Как с ним работать – непонятно. Пришлось тоже отложить до лучших времён.
И тут где-то на дне коробок попались мне самые древние, самые нелепые модули. Зачем-то я их тоже купил. "433 Mhz Superheterodyne RF Receiver and Transmitter Module For Arduino". На самом деле они немного не такие, как на картинке, но схожесть где-то на 95%.
Дай, думаю, попробую.
Подключать решил как обычно к Raspberry PI.
Не могу сказать, что попалось много внятных статей. Пришлось перебрать какое-то количество софта, который отказался работать, отказался ставиться, отказался скачиваться… Видимо не сильно то популярна нынче возня с RF433. Но найти работающее решение удалось.
Проект называется 433Utils.
Устанавливаем:
apt-get install wiringpi
git clone --recursive https://github.com/itprosto/433Utils
cd 433Utils/RPi_utils
make
Теперь вам доступен бинарник RFSniffer, который стоит положить куда-то в более удачное место.
Запускаем RFSniffer с двумя параметрами pulseLength и PIN. Первый параметр по умолчанию равен нулю. Я не стал с ним разбираться. Второй отвечает за порт GPIO, к которому вы подключили RF-модуль. Только вот почему-то он как-то странно задаётся… Сниффер работает через wiringPi, возможно там какая трансляция осуществляется…
Я использовал GPIO17. При этом "gpio readall" сообщил мне, что GPIO17 соответствует PIN 0 для wPi. Когда-нибудь потрачу 10 минут, чтобы понять, что это значит. Пока просто буду использовать PIN = 0.
Запускаем и получаем искомое! На выходе у нас:
Received 5592149
Received 5592149
Received 1398101
Received 1398101
Дальше лепим лёгкую обвязку к этому снифферу и запускаем в прод.