Beispiel #1
0
    def _get_scheduled_on_time():
        forced_on_time = SchedulerState.get_forced_on_time()
        now = datetime.datetime.now()

        if forced_on_time:
            try:
                forced_on_time = datetime.datetime.strptime(
                    forced_on_time, "%H:%M")
            except ValueError:
                SchedulerState.set_forced_on_time('')
            else:
                return now.replace(hour=forced_on_time.hour,
                                   minute=forced_on_time.minute,
                                   second=0,
                                   microsecond=0)
        else:
            at = now.strftime('%Y-%m-%d')
            calendar = json.loads(redis.get(SchedulerState.KEY_DAY_TABLE))
            if at in calendar:
                v = calendar[at].get(SchedulerState.KEY_ON_TIME,
                                     now.isoformat())
                on_time = datetime.datetime.strptime(v, '%Y-%m-%dT%H:%M:%S')
                return on_time + datetime.timedelta(
                    hours=float(SchedulerState.get_sundown_offset()))

        # Sanity check: worst case: on time is unknown, return future date
        return now + datetime.timedelta(hours=10)
Beispiel #2
0
    def _get_scheduled_on_time():
        time_on = SchedulerState.get_time_on()
        now = datetime.datetime.utcnow()

        if time_on in ['sunrise', 'sunset']:
            at = now.strftime('%Y-%m-%d')
            calendar = json.loads(redis.get(SchedulerState.KEY_DAY_TABLE))
            if calendar and at in calendar:
                v = calendar[at].get(
                    SchedulerState.KEY_OFF_TIME
                    if time_on == 'sunrise' else SchedulerState.KEY_ON_TIME,
                    now.isoformat())
                on_time = datetime.datetime.strptime(v, '%Y-%m-%dT%H:%M:%S')
                return on_time + datetime.timedelta(
                    seconds=float(SchedulerState.get_offset_time_on()))
            else:
                SchedulerState.set_enable_state("off")
                return

        else:
            # Other values of time_on can be "%H:%M"
            try:
                formatted_time_on = datetime.datetime.strptime(
                    time_on, "%H:%M")
            except ValueError:
                SchedulerState.set_time_on('20:00')
            else:
                return now.replace(hour=formatted_time_on.hour,
                                   minute=formatted_time_on.minute,
                                   second=0,
                                   microsecond=0)

        # Sanity check: worst case: on time is unknown, return future date
        return now + datetime.timedelta(hours=10)
Beispiel #3
0
    def set_sundown(day, at):
        table = json.loads(redis.get(SchedulerState.KEY_DAY_TABLE))
        table[day][SchedulerState.KEY_ON_TIME] = day + 'T' + at + ':00'
        dumped = json.dumps(table)

        with open(SchedulerState.CITY, 'w') as f:
            f.write(dumped)
        redis.set(SchedulerState.KEY_DAY_TABLE, dumped)
Beispiel #4
0
 def _get_scheduled_on_time():
     forced_on_time = SchedulerState.get_forced_on_time()
     if forced_on_time:
         try:
             forced_on_time = datetime.datetime.strptime(forced_on_time, "%H:%M")
         except ValueError:
             SchedulerState.set_forced_on_time('')
         else:
             now = datetime.datetime.now()
             forced_sundown_dt = now.replace(hour=forced_on_time.hour, minute=forced_on_time.minute,
                                             second=0, microsecond=0)
             return forced_sundown_dt
     at = datetime.datetime.now().strftime('%Y-%m-%d')
     v = json.loads(redis.get(SchedulerState.KEY_DAY_TABLE))[at].get(
         SchedulerState.KEY_ON_TIME, datetime.datetime.now().isoformat())
     on_time = datetime.datetime.strptime(v, '%Y-%m-%dT%H:%M:%S')
     return on_time + datetime.timedelta(hours=float(SchedulerState.get_sundown_offset()))
Beispiel #5
0
 def app_started_at():
     redis.get(SchedulerState.KEY_APP_STARTED_AT)
Beispiel #6
0
 def get_current_app():
     c_app = redis.get(SchedulerState.KEY_CURRENT_RUNNING_APP)
     return json.loads(c_app) if c_app is not None else None
Beispiel #7
0
 def get_available_apps():
     return json.loads(redis.get(SchedulerState.KEY_REGISTERED_APP))