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

