Skip to content
Snippets Groups Projects
Commit b20ca08e authored by jkerdreu's avatar jkerdreu
Browse files

RGB is working, but still not ready

git-svn-id: https://redmine.imt-atlantique.fr/svn/xaal/code/Python/branches/0.7@2931 b32b6428-25c9-4566-ad07-03861ab6144f
parent 9e45d71c
Branches
No related tags found
No related merge requests found
from . import gw
from xaal.lib import aiohelpers
helpers.run_async_package(gw.PACKAGE_NAME,gw.setup)
aiohelpers.run_async_package(gw.PACKAGE_NAME,gw.setup)
from xaal.lib import tools
from . import devices
from meross_iot.http_api import MerossHttpClient
from meross_iot.manager import MerossManager
from . import bindings
import logging
......@@ -15,7 +19,8 @@ class GW(object):
self.engine = engine
self.devices = []
self.config()
self.setup()
engine.on_start(self.setup)
engine.add_timer(self.refresh,60)
def config(self):
cfg = tools.load_cfg(PACKAGE_NAME)
......@@ -26,44 +31,48 @@ class GW(object):
cfg.write()
self.cfg = cfg
async def setup(self):
config = self.cfg.get('config',{})
login = config.get('login',None)
passwd = config.get('password',None)
if not login or not passwd:
logger.warning('No email or password in configuration file')
return
def setup_(self):
logger.info("Searching for bulbs")
bulbs = yeelight.discover_bulbs()
cfg = self.cfg['devices']
for k in bulbs:
tmp = cfg.get(k['ip'],None)
addr = None
if tmp:
addr = tools.get_uuid( tmp.get('addr',None) )
if not addr:
addr = tools.get_random_uuid()
cfg[k['ip']] = {'addr':str(addr)}
bulb = yeelight.Bulb(k['ip'],k['port'])
dev = devices.RGBW(bulb,cfg[k])
self.engine.add_device(dev.dev)
logger.info("Meross devices discovery")
self.client = await MerossHttpClient.async_from_user_password(email=login, password=passwd)
self.manager = MerossManager(http_client=self.client)
await self.manager.async_init()
await self.manager.async_device_discovery()
meross_devices = self.manager.find_devices()
def setup(self):
logger.info("Loading bulbs")
cfg = self.cfg['devices']
for k in cfg:
tmp = cfg.get(k,None)
addr = None
if tmp:
addr = tools.get_uuid( tmp.get('addr',None) )
if not addr:
for m_dev in meross_devices:
klass = bindings.find_class(m_dev)
addr = tools.get_random_uuid()
cfg[k['ip']] = {'addr':str(addr)}
bulb = yeelight.Bulb(k)
dev = devices.RGBW(bulb,cfg[k])
#addr = tools.get_uuid('ca61fd70-b0fd-11ec-8fe3-d6bd5fe18737')
dev = klass(m_dev,addr)
await dev.meross.async_update()
await dev.update()
self.devices.append(dev)
self.engine.add_device(dev.dev)
def refresh(self):
# cfg = self.cfg['devices']
# for k in cfg:
# tmp = cfg.get(k,None)
# addr = None
# if tmp:
# addr = tools.get_uuid( tmp.get('addr',None) )
# if not addr:
# addr = tools.get_random_uuid()
# cfg[k['ip']] = {'addr':str(addr)}
# bulb = yeelight.Bulb(k)
# dev = devices.RGBW(bulb,cfg[k])
# self.devices.append(dev)
# self.engine.add_device(dev.dev)
async def refresh(self):
for d in self.devices:
d.get_properties()
d.set_xaal()
await d.update()
def _exit(self):
cfg = tools.load_cfg(PACKAGE_NAME)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment