Automatización de ventana corredera

Automatiza tu ventana de corredera con piezas de bicicleta y un motor de elevalunas de coche.

Además, utilizamos una vieja fuente de PC para alimentarla y también podemos controlar su encendido y apagado.

En el vídeo vemos paso a paso el montaje de los interruptores finales de carrera, el diseño del circuito, nos paramos a analizar el esquema en detalle y lo probamos primero en protoboard y luego en placa perforada.

Una parte del circuito está dedicada a cambiar el sentido de giro del motor, y la otra a mantener encendida la fuente de alimentación o apagarla de forma remota.

Todo gobernado con un ESP8266 con ESPHome.

Este es el código del ESPHome:

esphome:
  name: "vsotano"
  friendly_name: "vsotano"
  on_boot:
    switch.turn_on:
      id: FuenteONOFF

esp8266:
  board: esp01_1m

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "YClPu8t7lbNNGk4M3ySxxxxx9aFSzQ6k/8tn/YSTCk="

ota:
  password: "40645306c18df2xxxxxc5e2516a113f"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Vsotano Fallback Hotspot"
    password: "c8rvxxxxnpH"

captive_portal:

switch:
  - platform: gpio
    pin:
      number: GPIO2 #D4
      inverted: true
    id: FuenteONOFF
    name: "Fuente ON/OFF"

  - platform: gpio
    id: motor_forward
    pin: GPIO5 #D1
    name: "Abrir"

  - platform: gpio
    id: motor_reverse
    pin: GPIO4 #D2
    name: "Cerrar"

binary_sensor:
  - platform: gpio
    id: puls_abrir
    pin: GPIO12 #D6
    name: "Pulsador abrir"
    device_class: moving
    on_press:
      - lambda: |- 
          id(motor_forward).turn_on();
          id(motor_reverse).turn_off();
      - delay: 10s
      - lambda: |- 
          id(motor_forward).turn_off();
          id(motor_reverse).turn_off();

  - platform: gpio
    id: puls_cerrar
    pin: GPIO14 #D5
    name: "Pulsador cerrar"
    device_class: moving
    on_press:
      - lambda: |- 
          id(motor_forward).turn_off();
          id(motor_reverse).turn_on();
      - delay: 10s
      - lambda: |- 
          id(motor_forward).turn_off();
          id(motor_reverse).turn_off();

# Con el objeto COVER podemos utilizar 3 botones: subir, bajar y stop
cover:
  - platform: template
    name: "Motor DC Control"
    id: motor_dc_control
    device_class: damper
    open_action:
      lambda: |- 
        id(motor_forward).turn_on();
        id(motor_reverse).turn_off();
    close_action:
      lambda: |- 
        id(motor_forward).turn_off();
        id(motor_reverse).turn_on();
    stop_action:
      lambda: |- 
        id(motor_forward).turn_off();
        id(motor_reverse).turn_off();
    optimistic: true
    assumed_state: true

Y este el código de la automatización:

alias: Cierra la ventana del sótano a las 22:00
description: ""
trigger:
  - platform: time
    at: "22:00:00"
condition:
  - condition: state
    entity_id: switch.vsotano_fuente_on_off
    state: "on"
action:
  - service: cover.close_cover
    data: {}
    target:
      entity_id: cover.vsotano_motor_dc_control
  - delay:
      hours: 0
      minutes: 0
      seconds: 10
      milliseconds: 0
  - service: switch.turn_off
    data: {}
    target:
      entity_id: switch.vsotano_fuente_on_off
mode: single
Scroll al inicio