mirror of
https://github.com/CCOSTAN/Home-AssistantConfig.git
synced 2025-02-22 17:06:15 +00:00
246 lines
9.8 KiB
Plaintext
246 lines
9.8 KiB
Plaintext
Metadata-Version: 2.0
|
|
Name: python-nest
|
|
Version: 2.10.0
|
|
Summary: Python API and command line tool for talking to the Nest™ Thermostat
|
|
Home-page: https://github.com/jkoelker/python-nest/
|
|
Author: Jason Kölker
|
|
Author-email: jason@koelker.net
|
|
License: UNKNOWN
|
|
Keywords: nest thermostat
|
|
Platform: UNKNOWN
|
|
Requires-Dist: requests (>=1.0.0)
|
|
Requires-Dist: six (>=1.10.0)
|
|
|
|
=========================================================
|
|
Python API and command line tool for the Nest™ Thermostat
|
|
=========================================================
|
|
|
|
.. image:: https://travis-ci.org/jkoelker/python-nest.svg?branch=master
|
|
:target: https://travis-ci.org/jkoelker/python-nest
|
|
|
|
|
|
Installation
|
|
============
|
|
|
|
.. code-block:: bash
|
|
|
|
[sudo] pip install python-nest
|
|
|
|
|
|
Usage
|
|
=====
|
|
|
|
Module
|
|
------
|
|
|
|
You can import the module as `nest`.
|
|
|
|
.. code-block:: python
|
|
|
|
import nest
|
|
|
|
username = 'joe@user.com'
|
|
password = 'swordfish'
|
|
|
|
napi = nest.Nest(username, password)
|
|
|
|
for structure in napi.structures:
|
|
print 'Structure %s' % structure.name
|
|
print ' Away: %s' % structure.away
|
|
print ' Devices:'
|
|
|
|
for device in structure.devices:
|
|
print ' Device: %s' % device.name
|
|
print ' Temp: %0.1f' % device.temperature
|
|
|
|
# Access advanced structure properties:
|
|
for structure in napi.structures:
|
|
print 'Structure : %s' % structure.name
|
|
print ' Postal Code : %s' % structure.postal_code
|
|
print ' Country : %s' % structure.country_code
|
|
print ' dr_reminder_enabled : %s' % structure.dr_reminder_enabled
|
|
print ' emergency_contact_description : %s' % structure.emergency_contact_description
|
|
print ' emergency_contact_type : %s' % structure.emergency_contact_type
|
|
print ' emergency_contact_phone : %s' % structure.emergency_contact_phone
|
|
print ' enhanced_auto_away_enabled : %s' % structure.enhanced_auto_away_enabled
|
|
print ' eta_preconditioning_active : %s' % structure.eta_preconditioning_active
|
|
print ' house_type : %s' % structure.house_type
|
|
print ' hvac_safety_shutoff_enabled : %s' % structure.hvac_safety_shutoff_enabled
|
|
print ' num_thermostats : %s' % structure.num_thermostats
|
|
print ' measurement_scale : %s' % structure.measurement_scale
|
|
print ' renovation_date : %s' % structure.renovation_date
|
|
print ' structure_area : %s' % structure.structure_area
|
|
|
|
# Access advanced device properties:
|
|
for device in structure.devices:
|
|
print ' Device: %s' % device.name
|
|
print ' Where: %s' % device.where
|
|
print ' Mode : %s' % device.mode
|
|
print ' Fan : %s' % device.fan
|
|
print ' Temp : %0.1fC' % device.temperature
|
|
print ' Humidity : %0.1f%%' % device.humidity
|
|
print ' Target : %0.1fC' % device.target
|
|
print ' Away Heat: %0.1fC' % device.away_temperature[0]
|
|
print ' Away Cool: %0.1fC' % device.away_temperature[1]
|
|
|
|
print ' hvac_ac_state : %s' % device.hvac_ac_state
|
|
print ' hvac_cool_x2_state : %s' % device.hvac_cool_x2_state
|
|
print ' hvac_heater_state : %s' % device.hvac_heater_state
|
|
print ' hvac_aux_heater_state : %s' % device.hvac_aux_heater_state
|
|
print ' hvac_heat_x2_state : %s' % device.hvac_heat_x2_state
|
|
print ' hvac_heat_x3_state : %s' % device.hvac_heat_x3_state
|
|
print ' hvac_alt_heat_state : %s' % device.hvac_alt_heat_state
|
|
print ' hvac_alt_heat_x2_state: %s' % device.hvac_alt_heat_x2_state
|
|
print ' hvac_emer_heat_state : %s' % device.hvac_emer_heat_state
|
|
|
|
print ' online : %s' % device.online
|
|
print ' last_ip : %s' % device.last_ip
|
|
print ' local_ip : %s' % device.local_ip
|
|
print ' last_connection : %s' % device.last_connection
|
|
|
|
print ' error_code : %s' % device.error_code
|
|
print ' battery_level : %s' % device.battery_level
|
|
|
|
# The Nest object can also be used as a context manager
|
|
with nest.Nest(username, password) as napi:
|
|
for device in napi.devices:
|
|
device.temperature = 23
|
|
|
|
# Weather data is also available under structure or device
|
|
# The api is the same from either
|
|
|
|
structure = napi.structures[0]
|
|
time_str = structure.weather.current.datetime.strftime('%Y-%m-%d %H:%M:%S')
|
|
print 'Current Weather at %s:' % time_str
|
|
print ' Condition: %s' % structure.weather.current.condition
|
|
print ' Temperature: %s' % structure.weather.current.temperature
|
|
print ' Humidity: %s' % structure.weather.current.humidity
|
|
print ' Wind Dir: %s' % structure.weather.current.wind.direction
|
|
print ' Wind Azimuth: %s' % structure.weather.current.wind.azimuth
|
|
print ' Wind Speed: %s' % structure.weather.current.wind.kph
|
|
|
|
# NOTE: Hourly forecasts do not contain a "contidion" its value is `None`
|
|
# Wind Speed is likwise `None` as its generally not reported
|
|
print 'Hourly Forcast:'
|
|
for f in structure.weather.hourly:
|
|
print ' %s:' % f.datetime.strftime('%Y-%m-%d %H:%M:%S')
|
|
print ' Temperature: %s' % f.temperature
|
|
print ' Humidity: %s' % f.humidity
|
|
print ' Wind Dir: %s' % f.wind.direction
|
|
print ' Wind Azimuth: %s' % f.wind.azimuth
|
|
|
|
|
|
# NOTE: Daily forecasts temperature is a tuple of (low, high)
|
|
print 'Daily Forcast:'
|
|
for f in structure.weather.daily:
|
|
print ' %s:' % f.datetime.strftime('%Y-%m-%d %H:%M:%S')
|
|
print ' Condition: %s' % structure.weather.current.condition
|
|
print ' Low: %s' % f.temperature[0]
|
|
print ' High: %s' % f.temperature[1]
|
|
print ' Humidity: %s' % f.humidity
|
|
print ' Wind Dir: %s' % f.wind.direction
|
|
print ' Wind Azimuth: %s' % f.wind.azimuth
|
|
print ' Wind Speed: %s' % structure.weather.current.wind.kph
|
|
|
|
|
|
# NOTE: By default all datetime objects are timezone unaware (UTC)
|
|
# By passing `local_time=True` to the `Nest` object datetime objects
|
|
# will be converted to the timezone reported by nest. If the `pytz`
|
|
# module is installed those timezone objects are used, else one is
|
|
# synthesized from the nest data
|
|
napi = nest.Nest(username, password, local_time=True)
|
|
print napi.structures[0].weather.current.datetime.tzinfo
|
|
|
|
|
|
In the API all temperature values are in degrees celsius. Helper functions
|
|
for conversion are in the `utils` module:
|
|
|
|
|
|
.. code-block:: python
|
|
|
|
from nest import utils as nest_utils
|
|
temp = 23.5
|
|
fahrenheit = nest_utils.c_to_f(temp)
|
|
temp == nest_utils.f_to_c(fahrenheit)
|
|
|
|
|
|
The utils function use `decimal.Decimal` to ensure precision.
|
|
|
|
For "advanced" usage such as token caching, use the source, luke!
|
|
|
|
Command line
|
|
------------
|
|
|
|
.. code-block:: bash
|
|
|
|
usage: nest [-h] [--conf FILE] [--token-cache TOKEN_CACHE_FILE] [-t TOKEN]
|
|
[-u USER] [-p PASSWORD] [-c] [-s SERIAL] [-i INDEX]
|
|
{temp,fan,mode,away,target,humid,target_hum,show} ...
|
|
|
|
Command line interface to Nest™ Thermostats
|
|
|
|
positional arguments:
|
|
{temp,fan,mode,away,target,humid,target_hum,show}
|
|
command help
|
|
temp show/set temperature
|
|
fan set fan "on" or "auto"
|
|
mode show/set current mode
|
|
away show/set current away status
|
|
target show current temp target
|
|
humid show current humidity
|
|
target_hum show/set target humidity
|
|
specify target humidity value or auto to auto-select a
|
|
humidity based on outside temp
|
|
show show everything
|
|
|
|
|
|
|
|
optional arguments:
|
|
-h, --help show this help message and exit
|
|
--conf FILE config file (default ~/.config/nest/config)
|
|
--token-cache TOKEN_CACHE_FILE
|
|
auth access token
|
|
-t TOKEN, --token TOKEN
|
|
auth access token cache file
|
|
-u USER, --user USER username for nest.com
|
|
-p PASSWORD, --password PASSWORD
|
|
password for nest.com
|
|
-c, --celsius use celsius instead of farenheit
|
|
-s SERIAL, --serial SERIAL
|
|
optional, specify serial number of nest thermostat to
|
|
talk to
|
|
-i INDEX, --index INDEX
|
|
optional, specify index number of nest to talk to
|
|
|
|
examples:
|
|
# If your nest is not in range mode
|
|
nest --user joe@user.com --password swordfish temp 73
|
|
# If your nest is in range mode
|
|
nest --user joe@user.com --password swordfish temp 66 73
|
|
|
|
nest --user joe@user.com --password swordfish fan --auto
|
|
nest --user joe@user.com --password swordfish target_hum 35
|
|
|
|
|
|
A configuration file can also be specified to prevent username/password repitition.
|
|
|
|
|
|
.. code-block:: ini
|
|
|
|
[DEFAULT]
|
|
user = joe@user.com
|
|
password = swordfish
|
|
token_cache = ~/.config/nest/cache
|
|
|
|
|
|
The `[DEFAULT]` section may also be named `[nest]` for convience.
|
|
|
|
|
|
History
|
|
=======
|
|
|
|
This module was originally a fork of `nest_thermostat <https://github.com/FiloSottile/nest_thermostat>`
|
|
which was a fork of `pynest <https://github.com/smbaker/pynest`
|
|
|
|
|