Home Assistant Simple Motorised Roller Blind
Latest Release available here: https://github.com/jampez77/motor_blind/releases/
This project was inspired by the excellent work of nidayand and their motor-on-roller-blind-ws project. Basically I have stripped that project back to it’s bare bones and implemented MQTT configuration to allow my Home Assistant to discovery the entities.
Additionally I wanted all the configuration to be done in Home Assistant so I created a set min / max switches that disappear once the blinds are set up.
- Arduino IDE - I’m using v1.8.13
- Stepper_28BYJ_48 - v1.0.0
- PubSubClient - v2.7.0
- ULN2003 Board Driver with Stepper Motor
- Node MCU
- Motor on a roller blind 3D printed holder
- 9V - 12V DC power supply.
Flashing project to the NodeMcu
Once you have setup your software, you first need to download this project, by clicking
clone -> Download ZIP.
Unzip the file and navigate to the contents. you should see a file named
My_Helper_sample.h, go ahead and rename it to
motor_blind.ino. Doing so should open it in the Arduino IDE.
You do not need to make any changes to the
motor_blind script itself!
Click on the
My_Helper.h tab, that is where you will add your WiFi credentials for your home network & your MQTT details.
Wiring is very similar to the original version described here with one key difference. We connect
D5 as I
D4 on the NodeMCU is the builtin LED, that is used to show any connection problem.
Connect 9v directly to Vin on NodeMCU board (validate first that your version has a built in regulator for 9V) and to the ULN2003 board.
5V is simply not enough to be able to control the blinds, even with the higher gear ratio, so ULN2003 requires 9V.
Connect the board to the NodeMCU as follows:
The next step, once you’re happy with the details is to upload the project to the Wemos D1 Mini.
To do that you select
Tools from the top menu within the IDE.
Then you need to set the upload parameters to the following;
The next step is to simply plug your device in the computer, Go to
Tools -> Port and select it.
For me this usually says something
You will only need the device plugged in on your first upload, after that you should see your devices name and it’s IP address in the port list.
Now you just click on the upload button in the top left corner of the IDE, it’s the right-facing arrow.
After a bit of time compiling, the script should be uploaded to the device and begin scanning for the car.
You can see what the device is doing by going to
Tools -> Serial Monitor
If the upload doesn’t work the most likely cause is that you forgot to rename the
My_Helper_sample.h file or import the above libraries.
Integrating with Home Assistant
Configuring up the blinds
One first connection you will see 4 entities
You should manually set the blinds as open, to the level you are happy to regard as fully open. Once this is done you should
turn on the
Set Min switch. This will save the current position as the open value, then that entity will disappear front Home Assistant.
Next step is to close the blinds using the cover entity. Stop the blinds once they reach a position that you’re happy to regard as closed. Now
turn on the
Set Max switch to save the closed position.
The setup is complete once the
Set Max entity has disappeared. If you ever need to change the open or close values you can simply
turn on the
Reset switch. That will erase the memory on the NodeMCU and initiate a fresh install.
Version 1.0 - Initial Release
LED status indicator
- Solid light = No WiFi connection
- Flashing Light = no MQTT connection
- No light = connection established
ArduinoOTA for wireless code updates.
Added MQTT config on boot to integrate seamlessly with Home Assistant.