Python package to control Awox mesh light bulbs.
API inspired by Matthew Garrett's python light bulb interfaces.
I have only one light bulb and so didn't really test the mesh features, and my light bulb was never associated with the official app.
Only tested with the ESMLm_c9 model, firmware version 1.2.4
Requires :
- A recent version of Python 2 or 3 (tested with 3.6 and 2.7)
- bluepy
- pycryptodome
From the directory containing setup.py
: pip install .
or
pip install --user .
to install in the user's Python directory.
From reports, it may not be possible to use the Awox app at the same time as this.
The setMesh
function may hang, but the light blinks when accepting the settings.
import awoxmeshlight
mylight = awoxmeshlight.AwoxMeshLight ("A4:C1:38:78:11:33")
mylight.connect() # Unless specified, the default name and password are used
mylight.setMesh("new_mesh_name", "new_mesh_password","new_mesh_key")
mylight.disconnect()
Contributed by Pixtxa.
Reset the light (hold PowerOn + Fav. 1) and the remote (hold PowerOn + ColorCycle) and connect the remote to the light again (hold PowerOn). Now hold PowerOn and the blue button for a few seconds, so the remote switches to Bluetooth-mode. Use BT-app (nRF-Connect or so) to get the mac and name (both will have the same name, its "R-" followed by the last 6 digits of the remotes mac-address). Password will be "1234".
For the remote:
import awoxmeshlight
myremote = awoxmeshlight.AwoxMeshLight ("A4:C1:38:75:24:93", "R-752593", "1234") #change to your remotes data
myremote.connect()
myremote.setMesh("PixtxaLightNet", "IeY3johvoosh","4556572782865925") #better change all of them
myremote.disconnect()
[After setMesh(...) the program didn't work, but the data was set, so i killed the task]
For the light:
import awoxmeshlight
mylight = awoxmeshlight.AwoxMeshLight ("A4:C1:38:78:62:74", "R-752593", "1234") #change to your lights data
mylight.connect()
mylight.setMesh("PixtxaLightNet", "IeY3johvoosh","4556572782865925") #same as on the remote
mylight.disconnect()
[After setMesh(...) the program didn't work, but the data was set, so i killed the task]
Now you can run a simple test script:
import awoxmeshlight
import time
mylight = awoxmeshlight.AwoxMeshLight ("A4:C1:38:78:62:74", "PixtxaLightNet", "IeY3johvoosh")
mylight.connect()
mylight.setColor(0x00, 0xFF, 0x00) #green
mylight.setColorBrightness(0x01) #dark
time.sleep(1)
mylight.setColorBrightness(0x64) #bright
time.sleep(1)
mylight.setPreset(0) #colorchange
mylight.setSequenceFadeDuration(500)
mylight.setSequenceColorDuration(500)
time.sleep(15)
mylight.setWhite(0x00, 0x7F) #coldwhite
time.sleep(1)
mylight.setWhite(0x73, 0x63) #warmwhite
time.sleep(1)
mylight.off()
time.sleep(1)
mylight.on()
mylight.disconnect()
Functions don't print anything, instead the logging
module is used.
Example using the logger to print everything to stderr :
import awoxmeshlight
import logging
logger = logging.getLogger("awoxmeshlight")
logger.setLevel(logging.DEBUG)
handler = logging.StreamHandler ()
handler.setLevel(logging.DEBUG)
logger.addHandler (handler)
mylight = awoxmeshlight.AwoxMeshLight ("A4:C1:38:97:11:33", "mesh_name", "mesh_password")
mylight.connect ()
mylight.setColor (0x50, 0x76, 0x00 )
mylight.disconnect()
Turn on and off in the following sequence :
- 3 times :
- On during 1 sec
- Off during 6 sec
- On 10 sec
- Off 10 sec
- On 10 sec
- Off 6 sec
- On -> Light will blink and turn red