Do you have a Bliss Automation – Alta Window Fashions roller shade or other device that you’d like to add into Home Assistant? Then this is the place for you!
Background
Part of de-Amazon-ing my house, or “un-Bezo-ing?”, “de-Jeff-ing?” is to control all my smart home devices locally.
I’ve been “Jeffed” (ok, not really). Side quest: Check out this video by Evan Czaplicki about making money in open source, or how not to get Jeffed. I believe that the right timestamp is here. Then that previous quote will make sense to you!
One major stumbling block I had with this is the Bliss Automation Alta Window Fashion Roller Shades and their seeming reliance on a cloud automation control plane.
I have five of these roller shades and can currently control them with hand-held remotes, the Bliss app on my phone, or with Amazon Echo devices and the Alexa ecosystem. They have an Alexa skill and the setup was straightforward. There is a little USB dongle that is required, and then you can set these up in an app or Alexa.
Here’s a picture of the front of the dongle.

Another from the back. You can see these just have an ESP32 in them. They mention the 433 MHz radio to control the blinds.

Here’s how the workflow is with the dongle and cloud with app. I’d like to simplify it. Ideally, de-Jeff it.
Me --> Amazon Echo --> Amazon Voice Processing Cloud (Jeff)
|
Bliss Alta Cloud App
|
Local WiFi to 433 MHz dongle (AMP)
|
Roller Shade <--+
The Problem
Nowhere in that chain of communication is my Home Assistant in the loop. My favorite home automation platform that controls all of my house knows NOTHING about my roller shades! That means I can’t automate these blinds at all through the Home Assistant app.
Also, there is an Internet dependency for my roller shade voice commands. If the Internet is down, I will have to dig the remote controls out of the drawer where I’ve hidden them.
Potential Solution – Motionblinds
When I purchased these blinds, I was pretty sure they were part of the Motionblinds ecosystem, and that they had good integration with Home Assistant.
You can see the Bliss Automation – Alta Window Fashions, and even AMP listed there. The little dongle has AMP printed right on the back of it!
I tried to add these into Home Assistant as a Motionblinds device several months back, using the auto-discovery. This just timed out and no devices were detected or added. Big sad.
I thought “Hmm, maybe I don’t have the right hub.”
I had purchased the small USB powered dongle that speaks to the blinds on a 433 MHz frequency, and 2.4 GHz WiFi. This is how I have the phone app and Alexa control working – through that little hub. But there is a larger Ethernet connected hub as well and maybe THIS one would do better auto-discovery?
I didn’t feel like spending money to solve this problem, or to TRY solving it when I’m not sure that’s the solution at all. So I dug a little further. If my App can control this damn dongle, then Home Assistant should be able to see it as well?
Several months went by and when I went into Home Assistant again to add a new integration, I typed “Bliss”, and was very happy to see that the Bliss automation came up as a stub for the Motionblinds automation.
This was very encouraging!
You need two things to get the Bliss Alta shades added:
- The 16 digit key of the hub, that little USB dongle I have.
- (Optional – the IP address of the hub)
The 16-digit key can be retrieved by opening the Bliss app and navigating to:
Menu > Setttings (Hex Nut Icon) > Other Settings > About > Tap 5 times quickly
The key pops up in the form of xxxxxxx-yyyy-zz
The dashes are required.
I typed this key in to the Home Assistant Bliss / Motionblinds Add Integration screen and left the IP address blank, hoping auto-discovery would work.
Again, I was disappointed – but not deterred. It just timed out and said there were no devices.
I didn’t know the IP address of the device, but I’m a network engineer, and I thought I saw the MAC address of the USB hub somewhere in this menu. Let’s go find the damn IP, and while we’re at it let’s see if it’s listening on any ports.
Scanning
The hub has a MAC address you can find in the app by going to:
Menu > Locations > Your Location (Hex Nut) > All Bridges, Your Bridge (Hex Nut)
Write down this MAC, or at least the last 4 digits of it. Make sure to put a colon in between every pair of hex digits. In my case 6b:80
were the last 4 digits of the MAC.
This is listed under the improperly capitalized “Mac Address”. This is not a laptop made by Apple, it’s the Media Access Control (MAC) address. This is what the layer 2 frames will use for the addressing. So now, how do I get the layer 3 address, or IP?
I chose violence. I mean.. aggressive tactics that would be frowned on in the enterprise. Let’s nmap the thing. Like a real hacker.
Open your terminal, install nmap accordingly for your Operating System, and run nmap.
nmap -sn 192.168.1.0/24
Nmap done: 256 IP addresses (23 hosts up) scanned in 2.79 seconds
This runs a ping scan of the 192.168.1.0 – 192.168.1.255 address range, looking for all the responding IP addresses.
But HOW do we get our single device IP address back from that nmap scan, which could return hundreds of addresses? Simple – we’re relying on the fact that in order to reach out and scan these addresses at layer 3, our scanning PC had to build MAC to IP table mappings.
The workstation running the nmap scan keeps a mapping of all the layer 3 IP addresses on the local network, and all the known layer 2 MAC addresses associated with the address, called an ARP table. This helps it build the network frame, and packet to make sure it’s going to the right destination.
We’re looking for this ARP table for our known MAC address, to see if it’s learned the IP. Remember, the MAC address we wrote down earlier from the app.
arp -a | grep 6b:80 #replace with your MAC
? (192.168.1.146) at ec:da:3b:cc:6b:80 [ether] on wlp0s20f3
Success, I know that my Bliss automation hub is 192.168.1.146.
So I added the Bliss integration by both the IP address and the key inside Home Assistant. AND!!!!
It timed out and failed.
Ugh.
OK – I closed my laptop lid in defeat. I at least noticed one interesting property. Now, the integration remained inside Home Assistant, just showing that it had no discovered devices. Previously when you failed to enter an IP, there would be zero remaining configuration after the failure.
I was going to look through forum posts and see what was happening here, but I found almost nothing.
If this little Bliss Alta hub accepts communication, it must ALSO be listening on some TCP port, right? So let’s use that same nmap tool and find an open port.
At this point I have forgotten all the detailed flags for nmap, so I just went to the nmap docs and pulled up an aggressive scan. This is on my local network, so I don’t mind doing this. If this was on someone else’s network, you probably shouldn’t do this.
nmap -p0- -v -A -T4 192.168.1.146
Completed Connect Scan at 15:59, 26.10s elapsed (65536 total ports)
Nmap scan report for 192.168.1.146
Host is up (0.035s latency).
All 65536 scanned ports on 192.168.1.146 are in ignored states.
Not shown: 65536 closed tcp ports (conn-refused)
That is not promising!
What if we went another layer down and looked at how another Node.js library handles communication with Motionblinds devices?
https://github.com/jhurliman/node-motionblinds/blob/main/src/index.ts
If we’re being pedantic, we should probably look at this Python library instead, since that’s what Home Assistant uses:
https://pypi.org/project/motionblinds/ and
https://github.com/starkillerOG/motion-blinds/blob/main/motionblinds/motion_blinds.py
Oh. I see now.
export const MULTICAST_IP = '238.0.0.18'
export const UDP_PORT_SEND = 32100
export const UDP_PORT_RECEIVE = 32101
MULTICAST_ADDRESS = "238.0.0.18"
UDP_PORT_SEND = 32100
UDP_PORT_RECEIVE = 32101
This code says the Motionblinds device is doing some listening on a UDP port, responding back on another port, and that the protocol also involves some multicast addresses. Long ago I had to program a UDP file transfer program in Java, so I remember a little bit about this.
We can tweak our nmap scan a little to verify that yes, this device is alive on port 32100. We need to escalate to sudo
here since we’re asking for something special, the low-level UDP access across the whole port range.
sudo nmap -sUV -p0- -T4 192.168.1.146
Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-08-10 16:31 EDT
Nmap scan report for 192.168.1.146
Host is up (0.019s latency).
Not shown: 65535 closed udp ports (port-unreach)
PORT STATE SERVICE VERSION
32100/udp open|filtered unknown
MAC Address: EC:DA:3B:CC:6B:80 (Espressif)
That’s the second time this little -p0-
command comes up. I think it must be ports 0 through 65535
, but in an easier way to write. Zero, until the end.
Looking at the nmap output and Wireshark where we were running the scan – the Bliss Alta hub device sends back an ICMP destination unreachable for ONLY that one specific port, 32100. On all other ports, it remains silent. That gives us a hint that something actually IS alive on this port.

At this point things still weren’t working for me, but we learned a little bit. We see that there IS a custom protocol for this device, and my little USB dongle appears to be listening on some port. Let’s call it quits for this deep-dive session.
Deus ex Machina
After a long rest, really just a long bicycle trip, I came back home and magically all of my blinds had appeared in Home Assistant!

I could see their position and battery levels, as well as open, close, and stop them.
My new workflow is now much simpler! No Jeff. No Internet.
Me --> Home Assistant
|
Local WiFi to 433 MHz dongle (AMP)
|
Roller Shade
I have no idea why this worked. OK, I have a small suspicion. Remember that specifying the IP address and the key inside the configuration seemed to leave the configuration behind. During one of the restarts I did, or during one of the reattempts to connect, the Python Home Assistant Motionblinds integration must have been able to successfully query the little hub.
I think I’m ready to write this down as a win.
For anyone coming along after who is looking to configure the Bliss Automation Alta Window Fashions roller shades in Home Assistant, and is using the small USB powered WiFi hub, the secret is to find the IP, and the key, and WAIT for the Motionblinds integration to do its thing.
Leave a Reply