%global _empty_manifest_terminate_build 0 Name: python-venstarcolortouch Version: 0.19 Release: 1 Summary: Interface Library for Venstar ColorTouch Thermostat API v5 License: MIT URL: https://github.com/hpeyerl/venstar_colortouch Source0: https://mirrors.nju.edu.cn/pypi/web/packages/90/9f/b0d7b82d8c770878865f5c49f0675ed10e5f24c17885a3cfa323368438b3/venstarcolortouch-0.19.tar.gz BuildArch: noarch Requires: python3-requests %description # Python3 API for Venstar ColorTouch thermostats The [Venstar ColorTouch thermostat](https://venstar.com/thermostats/colortouch/) is a WIFI thermostat with a REST api. This is a simple Python3 API for talking to it. The [API documents](http://developer.venstar.com/index.html) are required reading. ## Limitations The API does not implement the Venstar discovery protocol. It is assumed that you know the IP address or FQDN of your thermostat(s). ## Testing ```bash $ python venstarcolortouch 192.168.1.252 Testing with IP: 192.168.1.252 Login successful. API: 5 Type: residential Was able to get info:{u'spacetemp': 67.0, u'schedulepart': 255, u'dehum_setpoint': 0, u'away': 0, u'cooltempmax': 99.0, u'cooltemp': 78.0, u'tempunits': 0, u'state': 1, u'schedule': 0, u'hum': 0, u'heattemp': 75.0, u'hum_setpoint': 36, u'fan': 0, u'hum_active': 99, u'heattempmax': 99.0, u'cooltempmin': 35.0, u'name': u'DebtRidge', u'mode': 1, u'heattempmin': 35.0, u'availablemodes': 0, u'fanstate': 1, u'setpointdelta': 2.0} Name is MyHouse Fan is 0 Heat setpoint is 75.0 Cool setpoint is 78.0 Was able to get sensors:{u'sensors': [{u'hum': 36, u'name': u'Thermostat', u'temp': 67.0}, {u'name': u'Outdoor', u'temp': 0.0}]} Indoor temp is 67.0 and humidity is 36 Runtimes: {u'cool1': 0, u'cool2': 0, u'ts': 1429574400, u'fc': 0, u'heat2': 0, u'heat1': 0, u'aux2': 0, u'aux1': 0} Path is: /control set_control Success! Heat setpoint is 60.0 Cool setpoint is 90.0 Path is: /control set_control Success! Heat setpoint is 75.0 Cool setpoint is 78.0 ``` ## Usage ```Python class VenstarColorTouch: def __init__(self, addr, timeout): ``` Class instantiation requires an IP address or hostname with an optional timeout. ```Python ct = venstarcolortouch.VenstarColorTouch(a, timeout=5) if ct.login() is True: print("Login successful. API: {0} Type: {1}".format(ct._api_ver,ct._type)) ``` The login() function does not really log in, but it does confirm communication and that the API version is recent enough. ## API API calls use the following constants: ```Python MODE_OFF MODE_HEAT MODE_COOL MODE_AUTO STATE_IDLE STATE_HEATING STATE_COOLING STATE_LOCKOUT STATE_ERROR FAN_AUTO FAN_ON FANSTATE_OFF FANSTATE_ON TEMPUNITS_F TEMPUNITS_C SECURITY_OFF SECURITY_ON SCHED_F SCHED_C SCHEDPART_MORNING SCHEDPART_DAY SCHEDPART_EVENING SCHEDPART_NIGHT SCHEDPART_INACTIVE AWAY_HOME AWAY_AWAY ``` ### Functions There are ```update_*``` functions which update local copies of various pieces of data. Then there are ```get_*``` functions for retrieving that data and finally ```set_*``` functions for changing writable settings. * ```update_info()``` - Update the control state of the thermostat. **Must be called at least once before any set_ functions.** * ```update_sensors()``` - Update the state of indoor and outdoor temperature sensors. * ```get_runtimes()``` - Gather runtime data. * ```get_info()``` - returns a dict of information.
{u'spacetemp',
u'schedulepart',
u'dehum_setpoint',
u'away',
u'cooltempmax',
u'cooltemp',
u'tempunits',
u'state',
u'schedule',
u'hum',
u'heattemp',
u'hum_setpoint',
u'fan',
u'hum_active',
u'heattempmax',
u'cooltempmin',
u'name',
u'mode',
u'heattempmin',
u'availablemodes',
u'fanstate',
u'setpointdelta'}
```python
get_info("heattemp")
```
* ```get_sensor(name, attr)``` Get a specific named sensor's value. In case of duplicate names, the first matching sensor will be returned.
```python
get_sensor("Outdoor", "temp")
```
* ```get_sensor_list(type)``` Get a list of sensor names, optionally filtered by type. Type is one of "Control", "Local", "Outdoor", "Remote", "Return", or "Supply".
```python
get_sensor_list()
get_sensor_list("Remote")
```
* ```get_thermostat_sensor(attr)``` Get a specific thermostat sensor's value.
```python
get_thermostat_sensor("temp")
```
* ```get_outdoor_sensor(attr)``` Get an outdoor sensor's value.
```python
get_outdoor_sensor("temp")```
* ```get_alerts()``` Get any alerts that are registered.
* ```set_setpoints(heattemp, cooltemp)``` Set heattemp/cooltemp.
* ```set_mode(mode)``` Set the thermostat mode.
* MODE_OFF
* MODE_HEAT
* MODE_COOL
* MODE_AUTO
* ```set_fan(fan)``` Set the Fan mode.
* FAN_AUTO
* FAN_ON
* ```set_tempunits(tempunits)``` Set degrees to either Celsius or Fahrenheit
* TEMPUNITS_F
* TEMPUNITS_C
* ```set_away(away)``` Set either Home or Away schedule.
* AWAY_HOME
* AWAY_AWAY
* ```set_schedule(schedule)``` Set Schedule On or Off.
* 0 - off
* 1 - on
* ```set_hum_setpoint(hum_setpoint)``` Set humidifier Setpoint
* ```set_dehum_setpoint(dehum_setpoint)``` Set dehumidifier Setpoint
### T2100 Specific
* ```set_security(security)``` Set the Security mode (whether or not setpoint limits are active).
* SECURITY_OFF
* SECURITY_ON
* ```set_setpoint_limits(sp_max, sp_min)``` Set the maximum and minimum setpoint limits.
%package -n python3-venstarcolortouch
Summary: Interface Library for Venstar ColorTouch Thermostat API v5
Provides: python-venstarcolortouch
BuildRequires: python3-devel
BuildRequires: python3-setuptools
BuildRequires: python3-pip
%description -n python3-venstarcolortouch
# Python3 API for Venstar ColorTouch thermostats
The [Venstar ColorTouch thermostat](https://venstar.com/thermostats/colortouch/) is a WIFI thermostat with a REST api. This is a simple Python3 API for talking to it. The [API documents](http://developer.venstar.com/index.html) are required reading.
## Limitations
The API does not implement the Venstar discovery protocol. It is assumed that you know the IP address or FQDN of your thermostat(s).
## Testing
```bash
$ python venstarcolortouch 192.168.1.252
Testing with IP: 192.168.1.252
Login successful. API: 5 Type: residential
Was able to get info:{u'spacetemp': 67.0, u'schedulepart': 255, u'dehum_setpoint': 0, u'away': 0, u'cooltempmax': 99.0, u'cooltemp': 78.0, u'tempunits': 0, u'state': 1, u'schedule': 0, u'hum': 0, u'heattemp': 75.0, u'hum_setpoint': 36, u'fan': 0, u'hum_active': 99, u'heattempmax': 99.0, u'cooltempmin': 35.0, u'name': u'DebtRidge', u'mode': 1, u'heattempmin': 35.0, u'availablemodes': 0, u'fanstate': 1, u'setpointdelta': 2.0}
Name is MyHouse
Fan is 0
Heat setpoint is 75.0
Cool setpoint is 78.0
Was able to get sensors:{u'sensors': [{u'hum': 36, u'name': u'Thermostat', u'temp': 67.0}, {u'name': u'Outdoor', u'temp': 0.0}]}
Indoor temp is 67.0 and humidity is 36
Runtimes: {u'cool1': 0, u'cool2': 0, u'ts': 1429574400, u'fc': 0, u'heat2': 0, u'heat1': 0, u'aux2': 0, u'aux1': 0}
Path is: /control
set_control Success!
Heat setpoint is 60.0
Cool setpoint is 90.0
Path is: /control
set_control Success!
Heat setpoint is 75.0
Cool setpoint is 78.0
```
## Usage
```Python
class VenstarColorTouch:
def __init__(self, addr, timeout):
```
Class instantiation requires an IP address or hostname with an optional timeout.
```Python
ct = venstarcolortouch.VenstarColorTouch(a, timeout=5)
if ct.login() is True:
print("Login successful. API: {0} Type: {1}".format(ct._api_ver,ct._type))
```
The login() function does not really log in, but it does confirm communication and that the API version is recent enough.
## API
API calls use the following constants:
```Python
MODE_OFF
MODE_HEAT
MODE_COOL
MODE_AUTO
STATE_IDLE
STATE_HEATING
STATE_COOLING
STATE_LOCKOUT
STATE_ERROR
FAN_AUTO
FAN_ON
FANSTATE_OFF
FANSTATE_ON
TEMPUNITS_F
TEMPUNITS_C
SECURITY_OFF
SECURITY_ON
SCHED_F
SCHED_C
SCHEDPART_MORNING
SCHEDPART_DAY
SCHEDPART_EVENING
SCHEDPART_NIGHT
SCHEDPART_INACTIVE
AWAY_HOME
AWAY_AWAY
```
### Functions
There are ```update_*``` functions which update local copies of various pieces of data. Then there are ```get_*``` functions for retrieving that data and finally ```set_*``` functions for changing writable settings.
* ```update_info()``` - Update the control state of the thermostat. **Must be called at least once before any set_ functions.**
* ```update_sensors()``` - Update the state of indoor and outdoor temperature sensors.
* ```get_runtimes()``` - Gather runtime data.
* ```get_info()``` - returns a dict of information.
{u'spacetemp',
u'schedulepart',
u'dehum_setpoint',
u'away',
u'cooltempmax',
u'cooltemp',
u'tempunits',
u'state',
u'schedule',
u'hum',
u'heattemp',
u'hum_setpoint',
u'fan',
u'hum_active',
u'heattempmax',
u'cooltempmin',
u'name',
u'mode',
u'heattempmin',
u'availablemodes',
u'fanstate',
u'setpointdelta'}
```python
get_info("heattemp")
```
* ```get_sensor(name, attr)``` Get a specific named sensor's value. In case of duplicate names, the first matching sensor will be returned.
```python
get_sensor("Outdoor", "temp")
```
* ```get_sensor_list(type)``` Get a list of sensor names, optionally filtered by type. Type is one of "Control", "Local", "Outdoor", "Remote", "Return", or "Supply".
```python
get_sensor_list()
get_sensor_list("Remote")
```
* ```get_thermostat_sensor(attr)``` Get a specific thermostat sensor's value.
```python
get_thermostat_sensor("temp")
```
* ```get_outdoor_sensor(attr)``` Get an outdoor sensor's value.
```python
get_outdoor_sensor("temp")```
* ```get_alerts()``` Get any alerts that are registered.
* ```set_setpoints(heattemp, cooltemp)``` Set heattemp/cooltemp.
* ```set_mode(mode)``` Set the thermostat mode.
* MODE_OFF
* MODE_HEAT
* MODE_COOL
* MODE_AUTO
* ```set_fan(fan)``` Set the Fan mode.
* FAN_AUTO
* FAN_ON
* ```set_tempunits(tempunits)``` Set degrees to either Celsius or Fahrenheit
* TEMPUNITS_F
* TEMPUNITS_C
* ```set_away(away)``` Set either Home or Away schedule.
* AWAY_HOME
* AWAY_AWAY
* ```set_schedule(schedule)``` Set Schedule On or Off.
* 0 - off
* 1 - on
* ```set_hum_setpoint(hum_setpoint)``` Set humidifier Setpoint
* ```set_dehum_setpoint(dehum_setpoint)``` Set dehumidifier Setpoint
### T2100 Specific
* ```set_security(security)``` Set the Security mode (whether or not setpoint limits are active).
* SECURITY_OFF
* SECURITY_ON
* ```set_setpoint_limits(sp_max, sp_min)``` Set the maximum and minimum setpoint limits.
%package help
Summary: Development documents and examples for venstarcolortouch
Provides: python3-venstarcolortouch-doc
%description help
# Python3 API for Venstar ColorTouch thermostats
The [Venstar ColorTouch thermostat](https://venstar.com/thermostats/colortouch/) is a WIFI thermostat with a REST api. This is a simple Python3 API for talking to it. The [API documents](http://developer.venstar.com/index.html) are required reading.
## Limitations
The API does not implement the Venstar discovery protocol. It is assumed that you know the IP address or FQDN of your thermostat(s).
## Testing
```bash
$ python venstarcolortouch 192.168.1.252
Testing with IP: 192.168.1.252
Login successful. API: 5 Type: residential
Was able to get info:{u'spacetemp': 67.0, u'schedulepart': 255, u'dehum_setpoint': 0, u'away': 0, u'cooltempmax': 99.0, u'cooltemp': 78.0, u'tempunits': 0, u'state': 1, u'schedule': 0, u'hum': 0, u'heattemp': 75.0, u'hum_setpoint': 36, u'fan': 0, u'hum_active': 99, u'heattempmax': 99.0, u'cooltempmin': 35.0, u'name': u'DebtRidge', u'mode': 1, u'heattempmin': 35.0, u'availablemodes': 0, u'fanstate': 1, u'setpointdelta': 2.0}
Name is MyHouse
Fan is 0
Heat setpoint is 75.0
Cool setpoint is 78.0
Was able to get sensors:{u'sensors': [{u'hum': 36, u'name': u'Thermostat', u'temp': 67.0}, {u'name': u'Outdoor', u'temp': 0.0}]}
Indoor temp is 67.0 and humidity is 36
Runtimes: {u'cool1': 0, u'cool2': 0, u'ts': 1429574400, u'fc': 0, u'heat2': 0, u'heat1': 0, u'aux2': 0, u'aux1': 0}
Path is: /control
set_control Success!
Heat setpoint is 60.0
Cool setpoint is 90.0
Path is: /control
set_control Success!
Heat setpoint is 75.0
Cool setpoint is 78.0
```
## Usage
```Python
class VenstarColorTouch:
def __init__(self, addr, timeout):
```
Class instantiation requires an IP address or hostname with an optional timeout.
```Python
ct = venstarcolortouch.VenstarColorTouch(a, timeout=5)
if ct.login() is True:
print("Login successful. API: {0} Type: {1}".format(ct._api_ver,ct._type))
```
The login() function does not really log in, but it does confirm communication and that the API version is recent enough.
## API
API calls use the following constants:
```Python
MODE_OFF
MODE_HEAT
MODE_COOL
MODE_AUTO
STATE_IDLE
STATE_HEATING
STATE_COOLING
STATE_LOCKOUT
STATE_ERROR
FAN_AUTO
FAN_ON
FANSTATE_OFF
FANSTATE_ON
TEMPUNITS_F
TEMPUNITS_C
SECURITY_OFF
SECURITY_ON
SCHED_F
SCHED_C
SCHEDPART_MORNING
SCHEDPART_DAY
SCHEDPART_EVENING
SCHEDPART_NIGHT
SCHEDPART_INACTIVE
AWAY_HOME
AWAY_AWAY
```
### Functions
There are ```update_*``` functions which update local copies of various pieces of data. Then there are ```get_*``` functions for retrieving that data and finally ```set_*``` functions for changing writable settings.
* ```update_info()``` - Update the control state of the thermostat. **Must be called at least once before any set_ functions.**
* ```update_sensors()``` - Update the state of indoor and outdoor temperature sensors.
* ```get_runtimes()``` - Gather runtime data.
* ```get_info()``` - returns a dict of information.
{u'spacetemp',
u'schedulepart',
u'dehum_setpoint',
u'away',
u'cooltempmax',
u'cooltemp',
u'tempunits',
u'state',
u'schedule',
u'hum',
u'heattemp',
u'hum_setpoint',
u'fan',
u'hum_active',
u'heattempmax',
u'cooltempmin',
u'name',
u'mode',
u'heattempmin',
u'availablemodes',
u'fanstate',
u'setpointdelta'}
```python
get_info("heattemp")
```
* ```get_sensor(name, attr)``` Get a specific named sensor's value. In case of duplicate names, the first matching sensor will be returned.
```python
get_sensor("Outdoor", "temp")
```
* ```get_sensor_list(type)``` Get a list of sensor names, optionally filtered by type. Type is one of "Control", "Local", "Outdoor", "Remote", "Return", or "Supply".
```python
get_sensor_list()
get_sensor_list("Remote")
```
* ```get_thermostat_sensor(attr)``` Get a specific thermostat sensor's value.
```python
get_thermostat_sensor("temp")
```
* ```get_outdoor_sensor(attr)``` Get an outdoor sensor's value.
```python
get_outdoor_sensor("temp")```
* ```get_alerts()``` Get any alerts that are registered.
* ```set_setpoints(heattemp, cooltemp)``` Set heattemp/cooltemp.
* ```set_mode(mode)``` Set the thermostat mode.
* MODE_OFF
* MODE_HEAT
* MODE_COOL
* MODE_AUTO
* ```set_fan(fan)``` Set the Fan mode.
* FAN_AUTO
* FAN_ON
* ```set_tempunits(tempunits)``` Set degrees to either Celsius or Fahrenheit
* TEMPUNITS_F
* TEMPUNITS_C
* ```set_away(away)``` Set either Home or Away schedule.
* AWAY_HOME
* AWAY_AWAY
* ```set_schedule(schedule)``` Set Schedule On or Off.
* 0 - off
* 1 - on
* ```set_hum_setpoint(hum_setpoint)``` Set humidifier Setpoint
* ```set_dehum_setpoint(dehum_setpoint)``` Set dehumidifier Setpoint
### T2100 Specific
* ```set_security(security)``` Set the Security mode (whether or not setpoint limits are active).
* SECURITY_OFF
* SECURITY_ON
* ```set_setpoint_limits(sp_max, sp_min)``` Set the maximum and minimum setpoint limits.
%prep
%autosetup -n venstarcolortouch-0.19
%build
%py3_build
%install
%py3_install
install -d -m755 %{buildroot}/%{_pkgdocdir}
if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi
if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi
if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi
if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi
pushd %{buildroot}
if [ -d usr/lib ]; then
find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst
fi
if [ -d usr/lib64 ]; then
find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst
fi
if [ -d usr/bin ]; then
find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst
fi
if [ -d usr/sbin ]; then
find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst
fi
touch doclist.lst
if [ -d usr/share/man ]; then
find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst
fi
popd
mv %{buildroot}/filelist.lst .
mv %{buildroot}/doclist.lst .
%files -n python3-venstarcolortouch -f filelist.lst
%dir %{python3_sitelib}/*
%files help -f doclist.lst
%{_docdir}/*
%changelog
* Tue May 30 2023 Python_Bot