def DailyHouseKeeping(): street = HomerHelper.getSettingValue('StreetAddress') city = HomerHelper.getSettingValue('City') state = HomerHelper.getSettingValue('State') while True: logging.debug("performing daily housekeeping actions") sun = HomerHelper.calcSunPosition(street, city, state) HomerHelper.updateSettingValue('sunrise',sun['sunrise']) HomerHelper.updateSettingValue('sunset',sun['sunset'])
def PollingStart(): schedule(DailyHouseKeeping, id="DailyRunTasks", trigger='cron', hour=03, misfire_grace_time=None) if HomerHelper.getSettingValue('hue_polling') == 'True': logger.info("They see me pollin they hating, Phillips hue polling enabled") polling_rate = int(HomerHelper.getSettingValue('hue_polling_rate')) schedule(HuePoll, id="HuePoll", trigger='interval', seconds=polling_rate) if HomerHelper.getSettingValue('myQ_polling') == 'True': logger.info("They see me pollin they hating, myQ Device polling enabled") polling_rate = int(HomerHelper.getSettingValue('myQ_polling_rate')) schedule(myQPoll, id="MyQ Poll", trigger='interval', seconds=polling_rate, misfire_grace_time=None)
def authenticate(self): loginUrl = urlparse.urljoin(self.MYQ_API, "/Membership/ValidateUserWithCulture") payload = { 'appId':self.MyQ_App_ID, 'securityToken':'null', 'username':HomerHelper.getSettingValue('MyQ_Username'), 'password':HomerHelper.getSettingValue('MyQ_Password'), 'culture':'en' } logging.debug('authenticating MyQ account') r = requests.get(loginUrl, params=payload) jsonData = json.loads(r.text) errorMessage = str(jsonData['ErrorMessage']) if not errorMessage: return jsonData['SecurityToken'] else: return None
__author__ = 'matt' import HomerHelper from apscheduler.schedulers.gevent import GeventScheduler from apscheduler.jobstores.memory import MemoryJobStore from apscheduler.executors.pool import ThreadPoolExecutor street = HomerHelper.getSettingValue('StreetAddress') city = HomerHelper.getSettingValue('City') state = HomerHelper.getSettingValue('State') timezone = HomerHelper.calcTimeZone(street, city, state) jobstores = { 'default': MemoryJobStore } executors = { 'default': ThreadPoolExecutor(40) } job_defaults = { 'misfire_grace_time': None, 'coalesce': True, 'max_instances': 3 } scheduler = GeventScheduler(executors=executors, job_defaults=job_defaults, timezone=timezone) scheduler.start() def schedule(*args, **kwargs): job = scheduler.add_job(*args, **kwargs) return job
def __init__(self): self.MYQ_API = HomerHelper.getSettingValue('MyQ_API_URL') self.MyQ_App_ID = HomerHelper.getSettingValue('MyQ_App_ID') self.securityToken = self.authenticate()
import HomerHelper import logging import threading import gevent from gevent import Greenlet import urlparse import requests import json from Scheduler import schedule, KillJob, GetJob import random logger = logging.getLogger(__name__) IMP_API = HomerHelper.getSettingValue('Imp_API_URL') SPARK_API = HomerHelper.getSettingValue('Spark_API_URL') spark_token = HomerHelper.getSettingValue('spark_token') b = Bridge("Philips-hue.mattlovett.com", config_file_path = "./HOMEr_hue") # If the app is not registered and the button is not pressed, press the button and call connect() (this only needs to be run a single time) b.connect() # Get the bridge state (This returns the full dictionary that you can explore) b.get_api()