def recallScene(sceneName): briOnly = __addon__.getSetting("brightnessonly" + sceneName) == "true" state = hueAddonSettings.data["scene" + sceneName] logDebug("recall preset" + sceneName + ": " + str(state)) bridge = hue.Bridge(ip=hueAddonSettings.data["bridgeip"], id=hueAddonSettings.data["bridgeid"],username=hueAddonSettings.data.get("bridgeusername", None)) bridge.setFullStateLights(state, xbmccommon.getConfiguredLampsList(), briOnly)
def _setState(self, state, briOnly=False): __addon__ = xbmcaddon.Addon(id=self.addonId) hueAddonSettings = xbmccommon.HueControlSettings() bridge = hue.Bridge(ip=hueAddonSettings.data["bridgeip"], id=hueAddonSettings.data["bridgeid"], username=hueAddonSettings.data.get("bridgeusername", None)) lamps = xbmccommon.getConfiguredLampsList() bridge.setFullStateLights(state, lamps, briOnly)
def hue_show(): h = hue.Bridge() h.setLight(2, bri=50, transitiontime=1) time.sleep(1) h.setLight(2, bri=254, transitiontime=1) time.sleep(1) h.setLight(2, bri=50, transitiontime=1) time.sleep(1) h.setLight(2, bri=254, transitiontime=1)
def __init__(self): with open('{}/settings.yml'.format(sys.path[0]), 'r') as ymlfile: settings = yaml.load(ymlfile) logging.debug(settings) self.bridge = hue.Bridge(settings['hue']['ip'], settings['hue']['username']) self.group = settings['hue']['light']
def hue_show(): delay_sec = 0.2 h = hue.Bridge() h.setLight(2, bri=50, transitiontime=delay_sec) time.sleep(delay_sec) h.setLight(2, bri=254, transitiontime=delay_sec) time.sleep(delay_sec) h.setLight(2, bri=50, transitiontime=delay_sec) time.sleep(delay_sec) h.setLight(2, bri=254, transitiontime=delay_sec)
def onPlayBackStarted(self): __addon__ = xbmcaddon.Addon(id=self.addonId) logDebug("--> onPlayBackStarted {0}, {1}".format(xbmc.Player().getTotalTime(), __addon__.getSetting("minvideolength"))) if xbmc.Player().isPlayingVideo() and (xbmc.Player().getTotalTime() >= (float(__addon__.getSetting("minvideolength")) * 60) or xbmc.Player().getTotalTime() == 0): if (self.CONTROLLING_LAMPS == 0): hueAddonSettings = xbmccommon.HueControlSettings() bridge = hue.Bridge(ip=hueAddonSettings.data["bridgeip"], id=hueAddonSettings.data["bridgeid"], username=hueAddonSettings.data.get("bridgeusername", None)) self.savedlampstate = bridge.getFullState() self.CONTROLLING_LAMPS = 1 self._setScene("scenePlaying")
def start(sta): relay = machine.Pin(5, machine.Pin.OUT) relay.value(1) # Relay is active-low led = machine.Pin(2, machine.Pin.OUT) led.value(0) # LED is active-low while not sta.isconnected(): sleep_ms(500) sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) sock.bind((sta.ifconfig()[0], 4444)) sock.settimeout(1.8) print("listening on " + sta.ifconfig()[0]) print("Find HUE") hue_br = hue.Bridge() is_on = False led.value(1) while True: last_time = ticks_ms() try: line, addr = sock.recvfrom(1024) time = ticks_ms() except OSError: if is_on: led.value(0) relay.value(1) hue_br.setGroup(1, on=False) is_on = False led.value(1) sleep_ms(100) continue led.value(0) print(ticks_diff(time, last_time)) last_time = time if b'hb' in line: if not is_on: relay.value(0) hue_br.setGroup(1, on=True) is_on = True elif b'off' in line: print(line) relay.value(1) hue_br.setGroup(1, on=False) is_on = False sock.sendto("off", addr) else: print(line) led.value(1)
import usocket as socket import hue addr = socket.getaddrinfo('0.0.0.0', 1234)[0][-1] s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind((addr)) s.listen(1) h = hue.Bridge() while True: clientsocket, address = s.accept() print("client connected!") clientsocket.send(bytes("welcome to server", "utf-8=")) h.setGroup(1, on=False) h.setGroup(2, on=False)
secret_file = 'config.secret' try: # try to read API key from file with open(secret_file, 'r') as f: hue_api_key = f.read() except IOError: # register with Hue bridge if no API key is present hue_api_key = hue.Bridge.register(config['Hue']['Host']) if hue_api_key is None: sys.exit(1) with open(secret_file, 'w') as f: f.write(hue_api_key) # connect to bridge bridge = hue.Bridge(config['Hue']['Host'], hue_api_key) # set up MQTT mqtt_prefix = config['MQTT']['Prefix'] def on_connect(client, userdata, flags, rc): mqtt_logger.info('Connected!') def on_disconnect(client, userdata, rc): mqtt_logger.info('Disconnected!') sys.exit(1) def on_publish(client, userdata, mid):
progress.close(); if (not bridge.isAuthorized()): xbmccommon.notify(__language__(30016), duration=5000) else: hueAddonSettings.data["bridgeusername"] = bridge.username # For safety remove any old (fixed) usernames bridge.DELETE("/config/whitelist/{0}".format(huecontrol.OLD_BRIDGEUSER)) xbmccommon.notify(__language__(30017), duration=5000) hueAddonSettings.store() elif (parameters['action'] == "savescene"): bridge = hue.Bridge(ip=hueAddonSettings.data["bridgeip"], id=hueAddonSettings.data["bridgeid"], username=hueAddonSettings.data.get("bridgeusername", None)) state = bridge.getFullState() id = parameters['id'] logDebug("save scene" + id + ": " + str(state)) __addon__.setSetting("scene" + id, "") # I used to store the complete state here, write an empty string now, to "unbloat" the settings.xml hueAddonSettings.data["scene" + id] = state if hueAddonSettings.store(): presetname = __addon__.getSetting("namescene" + id) if presetname == "": presetname = id xbmccommon.notify(__language__(30034).format(presetname)) elif (parameters['action'] == "recallscene"):
key.action() if __name__ == '__main__': import keybow import keyboard import shutdown import hue import time import config import state import helpers conf = config.Env(['HUE_TOKEN', 'ROOM_NAME']) room = hue.Room(conf.env['ROOM_NAME'], hue.Bridge(conf.env['HUE_TOKEN'], DISCOVERY_URL)) state_engine = state.Engine() helpers.generate_keyboards(room, keyboard, state_engine) app = App(hue, state_engine, keybow) @keybow.on() def handle_key(index, state): if state: keybow.set_led(index, 0, 0, 255) app.execute_action(index) else: app.update_leds()