Хотел поделиться с сообществом небольшим проектом.

Почти год живу в многоквартирной многоэтажной новостройке, в моем подъезде 33 этажа и 500 квартир. По "дефолту" во всех квартирах установлены дымовые датчики и пожарный оповещатель, производитель Rubetek. Модель устройства "ОПОВЕЩАТЕЛЬ ПОЖАРНЫЙ РЕЧЕВОЙ РАДИОКАНАЛЬНЫЙ ОР-Р-01".

То ли из-за неправильной настройки чувствительности или реагирования на сигналы, то ли из-за курения под датчиками и засора датчиков строительной пылью, но пожарная сигнализация срабатывает регулярно. Несколько первых месяцев жизни в новостройке она могла орать по 3-6 раз за день, сейчас видимо произвели донастройки и она срабатывает значительно реже.
Конечно же, всех жильцов эта сигналка, мягко сказать - задолбала. Судя по чату дома, соседи просто отключают динамик в оповещателе или откручивают провода питания. На самом деле если случится настоящий пожар, никто эвакуироваться не будет, все привыкли к постоянным крикам "тревожной женщины" из оповещателя. Я тоже снял это со стены, а провода питания замуровал, так как мне не нравилась страшная коробка, висящая в коридоре еще и из эстетических соображений. Но лишать себя, вообще то жизненоважной информации, очень не хотелось, поэтому было решено найти способ получать сигнал тревоги в умный дом.

Первое что я сделал, нашел руководство по эксплуатации (https://rubetek.com/upload/iblock/fe9/i33ojww9id3wzx97p2e1bj9e2pxh2fzj.pdf). Оповещатель может работать как от проводного питания 24в, которое я удалил у себя, так и от батареек CR123 3V. Ставятся 2 батарейки, одна основная, другая резервная. Информацию о тревоге получает от контроллера по радиоканалу 868 МГц. Было бы 433 МГц, проблем не возникло, есть у меня шлюз для перехвата, но на 868 ничего не нашел.

Принято решение использовать esp8266, конкретно Wemos D1Mini, и ESPHome в качестве прошивки. Сам я не особо "секу" в радиоэлектронике, посоветовался в чатах. Рекомендовали использовать оптопару (Оптопара или оптрон — электронный прибор, состоящий из излучателя света (светодиод) и фотоприёмника (фототранзисторов, фотодиодов, фототиристоров, фоторезисторов), связанных оптическим каналом. Принцип работы оптрона заключается в преобразовании электрического сигнала в свет, его передаче по оптическому каналу и последующем преобразовании обратно в электрический сигнал) и снимать сигнал со светодиода, который по инструкции мигает в момент тревоги. Также этот светодиод должен оповещать о разряде основной и резервной батарей.

Сказано - сделано. Нашел на работе сломанный блок питания от компа, выпаял из него оптопару (модель PC817С, очень распространенная радиодеталь) и несколько резисторов (2 резистора по 2.7 кОМ и 1 резистор по 1 кОм). Собрал схему для подключения к ESP. Коллектор оптопары подключил к выходу 3,3В на esp (wemos d1), землю к контакту GND, PIN - к выходу D5 на wemos_d1:

Схема подключения к ESP с "подтяжкой" к земле
Схема подключения к ESP с "подтяжкой" к земле
оптопара лежит "попой" вверх ))
оптопара лежит "попой" вверх ))

Разобрал оповещатель и не обнаружил в нем светодиода, на который ссылается инструкция. Площадка под него распаяна, самого светодиода нет. Все равно попробовал припаять оптопару в размеченным на плате контактам, но в esp никаких сигналов не поступало. Для проверки схемы попробовал подключиться к соседнему светодиоду, который мигает при наличии сигнала связи - данные в esp пошли, значит схема рабочая. Подключил оптрон к контактам динамика. И чудо, в ESP посыпалась куча сработок в момент поступления сигнала на динамик. Оповещатель каждые 20-30 секунд, женским голосом, ГРОМКО говорит о том, что надо бы эвакуироваться из помещений. Оповещение идет 6 секунд, за эти секунды бинарный сенсор в esphome срабатывает от 50 до 80 раз. Меня это более чем устроило.

Подключение к площадке светодиода (неуспешно)
Подключение к площадке светодиода (неуспешно)
Подключение к выходу на динамик
Подключение к выходу на динамик
Удалил динамик, все вернул в родной корпус
Удалил динамик, все вернул в родной корпус

В Esphome сделан бинарный сенсор и стандартной интеграцией подключен к Home Assistant. Кусок кода из esphome, касающийся сенсора:

binary_sensor:
  - platform: gpio
    pin: D5
    name: "alarm"

В HA стараюсь все делать пакаджами, вот его содержание:

template:

#сенсор включен когда произносится фраза тревожной женщины
  - trigger:
      platform: state
      entity_id: binary_sensor.fire_alarm_speaker
#      from: 'off'
      to: 'on'
    binary_sensor:
      - name: fire_alarm_on
        auto_off: 6
        state: "true"
        
#сенсор пожарной тревоги, выключается после минуты молчания тревожной женщины
  - binary_sensor:
      - name: fire_alarm
        delay_off:
          minutes: 1
        state: >
          {{ states('binary_sensor.fire_alarm_on') }}
        device_class: "smoke"
        icon: >
          {% if is_state("binary_sensor.fire_alarm", "on") %}
            mdi:alarm-light
          {% else %}
            mdi:alarm-light-off
          {% endif %}


automation:

  - id: Тревожная женщина говорит
    alias: 'Trigger Fire Alarm Speaker'
    trigger:
      - platform: state
        entity_id: binary_sensor.fire_alarm_on
        to: 'on'
    action:
      - service: switch.turn_on
        entity_id: switch.blink_red_hall_nightlight


  - id: Включение пожарной тревоги
    alias: 'Triggered Fire Alarm Sensor'
    trigger:
      - platform: state
        entity_id: binary_sensor.fire_alarm
        to: 'on'
    action:
      - service: notify.telegram_all
        data:
          message: "Внимание! Пожарная тревога!"
      - choose:
    # Не ночь
        - conditions:
          - condition: time
            after: "09:00:01"
            before: "21:00:00"
          sequence:
            - service: script.turn_on
              entity_id: script.fire_alarm_triggered_sound
            - service: script.turn_on
              entity_id: script.fire_alarm_triggered_speakers
    # Ночь
#        - conditions:
#          - condition: time
#            after: "21:00:01"
#            before: "09:00:00"
#          sequence:
#            - service: 

  - id: Выключение пожарной тревоги
    alias: 'End Fire Alarm'
    trigger:
      - platform: state
        entity_id: binary_sensor.fire_alarm
        from: 'on'
        to: 'off'
    action:
      - service: notify.telegram_all
        data:
          message: "Расслабьтесь, пожарная тревога окончена!"
      - choose:
    # Не ночь
        - conditions:
          - condition: time
            after: "09:00:01"
            before: "21:00:00"
          sequence:
            - service: script.turn_on
              entity_id: script.fire_alarm_end_sound
            - service: script.turn_on
              entity_id: script.fire_alarm_end_speakers
    # Ночь
#        - conditions:
#          - condition: time
#            after: "21:00:01"
#            before: "09:00:00"
#          sequence:
#            - service: 
          
          
script:

  fire_alarm_triggered_sound:
    alias: "fire_alarm_sound"
    sequence:
      - service: media_player.play_media
        target:
          entity_id: media_player.koridor
        data:
          media_content_type: music
          media_content_id: /media/local/firealarm.mp3
          
  fire_alarm_end_sound:
    alias: "fire_alarm_disarm_sound"
    sequence:
      - service: media_player.turn_off
        entity_id: media_player.koridor
        

  fire_alarm_triggered_speakers:
    alias: "fire_alarm_yandex_speakers"
    sequence:
    - service: tts.yandex_station_say
      entity_id: media_player.yastation_bedroom
      data:
        message: Внимание! Пожарная тревога!
        options:
          volume_level: 0.5
    - service: tts.yandex_station_say
      entity_id: media_player.yastation_kiraroom
      data:
        message: Внимание! Пожарная тревога!
        options:
          volume_level: 0.5
    - service: tts.yandex_station_say
      entity_id: media_player.yastation_kitchen
      data:
        message: Внимание! Пожарная тревога!
        options:
          volume_level: 0.5
    - service: tts.yandex_station_say
      entity_id: media_player.yastation_vadimroom
      data:
        message: Внимание! Пожарная тревога!
        options:
          volume_level: 0.5
          

  fire_alarm_end_speakers:
    alias: "Колонки говорят Расслабьтесь, пожарная тревога окончена!"
    sequence:
    - service: tts.yandex_station_say
      entity_id: media_player.yastation_bedroom
      data:
        message: Расслабьтесь, пожарная тревога окончена!
        options:
          volume_level: 0.5
    - service: tts.yandex_station_say
      entity_id: media_player.yastation_kiraroom
      data:
        message: Расслабьтесь, пожарная тревога окончена!
        options:
          volume_level: 0.5
    - service: tts.yandex_station_say
      entity_id: media_player.yastation_kitchen
      data:
        message: Расслабьтесь, пожарная тревога окончена!
        options:
          volume_level: 0.5
    - service: tts.yandex_station_say
      entity_id: media_player.yastation_vadimroom
      data:
        message: Расслабьтесь, пожарная тревога окончена!
        options:
          volume_level: 0.5

Разбор конфигурации:

Сенсоры на платформе Template:

  • binary_sensor.fire_alarm_on - включается на 6 секунд (пока идет аудио на динамик и сыпятся сработки бинарного сенсора на ESP)

  • binary_sensor.fire_alarm - итоговый сенсор определяющий тревогу, включается при первой сработке fire_alarm_on, выключается после минуты тишины от извещателя

Автоматизации:

  • Trigger Fire Alarm Speaker - срабатывает по сенсору fire_alarm_on, мигает красным цветом ночник на базе старого шлюза xiaomi с прошивкой open_wrt

  • Triggered Fire Alarm Sensor - срабатывает по сенсору fire_alarm, отправляет инфо о тревоге в телеграм, если время позволяет (не ночь), проигрывает звуковой файл из все того же переширого шлюза xiaomi и из 4х колонок yandex mini вещает Алиса о том что тревога. Ночью будет только свет мигать и телеграм рассылаться.

  • End Fire Alarm - конец тревоги, инфо в телегу и в неночное время на яндекс мини Алиса.

Скрипты:С ними все понятно, не буду расписывать: играют звук, произносят голосом Алисы из колонок и т.д.


Поставленные задачи выполнены, а именно оповещатель информирует меня и семью о тревоге удобным мне способом в зависимости от времени суток через систему домашней автоматизации Home Assistant.

Комментарии (15)


  1. Javian
    25.11.2022 15:02

    тревожной женщины

    Не хотел бы с ней встретиться /s


  1. remzalp
    25.11.2022 15:18
    +5

    Итог:
    Вместо довольно прямой цепочки - провод-сигнал-сирена получаем
    - провод (надрезанный, паяный), по которому мы перехватываем сигнал, заодно вмешательство в инфраструктуру пожарной сигнализации
    - вифи роутер (может отрубиться при пожаре)
    - (возможно ненадёжный) поставщик услуг интернет
    - (возможно) зависающая прошивка на esp8266
    - (возможно) зависающий сервер Home Assistant
    - (возможно ненадёжный) канал до серверов телеграмма
    - (возможно зависающий или в беззвучном режиме) сотовый телефон с телеграммом, зависящий от (возможно ненадёжной) инфраструктуры оператора сотовой связи

    Мне кажется это дорогим и усложнённым способом не получать извещения, даже если повод действительно будет.


    1. acidquest Автор
      25.11.2022 16:38
      +1

      цель не сделать оповещение надежнее (до этого его не было вообще, отключил), а сделать удобнее лично мне. решил поделиться, так как подобного ничего не нашел


      1. dimao79
        25.11.2022 18:53
        +1

        Скажите, а в пожарной части "удобные лично вам оповещения" будут приниматься как триггеры для выезда бригады на тушение пожара?

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

        Скажите, а почему не была использована ардуина, как в бессмертной классике управление промышленным лифтом?


        1. bezdolgoff
          25.11.2022 21:20

          Кстати, вмешательство в пожарную систему без лицензии МЧС может не только эти структуры заинтересовать.


        1. Samid777
          25.11.2022 22:34

          Самое интересное, но во 2 варианте, страховка уже потеряна на случай пожара. Хоть что вы туда поставьте, даже более полезное, то все.
          В нашей новостройке с этим все не так хорошо. В квартире стоит не динамик, а мощный пьезоизлучатель, который поднимет любого, даже если человек спит в берушах. Но провод проходит последовательно через все квартиры. А это значит что если жилец обрежет провода, и снимет сиренку потому, что не нравится ее внешний вид, то он может отключить либо только себя, если он последний, либо, в худшем случае, до 10 квартир. А раз другой в год на районе случается настоящий пожар... И сигналку могут не услышать.
          Я уже не говорю про личинки с ключом, которые люди сами ставят у себя в МОПах. Если случится задымление, и не сработает дымоудаление, то на 99 процентов ключом в скважину никто попасть не сможет. В свое время в дыму просто не смог найти довольно большую лестницу, что там говорить а маленькой дырочке... Больше всего удивляет то, что на примерно десять квартир на лестничной площадке нет никого, кто был бы против! Т.к. желания даже одного человека достаточно чтобы убрать эту самоубийственную личинку.


          1. dimao79
            26.11.2022 15:53

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

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

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

            Но, не для всех, увы.


            1. Samid777
              26.11.2022 20:24
              +1

              1 Да, верно. Но не везде и не всегда
              2. К сожалению, тоже не всегда.
              3. Пришли у вас по проекту, как положено устройства, выдающие в линию 24 вольта, а исполнительное устройство на 220. И начинаем не то чтобы улучшать, а делать так, чтобы это заработало.

              А еще одна проблема... сами производители и законы могут немного отставать от реальности.
              Берем в болиде, такую прекрасную штуку на МПН. В нем схема из двух диодов. Смотрим на схему расключения, думаем, что же она делает.

              По идее на промежуточных датчиках первый диод просто замкнут, а второй диод, более мощный используется, через него подключена нагрузка.
              Зачем включать нагрузку через диод? Все просто. Целостность линии проверяется подачей обратного напряжения, и если есть КЗ, или нет тока, мы заметим. Если включить в качестве нагрузки лампочку, без диода, то мы будем нагрузку, когда не надо. Диод же не дает идти контрольному току через нагрузку, он идет через всю линию, и через первый диод МПН. Линию оборвали, ток не идет.
              Так вот, у нас почти все оповещатели сами являются диодами, таблички, сиренки и пр. Они не пропускают ток в обратном направлении. Зачем нам в таком случае МПН на каждой промежуточном устройстве, не понятно. Даже гранит, и тот, в нем просто на последнем устройстве включается обратно включенный диод...
              И таких моментов, их много, просто уже не замечаем их все. Замечают только те, кто приходит в слаботочку имея нормальные знания в другой аппаратуре.
              МПН расключение


    1. mortadella372
      25.11.2022 16:48
      +4

      При этом достоверность самих извещений не выросла, они как были мусором так и остались.

      Автор это, впрочем, понимает -- ночью алерты приходят тихонько, чтобы никого не разбудить. Хотя пожар (в своем доме) это тот редкий случай, когда о плохих новостях лучше действительно узнать сразу, а не наутро/через неделю/никогда.

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


  1. suxarik
    25.11.2022 17:09

    Решил этот вопрос покупкой противопожарных датчиков с али на rf433. Получаем и стандартные вопли от самой коробки + интеграция с HA и последующие оповещения, если не дома.


    1. acidquest Автор
      28.11.2022 14:19

      Да, такой датчик у меня тоже есть. Но он локальный. А в этом случае схема такая - дымовые датчики у меня в квартире и в других квартирах передают информацию на контроллер. В случае сработки тревоги от контроллера приходит сигнал на оповещатель, то есть сигнализация централизованная


  1. bezdolgoff
    25.11.2022 21:05
    +4

    Модель извещателя "ОПОВЕЩАТЕЛЬ..

    Модель извещателя - ОПОВЕЩАТЕЛЬ)))

    Это как, модель клавиатуры - принтер))

    Для информации: извещатель - это и есть пожарный датчик, а оповещатель - динамик, сирена, табло и т.п

    А если по теме то для нормальной работы пожарной сигнализации её нужно обслуживать (по закону положено), и обслуживающая организация должна устранять причины ложных срабатываний и профилактику делать. Если у вас не работает нормально система требуйте от УК (ТСЖ ) поменять организацию.


    1. AllexIn
      26.11.2022 21:59

      Единственная здравая мысль.


  1. vtitans
    28.11.2022 14:20

    Т.е автор мало того что путает извещатель и оповещатель и тупо разобрал динамик беспроводного оповещателя. А когда дом будет гореть ночью вам в телеграм тихонько придет уведомление?


    1. acidquest Автор
      28.11.2022 14:24

      Поправил на счет извещателя-оповещателя, согласен с замечанием.

      Есть понятие принятия риска. Так вот, риск моей и всей моей семьи, нервной системе куда выше от этих ложных сработок сигнализации. Когда в 3 часа ночи включается тревога, орет на всю квартиру час, просыпаются дети, которых потом хрен уложишь, а в 7 утра вставать на работу. Поживите так пол года и решите что для Вас важнее