Compare commits

..

No commits in common. "d811131f8a8308e256f8a17dc935af28f414149f" and "ee252edc18578587d82fdb3f844799f2e92c3be1" have entirely different histories.

4 changed files with 41 additions and 62 deletions

View File

@ -45,10 +45,3 @@ class Weekday(enum.Enum):
FRIDAY = "friday"
SATURDAY = "saturday"
SUNDAY = "sunday"
class HCMode(enum.Enum):
AUTO = "AUTO"
COOLING = "COOLING"
HEATING = "HEATING"
VENT = "VENT"

View File

@ -10,7 +10,6 @@ import socket
from async_property import async_cached_property
from types import SimpleNamespace
from neohubapi.enums import HCMode
from neohubapi.enums import ScheduleFormat
from neohubapi.enums import schedule_format_int_to_enum
from neohubapi.neostat import NeoStat
@ -85,15 +84,6 @@ class NeoHub:
raise(last_exception)
return False
def _devices_to_names(self, devices: [NeoStat]):
"""
Returns the list of device names
"""
try:
return [x.name for x in devices]
except (TypeError, AttributeError):
raise NeoHubUsageError('devices must be a list of NeoStat objects')
async def firmware(self):
"""
NeoHub firmware version
@ -174,17 +164,6 @@ class NeoHub:
result = await self._send(message, reply)
return result
async def set_hc_mode(self, hc_mode: HCMode, devices: [NeoStat]):
"""
Set hc_mode to AUTO or...
"""
names = self._devices_to_names(devices)
message = {"SET_HC_MODE": [hc_mode.value, names]}
reply = {"result": "HC_MODE was set"}
result = await self._send(message, reply)
return result
async def set_format(self, sched_format: ScheduleFormat):
"""
Sets schedule format
@ -445,7 +424,11 @@ class NeoHub:
pin = pin // 10
pins.reverse()
names = self._devices_to_names(devices)
try:
names = [x.name for x in devices]
except (TypeError, AttributeError):
raise NeoHubUsageError('devices must be a list of NeoStat objects')
message = {"LOCK": [pins, names]}
reply = {"result": "locked"}
@ -457,7 +440,11 @@ class NeoHub:
Unlocks PIN locked thermostats
"""
names = self._devices_to_names(devices)
try:
names = [x.name for x in devices]
except (TypeError, AttributeError):
raise NeoHubUsageError('devices must be a list of NeoStat objects')
message = {"UNLOCK": names}
reply = {"result": "unlocked"}
@ -469,29 +456,17 @@ class NeoHub:
Enables or disables Frost mode
"""
names = self._devices_to_names(devices)
try:
names = [x.name for x in devices]
except (TypeError, AttributeError):
raise NeoHubUsageError('devices must be a list of NeoStat objects')
message = {"FROST_ON" if state else "FROST_OFF": names}
reply = {"result": "frost on" if state else "frost off"}
result = await self._send(message, reply)
return result
async def set_cool_temp(self, temperature: int, devices: [NeoStat]):
"""
Sets the thermostat's cooling temperature i.e. the temperature that will
trigger the thermostat if exceeded. Note that this is only supported on
the HC (Heating/Cooling) thermostats.
The temperature will be reset once next comfort level is reached
"""
names = self._devices_to_names(devices)
message = {"SET_COOL_TEMP": [temperature, names]}
reply = {"result": "temperature was set"}
result = await self._send(message, reply)
return result
async def set_target_temperature(self, temperature: int, devices: [NeoStat]):
"""
Sets the thermostat's temperature
@ -499,7 +474,11 @@ class NeoHub:
The temperature will be reset once next comfort level is reached
"""
names = self._devices_to_names(devices)
try:
names = [x.name for x in devices]
except (TypeError, AttributeError):
raise NeoHubUsageError('devices must be a list of NeoStat objects')
message = {"SET_TEMP": [temperature, names]}
reply = {"result": "temperature was set"}
@ -517,7 +496,11 @@ class NeoHub:
3: 3 degrees
"""
names = self._devices_to_names(devices)
try:
names = [x.name for x in devices]
except (TypeError, AttributeError):
raise NeoHubUsageError('devices must be a list of NeoStat objects')
message = {"SET_DIFF": [switching_differential, names]}
reply = {"result": "switching differential was set"}
@ -529,7 +512,11 @@ class NeoHub:
Returns time in minutes required to change temperature by 1 degree
"""
names = self._devices_to_names(devices)
try:
names = [x.name for x in devices]
except (TypeError, AttributeError):
raise NeoHubUsageError('devices must be a list of NeoStat objects')
message = {"VIEW_ROC": names}
result = await self._send(message)
@ -543,7 +530,11 @@ class NeoHub:
NeoStats that are in timeclock mode.
"""
names = self._devices_to_names(devices)
try:
names = [x.name for x in devices]
except (TypeError, AttributeError):
raise NeoHubUsageError('devices must be a list of NeoStat objects')
message = {"TIMER_ON" if state else "TIMER_OFF": names}
reply = {"result": "timers on" if state else "timers off"}
@ -557,7 +548,11 @@ class NeoHub:
This function works with NeoStats in timeclock mode
"""
names = self._devices_to_names(devices)
try:
names = [x.name for x in devices]
except (TypeError, AttributeError):
raise NeoHubUsageError('devices must be a list of NeoStat objects')
message = {"TIMER_HOLD_ON" if state else "TIMER_HOLD_OFF": [minutes, names]}
reply = {"result": "timer hold on" if state else "timer hold off"}

View File

@ -8,7 +8,6 @@ from types import SimpleNamespace
from async_property import async_property
from neohubapi.enums import HCMode
from neohubapi.enums import Weekday
@ -166,14 +165,6 @@ class NeoStat(SimpleNamespace):
result = await self._hub.set_target_temperature(temperature, [self])
return result
async def set_hc_mode(self, hc_mode: HCMode):
result = await self._hub.set_hc_mode(hc_mode, [self])
return result
async def set_cool_temp(self, temperature: int):
result = await self._hub.set_cool_temp(temperature, [self])
return result
async def set_diff(self, switching_differential: int):
result = await self._hub.set_diff(switching_differential, [self])
return result

View File

@ -11,7 +11,7 @@ with open("README.md", "r", encoding="utf-8") as fh:
setuptools.setup(
name="neohubapi",
version="0.8",
version="0.7",
description="Async library to communicate with Heatmiser NeoHub 2 API.",
url="https://gitlab.com/neohubapi/neohubapi/",
author="Andrius Štikonas",