58 lines
2.0 KiB
Python

from entities import Entities
class Cube(Entities):
def initialize(self):
super().initialize()
self.lights = ['light.taklampa_kontoret', 'switch.varme_mhr', 'switch.varme_mhr_2']
self.register_entity('upside', 'sensor.cube_up', True, 0, {})
self.register_entity('angle', 'sensor.cube_rotaton', True, 0, {})
self.listen_event(self.event, 'deconz_event')
def event(self, ev, data, kwargs):
self.log(ev)
self.log(data)
if data.get('id', None) == 'mi_magic_cube':
side = data.get('event', 0) // 1000
action = data.get('event', 0) % 10
if side < 7 and action == 0: # Push
self.log("Push")
color = ['red', 'blue', 'green', 'yellow', 'purple', 'white']
self.call_service("light/turn_on", entity_id = self.lights[0], color_name = color[side-1])
elif side == 7 and action == 7: # Shake
self.log("Shake")
pass
elif side == 7 and action == 8: # Drop
self.log("Drop")
pass
elif action == side: # Double tap
self.log("Double tap")
if side == 1:
self.toggle(side)
if 0 < side < 7:
self.e['upside'].state = side
self.e['upside'].push()
if data.get('id', None) == 'switch_55':
angle = data.get('event', 0) / 100
oldangle = float(self.e['angle'].state)
newangle = oldangle + angle
newangle = newangle if newangle < 360 else 360
newangle = newangle if newangle > 0 else 0
self.e['angle'].state = f"{newangle:.2f}"
self.e['angle'].push()
self.call_service("light/turn_on", entity_id = self.lights[0], brightness_pct = newangle/3.6)
def toggle(self, light):
self.log("Toggling light")
self.call_service("homeassistant/toggle", entity_id = self.lights[light-1])