Giter VIP home page Giter VIP logo

livoloreadrf433's Introduction

LivoloReadRF433 for Home Assistant

Чтение кодов RF433 брелоков от фирмы Livolo с помощью ESPHome.

Reading codes RF433 key fobs from Livolo using ESPHome.

О проекте

Задача: Использование пульта Livolo работающего на частоте 433МГц, в автоматизациях умного дома Home Assistant. Для работы используется ESPHome.

Используемые компоненты:

  • ESP8266-01S

  • Приемник на 433МГц QIACHIP RX500A

  • Питание на Ваш вкус. Я использую Hi-Link HLP-PM03 (3.3В, 3W)

  • Пульт Livolo (обозначение на плате VL-RMT02 VER:B6)

Подключение:

Один из контактов приемника (DO) подключается к контакту GPIO2 ESP8266-01S.

Прошивка:

  • В ESPHome создаем новое устройство, называем (например) livoloreadrf433. Прошиваем его стартовой прошивкой. Затем кладем файлик LivoloReadRF433.h по пути "config\esphome\" рядом с livoloreadrf433.yaml, который будет создан в системе.

  • Редактируем файл настроек livoloreadrf433.yaml

    • прописываем в начале файла:

      esphome:
        includes:
          - LivoloReadRF433.h
      
    • и добавляем сенсоры:

      sensor:
      - platform: custom
        lambda: |-
          auto my_sensor = new LivoloReadRF433();
          App.register_component(my_sensor);
          return {my_sensor->RemoteID ,my_sensor->KeyCode};
      
        sensors:
          - name: "RemoteID"
            force_update: true
          - name: "KeyCode"    
            force_update: true

      В результате в Home Assistant, в интеграции ESPHome появится устройство LivoloReadRF433, с двумя сенсорами RemoteID (код пульта) и KeyCode (код кнопки).

Пример автоматизации:

alias: >-
  Большая комната. Свет. Переключение одной лампочки по кнопке "А" пульта Livolo 
description: >-
  Переключаем одну лампочку в большой комнате при нажатии на кнопку "А" пультика Livolo
trigger:
  - platform: state
    entity_id:
      - sensor.livoloreadrf433_keycode  #такой сенсор будет создан, если имя устройства задали livoloreadrf433
    from: null
    to: "8" #код кнопки
condition:
  - condition: state
    entity_id: sensor.livoloreadrf433_remoteid #такой сенсор будет создан, если имя устройства задали livoloreadrf433
    state: "32375" #код пульта
action:
  - service: switch.toggle  #запускаем службу switch для переключения света
    data: {}
    target:
      entity_id:
        - switch.YOU_SWITCH_ENTITY_ID 
mode: single

где YOU_SWITCH_ENTITY_ID сущность вашего выключателя.

Дополнение:

Уже не актуально !!!
Был изменен код и на данный момент все работает нормально. 
После передачи кодов сделано принудительное обнуление значений сенсоров.

При тестировании обнаружилась проблема: при нажатии на одну и туже кнопку пульта, в Home Assistant передавалось только первое нажатие. Если нажимать разные кнопки - всё передавалось нормально.

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

Для исправления данной ситуации был использован параметр "force_update: true", который должен был заставить ESPHome передавать данные, даже если код клавиши не изменился.

Но, выяснилось, что параметр не отрабатывает как задумывался (по крайней мере у меня). Почитать об этом можно сдесь.

В результате пришлось добавить принудительное изменение значения сенсора keycode в автоматизации Home Assistant (записываем, значение, которое заведомо не совпадает с любым кодом клавиш).

Для включения возможности изменения значений датчиков через автоматизации, надо:

  1. В configuration.yaml добавить "python_script:"
  2. В папке config (в ней лежит configuration.yaml) создать папку "python_scripts"
  3. В папку "python_scripts" положить файл "set_state.py"
  4. Перезагрузить HA.

Более подробно описано в статье (статья не моя).

Код обработчика нажатий клавиш пульта взят здесь.

Благодарности:

livoloreadrf433's People

Contributors

nikolay-yakovenko avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.