How to automate a roller shutter using a Shelly 2 5

23 August 2022
Our home has roller screens on all windows and the vast majority of them have an electric engine to open and close them. The engines are Schellenberg shaft engines (not certain this is the right English term), that you can design end positions for and afterward by applying current to the right sets of pins they move the screens all over until the current is eliminated or one of the endstops is reached. As the engines were introduced over an extensive stretch of time, the connected control units changed in usefulness: various ways of programing open/close times, with and without battery for the clock/settings and so on, yet they all shared something practically speaking: no focal administration and quite terrible. We chose to supplant those control units with standard 2 group light switches that match different switches in the house. Also, as we would have rather not lost the programmed open/close clock, we needed to add a few smarts to it.
Shelly 2.5 and ESPHome
Express welcome to Shelly 2.5! The Shelly 2.5 is an ESP8266 with two transfers connected to it in a very minuscule bundle you can conceal in the wall behind an ordinary switch. Really clever. It initially accompanies a Mongoose OS based firmware and an own application, yet ain’t no one requirements that, particularly no one who needs to execute some rough rationale. All things considered, the first firmware isn’t awful. It has a no-cloud mode, a REST API and supports MQTT for joining into Home Assistant and others.
My ESP firmware of decision is ESPHome, which you can streak effectively onto a Shelly (regardless of 1, 2 or 2.5) utilizing a USB TTL connector that gives 3.3V. Home Assistant has local ESPHome support with auto-revelation, which is a lot more pleasant than physically joining things to MQTT subjects.
We’re utilizing board: modwifi as the Shelly 2.5 (and any remaining Shellys) has 2MB blaze and the normally suggested esp01_1m would just utilize 1MB of that – generally the designs are indistinguishable (see the PlatformIO passages for modwifi and esp01_1m). Also, arduino_version: 2.4.2 is what the Internet proposes is the most steady SDK variant, and who will contend with the Internet?!
The !secret orders load the named factors from secrets.yaml. While testing, I found the organization association of the Shelly entirely untrustworthy, particularly when set inside the wall and subsequently having rather awful terrible gathering (- 75dBm as per ESPHome). Notwithstanding, setting power_save_mode: none expressly appears to have fixed this, regardless of whether NONE should be the default on ESP8266.
As of now the Shelly has a functioning firmware and WiFi, however doesn’t uncover any of its elements: no switches, no transfers, no power meters.
To fix that we first need to figure out the GPIO sticks every one of these are associated with. Fortunately we can essentially duplicate glue the definition from the Tasmota (another open-source firmware for ESPs) layout:
Since we have a functioning Shelly 2.5 with ESPHome, how would we control Schellenberg (and other) roller screens with it?
Indeed we, most importantly, need to interface the Up and Down wires of the screen engine to the two transfers of the Shelly. Also, in the event that they wouldn’t be set apart as inside: valid, they would appear in Home Assistant and we would have the option to flip them on and off, moving the shades. In any case, this would likewise imply that we really want to flip them off each time after use, as while the engine knows when to pause and will do as such, applying current to the two wires simultaneously delivers rather fascinating outcomes. So rather than messing with the transfers straightforwardly, we characterize a time sensitive cover in our design
We utilize a time sensitive cover since that is the simplest thing that will likewise switch the transfers off for us after the shades have been opened/shut, as the engine doesn’t “report” any state back. We could utilize the coordinated power meter of the Shelly to switch off when the heap falls under a limit, yet I was too sluggish and this turns out only great for what it’s worth.