Barrera automática

Barrera automática para tu mascota

Construimos una barrera móvil que se abrirá o cerrará gracias a un servo, como el que vimos hace un par de artículos.

Además, la barrera dispone de un radar LD2410 que permite detectar la cercanía de una persona y abrir la barrera, pero no se abrirá si quien se acerca es mi perra.

La barrera está gobernada por un ESP8266 y está conectada y monitorizada desde Home Assistant.

Te dejo aquí los enlaces de compra para los materiales que se han usado en el vídeo:

No te pierdas el vídeo a continuación.

Te dejo a continuación el código usado en ESPHome:

esphome:  
  name: barrera-automatica
  friendly_name: Barrera automática

esp8266:
  board: esp01_1m

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "6dAjfGhSYvqP6XIVN90k4J+DRhcnIJtsyXBT6gAOkEQ="

ota:
  password: "92f833ebaca41b9b11dd178c65dd6dd3"

wifi:
  networks:
  - ssid: !secret wifi_ssid
    password: !secret wifi_password
  - ssid: !secret wifi_ssid2
    password: !secret wifi_password
    
  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Barrera-Automatica"
    password: "hBmoirOKJmjL"

captive_portal:

globals:
   - id: pos_servo
     type: float
     restore_value: no
     initial_value: '100'

number:
  - platform: template
    name: Servo Control
    id: posicion
    min_value: -100
    initial_value: -100
    max_value: 100
    step: 1
    optimistic: true
    internal: False
    set_action:
      then:
        - servo.write:
            id: mi_servo
            level: !lambda 'return x / 100.0;'

servo:
  id: mi_servo
  output: pwm_output

output:
  - platform: esp8266_pwm
    id: pwm_output
    pin: GPIO5
    frequency: 50 Hz

uart:
  tx_pin: GPIO1
  rx_pin: GPIO3
  baud_rate: 256000
  parity: NONE
  stop_bits: 1

ld2410:
  id: ld2410_radar

#sensor:
#  - platform: ld2410
#    moving_energy:
#      name: Radar Move Energy

light:
  - platform: status_led
    id: led_azul
    pin: GPIO2
    restore_mode: ALWAYS_ON
    

binary_sensor:
  - platform: homeassistant
    name: "Barrera automática"
    id: barrera_activada
    entity_id: input_boolean.barrera_automatica

  - platform: homeassistant
    name: "Barrera"
    id: barrera
    entity_id: input_boolean.barrera
    on_state:
      then:
        if:
          condition:
            binary_sensor.is_on: barrera
          then:
            script.execute: abrir_barrera
          else:
            script.execute: cerrar_barrera

  - platform: ld2410
    has_moving_target:
      name: Radar Moving Target
      filters:
      - delayed_on_off: 
          time_on: 50ms
          time_off: 3s
          
      on_press: # abrimos la barrera
        then:
          - if:
              condition:
                binary_sensor.is_on: barrera_activada
              then:
                script.execute: abrir_barrera
                
      on_release: # cerramos la barrera
        then:
          - if:
              condition:
                binary_sensor.is_on: barrera_activada
              then: 
                script.execute: cerrar_barrera


    

script:
  - id: abrir_barrera
    then:
      - logger.log: "Abriendo"
      - number.set:
          id: posicion
          value: !lambda return id(pos_servo);
      - light.turn_off:
          id: led_azul

  - id: cerrar_barrera
    then:
      - logger.log: "Cerrando"
      - globals.set:
          id: pos_servo
          value:  '-100'
      - number.set:
          id: posicion
          value: -100  
      - light.turn_on:
          id: led_azul
      - delay: 3s
      - globals.set:
          id: pos_servo
          value:  '100'


Scroll al inicio