示例#1
0
'''
Copyright 2015 (c) Eli Levin

pulse.py - makes a color "pulse" by looping brightness and saturation
'''

from phue import Bridge
import time
import math

b = Bridge('192.168.1.9') # Enter bridge IP here.


b.create_group('myLights', [1,2,3])

lights = b.lights # get a list of all lights

def set_hue(hueVal):
	#set hue for a group of lights
	b.set_group(1,'hue',hueVal)

def set_bri(briVal):
	#set brightness for a group of lights
	b.set_group(1,'bri',briVal)

def set_sat(satVal):
	#set saturation for a group of lights
	b.set_group(1,'sat',satVal)

def set_timing(transVal):
	#set transition time for a group of lights
示例#2
0
from phue import Bridge
import sys
import spotipy
import spotipy.util as util
import time
from datetime import datetime
from datetime import timedelta

def bright(loud):
    return 244.94 * (1.0199 ** loud)

b = Bridge('')
b.connect()
hue = 1
b.create_group('room',[1,2,3,4,5])
#b.set_light(2,'on',True)
b.set_group(1,'on',True)

uri='spotify:track:6CDzDgIUqeDY5g8ujExx2f'
token = util.prompt_for_user_token(username='', scope = 'user-modify-playback-state', client_id="", 
        client_secret="", redirect_uri="http://localhost:8080")
if token:
    sp = spotipy.Spotify(auth=token)
    results = uri
    if results != None:
        #analysis = sp.audio_analysis(results["item"]["uri"])
        analysis = sp.audio_analysis(results)
        iterator = iter(analysis['segments'])
        brightness=32
        val = analysis['segments'][0]
        time_taken = 0
   radius = 6371 #6371 radius of earth in kilometers, 3956 for miles
   distance = radius  outer
   #direction
   left = sin(longi)  cos(lat2)
   right = (cos(lat1)  sin(lat2)) - (sin(lat1)  cos(lat2)  cos(longi))
   direction = atan2(left, right)
   direction = degrees(direction)
   direction = (direction + 360) % 360
   card = cardinalDirection(direction)
   print(Distance %.2f KilometersnBearing %.2f° (%s) % (distance, direction, card))

# Main
def main()
   device = XBeeDevice(PORT, BAUD_RATE)
   b.connect()
   b.create_group('RGB', [1,2,3])
   b.set_group(1, green)
   currentTime = time.time()
   targetTime = time.time()

   try
       device.open()
       while(True)
           #light reset
           if targetTime  time.time()
               b.set_group(1, green)
              
           # Receive Data and Parse
           def data_receive_callback(xbee_message)
               address = xbee_message.remote_device.get_64bit_addr()
               message = xbee_message.data.decode()
示例#4
0
文件: main.py 项目: Gageco/WiiHue
        if txt =='END':
            dict['end'] = linenum
    except SyntaxError:
        pass
    linenum += 1
eval_line_txt = dict['start']

room_num = 0
while eval_line_txt != dict['end'] - 1:
    eval_line_txt += 1
    evaled_lines = eval(lines[eval_line_txt])
    room_num += 1
    room_num_txt = 'room' + str(room_num)
    dict[room_num_txt] = evaled_lines[1]

b.create_group('room1', dict['room1'])
b.create_group('room2', dict['room2'])
#END DEFINING ROOMS

def check_bat(wm):
    #ensure battery is not to low
    battery_stat = wm.state['battery']
    if battery_stat <= 10:
        print 'remote disconnected due to low battery'
        wm.close()
        dict['timer'] = 0
        dict['repeat_cycle'] = False

def rumble(wm):
    #make wiimote rumble
    wm.rumble = True
示例#5
0
class HuePlay(object):

    DEFAULT_GROUP = 'Gaming'
    GROUP_LIGHTS = [
        u'RP Lamp 1',
        u'RP Lamp 2',
    ]
    ATTRIBUTES = ['on', 'xy', 'saturation', 'brightness', 'transitiontime']

    def __init__(self, address):
        self.bridge = Bridge(address)
        self.bridge.connect()
        self.scenes = {}

    def initializeGroups(self, group=DEFAULT_GROUP, lights=GROUP_LIGHTS):
        if self.bridge.get_group(self.DEFAULT_GROUP) is not None:
            self.bridge.delete_group(self.DEFAULT_GROUP)
        self.bridge.create_group(self.DEFAULT_GROUP, self.GROUP_LIGHTS)

    def setScene(self, name):
        if name in self.scenes.keys():
            light_names = self.bridge.get_light_objects('name')
            for light in self.GROUP_LIGHTS:
                light_names[light].on = True
                light_names[light].xy = self.scenes[name].xy
                light_names[light].saturation = self.scenes[name].saturation
                light_names[light].brightness = self.scenes[name].brightness
                self.last_scene = name

    def loadScenes(self, scenefile='scenes/scenes.yaml'):
        with open(scenefile) as f:
            scene_yaml = yaml.load(f)
        for s in scene_yaml["scenes"].keys():
            temp = scene_yaml["scenes"][s]
            scene = HueScene(name=s)
            scene.xy = temp["colors"]
            scene.saturation = temp["saturation"]
            scene.brightness = temp["brightness"]
            self.scenes[s] = scene

    def setCurrent(self, attribute, value, transition=None):
        if attribute in self.ATTRIBUTES:
            light_names = self.bridge.get_light_objects('name')
            for light in self.GROUP_LIGHTS:
                tt = light_names[light].transitiontime
                light_names[light].transitiontime = 1
                setattr(light_names[light], attribute, value)
                light_names[light].transitiontime = tt

    def setBrightness(self, value):
        light_names = self.bridge.get_light_objects('name')
        for light in self.GROUP_LIGHTS:
            tt = light_names[light].transitiontime
            light_names[light].transitiontime = 1
            light_names[light].brightness = value
            light_names[light].transitiontime = tt

    def setXValue(self, value, maximum=127):
        light_names = self.bridge.get_light_objects('name')
        for light in self.GROUP_LIGHTS:
            xvalue = float(value) / maximum
            yvalue = light_names[light].xy[1]
            light_names[light].xy = (xvalue, yvalue)

    def setYValue(self, value, maximum=127):
        light_names = self.bridge.get_light_objects('name')
        for light in self.GROUP_LIGHTS:
            yvalue = float(value) / maximum
            xvalue = light_names[light].xy[1]
            light_names[light].xy = (xvalue, yvalue)

    def toggleLight(self):
        light_names = self.bridge.get_light_objects('name')
        for light in self.GROUP_LIGHTS:
            tt = light_names[light].transitiontime
            light_names[light].transitiontime = 4
            light_names[light].on ^= True
            light_names[light].transitiontime = tt
        return light_names[light].on
示例#6
0
class HuePlay(object):

    DEFAULT_GROUP = 'Gaming'
    GROUP_LIGHTS = [
        u'RP Lamp 1',
        u'RP Lamp 2',
    ]
    ATTRIBUTES = [ 'on', 'xy', 'saturation', 'brightness', 'transitiontime' ]

    def __init__(self, address):
        self.bridge = Bridge(address)
        self.bridge.connect()
        self.scenes = {}

    def initializeGroups(self, group=DEFAULT_GROUP, lights=GROUP_LIGHTS):
        if self.bridge.get_group(self.DEFAULT_GROUP) is not None:
            self.bridge.delete_group(self.DEFAULT_GROUP)
        self.bridge.create_group(self.DEFAULT_GROUP, self.GROUP_LIGHTS)

    def setScene(self, name):
        if name in self.scenes.keys():
            light_names = self.bridge.get_light_objects('name')
            for light in self.GROUP_LIGHTS:
                light_names[light].on = True
                light_names[light].xy = self.scenes[name].xy
                light_names[light].saturation = self.scenes[name].saturation
                light_names[light].brightness = self.scenes[name].brightness
                self.last_scene = name

    def loadScenes(self, scenefile='scenes/scenes.yaml'):
        with open(scenefile) as f:
            scene_yaml = yaml.load(f)
        for s in scene_yaml["scenes"].keys():
            temp = scene_yaml["scenes"][s]
            scene = HueScene(name=s)
            scene.xy = temp["colors"]
            scene.saturation = temp["saturation"]
            scene.brightness = temp["brightness"]
            self.scenes[s] = scene

    def setCurrent(self, attribute, value, transition=None):
        if attribute in self.ATTRIBUTES:
            light_names = self.bridge.get_light_objects('name')
            for light in self.GROUP_LIGHTS:
                tt = light_names[light].transitiontime
                light_names[light].transitiontime = 1
                setattr(light_names[light], attribute, value)
                light_names[light].transitiontime = tt

    def setBrightness(self, value):
        light_names = self.bridge.get_light_objects('name')
        for light in self.GROUP_LIGHTS:
            tt = light_names[light].transitiontime
            light_names[light].transitiontime = 1 
            light_names[light].brightness = value
            light_names[light].transitiontime = tt

    def setXValue(self, value, maximum=127):
        light_names = self.bridge.get_light_objects('name')
        for light in self.GROUP_LIGHTS:
            xvalue = float(value)/maximum
            yvalue = light_names[light].xy[1]
            light_names[light].xy = (xvalue, yvalue)
         
    def setYValue(self, value, maximum=127):
        light_names = self.bridge.get_light_objects('name')
        for light in self.GROUP_LIGHTS:
            yvalue = float(value)/maximum
            xvalue = light_names[light].xy[1]
            light_names[light].xy = (xvalue, yvalue)

    def toggleLight(self):
        light_names = self.bridge.get_light_objects('name')
        for light in self.GROUP_LIGHTS:
            tt = light_names[light].transitiontime
            light_names[light].transitiontime = 4 
            light_names[light].on ^= True
            light_names[light].transitiontime = tt
        return light_names[light].on
示例#7
0
class PartyTime(Thread):
    def __init__(self, *args, **kwargs):
        super(PartyTime, self).__init__(*args, **kwargs)
        self.daemon = True

        hue_config = config['Hue']
        self.bridge = Bridge(hue_config['bridge-ip'])
        self.bridge.connect()

        # Setup lights
        self.light_group = hue_config['light-group']
        self.group_name = hue_config['light-group-name']
        self.bridge.create_group(self.group_name, self.light_group)
        self.base_light_state = {
            'bri': 120,
            'sat': 0,
            'transitiontime': 10,
            'on': True,
        }

        self.enabled = False
        self.base_lights()
        self.start()

    def base_lights(self):
        self.bridge.set_group(self.group_name, self.base_light_state)
        time.sleep(1)

    def hue_point(self, color):
        """
        Splits the spectrum up by the number of lights in the light group to
        get an evenly spaced rainbow of colors
        """
        color = int(color % len(self.light_group))
        hue = 65535 / len(self.light_group)
        hue = hue * color
        return hue

    def party_on(self):
        """
        Sets a random light, the next step in the rainbow, defined using the
        hue_point method
        """
        random.shuffle(self.light_group)
        params = {'sat': 254, 'bri': 254, 'transitiontime': 1}
        i = 0
        while self.enabled:
            params['hue'] = self.hue_point(i)
            self.bridge.set_light(random.choice(self.light_group), params)
            time.sleep(0.05)
            i += 1

    def party_off(self):
        # reset to base state
        base = dict(self.base_light_state)
        base['transitiontime'] = 3
        for light in self.light_group:
            self.bridge.set_light(light, base)
            time.sleep(0.2)
        self.base_lights()

    def toggle(self):
        self.enabled = not self.enabled

    def run(self):
        while True:
            if self.enabled:
                self.party_on()
            else:
                self.party_off()
            time.sleep(0.1)
示例#8
0
class PhilipsWrapper:
    def __init__(self, core):
        bridge_ip = core.local_storage["module_storage"]["philips_hue"][
            "Bridge-IP"]
        self.bridge = Bridge(bridge_ip)
        self.bridge.connect()

        self.skills = core.skills
        self.core = core

        self.lights = self.bridge.lights
        self.light_names = self.bridge.get_light_objects('name')

        with open(core.path +
                  "/resources/module_configs.json") as module_config_file:
            module_config = json.load(module_config_file)
            self.color_adjustment = module_config["philips_hue"][
                "color_adjustment"]

        if bridge_ip == "":
            core.say(
                "Um Philips HUE zu nutzen, musst du zuerst die Bridge IP im System eintragen. Besuche dafür die Einrichtungswebsite."
            )
            return

    def wrapper(self, text):
        lights = self.Logic.get_lights(text, self)
        # self.core.say("Okay.")
        if 'aus' in text:
            self.light_off(lights)
            return

        elif 'an' in text:
            # toDo: distinguish between different times
            self.light_on(lights)
            return

        elif 'heller' in text:
            if 'viel' in text:
                self.inc_dec_brightness(lights, 140)
            else:
                self.inc_dec_brightness(lights, 60)
            return

        elif 'wärmer' in text:
            self.set_light_color_temp(lights, 25)

        elif 'kälter' in text:
            self.set_light_color_temp(lights, -25)

        elif 'dunkler' in text or 'dimm' in text:
            if 'viel' in text:
                self.inc_dec_brightness(lights, -140)
            else:
                self.inc_dec_brightness(lights, -60)
            return

        elif 'hell' in text:
            self.set_light_brightness(lights, 254)
            return

        elif 'prozent' in text or '%' in text:
            self.set_light_brightness(
                lights, self.Logic.get_percent_as_brightness(text))
            return

        else:
            for item in colors:
                if item in text:
                    self.light_change_color(lights, text)
                    return

        self.core.say(
            'Leider habe ich nicht verstanden, was ich mit dem Licht machen soll.'
        )

    def set_light_powerstate(self, lights, powerstate):

        if powerstate is None and (type(lights) is type("")
                                   or len(lights) <= 1):
            if self.bridge.get_light(lights, 'on'):
                powerstate = 'off'
            else:
                powerstate = 'on'
        if powerstate == 'on':
            self.bridge.set_light(lights, 'on', True)
        elif powerstate == 'off':
            self.bridge.set_light(lights, 'on', False)
        else:
            return 'err'

    def get_light_powerstate(self, light):
        if light is None:
            light = self.lights[0]
        return self.bridge.get_light(light, 'on')

    def light_on(self, lights, change_brightness=True):
        if type(lights) != type(
            []) and type(lights) != type("") and type(lights) != 1:
            lights = self.bridge.get_light(lights)
            # toDO: possibility that lights is an array of Objects
        self.bridge.set_light(lights, 'on', True)
        if change_brightness:
            self.bridge.set_light(lights, 'bri', 254)
        if self.color_adjustment:
            now = datetime.now()
            # add sunrise and sunset
            self.bridge.set_light(
                lights,
                'sat',
            )

    def light_off(self, lights):
        self.bridge.set_light(lights, 'on', False)

    def light_change_color(self, lights, text):
        color = self.Logic.get_named_color(text)
        if color is not None:
            self.light_on(lights)
            self.bridge.set_light(lights, 'xy', [color[0], color[1]])
            # self.bridge.set_light(lights, 'bri', 254)
        else:
            self.core.say(
                'Es tut mir leid, leider konnte ich nicht heraus filtern, welche Farbe du wünschst.'
            )

    def inc_dec_ct(self, lights, value):
        for light in lights:
            ct = light.ct + value
            if ct > 254:
                ct = 254
            elif ct < 0:
                ct = 0
            self.bridge.set_light(light, 'ct', ct)

    def set_light_color_temp(self, lights, value):
        self.bridge.set_light(lights, 'sat', int(value))

    def set_light_brightness(self, lights, value):
        self.bridge.set_light(lights, 'bri', int(value))

    def inc_dec_brightness(self, lights, value):
        if type(lights[0]) is not type("") and type(lights[0]) is not type(1):
            for i in range(len(lights)):
                lights[i] = lights[i].id
        for light in lights:
            brightness = self.bridge.get_light(light, 'bri') + value
            if brightness > 254:
                brightness = 254
            if brightness < 0:
                brightness = 0
            self.bridge.set_light(light, 'bri', brightness)

    def get_light_in_json(self, light_name):
        tempLight = self.bridge.get_light(light_name)
        return {
            "on": self.bridge.get_light(tempLight["name"], 'on'),
            "brightness": self.bridge.get_light(tempLight["name"], 'bri'),
            "name": tempLight["name"]
        }

    def get_lights_in_json(self, order_by_id=False):
        output = {}
        light_objects = self.bridge.get_light_objects('id')
        if order_by_id:
            for item in light_objects:
                output[item] = {
                    'id': item,
                    'name': light_objects[item].name,
                    'on': light_objects[item].on,
                    'brightness': light_objects[item].brightness,
                    'color': light_objects[item].hue,
                    'saturation': light_objects[item].saturation,
                    'ct': light_objects[item].ct
                }
            return output
        else:
            for item in light_objects:
                output[light_objects[item].name] = {
                    'id': item,
                    'name': light_objects[item].name,
                    'on': light_objects[item].on,
                    'brightness': light_objects[item].brightness,
                    'color': light_objects[item].hue,
                    'saturation': light_objects[item].saturation,
                    'ct': light_objects[item].ct
                }
            return output

    def is_light_in_system(self, light_name):
        for light_n in self.light_names:
            if light_n == light_name:
                return True
        return False

    def create_group(self, name, lights):
        for light in lights:
            if format(light) == format("String"):
                lights.remove(light)
                lights.append(self.bridge.get_light(light).id)
        self.bridge.create_group(name, lights)

    def rename_group(self, group_name, new_name):
        self.bridge.set_group(group_name, 'name', new_name)

    def change_lights_in_group(self, group_name, lights):
        for light in lights:
            if format(light) == format("String"):
                lights.remove(light)
                lights.append(self.bridge.get_light(light).id)
        self.bridge.set_group(group_name, 'lights', lights)

    def get_groups(self):
        return self.bridge.get_group()

    def get_group(self, group_name):
        is_on = True
        group = self.bridge.get_group(group_name)
        for light in group["lights"]:
            if not light["on"]:
                is_on = False
        group["on"] = is_on
        print(group)
        return group