Skip to main content

Python library for interfacing with Motion Blinds

Project description

motion-blinds

Python library for interfacing with Motion Blinds

This library allows you to control Motion Blinds from Coulisse B.V. This library is primarly writen to be used with HomeAssistant but can also be used stand alone.

For products see https://motion-blinds.com or https://coulisse.com/products/motion.

Shops that sell these blinds:

Installation

Use pip:

$ pip install motionblinds

or

$ pip install --use-wheel motionblinds

Retrieving Key

The Motion Blinds API uses a 16 character key that can be retrieved from the official "Motion Blinds" app for Ios or Android. Open the app, click the 3 dots in the top right corner, go to "settings", go to "Motion APP About", Please quickly tap this ‘Motion APP About’ page 5 times, a popup will apear that gives you the key.

alt text alt text

Please note that "-" characters need to be included in the key when providing it to this library. The key needs to be simular to "12ab345c-d67e-8f"

Usage

For creation of a device you could use the following lines of codes (using a correct IP of the gateway and Key retrieved from the App)

from motionblinds import MotionGateway
m = MotionGateway(ip = "192.168.1.100", key = "12ab345c-d67e-8f")

This library is not polling. Thus you need to populate the connected blinds using the GetDeviceList method and update device information using the Update method.

m.GetDeviceList()
m.Update()

Note that GetDeviceList needs to be run before using Update since the device_type, mac and token are retrieved using the GetDeviceList method. Once the connected blinds are discoverd using the GetDeviceList method, they can be listed by the device_list property:

m.device_list

This will return a dict with as key the mac_adress of the blind and as value a MotionBlind device that can be used to retreive information of that blind and control that blind.

Some example code that will print the information of the gateway and all conected blinds:

>>> from motionblinds import MotionGateway
>>> m = MotionGateway(ip = "192.168.1.100", key = "12ab345c-d67e-8f")
>>> m.GetDeviceList()
{'abcdefghujkl0001': <MotionBlind mac: abcdefghujkl0001, type: None, status: None, position: None %, angle: None, limit: None, battery: None, RSSI: None dBm>}
>>> m.Update()
>>> print(m)
<MotionGateway ip: 192.168.1.100, mac: abcdefghujkl, protecol: 0.9, N_devices: 1, status: Working, RSSI: -71 dBm>
>>> for blind in m.device_list.values():
>>>     blind.Update()
>>>     print(blind)
<MotionBlind mac: abcdefghujkl0001, type: RollerBlind, status: Stopped, position: 0 %, angle: 0, limit: Limits, battery: 1195, RSSI: -82 dBm>

To open a blind the following example code can be used:

>>> from motionblinds import MotionGateway
>>> m = MotionGateway(ip = "192.168.1.100", key = "12ab345c-d67e-8f")
>>> m.GetDeviceList()
>>> m.Update()
>>> blind_1 = list(m.device_list.values())[0]
>>> blind_1.Update()
>>> blind_1.Open()

Instead of blind_1.Open() you can also use blind_1.Close(), blind_1.Stop(), blind_1.Set_position(50) or blind_1.Set_angle(90)

Gateway device

A gateway device (that was asigned to variable 'm') has the following methods and properties:

method arguments argument type explanation
"m.GetDeviceList()" - - Get the device list from the Motion Gateway and update the properties listed below
"m.Update()" - - Get the status of the Motion Gateway and update the properties listed below
property value type explanation
"m.status" string Return gateway status: from GatewayStatus enum
"m.N_devices" int Return the number of connected child devices
"m.RSSI" int Return the Wi-Fi connection strength of the gateway in dBm
"m.token" string Return the Token
"m.access_token" string Return the AccessToken
"m.mac" string Return the mac address of the gateway
"m.device_type" string Return the device type of the gateway
"m.protecol" string Return the protecol version of the gateway
"m.device_list" dict Return a dict containing all blinds connected to the gateway, The keys in the dict are the mac adresses of the blinds.

Blind device

A blind device (that was asigned to variable 'blind_1') has the following methods and properties:

method arguments argument type explanation
"blind_1.Update()" - - Get the status of the blind from the Motion Gateway
"blind_1.Stop()" - - Stop the motion of the blind
"blind_1.Open()" - - Open the blind/move the blind up
"blind_1.Close()" - - Close the blind/move the blind down
"blind_1.Set_position(50)" postion int (0-100) Set the position of the blind
"blind_1.Set_angle(90)" angle int (0-180) Set the angle/rotation of the blind
property value type explanation
"blind_1.device_type" string Return the device type which is a 8 character number
"blind_1.blind_type" string Return the type of the blind from BlindType enum
"blind_1.type" enum Return the type of the blind as a BlindType enum
"blind_1.mac" string Return the mac address of the blind
"blind_1.status" string Return the current status of the blind from BlindStatus enum
"blind_1.limit_status" string Return the current status of the limit detection of the blind from LimitStatus enum
"blind_1.position" int Return the current position of the blind in % (0-100)
"blind_1.angle" int Return the current angle of the blind 0-180
"blind_1.battery_voltage" double Return the current battery voltage of the blind in V
"blind_1.battery_level" double Return the current battery level of the blind in %
"blind_1.RSSI" int Return the radio connection strength of the blind to the gateway in dBm

Top Down Bottom Up (TDBU) device

A TDBU blind device has two motors designated by "T" = Top and "B" = Bottom to control the two parts of the blind. The TDBU device (that was asigned to variable 'blind_1') has the following methods and properties:

method arguments argument type explanation
"blind_1.Update()" - - Get the status of the blind from the Motion Gateway
"blind_1.Stop(motor = 'B')" motor 'B' or 'T' Stop the motion of Bottom or Top motor of the blind
"blind_1.Open(motor = 'B')" motor 'B' or 'T' Move the Bottom or Top motor of the blind up
"blind_1.Close(motor = 'B')" motor 'B' or 'T' Move the Bottom or Top motor of the blind down
"blind_1.Set_position(50, motor = 'B')" postion, motor int (0-100), 'B' or 'T' Set the position of the Bottom or Top motor of the blind
"blind_1.Set_angle(90, motor = 'B')" angle, motor int (0-180), 'B' or 'T' Set the angle/rotation of the Bottom or Top motor of the blind
property value type explanation
"blind_1.device_type" string Return the device type which is a 8 character number
"blind_1.blind_type" string Return the type of the blind from BlindType enum
"blind_1.type" enum Return the type of the blind as a BlindType enum
"blind_1.mac" string Return the mac address of the blind
"blind_1.status" {"T": string, "B": string} Return the current status of the blind from BlindStatus enum
"blind_1.limit_status" {"T": string, "B": string} Return the current status of the limit detection of the blind from LimitStatus enum
"blind_1.position" {"T": int, "B": int} Return the current position of the blind in % (0-100)
"blind_1.angle" {"T": int, "B": int} Return the current angle of the blind 0-180
"blind_1.battery_voltage" {"T": double, "B": double} Return the current battery voltage of the blind in V
"blind_1.battery_level" {"T": double, "B": double} Return the current battery level of the blind in %
"blind_1.RSSI" int Return the radio connection strength of the blind to the gateway in dBm

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

motionblinds-0.1.0.tar.gz (10.7 kB view details)

Uploaded Source

Built Distribution

motionblinds-0.1.0-py3-none-any.whl (9.3 kB view details)

Uploaded Python 3

File details

Details for the file motionblinds-0.1.0.tar.gz.

File metadata

  • Download URL: motionblinds-0.1.0.tar.gz
  • Upload date:
  • Size: 10.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.3

File hashes

Hashes for motionblinds-0.1.0.tar.gz
Algorithm Hash digest
SHA256 b704756370c64ddf76b6f3b85bc77e0952f5ee3ae67ce1e6fbbd9dccd98cc175
MD5 0ccb4cf6bd1f4e9598c9ab9d151f29a2
BLAKE2b-256 ac2816b3dc87665dbdb8d061b7f5eb731006af103c1d140d330472ec1945f2fc

See more details on using hashes here.

File details

Details for the file motionblinds-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: motionblinds-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 9.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.3

File hashes

Hashes for motionblinds-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 bf845cff9dda68a90e2ff7146e4fd4e48065455b78fa739cdf0c6e1b192fee76
MD5 4cef992c9a49b33161d3d4b3c01d89ba
BLAKE2b-256 849735325d6b8b0377df1588f5d3fe7b1a6c5b31e1c2513fd8fa8bfc7c7ab995

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page