Hacking a Blind Motor

I have some MySmartBlinds. They’ve worked brilliantly on their own for the past few years and with their solar panels have been ‘set and forget’.

They’re not without their problems though. Very proprietary, total lack of support with anything, crap if you try to use them with anything other than iOS, no working solution for HA when not running on a Pi and no longer ship to the UK. Lately one of my blinds has lost the plot and seems to do what it wants.

There’s a teardown here.

I’m thinking about robbing the stepper motor from them and DIYing something compatible with HA, preferably RF or Zigbee (I’d use ESPHome but there’s no chance of getting a power supply to where the blinds are).

I’m pretty clueless on RF/Zigbee; does anyone know of a framework like ESPHome with compatible hardware that I can use?

Thanks!

I’m trying to perfect my own ESPHome blinds.
If it’s any help, here’s my code.

esphome:
  name: lrf_blinds
  platform: ESP8266
  board: d1_mini
  on_boot:
    priority: 800.0
    then:
      - cover.close: cover1
      - delay: 2s
      - servo.detach: my_servo
      - delay: 3s
      - cover.close: cover2
      - delay: 2s
      - servo.detach: my_servo2

wifi:
  ssid: "SSID"
  password: "PASSWORD"
  manual_ip:
    static_ip: IP
    gateway: Gateway
    subnet: SUBNET

# Enable logging
logger:

# Enable Home Assistant API
api:
  password: "PASSWORD"

ota:
  password: "PASSWORD"
  
switch:
  - platform: gpio
    name: "Living Room Front Blinds Status Light"
    pin: 2
    inverted: True

servo:
  - id: my_servo
    output: pwm_output
    
  - id: my_servo2
    output: pwm_output2

# Example output platform
# On ESP32, use ledc output
output:
  - platform: esp8266_pwm
    id: pwm_output
    pin: D5
    frequency: 50 Hz

  - platform: esp8266_pwm
    id: pwm_output2
    pin: D6
    frequency: 50 Hz

cover:
  - platform: time_based
    name: "Living Room Front Blinds Left"
    id: cover1
    open_action:
#      then:
      - servo.write:
          id: my_servo
          level: -2.0%
    open_duration: 1.2sec

    close_action:
#      then:
      - servo.write:
          id: my_servo
          level: 20.0%
    close_duration: 2.3sec

    stop_action:
#      then:
      - servo.write:
          id: my_servo
          level: 0%
      - servo.detach: my_servo
###############################
  - platform: time_based
    name: "Living Room Front Blinds Right"
    id: cover2
    open_action:
#      then:
      - servo.write:
          id: my_servo2
          level: -2.0%
    open_duration: 3.5sec

    close_action:
#      then:
      - servo.write:
          id: my_servo2
          level: 20.0%
    close_duration: 1sec

    stop_action:
#      then:
      - servo.write:
          id: my_servo2
          level: 0%
      - servo.detach: my_servo2

It uses two servos to tilt two blinds.
They are continuous rotation servos so I just guestimate how long they have to spin in each direction.
Hopefully getting a new, better gearbox graciously printed soon.

1 Like