devices.esphome.io
Horus - Blind Controller
Horus - Blind Controller
Device Type: switchElectrical Standard: globalBoard: esp8266Difficulty: Comes with ESPhome, 1/5
Description
The Horus Blind Controller allows you to automate and control your blinds using Home Assistant while keeping manual operation via your existing physical switches. It seamlessly integrates with Home Assistant through ESPHome and requires minimal setup.
      
  
        
        
Features
✅ Works with existing wall switches for manual control
✅ Remote control via Home Assistant
✅ Fully pre-flashed with ESPHome — no extra configuration required
✅ Secure and reliable local communication (no cloud dependency)
✅ Customizable automation rules  
Wiring Diagram
      
  
        
YAML Configuration
substitutions:  devicename: "horus-blind"
esphome:  name: ${devicename}
esp8266:  board: esp01_1m
# Enable logginglogger:
# Enable Home Assistant APIapi:
ota:  - platform: esphome    password: ""
wifi:  ssid: !secret wifi_ssid  password: !secret wifi_password
  # Enable fallback hotspot (captive portal) in case wifi connection fails  ap:    ssid: "Horus-Blind"    password: "esphomearez"
captive_portal:
#*** Web server optional if you whant check or control over http requests ***  #web_server:#  port: 80#  version: 3#  include_internal: true#  ota: false
binary_sensor:- platform: gpio  pin:    number: 4    # ---    mode: INPUT_PULLUP    inverted: true  filters:    - delayed_on: 50ms    - delayed_off: 50ms  id: button_open_1  on_press:    then:      # logic for cycling through movements: open->stop->close->stop->...      - lambda: |          if (id(my_cover_1).current_operation == COVER_OPERATION_IDLE)              {               id(my_cover_1).open();               id(output_cover_open).turn_on();            }          else            {              id(my_cover_1).stop();   // Cover is opening/closing. Stop it            }  on_release:    then:      - lambda: |          id(my_cover_1).stop();   // Cover is opening/closing. Stop it
- platform: gpio  pin:    number: 5  # ---    mode: INPUT_PULLUP    inverted: true  filters:    - delayed_on: 50ms    - delayed_off: 50ms  id: button_close_1  on_press:    then:      # logic for cycling through movements: open->stop->close->stop->...      - lambda: |          if (id(my_cover_1).current_operation == COVER_OPERATION_IDLE)              {               id(my_cover_1).close();               id(output_cover_close).turn_on();            }          else            {              id(my_cover_1).stop();   // Cover is opening/closing. Stop it            }  on_release:    then:      - lambda: |            id(my_cover_1).stop();   // Cover is opening/closing. Stop it
switch:- platform: gpio  pin:    number: 14    mode: OUTPUT    inverted: false  id: output_cover_open- platform: gpio  pin:    number: 13    mode: OUTPUT    inverted: false  id: output_cover_close
cover:- platform: time_based  name: "Blinds"  id: my_cover_1  open_action:    - switch.turn_on: output_cover_open    - switch.turn_off: output_cover_close  open_duration: 23s    #Change this value in orther to match the blind open duration    close_action:    - switch.turn_off: output_cover_open    - switch.turn_on: output_cover_close  close_duration: 22s    #Change this value in orther to match the blind close duration    stop_action:    - switch.turn_off: output_cover_open    - switch.turn_off: output_cover_closeInstallation
Connect the device to the existing blind switch following the wiring diagram.
Power on the device—it will automatically create a Wi-Fi hotspot if not connected to your home network.
Connect to the hotspot (SSID: ESPHome-XXXXXX), then configure the Wi-Fi settings.
Add to Home Assistant using the ESPHome integration.
Home Assistant Integration
Navigate to Settings → Devices & Services
Click + Add Integration
Select ESPHome and enter the device IP address
Automations & Controls
Use the physical wall switches for direct control
Create automations in Home Assistant to control blinds based on time, weather, or sunlight conditions
Support
For troubleshooting, check the ESPHome logs:
esphome logs smart_blind_controller.yaml