Norman TDBU blind control

I recently outfitted my house with motorised Norman top down bottom up (TDBU) cellular shades.

They offer a hub but unfortunately it only exposes the bottom rail to third party controllers like Google Home, Alexa, and Homekit.

I successfully connected the hub to Home Assistant via the Homekit Device integration and confirmed that I only have control of the bottom rail.


Hobbled.

Attempting to set the cover to any position immediately sends the top rail to the closed position at the top of the blind and only controls the position of the bottom rail.

This would be fine for single rail blinds but for TDBU it is annoying as for best privacy while maintaining my view my blinds need the middle/top rail set anywhere from 30 to 50%.

It is also unfortunate as their app has control of both rails and reports the motor battery state. The excuse from the manufacturer in their documentation is that third party controllers do not understand the concept of a middle or top rail. This is rubbish it could be exposed as a second cover. The blind itself takes care of the maximum possible positions. And there is no excuse for not exposing the battery sensor.

To gain better control I spent an entire day hacking a QuinLED ESP32 into the remote battery compartment to press the buttons for me.

This was especially tedious and fiddly as I chose to maintain the remote functionality and did not solder directly to the pushbutton pads but to the 0603 SMD components (1.55mm x 0.85mm) on the back of the PCB with fine wire wrap wire. This took a very steady hand and a stereo microscope. On the plus side none of the buttons or LEDs were multiplexed so I could use the ESP open drain outputs and GPIO inputs directly and the remote can be powered from the ESP 3.3V supply.

After some confusion with the active state of the open drain outputs (they are normally low impedance and go high impedance when active), I got it working. It has feedback of which blinds are currently selected for control:


.


.


.

Due to the limited number of i/o I dropped the top left and right favourite buttons on the remote (fully open and fully close) as these can be accomplished with the other buttons and a script. The favourite (star) button was added as this is a quick way to set my preferred open state of the blind (it is able to be set in the blind itself).

ESPHome config if you are interested: dining-blinds.yaml (4.3 KB)

I have the kitchen and dining rooms opening and closing the blinds automatically at sunrise/sunset and have some shortcut scripts for manual control that I am reasonably happy with:

Screenshot 2024-03-18 at 10-05-27 Overview – Home Assistant
.

Unfortunately as there is no state feedback I can not show which state is currently active as recording this in an input text or input select would get out of sync as soon as the physical remote was used.

Due to the laborious and fiddly nature of this hack (It really did take a whole day for one remote) and the fact that there was no cover state feedback I started looking at the nRF52840 Bluetooth SoC in the remote.

After only half an hour of failed Bluetooth scanning using the nRF Connect phone app I realised why this was a dead end:


Bastarrds!

They aren’t using Bluetooth but are using a custom 2.4GHz protocol instead. :face_with_symbols_over_mouth:

So, where to from here?

I could hack ESP boards into another five remotes for the remaining rooms. I really loath that prospect.

Or I could start looking at hacking their hub to see what it exposes over the Ethernet port using wireshark. Particularly when it is controlling the top rail. Or see if it has any interesting exposed test ports inside.

Or I could investigate where the interesting unpopulated ports and test points on the remote connect to on the nRF chip:


.

To be continued…

2 Likes

Wow!

I interface with my blinds via RF. But I have some thoughtfully placed door sensors / super magnets to detect “Fully open”. That helps a fair bit.

Boo!

Ditched the “keep the remote control function” idea and soldered directly to the remaining remote button pads. I completed each one in less than an hour.

I’m interested in copying essentially this same exact project with the Norman remote, except I’ll only be controlling one roller shade (so not tdbu) and only really care about the close and open buttons (though adding the up/down would be nice). Mostly because it seems like a fun project and my dealer is trying to charge $300 (!!!) for the smart hub

I’m a bit of an electronics noob so have a few questions…

Anything I should be looking for specifically in an esp32 board? or would something like this work? SparkFun Qwiic Pocket Development Board - ESP32-C6 - DEV-22925 - SparkFun Electronics

What does soldering to the remote pads look like (I don’t care about losing remote functionality)? And how did you power it?

Any ESP32 should work*.

ESP8266 boards don’t have enough GPIO.

I have to open up my controllers to clone a couple of new remotes later this week. I’ll take some photos.

* I power the ESP32 from a 5V plug pack. I connected the 3V3 supply from the ESP32 to the battery contacts of the remote. So you will need a good quality ESP32. Some have very under-powered voltage regulators. There are some recommendations here: What's your favourite ESP32 board? (# Best, good, cheap, quality, reliable)

This is the QuinLED ESP32 board I used:

esp32
.

Here are the connections on that board (oriented for the picture above):

Untitled2

.

D2R refers to the right hand side of the LED labelled D2 on the remote (trickiest thing to solder). The SWn labels correspond to the pad labels on the remote.

This gives me these controls:

Untitled3
.

ESPHome yaml file:

lounge-blinds.yaml (4.4 KB)

1 Like

Thank you so much for the thorough reply! Going to order some parts and look forward to seeing the pics!


.

Note the orange wires going to the LEDs, they’re the hardest.

1 Like