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

Added powermeter, should be fine right now. Covering 90% issues

git-svn-id: https://redmine.imt-atlantique.fr/svn/xaal/code/Python/branches/0.7@2474 b32b6428-25c9-4566-ad07-03861ab6144f
parent 8294e599
No related branches found
No related tags found
No related merge requests found
......@@ -125,8 +125,6 @@ class TuyaDev:
if len(self.devices) > 1:
dev.group_id = self.base_addr + 0xff
def setup(self):
logger.warning('Please override setup()')
......@@ -160,7 +158,7 @@ class TuyaDev:
class PowerRelay(TuyaDev):
def setup(self):
dps = self.cfg.get('dps',['1'])
addr = self.base_addr
addr = self.base_addr+1
self.dps_to_dev = {}
for k in dps:
dev = devices.powerrelay_toggle(addr)
......@@ -195,12 +193,40 @@ class PowerRelay(TuyaDev):
class SmartPlug(PowerRelay):
# I tried to schedule a update after on/off change
# but this doesn't work cause tuya power compute is
# really slow. more than 10 so, not really usefull
def setup(self):
self.pmeter_dps = self.cfg.get('pmeter_dps',['4','5','6'])
pmeter = devices.powermeter(self.base_addr)
pmeter.new_attribute('voltage')
pmeter.new_attribute('current')
pmeter.del_attribute(pmeter.get_attribute('energy'))
pmeter.unsupported_attributes = ['energy']
self.devices.append(pmeter)
PowerRelay.setup(self)
# related power relays
pmeter.attributes['devices'] = [k.address for k in self.devices[1:]]
def on_status(self,data):
PowerRelay.on_status(self,data)
pmeter_attr = self.devices[0].attributes
current = get_dps(data,self.pmeter_dps[0])
if current!=None:
pmeter_attr['current'] = int(current) / 1000
power = get_dps(data,self.pmeter_dps[1])
if power!=None:
pmeter_attr['power'] = int(power) / 10
voltage = get_dps(data,self.pmeter_dps[2])
if voltage!=None:
pmeter_attr['voltage'] = int(voltage) / 10
class RGBLamp(TuyaDev):
def setup(self):
dev = devices.lamp_color(self.base_addr)
dev = devices.lamp_color(self.base_addr+1)
dev.methods['turn_on'] = self.turn_on
dev.methods['turn_off'] = self.turn_off
dev.methods['set_color_temperature'] = self.set_color_temperature
......@@ -210,25 +236,26 @@ class RGBLamp(TuyaDev):
self.devices.append(dev)
def on_status(self,data):
attrs = self.devices[0].attributes
# state
result = get_dps(data,1)
if result!=None:
self.devices[0].attributes['light'] = result
attrs['light'] = result
# color / white
result = get_dps(data,2)
if result == 'colour':
self.devices[0].attributes['mode'] = 'color'
attrs['mode'] = 'color'
if result == 'white':
self.devices[0].attributes['mode'] = 'white'
attrs['mode'] = 'white'
# brightness
result = get_dps(data,3)
if result:
value = int(result) * 100 / 255
self.devices[0].attributes['brightness'] = int(value)
attrs['brightness'] = int(value)
# color_temperature
result = get_dps(data,4)
if result:
self.devices[0].attributes['color_temperature'] = result
attrs['color_temperature'] = result
@spawn
def set_color_temperature(self,_color_temperature):
......
......@@ -26,7 +26,7 @@ class GW:
atexit.register(self._exit)
self.config()
self.setup()
engine.add_timer(self.update,10)
engine.add_timer(self.update,5)
def config(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