Beispiel #1
0
def test_fetch_lights(monkeypatch):
    test_light_name = 'test light'

    class MockResponse:
        def json(self):
            return {
                '1': {
                    'name': test_light_name,
                    'state': {}
                }
            }

    test_url = 'http://test.com'

    def mock_get(*args, **kwargs):
        assert args[0] == test_url + '/lights'
        return MockResponse()

    monkeypatch.setattr(requests, 'get', mock_get)
    api = HueApi()
    api.base_url = test_url
    api.fetch_lights()
    assert len(api.lights) == 1
    assert api.lights[0].name == test_light_name
    assert api.lights[0].id == 1
from hue_api import HueApi
import bs4
import urllib.request
import time

api = HueApi()

# api.load_existing('Hue IP here')
api.create_new_user('Hue IP here')

api.fetch_lights()

previous_price = 0
day_high = 0

api.turn_on()


def get_price():
    url = 'https://uk.finance.yahoo.com/quote/GME/chart?p=GME' \
          '#eyJpbnRlcnZhbCI6MSwicGVyaW9kaWNpdHkiOjEsInRpbWVVbml0IjoibWludXRlIiwiY2FuZGxlV2lkdGgiOjguMTY1NDY3NjI1ODk5MjgsImZsaXBwZWQiOmZhbHNlLCJ2b2x1bWVVbmRlcmxheSI6dHJ1ZSwiYWRqIjp0cnVlLCJjcm9zc2hhaXIiOnRydWUsImNoYXJ0VHlwZSI6ImxpbmUiLCJleHRlbmRlZCI6ZmFsc2UsIm1hcmtldFNlc3Npb25zIjp7fSwiYWdncmVnYXRpb25UeXBlIjoib2hsYyIsImNoYXJ0U2NhbGUiOiJsaW5lYXIiLCJwYW5lbHMiOnsiY2hhcnQiOnsicGVyY2VudCI6MSwiZGlzcGxheSI6IkdNRSIsImNoYXJ0TmFtZSI6ImNoYXJ0IiwiaW5kZXgiOjAsInlBeGlzIjp7Im5hbWUiOiJjaGFydCIsInBvc2l0aW9uIjpudWxsfSwieWF4aXNMSFMiOltdLCJ5YXhpc1JIUyI6WyJjaGFydCIsIuKAjHZvbCB1bmRy4oCMIl19fSwic2V0U3BhbiI6bnVsbCwibGluZVdpZHRoIjoyLCJzdHJpcGVkQmFja2dyb3VuZCI6dHJ1ZSwiZXZlbnRzIjp0cnVlLCJjb2xvciI6IiMwMDgxZjIiLCJzdHJpcGVkQmFja2dyb3VkIjp0cnVlLCJyYW5nZSI6bnVsbCwiZXZlbnRNYXAiOnsiY29ycG9yYXRlIjpbXSwic2lnRGV2Ijp7fX0sInN5bWJvbHMiOlt7InN5bWJvbCI6IkdNRSIsInN5bWJvbE9iamVjdCI6eyJzeW1ib2wiOiJHTUUiLCJxdW90ZVR5cGUiOiJFUVVJVFkiLCJleGNoYW5nZVRpbWVab25lIjoiQW1lcmljYS9OZXdfWW9yayJ9LCJwZXJpb2RpY2l0eSI6MSwiaW50ZXJ2YWwiOjEsInRpbWVVbml0IjoibWludXRlIiwic2V0U3BhbiI6bnVsbH1dLCJjdXN0b21SYW5nZSI6bnVsbCwic3R1ZGllcyI6eyLigIx2b2wgdW5kcuKAjCI6eyJ0eXBlIjoidm9sIHVuZHIiLCJpbnB1dHMiOnsiaWQiOiLigIx2b2wgdW5kcuKAjCIsImRpc3BsYXkiOiLigIx2b2wgdW5kcuKAjCJ9LCJvdXRwdXRzIjp7IlVwIFZvbHVtZSI6IiMwMGIwNjEiLCJEb3duIFZvbHVtZSI6IiNmZjMzM2EifSwicGFuZWwiOiJjaGFydCIsInBhcmFtZXRlcnMiOnsid2lkdGhGYWN0b3IiOjAuNDUsImNoYXJ0TmFtZSI6ImNoYXJ0IiwicGFuZWxOYW1lIjoiY2hhcnQifX0sIuKAjG1h4oCMICg1MCxDLG1hLDApIjp7InR5cGUiOiJtYSIsImlucHV0cyI6eyJQZXJpb2QiOjUwLCJGaWVsZCI6IkNsb3NlIiwiVHlwZSI6InNpbXBsZSIsIk9mZnNldCI6MCwiaWQiOiLigIxtYeKAjCAoNTAsQyxtYSwwKSIsImRpc3BsYXkiOiLigIxtYeKAjCAoNTAsQyxtYSwwKSJ9LCJvdXRwdXRzIjp7Ik1BIjoiI2FkNmVmZiJ9LCJwYW5lbCI6ImNoYXJ0IiwicGFyYW1ldGVycyI6eyJjaGFydE5hbWUiOiJjaGFydCJ9fX19 '

    page = urllib.request.urlopen(url)

    soup = bs4.BeautifulSoup(page, "html.parser")

    price = soup.find('div', {
        'class': 'My(6px) Pos(r) smartphone_Mt(6px)'
    }).find('span').text

    return float(price)
Beispiel #3
0
    elif foundDefaultCount > 1:
        phase(-1)
        phase(phaseMinutes)


while (True):
    time = datetime.now()
    currentHour = time.hour
    sr = sun.get_local_sunrise_time(local_time_zone=denver).replace(
        tzinfo=None)
    ss = sunset()
    ssOffset = (ss - time).seconds
    srOffset = (sr - time).seconds
    #CHECK DEFAULTS

    for light in api.fetch_lights():
        if light.state.hue == 8417 and light.state.saturation == 140:  #the manufacturer default color
            #If it's the same poll as another light, don't increment the counter.

            #   light.set_state({'hue': 8418, 'sat': 140, 'transitiontime': 1})
            if firstDefaultStateTime == 0:
                firstDefaultStateTime = time
                #   light.set_state({'hue': 8418, 'sat': 140, 'transitiontime': 1})
                foundDefaultCount = 1
                print("first default light")
            elif (time - firstDefaultStateTime
                  ).seconds > 30:  #start counting again after X seconds
                firstDefaultStateTime = time
                foundDefaultCount = 1

            elif (time - firstDefaultStateTime