Automated smart blinds retrofit device with WiFi , MQTT and light measurement capability.
- Wemos D1 mini
- 180 degree servo
- LDR 5516 photoresistor
- NPN Transistor
- Tactile push buttons
- 10k Resistors
- Some spring, hard to specify dimensions and power
- Some basic soldering equipment and skills
You can redefine some default settings through Settings.h file. It is pretty self-explanatory I think.
There is WiFi Manager on board so after burning the firmware, device is in AP mode, default password for connecting to AP is: configure. Default account for configuring / controlling the device is admin with password: password
After connecting to WiFi, there is UI configuration interface, you can find device IP address through serial terminal or through in your router, or through scanning the network. Device hostname is ZaluzioGeret-MAC_END.
There are settings for specifiing MIN and MAX angle of rotation, and reverse direction of inner logic.
There are 2 buttons connected, UP and DOWN, each short press control the servo with 5° in respective direction. Short pressing of both buttons resets the servo in middle position. Long press of each button moves the servo to the MIN or MAX position defined. Long pressing of both buttons starts the LightFinder procedure. LightFinder procedure moves the servo to MIN position, and then continually measure light after each move. Then it move to the position in which highest light was measured.
Long pressing of both buttons for 8 seconds resets the WiFi settings, putting the device into AP configuration mode.
There is option in settings to setup Slave device ID which is automatically generated hostname which you can see in top of home screen. I assume using identical settings of PUB and SUB topic prefixes and also angles.
When slave device ID is set, after pressing button, MQTT command will be sent to slave device and thus linking these together.
If you want to controll multiple devices remotely, not through buttons, you can easily done it in Home automation system, for example automation would have 2 actions, send command to 2 different topics.
MQTTPUBTOPIC/hostname/LWT - Where status of device is sent
MQTTSUBTOPIC/hostname/Rotate - Command for controlling angle of servo number expected
MQTTSUBTOPIC/hostname/FindLight - Command for start LightFinder procedure. On expected
MQTTPUBTOPIC/hostname/Light - Here is light measured sent
MQTTPUBTOPIC/hostname/Angle - Here is current angle of servo sent
This call will start LightFinder procedure. You have to be authenticated or send basic auth with request.
ip.of.dev.ice/lightcontrol
This call will move servo to desired angle. You have to be authenticated or send basic auth with request.
ip.of.dev.ice/servocontrol?angle=XX
cover:
- platform: mqtt
name: "Žalúzie spálňa lavé"
device_class: "blind"
availability_topic: "stat/ZaluzioGeret-3252d1/LWT"
qos: 0
retain: false
payload_available: "Online"
payload_not_available: "Offline"
optimistic: false
value_template: '{{ value.x }}'
tilt_command_topic: 'cmnd/ZaluzioGeret-3252d1/Rotate'
tilt_status_topic: 'stat/ZaluzioGeret-3252d1/Angle'
tilt_min: 0
tilt_max: 180
tilt_closed_value: 180
tilt_opened_value: 90
- platform: mqtt
name: "Žalúzie spálňa pravé"
device_class: "blind"
availability_topic: "stat/ZaluzioGeret-5d26b9/LWT"
qos: 0
retain: false
payload_available: "Online"
payload_not_available: "Offline"
optimistic: false
value_template: '{{ value.x }}'
tilt_command_topic: 'cmnd/ZaluzioGeret-5d26b9/Rotate'
tilt_status_topic: 'stat/ZaluzioGeret-5d26b9/Angle'
tilt_min: 0
tilt_max: 180
tilt_closed_value: 180
tilt_opened_value: 90
- platform: group
name: "Žalúzie spálňa"
entities:
- cover.zaluzie_spalna_lave
- cover.zaluzie_spalna_prave
Device is mounted to window frame by self adhesive tape by 3M.
For cable routing I used sticky cable trunking with name MONTERA.
All parts for 3D printing are on thingiverse project page