Soma Smart Shades 2

I recently purchased a Soma Smart Shades 2 blind/shade automation unit and thought I’d share my experience so far.

Why?

We sleep with the window and roller blind (partly) open, the fresh air is great but the 4 am sunrise in the summer is a bugger. I wanted something that would close the blinds just before first light.

After looking around at various options the Soma blinds looked like a good choice for a number of reasons:

  • They have a Home Assistant integration!
  • There’s a local HTTP API available.
  • Although not cheap, they are one of the cheapest options available.
  • The unit fit’s an existing blind which means I can easily re-use it if we swapped out the blind or moved house.
  • It has a “Quiet Morning Mode” which “keeps the noise level inaudible”. More on this later.

Installation

The initial installation was trivial and the app’s instructions were easy to follow. I did have a couple of issues with the app crashing but, with Home Assistant, I don’t intend on using the app that much.

During the initial setup, you are asked to configure the blind’s “endpoints”, this tells the unit at what position the blind is fully open and at what position it’s fully closed. Unfortunately, I had some real issues with this. No matter how many times I configured these endpoints the blind never seemed to be aligned to them. I’d close the blind and it would either not fully close or it would over-close and spin. I’d open the blind and it would either not fully open or it would go way past the window. I played around with this for ages but had no luck.

The next day, when tidying up the box I found that they provide a beaded chain with the unit. Whereas mine had large spaces between the beads this one did not (O----O----O vs O-O-O-O). I couldn’t see that the spacing was causing an issue but I swapped it out anyway and…it completely solved the problem :grinning:.

Soma Connect

In order to integrate the device with Home Assistant, you also need a Soma Connect unit which acts as a bridge between the device (using Bluetooth) and the local network/internet. This unit is just a Raspberry Pi in a custom case and so, as an alternative, Soma provides an SD card image that you can flash onto your own Raspberry Pi (if you happen to have one spare). Credit to Soma for providing this as an option.

I do have a spare Pi or two but I wasn’t keen on running one just for Soma Connect so I flashed an SD card, reset the password for the Pi user (Edit: This is no longer required as Soma now publish the username and password) and went looking to see what I could find. Luckily I could see that the application needed was installed as a Debian package and so I could easily repackage it using sudo dpkg-repack soma-connect. I could then install that package on another Pi along with other applications (such as Home Assistant).

Note: Before starting the service there were a handful of lines I had to comment out in the service file:

[Unit]
Description=SOMA Connect
After=network.target
StartLimitBurst=3
StartLimitIntervalSec=60s

[Service]
#Environment=HCI_CHANNEL_USER=0
#ExecStartPre=-/bin/bash -e /lib/systemd/system/devrepoinit.sh
ExecStart=/home/pi/soma-connect/soma-connect
#ExecStopPost=/bin/sh -c "echo mmc0 > /sys/class/leds/led0/trigger"
#ExecStopPost=/bin/sh -c "echo 255 > /sys/class/leds/led0/brightness"
#ExecStopPost=/bin/sh -c "echo default-on > /sys/class/leds/led1/trigger"
#ExecStopPost=/bin/sh -c "echo 255 > /sys/class/leds/led1/brightness"
Restart=always
RestartSec=1s
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=soma-connect

[Install]
WantedBy=multi-user.target

Hopefully Soma can provide an official way of achieving this at some point.

Noise

In normal mode, it’s a little noisy but I have nothing similar to compare it with so I can imagine it’s pretty standard.

As mentioned above there is a “Quiet Morning Mode” and with the default settings, this is practically inaudible. Unfortunately, my blinds are big and heavy and therefore I have to up the RPM setting (which is handily an option). This does increase the noise but it’s not as loud as the normal mode.

Unfortunately, the HTTP API (and therefore the Home Assistant integration) doesn’t allow you to move the blind using the “Quiet Morning Mode” and so I need to rely on the devices own automation configuration for this. This works great and has trigger options for time, sunrise/sunset (with offset) or light level. It would be nicer to have this automation in Home Assistant though so hopefully Soma can add an RPM option on the HTTP API.

Verdict

All in all, I’m quite pleased with the purchase.

6 Likes

Hi @Dullage!
I just installed a soma smart shade 2 device as well to my blinds. On my RPi4 I have Mycroft running.
So to get these talking to each other I need that bloody Soma Connect thing, right? And Homa Assistant on another Pi. As I do not have spare Pis lying around, I really don’t wanna buy two more.

To be honest, I don’t really get what you did there but you can probably tell me whether I can install Soma Connect and Home Assistant on the same new Pi? (I guess having it all (Mycroft, HA, SC) running on the same Pi4 is too much…)

Best regards

Looping

Hi @Looping, to integrate the blind with other you will indeed need to get Soma Connect running.

A Raspberry Pi 4 can certainly handle multiple applications but this depend on what those applications are and how they are installed. For example, my Pi 4 (4GB) is running Home Assistant, Soma Connect, App Daemon, Zigbee2MQTT, Unifi Controller plus a few other things and has no problems.

All this said, the method I describe above isn’t for the faint hearted. Its completely undocumented and un-supported by Soma so I’d only recommend going down that route if you are fairly comfortable with Linux.

Alright, thanks for that insight into your pi!

I would say I am faint hearted but haven’t used Linux on my PC for about 10 years, since then always Windows. Just now with my pi I’m getting back into console stuff and try to figure out Python.

What do you think, how much work would it mean to you, to give a step by step instruction on how to get Soma Connect along with HA working on a Pi?
Cause I’m love to do it but have no idea how to start…and to continue as well haha

Best regards from Germany

Looping

Hi @Looping, here’s a rough set of steps I followed, this should get you started:

  1. Flash Soma Connect onto an SD card.
  2. Reset the password of the ‘pi’ user: useful link.
  3. Log in as the ‘pi’ user (SSH or HDMI/Keyboard).
  4. Package up soma-connect into a .deb file: sudo dpkg-repack soma-connect
  5. Copy that .deb file onto the Raspberry Pi you want to run Soma Connect. Something like WinSCP makes this easy.
  6. Install the soma-connect package: sudo dpkg --install soma-connect.deb
  7. Edit the service file: sudo nano /lib/systemd/system/soma-connect.service. Comment out the lines mentioned above.
  8. Reload the service daemon: sudo systemctl daemon-reload
  9. Restart/Start the soma-connect service: sudo systemctl restart soma-connect
1 Like

So in the case you describe something is already installed/ running one the pi, right? Like HA? So it’d be best to install that first then, right?

It’s worth clarifying that what I describe assumes you are running a Raspberry Pi with Raspbian OS and then installing the various applications onto that. Home Assistant, for example, has a number of installation methods, what I’m describing would work when using the Container, Supervised or Core methods but not the Hass.io method (now just known as Home Assistant) as this installation method flashes an entire OS onto an SD card.

In terms of order, it shouldn’t matter.

Great post. Too bad RPM is controllable in Home Assistant. Can you expand on what functionality IS exposed in Home Assistant? Thanks.

You can:

  • Open
  • Close
  • Toggle
  • Set Position
  • Stop (if opening or closing)

It is a shame about the RPM. I have a Home Assistant automation that closes the master bedroom blinds just before my daughter goes to sleep (in the adjacent room), this way the noise of full speed doesn’t wake her up when we want to close them later.

Unfortunately even the workaround above occasionally fails as every now and again Home Assistants call to Soma Connect times out and we find the blinds still open when we go to bed.

Great. Thanks for the reply. I’m considering this product. The noise shouldn’t be an issue for my application. I was hoping to make use of the light sensor from the solar panel, but it looks like it’s not exposed to HA. Two more questions if you don’t mind:

  • Does it accurately report back the position, whether open/close/percentage? I use node-red for automations, so to solve the timeout issue I could loop the open/close command getting the state of the position before each loop until the curtains are closed.

  • I notice that unlike the Zemismart blind motors, the Soma have no physical buttons to open/close/stop. Can the curtains still be operated manually?

It does indeed report back the position. Your idea of a position check loop is a good one and I may look to implement something like this.

I’ve also spotted that the python library used for the integration has a timeout of 5 seconds. If you take into account that the Pi has to check in with the device over Bluetooth before reporting back I’m thinking of extending this for cases where the BT connection takes a while.

As you say, there aren’t any buttons and unfortunately you can’t still operate the blind manually with the Soma connected. I’ve put a small Zigbee switch near mine to operate them without needing to open an app. This works ok but…Switch > Zigbee > Pi > Bluetooth > Soma is a bit of a round trip and takes a few seconds.

Ugh. I was afraid of this. It may be a deal breaker for me. Thanks.

Update: I’ve moved Soma Connect to a Raspberry Pi Zero W that’s in the same room as the blind and so far things seem a lot quicker and I’ve not had any timeout issues.

Previously it was on a Pi 3 on a different floor to the blinds. I think the weak connection may be to blame for some of the issues I was having.

It’s only been 24 hours so we’ll see.

I don’t visit this forum often so I missed most of this post but as one of the founders of SOMA I would like to chime in as well.

The reason we don’t offer the Connect firmware as a package or separate application is the way we use the Bluetooth right now. Despite what people always think the Connect is not based on HomeBridge. We use a Node.js library called Noble to talk directly to the BT controller in the Pi and doing that we make a lot of assumption on the state of that controller. To make things fast and reliable we keep all communication to a minimum so we don’t scan a device for services for example - we just assume the services are there and the handles always map the same way. We also assume there are no other BT/BLE connections active while we use the controller. The only way to make sure all that is true is to have the Connect on a separate piece of hardware. All that said I know a lot of people who have done what you guys did here. And it usually works out ok. But we just can’t afford to have to support all of this for thousands of people. At least not right now. We are a very small team of only 4 people and we still have to work on new features as well.

I do plan on working on the Connect API and the Home Assistant integration again very soon. Some things that are definitely coming are speed control and “morning mode”. We just submitted the new iOS app and the Android update should be coming today. And a new version of Connect as well (2.2.0 I think). So all this new functionality is coming very soon. On the hardware side we have updated the Tilt for Venetian blinds and also added features to better support plain cord blinds (slippage compensation).

If there is anything else you think I should add to the API just let me know. One thing that I kind of want to add is automatic discovery for the Connect but I don’t know if I’m good enough to do that just yet.

5 Likes

Thanks @ratsept.

That makes sense, I can certainly see how having full control over the OS makes things a lot simpler.

As it happens, when I switched to using the Raspberry Pi ZeroW I just flashed the Soma Connect image onto a memory card rather than installing the package. I certainly don’t mind a £10 ZeroW being taken up for this purpose.

Also worth noting that I’m now 2 weeks in with the Pi ZeroW setup and everything’s been pretty flawless.

Speed control with the API would really be a game changer so I’d be excited to see that if you get a chance to work on it.

Hi @Dullage

Thanks for this post.

How would you rate the Bluetooth communication to the blinds from your raspberry? I have struggled in the last with Bluetooth connections and they sometimes work and sometimes they don’t. This could be a deal breaker for me. And I cannot find anything like SOMA which is wireless in the market stleast in the UK.

Hi @bachoo786, I did initially have problems (intermittent drop-outs) but at the time, the Raspberry Pi and the Soma unit were opposites sides of the house and on different floors. As above, I’ve since put a Pi ZeroW (running the Soma Connect image) in the same room as the blinds and have had no issues since.

ah fair enough. I was reading on SOMA’s website and they mention that SOMA Connect works with unlimited SOMA Smart Shades and the maximum distance is 40m. I am contemplating of buying it but hoping it controls my blinds on the ground floor and the 3rd floor.

When we say unlimited that means we don’t do any artificial limiting in software. There is a practical limit but so far very few people have more than 20 shades and 20 seems to still work. Distance might be a bigger issue depending on what is between the Connect and the motor unit. Reinforced concrete is very good at absorbing 2400 MHz waves so that will reduce range a lot. We are actually looking into making more than one Connect per user possible. Right now more than one Connect can cause issues with some shades appearing more than once (if that is a problem for you don’t do that). With some work it is possible to use more than one even now - you would have to log into the Connect and create a configuration file with a whitelist of device MAC addresses for each Connect. That is how I have it setup at the office for testing.

We know Bluetooth has some issues but it also has the huge benefit of being able to connect directly to almost every phone and tablet in the world. And now BT5 contains mesh and long range specifications so I think they are also aware of these issues and are actively looking for ways to make things even better. We don’t currently support long range nor mesh but I should be getting prototype boards with a new much more capable SOC tomorrow. That will allow us to use all the new BT features as well as Zigbee and hopefully also directly integrate HomeKit without a hub. Unfortunately with our small team it will likely take a long time until we can actually start shipping devices with this new chipset.

2 Likes

Hi @ratsept

Thanks for your reply. Any rough idea when will the new devices with the zigbee chipset be shipped? Like I mentioned previously I am want to order the SOMA and would rather have with the zigbee chipset.