Experimenting with magic cube
This commit is contained in:
parent
cc8bcd4507
commit
2e4064b46d
57
appdaemon/apps/cube.py
Normal file
57
appdaemon/apps/cube.py
Normal file
@ -0,0 +1,57 @@
|
||||
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])
|
||||
|
||||
|
3
appdaemon/apps/cube.yaml
Normal file
3
appdaemon/apps/cube.yaml
Normal file
@ -0,0 +1,3 @@
|
||||
cube:
|
||||
module: cube
|
||||
class: Cube
|
@ -148,9 +148,11 @@ class LightEntity(Entity):
|
||||
class SwitchEntity(Entity):
|
||||
|
||||
def set_state(self, old, new):
|
||||
if new == True:
|
||||
if new == "on" or new == True:
|
||||
self._hass.call_service("switch/turn_on", entity_id = self.entity_id)
|
||||
self._state = "on"
|
||||
if new == False:
|
||||
if new == "off" or new == False:
|
||||
self._hass.call_service("switch/turn_off", entity_id = self.entity_id)
|
||||
self._state = "off"
|
||||
|
||||
def service_callback(self, data):
|
||||
|
Loading…
x
Reference in New Issue
Block a user