Connect Soma Smart Shades From Web With Raspberry Pi

by Mark560 in Circuits > Raspberry Pi

5473 Views, 11 Favorites, 0 Comments

Connect Soma Smart Shades From Web With Raspberry Pi

SOMA_logo_1_SOMA logo_white.jpg

Simple step by step guide to controlling Soma Smart Shades (http://www.somasmarthome.com) with simple web server that runs on port 8080. Makes possible to control Smart Shades from a web url.

Will need:

1x Smart Shade (you can buy them from http://www.somasmarthome.com)

1x Raspberry Pi 3 (integrated Bluetooth)

Mount Your Smart Shade

rise front panel final hq4.jpg

Install and setup your Smart Shade. Steps for doing this can be found here - https://youtu.be/9DTAcZiiFYU

Be aware that there is no physical button like on the video. There is just touch sensitive lid.

Setup Your Raspberry Pi & Install Homebridge

FVTP471IRT75PW2.LARGE.jpg

Follow this step by step guide to installing your Raspberry Pi and also installing the HomeBridge service if you want to connect it with your IOS device.

https://github.com/nfarina/homebridge/wiki/Running-HomeBridge-on-a-Raspberry-Pi

Install the Smart Shades Python Script

FLV4TIZIRU3FMA6.LARGE.jpg

1. Download the python script file from this website - https://bitbucket.org/jeremynoel476/smartblinds-diy

2. Extract the file from the downloaded zip file and place it in your /home/pi directory (I changed the name of the file and just called it "control.py" to make things easier)

3. Enable your Bluetooth adaptor - sudo hciconfig hci0 up

4. Now scan for your Smart Shades which are normally named RISExxx using this command - sudo hcitool lescan

5. Make note of the Smart Shade MAC address

Install the Script and Enjoy.

1. Download the script and name it websmartshades.py.

#!/usr/bin/env python
import web
import subprocess<br>
urls = (
    '/getbattery/(.*)', 'get_battery',
    '/getposition/(.*)', 'get_position',
    '/moveup/(.*)', 'move_up',
    '/movedown/(.*)', 'move_down',
    '/setposition/(.*)/(.*)', 'set_position'
)<br>
app = web.application(urls, globals())<br>
class get_battery:
    def GET(self, mac):
        output = subprocess.check_output(['/usr/bin/python','./control.py', '-t', mac, '-c', 'get_battery'])
        return output<br>
class get_position:
    def GET(self, mac):
        output = subprocess.check_output(['/usr/bin/python','./control.py', '-t', mac, '-c', 'get_position'])
        return output<br>
class move_down:
    def GET(self, mac):
        output = subprocess.check_output(['/usr/bin/python','./control.py', '-t', mac, '-c', 'move_down'])
        return "OK"<br>
class move_up:
    def GET(self, mac):
        output = subprocess.check_output(['/usr/bin/python','./control.py', '-t', mac, '-c', 'move_up'])
        return "OK"<br>
class set_position:
    def GET(self, mac, position):
        output = subprocess.check_output(['/usr/bin/python','./control.py', '-t', mac, '-c', 'move_target', '-a', position])
        return "OK"<br>
if __name__ == "__main__":
    app.run()<br>

2. Add it to your smartblinds-diy folder (control.py should be located in the same folder).

3. Install web.py framework for python - “sudo pip install web.py”

4. Run the script "python websmartshades.py"

5. How to use:

rpi_ip_address:8080/getbattery/MAC_ADDRESS_OF_BLIND rpi_ip_address:8080/getposition/MAC_ADDRESS_OF_BLIND rpi_ip_address:8080/moveup/MAC_ADDRESS_OF_BLIND rpi_ip_address:8080/movedown/MAC_ADDRESS_OF_BLIND rpi_ip_address:8080/setposition/MAC_ADDRESS_OF_BLIND/POSITION

This is all. Now you will be able to control the shades directly from the web. At least it worked on my case.