IT News: Digital Camera, OS, Laptop, Smartphone, Smart TV, Sound...

The Author's Project by Valeri N.Kravchuk
Сайт проверен Dr.Web
Меню сайта
  • Главная страница
  • Информация о сайте
  • Дневник
  • Каталог файлов
  • Обратная связь
  • Каталог сайтов
  • FAQ
  • Доска объявлений
  • Форум
  • Фотоальбом
  • Категории раздела
    Автомобильные гаджеты, ремонт... [145]
    Безопасность IT [404]
    Блоки питания, Power Banks, зарядки... [517]
    Видеорегистраторы [188]
    Гаджеты для спорта и здоровья... [194]
    Гаджеты, аксессуары... [630]
    Измерительная техника, инструменты [452]
    Накопители данных [233]
    Нетбуки, Ноутбуки, Ультрабуки [692]
    Мультиварки, блендеры и не только... [166]
    Планшеты [765]
    Радар-детекторы [26]
    Роботы-пылесосы [41]
    Своими руками [375]
    Сети, сетевые технологии, оборудование... [274]
    Смартфоны [4964]
    Фотокамеры, объективы, искусство фотографии.. [542]
    Умный дом [56]
    Электронные книги [103]
    CB, LPD, PMR- связь... [170]
    DECT, IP-телефоны [18]
    Drones, boats, cars... [109]
    electric cars [35]
    GPS-навигаторы, трекеры... [51]
    Linux и не только [3986]
    mini computers и не только... [413]
    News IT, Это интересно, ликбез... [1121]
    Smart TV, UltraHD, приставки, проекторы... [416]
    Smart Watch [269]
    Sound: наушники, плееры, усилители... [621]
    Windows 10... [301]
    Windows 11 [37]
    Погода

  • Метеорадар БРЕСТ
  • Погода в Бресте от www.yr.no

    Яндекс.Погода БРЕСТ

  • Интересные ссылки

    COMPIZOMANIA

    Наш опрос
    Оцените мой сайт
    Всего ответов: 1347
    Статистика
    Анализ веб сайтов

    Яндекс.Метрика

    Рейтинг@Mail.ru Яндекс цитирования

    Russian America Top. Рейтинг ресурсов Русской Америки.

    eXTReMe Tracker

    Правильный CSS!


    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0
    Locations of visitors to this page
    Форма входа
    Главная » 2024 » Декабрь » 30 » Устрашающе умный выключатель
    11:16
    Устрашающе умный выключатель

    Устрашающе умный выключатель

    Недавно я писал статью про радиовыключатели. Ну что ж, пора написать про их начальника. Встречайте, умный хаб! В начале это было дешевое wi-fi реле на основе bk7231. Теперь эта штука может управлять светом в половине дома и напичкана сверхсовременными решениями по самое не могу. Какие возможности открывает платформа ESPHome на HomeAssistant и как их применить на практике я расскажу прямо под катом!

    В принципе, философия прописана в статье про сенсорные радиовыключатели, но кратко пройдемся еще раз. Умный дом построен на платформе HomeAssistant. Среди устройств есть как многофункциональные (хабы), так и выполняющие простейшие функции (slave-устройства). Над всеми ними стоит локальный сервер умного дома.


    Никаких китайских управляющих серверов с задержкой в полминуты, никакой зависимости от щедрот корпораций (и их санкций), никакого компрометирования тайны личной жизни и сливов данных хакерам. Все прозрачно, чисто и быстро. А еще дешево. Конечно, есть и минусы. Например, радио и ИК-приборы не защищены от хакеров-любителей. Пока что…

    Теперь к делу! На руки мне попалось вот такое умное wifi-реле.


    Я решил сделать на его основе управление освещением на кухне, но «с небольшими доработками».

    По заводу это крайне простое устройство. Оно состоит из блока питания на 5V, который питает реле и через стабилизатор на 3.3V wifi-чип. Блок находится прямо под чипом, который присобачен на переходной плате.


    А что это у нас за чип? Маркировка чипа — WB2S. Интернет сообщает, что данный чип семейства OpenBeken bk7231t является pin-to-pin аналогом другого известного чипа умных устройств — ESP8266.


    Как известно, ESP8266 отлично совместим с ESPHome — платформой, на которой можно делать вполне себе продвинутые умные устройства, совместимые с HomeAssistant (локальный умный дом). Ранее в коммерческие умные устройства поголовно пихали esp-шки, но прогресс не стоит на месте (шутка), и на их место стали пихать чипы OpenBeken. Как говорилось выше, отличия между модулями минимальные, да только так же просто они не прошиваются… Не прошивались!

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

    Есть два способа прошить устройство на чипах OpenBeken в ESPHome. Первый способ подойдет тем, кто любит возиться с консолью и пакетными зависимостями. Имя ему CloudCutter. Необходимо установить данный пакет на сервер умного дома, воспользовавшись SSH-соединением. Опуская подробности, скажу, что настроив CloudCutter, все устройства, подключившиеся к сети можно будет прошить прямо по воздуху, немного помучав консоль.
     


    Второй способ состоит в прошивке TTL-программатором, и требует пайки. Его-то я и выбрал. Прошивка довольно проста. Добавляем устройство через веб-интерфейс ESPHome, что позволит нам скомпилировать прошивку. Данную прошивку нужно загрузить, подключив чип к программатору и воспользовавшись программой ItChipTool (ссылка).
     


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

    Схема подключения программатора стандартная (TX программатора на RX1 чипа, RX программатора на TX1 чипа). Во время прошивки необходимо кратковременно замкнуть выход CEN чипа на GND. Единственно, стоит запитать плату от выделенного источника, потому как работать с голой платой под напряжением 220V небезопасно.


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

    Теперь стоит рассказать о том, зачем все затевалось. Идея состояла в том, чтобы управлять светом на основе данных с радарного датчика ld2420, 10 штук которых было куплено на распродаже за 1300 рублей.


    Эти датчики могут обнаруживать как подвижные, так и неподвижные объекты, а также расстояние до них. Они могут калиброваться программно и общаются с контроллером по UART-шине.


    Также на кухне есть лампочка с ИК-управлением. Для нее была собрана цепь передатчика на ИК-диодах.


    В прихожей и туалете недавно были установлены радиореле для управления светом, а также радиовыключатель на батарейках (подробнее в статье). Я решил сделать сделать удаленное управление и для них, потому применил валявшиеся радиомодули SYN480R и SYN115R.


    Гулять так гулять! В наличии у меня оказался датчик звука, который я впихнул уже чисто ради интереса.


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

    Оставшийся цифровой пин я занял классическим PIR-датчиком. Просто потому, что он достаточно интересно выглядит (имхо). Так-то радарный датчик в разы точнее и лучше.


    Когда все было готово, я вспомнил, что вообще-то забыл самое главное — базовый выключатель-то никак не задействован в управлении… Ну не беда, прибегнем к хитрости. Безопасных цифровых пинов не осталось (одни служебные), зато есть аналоговый. Вот такая нехитрая схема позволяет нам определить, нажат выключатель или нет.


    А вот общая схема.


    Время пайки! Сам модуль пришлось немного изменить. Отсоединил кнопку на модуле, убрав резистор. На ее пине теперь PIR-сенсор. На место светодиода припаял его резистор и вывел через него сигнал на транзистор для ИК-передатчика (резистор оказался как раз тот, что нужно).


    Датчики я решил смонтировать на крышке распределительной коробки, вырезав в ней отверстия под PIR-сенсор и IR-диоды.
     


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


    Провода я собрал в косу и соединил с модулем WB2S. Напаял делитель напряжения ADC прямо на модуль в виде двух резисторов. Чип пришлось выпаять, чтобы подпаяться к выводу на другой стороне платы. Потом запаял все обратно.


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


    Пришло время устанавливать все в коробку. Рисовать коробку мне лень, а фото внутренностей вам мало что скажет, поэтому просто замечу, что подключение не отличается от заводского. Разве что теперь выключатель подсоединен к аналоговому входу. В сборе выглядит… Ну вы видели.


    Я ни слова не сказал о прошивке, потому что я ей и не панировал до этого заниматься — ведь я могу в любой момент прошить хаб прямо по воздуху. Так я думал, зашивая пробную прошивку. На деле я сильно пожалел, что не попробовал сделать этого раньше.
     
    Код хаба
    esphome:
      name: kitchen-hub
      friendly_name: Kitchen Hub
    
    bk72xx:
      board: wb2s
    
    # Enable logging
    logger:
    
    # Enable Home Assistant API
    api:
      encryption:
        key: "!secret_key"
    
    ota:
      - platform: esphome
        password: "!secret_pass"
    
    wifi:
      ssid: !secret wifi_ssid
      password: !secret wifi_password
    
      # Enable fallback hotspot (captive portal) in case wifi connection fails
      ap:
        ssid: "Kitchen-Hub Fallback Hotspot"
        password: "DWdZyVB9NEJ4"
    
    captive_portal:
      
    uart:
    
      tx_pin: P11
      rx_pin: P10
      baud_rate: 115200
    ld2420:
    
    remote_transmitter:
        # IR передатчик
      - pin: PWM1
        carrier_duty_percent: 50%
        id: ir_transmitter
    
      # RF433 передатчик
      - pin: PWM2
        carrier_duty_percent: 100%
        id: rf_transmitter
    
    remote_receiver:
      pin: PWM3
      dump: rc_switch
    
    text_sensor:
      - platform: ld2420
        fw_version:
          name: LD2420 Firmware
      - platform: template
        name: ${friendly_name}_uptime
        lambda: |-
          int seconds = (id(uptime_sec).state);
          int days = seconds / (24 * 3600);
          seconds = seconds % (24 * 3600); 
          int hours = seconds / 3600;
          seconds = seconds % 3600;
          int minutes = seconds /  60;
          seconds = seconds % 60;
          return { (String(days) +" д. " + String(hours) +" ч. " + String(minutes) +" мин.").c_str() };
        icon: mdi:clock
        update_interval: 113s
          
    sensor:
      - platform: ld2420
        moving_distance:
          name : Moving Distance
      - platform: uptime  
        name: ${devicename}_uptime
        id: uptime_sec
        internal: true
      - platform: wifi_signal
        name: ${devicename}_WiFi_Signal"
        update_interval: 60s
      - platform: adc
        pin: ADC3
        name: "Kitchen Switсh"
        update_interval: 0.3s
    
    binary_sensor:
      - platform: ld2420
        has_target:
          name: Presence
      - platform: gpio
        pin: PWM0
        name: "PIR Sensor"
        device_class: motion
      - platform: gpio
        pin: PWM5
        name: "Clap Sensor"
        filters:
          - invert:
    
    
    select:
      - platform: ld2420
        operating_mode:
          name: Operating Mode
    
    number:
      - platform: ld2420
        presence_timeout:
          name: Detection Presence Timeout
        min_gate_distance:
          name: Detection Gate Minimum
        max_gate_distance:
          name: Detection Gate Maximum
        # See "Number" section below for detail
        gate_select:
          name: Select Gate to Set
        still_threshold:
          name: Set Still Threshold Value
        move_threshold:
          name: Set Move Threshold Value
    
    button:
      - platform: ld2420
        apply_config:
          name: Apply Config
        factory_reset:
          name: Factory Reset
        restart_module:
          name: Restart Module
        revert_config:
          name: Undo Edits
    
    switch:
      - platform: template
        name: Hall Button
        turn_on_action:
          then:
            - remote_transmitter.transmit_rc_switch_raw:
                transmitter_id: rf_transmitter
                code: '000010000001111011110111'
                protocol: 1
                repeat:
                  times: 10
                  wait_time: 0s
            - delay: 5s
        turn_off_action:
          then:
            - remote_transmitter.transmit_rc_switch_raw:
                transmitter_id: rf_transmitter
                code: '111110010001111000000110'
                protocol: 1
                repeat:
                  times: 10
                  wait_time: 0s
            - delay: 5s
        optimistic: True
      - platform: gpio
        pin: PWM4
        name: "Kitchen Main Light"
    
     
     

    В этой прошивке есть один небольшой изъян. Вы его видите? Дам вам пару минут на размышление. Синтаксис довольно простой, и… Да ладно, короче, здесь не указан uart_id для подключения к радарному сенсору. «Ну и что же?» — спросите вы. А то, что он вешает радар на тот же UART1, на котором висит связь с хабом. После залития этой прошивкой ни управлять хабом, ни прошить его по воздуху не выйдет. Поэтому добавляем ма-а-аленькую строчку…
     
    id: uart_ld2420

    А мне же пришлось снимать хаб и прошивать его программатором еще раз…

    И вот перед нами готовый хаб. Можно потыкать выключателем с телефона. Можно посмотреть на всякие сенсоры. Но что он реально умеет?


    Чтобы раскрыть его возможности, нам нужны автоматизации. Во-первых, автоматизируем свет через радарный сенсор, при этом оставив управление с выключателя (принудительное отключение света по выключателю). Для этого нам нужен параметр Presenсe и данные с аналогового сенсора (у нас он отвечает за выключатель). Скрипт для включения по присутствию выходит примерно такой:
     
    alias: Управление светом на основе выключателя и присутствия
    description: Включение света, если ток меньше 1.1 В и присутствие.
    trigger:
      - platform: state
        entity_id: binary_sensor.kitchen_hub_presence
        to: "on"
      - platform: numeric_state
        entity_id: sensor.kitchen_hub_kitchen_swit_h
        below: 1.1
    condition:
      - condition: numeric_state
        entity_id: sensor.kitchen_hub_kitchen_swit_h
        below: 1.1
      - condition: state
        entity_id: binary_sensor.kitchen_hub_presence
        state: "on"
    action:
      - entity_id: switch.kitchen_hub_kitchen_main_light
        action: switch.turn_on
    mode: single
    

    Выключение более примитивное:
     
    alias: Выключение света выключателем
    description: Выключение света, если ток больше 1.1 В.
    trigger:
      - platform: numeric_state
        entity_id: sensor.kitchen_hub_kitchen_swit_h
        above: 1.1
    action:
      - entity_id: switch.kitchen_hub_kitchen_main_light
        action: switch.turn_off
    mode: single
    

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

    Кроме того, на другом моем хабе из статьи про управления жалюзи есть датчик освещенности. Его также можно использовать в автоматизации освещения.

    Также я могу отслеживать нажатие радиовыключателя, поскольку в хабе есть приемник 433 МГц. Планирую взять еще парочку, чтобы с их помощью активировать различные сценарии освещения.


    В другой статье я делал управляемые по радиоканалу штору, которые можно легко активировать этим хабом.

    А еще хлопковый датчик, ИК-трансмиттер, PIR… В следующих статьях я покажу еще один самодельный хаб, а также настрою сложные автоматизации на основе датчиков нескольких хабов. Новый год обещает быть интересным! Если же вам показалась вся эта возня с автоматизацией и кодом муторной, вы всегда можете воспользоваться услугами интеллектуальных чат-ботов. Просто рассказываете, что вам нужно, а он генерирует весь необходимый код.


    И помните:
    Будущее
    Осталось в прошлом
    Категория: Умный дом | Просмотров: 20 | Добавил: laptop | Рейтинг: 0.0/0
    Всего комментариев: 0
    Добавлять комментарии могут только зарегистрированные пользователи.
    [ Регистрация | Вход ]
    Волк слабее льва и тигра, но в цирке волк не выступает!
    Волк слабее льва и тигра, но в цирке волк не выступает!
    Волк - единственный из зверей, который может пойти в бой на более сильного противника.
    Если же он проиграл бой, то до последнего вздоха смотрит в глаза противника. После этого умирает...

    Праздники сегодня

    Поиск
    Календарь
    «  Декабрь 2024  »
    ПнВтСрЧтПтСбВс
          1
    2345678
    9101112131415
    16171819202122
    23242526272829
    3031
    Архив записей
    Друзья сайта
  • Официальный блог
  • JEEP - the best! Mercedes - the best! Автомобильный портал города Бреста: технические характеристики с фото, авторынок, автоспорт...
    Наша кнопка
    IT новости с моего лаптопа...

    Внимание!
    Администратор сайта laptop.ucoz.ru не несет ответственности за содержание рекламных объявлений. Все используемые на сайте зарегистрированные товарные знаки принадлежат своим законным владельцам! Используемая со сторонних источников информация публикуется с обязательными ссылками на эти источники.
    Copyright Valeri N.Kravchuk © 2007-2025