diff --git a/enums.py b/enums.py new file mode 100644 index 0000000..f864d76 --- /dev/null +++ b/enums.py @@ -0,0 +1,23 @@ +#!/usr/bin/env python3 + +# SPDX-FileCopyrightText: 2020 Andrius Štikonas +# SPDX-License-Identifier: LGPL-3.0-or-later + +import enum + + +class ScheduleFormat(str, enum.Enum): + """ + Enum to specify Schedule Format + ZERO - non programmable (time clocks cannot be non programmable) + ONE - same format every day of the week + TWO - 5 day / 2 day + SEVEN - 7 day (every day different) + + + """ + + ZERO = "NONPROGRAMMABLE" + ONE = "24HOURSFIXED" + TWO = "5DAY/2DAY" + SEVEN = "7DAY" diff --git a/neohub.py b/neohub.py index 7993282..a181d7b 100644 --- a/neohub.py +++ b/neohub.py @@ -5,8 +5,10 @@ import asyncio import json import logging +from enums import ScheduleFormat from system import System + class NeoHub: def __init__(self): self._logger = logging.getLogger('neohub') @@ -122,14 +124,11 @@ class NeoHub: return result - async def set_format(self, format): + async def set_format(self, format: ScheduleFormat): """ - Sets timer format + Sets schedule format - "NONPROGRAMMABLE" - non programmable (time clocks cannot be non programmable) - "24HOURSFIXED" - same format every day of the week - "5DAY/2DAY" - 5 day / 2 day - "7DAY" - 7 day (every day different) + Format is specified using ScheduleFormat enum: """ message = {"SET_FORMAT": format} diff --git a/system.py b/system.py new file mode 100644 index 0000000..eee146e --- /dev/null +++ b/system.py @@ -0,0 +1,35 @@ +#!/usr/bin/env python3 + +# SPDX-FileCopyrightText: 2020 Andrius Štikonas +# SPDX-License-Identifier: LGPL-3.0-or-later + +from enums import ScheduleFormat + + +def schedule_format(int_format): + if int_format == 0: + return ScheduleFormat.ZERO + elif int_format == 1: + return ScheduleFormat.ONE + elif int_format == 2: + return ScheduleFormat.TWO + elif int_format == 4: + return ScheduleFormat.SEVEN + else: + raise ValueError('Unrecognized ScheduleFormat') + + +class System: + def __init__(self, system_info): + self.dst_auto = system_info['DST_AUTO'] + self.dst_on = system_info['DST_ON'] + self.timer_format = schedule_format(system_info['FORMAT']) + # If system timer format is set to non programmable, then any time clock remain + # in the previous setting which is stored in ALT_TIMER_FORMAT. + self.alt_timer_format = schedule_format(system_info['ALT_TIMER_FORMAT']) + self.ntp = system_info['NTP_ON'] == "Running" + self.hub_type = system_info['HUB_TYPE'] + self.hub_version = system_info['HUB_VERSION'] + self.temperature_unit = system_info["CORF"] + self.timezone = system_info['TIME_ZONE'] + self.time = system_info['UTC'] diff --git a/test.py b/test.py index 6bb042f..3f35a2f 100755 --- a/test.py +++ b/test.py @@ -8,13 +8,14 @@ import asyncio import neohub import logging +from enums import ScheduleFormat async def run(): hub = neohub.NeoHub() await hub.connect() system = await hub.get_system() print(vars(system)) - result = await hub.set_format("NONPROGRAMMABLE") + result = await hub.set_format(ScheduleFormat.ZERO) print(result)