Updated external content (Jenkins build 1677)

pull/2219/head
openHAB Build Server 2023-09-07 05:34:30 +00:00
parent 30768aec73
commit c065bc4cfc
9 changed files with 23 additions and 921 deletions

File diff suppressed because one or more lines are too long

View File

@ -3,7 +3,7 @@ id: nest
label: Nest
title: Nest - Bindings
type: binding
description: "The Nest binding integrates devices by [Nest](https://store.google.com/us/category/connected_home?) using the [Smart Device Management](https://developers.google.com/nest/device-access/api) (SDM) API and the Works with Nest (WWN) API."
description: "The Nest binding integrates devices by [Nest](https://store.google.com/us/category/connected_home?) using the [Smart Device Management](https://developers.google.com/nest/device-access/api) (SDM) API."
since: 3x
logo: images/addons/nest.png
install: auto
@ -15,52 +15,42 @@ install: auto
# Nest Binding
The Nest binding integrates devices by [Nest](https://store.google.com/us/category/connected_home?) using the [Smart Device Management](https://developers.google.com/nest/device-access/api) (SDM) API and the Works with Nest (WWN) API.
The Nest binding integrates devices by [Nest](https://store.google.com/us/category/connected_home?) using the [Smart Device Management](https://developers.google.com/nest/device-access/api) (SDM) API.
To be able to use the SDM API it is required to first [register](https://developers.google.com/nest/device-access/registration) and pay a US$5 non-refundable registration fee.
It is also possible to use the older WWN API with this binding.
For this you need to have the account details of a previously registered WWN API account.
Another requirement is that you have not yet migrated your Nest account to a Google account (which is irreversible).
It is no longer possible to register new WWN API accounts because the WWN API runs in maintenance mode.
See also [What's happening at Nest?](https://nest.com/whats-happening/).
Because the SDM and WWN APIs run on servers in the cloud, a connection with the Internet is required for sending and receiving information.
Because the SDM API runs on servers in the cloud, a connection with the Internet is required for sending and receiving information.
The binding uses HTTPS to connect to the APIs using port 443.
When using the WWN API, the binding also connects to servers on port 9553.
So make sure outbound connections to these ports are not blocked by a firewall.
> Note: This binding no longer supports the Works with Nest (WWN) API because it has been discontinued by Google.
See [Support for Works with Nest ending](https://support.google.com/googlenest/answer/9293712).
## Supported Things
The table below lists the Nest binding thing types:
| Things | Description | SDM Thing Type | WWN Thing Type |
|-----------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------|----------------|--------------------|
| Nest Account (SDM, WWN) | An account for using the Nest (SDM/WWN) REST API | sdm_account | wwn_account |
| Nest Cam (Indoor, IQ, Outdoor), Dropcam | A Nest Cam registered with your account | sdm_camera | wwn_camera |
| Nest Hello Doorbell | A Nest Doorbell registered with your account | sdm_doorbell | wwn_camera |
| Nest Hub (Max) | A Nest Display registered with your account | sdm_display | wwn_camera |
| Nest Protect | The smoke detector/Nest Protect for the account | | wwn_smoke_detector |
| Nest Thermostat (E) | A Thermostat to control the various aspects of the house's HVAC system | sdm_thermostat | wwn_thermostat |
| Structure | The Nest structure defines the house the account has setup on Nest. You will only have more than one structure if you have more than one house | | wwn_structure |
| Things | Description | Thing Type |
|-----------------------------------------|------------------------------------------------------------------------|----------------|
| Nest Account | An account for using the Nest SDM REST API | sdm_account |
| Nest Cam (Indoor, IQ, Outdoor), Dropcam | A Nest Cam registered with your account | sdm_camera |
| Nest Hello Doorbell | A Nest Doorbell registered with your account | sdm_doorbell |
| Nest Hub (Max) | A Nest Display registered with your account | sdm_display |
| Nest Thermostat (E) | A Thermostat to control the various aspects of the house's HVAC system | sdm_thermostat |
The SDM API currently does not support Nest Protect devices.
There are no structure Things when using the SDM API, because the SDM API does not support setting the Home/Away status like the WWN API does.
To use one of the Nest APIs, add the corresponding Account Thing using the UI and configure the required parameters.
To use the Nest SDM API, add an Account Thing using the UI and configure the required parameters.
After configuring an Account Thing, you can use it to discover the connected devices which are then added the Inbox.
## SDM Account Configuration
## Account Configuration
### Google Account Requirement
To be able to use the SDM API it is required that you use a Google Account with your Nest devices.
If you still use the WWN API, you can no longer use the WWN API after migrating to a Google Account.
So if you have not yet migrated your account, check that all the functionality you require is provided by the SDM API and SDM Things in the binding.
Most notably, there is no support for the Nest Protect in the SDM API and you cannot change your Home/Away status.
To migrate to a Google account, follow the migration steps in the [Nest accounts FAQ](https://support.google.com/googlenest/answer/9297676?co=GENIE.Platform%3DiOS&hl=en&oco=0#accountmigration&accountmigration1&#accountmigration2&#accountmigration3&zippy=%2Chow-do-i-migrate-my-account)
### SDM Configuration Parameters
### Configuration Parameters
These parameters configure which SDM project is accessed using the SDM API and configure the OAuth 2.0 client details used for accessing the project.
@ -198,22 +188,17 @@ The created subscription can also be monitored using the Google Cloud Platform C
Decreasing the `refreshInterval` may cause issues when you have a lot of devices connected because it may cause API rate limits to be exceeded.
You may want to decrease the `refreshInterval` for a Thermostat if Pub/Sub events have not been configured to provide state updating.
## WWN Account Configuration
To configure the binding to use the WWN API, add a new "Nest WWN Account" Thing in the UI and enter the **Product ID**, **Product Secret** and **Access Token** of an existing WWN account as configuration parameters.
It is no longer possible to register new WWN accounts with Nest because the WWN API runs in maintenance mode.
## Discovery
The binding will discover all Nest Things from your account when you add and configure a Nest SDM or WWN Account Thing.
The binding will discover all Nest Things from your account when you add and configure a Nest Account Thing.
## Channels
### SDM/WWN Account Channels
### Account Channels
The account Thing Types do not have any channels.
### SDM Camera/Display/Doorbell Channels
### Camera/Display/Doorbell Channels
The state of these channels is based on Pub/Sub events sent by the SDM API.
So make sure the Pub/Sub account details are properly configured in the `sdm_account`.
@ -237,7 +222,7 @@ The `chime_event` group channels only exist for doorbell Things.
Each image channel has the `imageWidth` and `imageHeight` configuration parameters that can be used for configuring the image size in pixels.
The maximum camera resolution is listed as `maxImageResolution` property in the Thing properties.
### SDM Thermostat Channels
### Thermostat Channels
| Channel Type ID | Item Type | Description | Read Write |
|---------------------|----------------------|------------------------------------------------------------------------|:----------:|
@ -257,107 +242,6 @@ The maximum camera resolution is listed as `maxImageResolution` property in the
The `fan_timer_mode` channel has a `fanTimerDuration` configuration parameter that can be used for configuring how long the fan is ON before it is switched OFF (1s to 43200s).
Similarly, when a DateTime command is sent to the `fan_timer_timeout` channel, the fan timer is switched ON and runs until the timestamp in the command (min now+1s, max now+43200s).
### WWN Camera Channels
#### Camera Group Channels
Information about the camera.
| Channel Type ID | Item Type | Description | Read Write |
|-----------------------|-----------|---------------------------------------------------|:----------:|
| app_url | String | The app URL to see the camera | R |
| audio_input_enabled | Switch | If the audio input is currently enabled | R |
| last_online_change | DateTime | Timestamp of the last online status change | R |
| public_share_enabled | Switch | If public sharing is currently enabled | R |
| public_share_url | String | The URL to see the public share of the camera | R |
| snapshot_url | String | The URL to use for a snapshot of the video stream | R |
| streaming | Switch | If the camera is currently streaming | R/W |
| video_history_enabled | Switch | If the video history is currently enabled | R |
| web_url | String | The web URL to see the camera | R |
#### Last Event Group Channels
Information about the last camera event (requires Nest Aware subscription).
| Channel Type ID | Item Type | Description | Read Write |
|--------------------|-----------|------------------------------------------------------------------------------------|:----------:|
| activity_zones | String | Identifiers for activity zones that detected the event (comma separated) | R |
| animated_image_url | String | The URL showing an animated image for the camera event | R |
| app_url | String | The app URL for the camera event, allows you to see the camera event in an app | R |
| end_time | DateTime | Timestamp when the camera event ended | R |
| has_motion | Switch | If motion was detected in the camera event | R |
| has_person | Switch | If a person was detected in the camera event | R |
| has_sound | Switch | If sound was detected in the camera event | R |
| image_url | String | The URL showing an image for the camera event | R |
| start_time | DateTime | Timestamp when the camera event started | R |
| urls_expire_time | DateTime | Timestamp when the camera event URLs expire | R |
| web_url | String | The web URL for the camera event, allows you to see the camera event in a web page | R |
### WWN Smoke Detector Channels
| Channel Type ID | Item Type | Description | Read Write |
|-----------------------|-----------|-----------------------------------------------------------------------------------|:----------:|
| co_alarm_state | String | The carbon monoxide alarm state of the Nest Protect (OK, EMERGENCY, WARNING) | R |
| last_connection | DateTime | Timestamp of the last successful interaction with Nest | R |
| last_manual_test_time | DateTime | Timestamp of the last successful manual test | R |
| low_battery | Switch | Reports whether the battery of the Nest protect is low (if it is battery powered) | R |
| manual_test_active | Switch | Manual test active at the moment | R |
| smoke_alarm_state | String | The smoke alarm state of the Nest Protect (OK, EMERGENCY, WARNING) | R |
| ui_color_state | String | The current color of the ring on the smoke detector (GRAY, GREEN, YELLOW, RED) | R |
### WWN Structure Channels
| Channel Type ID | Item Type | Description | Read Write |
|------------------------------|-----------|--------------------------------------------------------------------------------------------------------|:----------:|
| away | String | Away state of the structure (HOME, AWAY) | R/W |
| country_code | String | Country code of the structure ([ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)) | R |
| co_alarm_state | String | Carbon Monoxide alarm state (OK, EMERGENCY, WARNING) | R |
| eta_begin | DateTime | Estimated time of arrival at home, will setup the heat to turn on and be warm | R |
| peak_period_end_time | DateTime | Peak period end for the Rush Hour Rewards program | R |
| peak_period_start_time | DateTime | Peak period start for the Rush Hour Rewards program | R |
| postal_code | String | Postal code of the structure | R |
| rush_hour_rewards_enrollment | Switch | If rush hour rewards system is enabled or not | R |
| security_state | String | Security state of the structure (OK, DETER) | R |
| smoke_alarm_state | String | Smoke alarm state (OK, EMERGENCY, WARNING) | R |
| time_zone | String | The time zone for the structure ([IANA time zone format](https://www.iana.org/time-zones)) | R |
### WWN Thermostat Channels
| Channel Type ID | Item Type | Description | Read Write |
|-----------------------------|----------------------|----------------------------------------------------------------------------------------|:----------:|
| can_cool | Switch | If the thermostat can actually turn on cooling | R |
| can_heat | Switch | If the thermostat can actually turn on heating | R |
| eco_max_set_point | Number:Temperature | The eco range max set point temperature | R |
| eco_min_set_point | Number:Temperature | The eco range min set point temperature | R |
| fan_timer_active | Switch | If the fan timer is engaged | R/W |
| fan_timer_duration | Number:Time | Length of time that the fan is set to run (15, 30, 45, 60, 120, 240, 480, 960 minutes) | R/W |
| fan_timer_timeout | DateTime | Timestamp when the fan stops running | R |
| has_fan | Switch | If the thermostat can control the fan | R |
| has_leaf | Switch | If the thermostat is currently in a leaf mode | R |
| humidity | Number:Dimensionless | Indicates the current relative humidity | R |
| last_connection | DateTime | Timestamp of the last successful interaction with Nest | R |
| locked | Switch | If the thermostat has the temperature locked to only be within a set range | R |
| locked_max_set_point | Number:Temperature | The locked range max set point temperature | R |
| locked_min_set_point | Number:Temperature | The locked range min set point temperature | R |
| max_set_point | Number:Temperature | The max set point temperature | R/W |
| min_set_point | Number:Temperature | The min set point temperature | R/W |
| mode | String | Current mode of the Nest thermostat (HEAT, COOL, HEAT_COOL, ECO, OFF) | R/W |
| previous_mode | String | The previous mode of the Nest thermostat (HEAT, COOL, HEAT_COOL, ECO, OFF) | R |
| state | String | The active state of the Nest thermostat (HEATING, COOLING, OFF) | R |
| temperature | Number:Temperature | Current temperature | R |
| time_to_target | Number:Time | Time left to the target temperature approximately | R |
| set_point | Number:Temperature | The set point temperature | R/W |
| sunlight_correction_active | Switch | If sunlight correction is active | R |
| sunlight_correction_enabled | Switch | If sunlight correction is enabled | R |
| using_emergency_heat | Switch | If the system is currently using emergency heat | R |
Note that the Nest API rounds Thermostat values so they will differ from what shows up in the Nest App.
The Nest API applies the following rounding:
- degrees Celsius to 0.5 degrees
- degrees Fahrenheit to whole degrees
- humidity to 5%
## Example
You can use the discovery functionality of the binding to obtain the deviceId and structureId values for defining Nest things in files.
@ -415,93 +299,3 @@ Number:Temperature Thermostat_Target_temperature "Target Temperature [%.1f %un
Number:Temperature Thermostat_Temperature_Cool "Temperature Cool [%.1f %unit%]" { channel="nest:sdm_thermostat:demo_sdm_account:living_thermostat:temperature_cool" }
Number:Temperature Thermostat_Temperature_Heat "Temperature Heat [%.1f %unit%]" { channel="nest:sdm_thermostat:demo_sdm_account:living_thermostat:temperature_heat" }
```
### wwn-demo.things
```java
Bridge nest:wwn_account:demo_wwn_account [ productId="8fdf9885-ca07-4252-1aa3-f3d5ca9589e0", productSecret="QITLR3iyUlWaj9dbvCxsCKp4f", accessToken="c.6rse1xtRk2UANErcY0XazaqPHgbvSSB6owOrbZrZ6IXrmqhsr9QTmcfaiLX1l0ULvlI5xLp01xmKeiojHqozLQbNM8yfITj1LSdK28zsUft1aKKH2mDlOeoqZKBdVIsxyZk4orH0AvKEZ5aY" ] {
Thing wwn_camera fish_cam [ deviceId="qw0NNE8ruxA9AGJkTaFH3KeUiJaONWKiH9Gh3RwwhHClonIexTtufQ" ]
Thing wwn_smoke_detector hallway_smoke [ deviceId="Tzvibaa3lLKnHpvpi9OQeCI_z5rfkBAV" ]
Thing wwn_structure home [ structureId="20wKjydArmMV3kOluTA7JRcZg8HKBzTR-G_2nRXuIN1Bd6laGLOJQw" ]
Thing wwn_thermostat living_thermostat [ deviceId="ZqAKzSv6TO6PjBnOCXf9LSI_z5rfkBAV" ]
}
```
### wwn-demo.items
```java
/* WWN Camera */
String Cam_App_URL "App URL [%s]" { channel="nest:wwn_camera:demo_wwn_account:fish_cam:camera#app_url" }
Switch Cam_Audio_Input_Enabled "Audio Input Enabled" { channel="nest:wwn_camera:demo_wwn_account:fish_cam:camera#audio_input_enabled" }
DateTime Cam_Last_Online_Change "Last Online Change [%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS]" { channel="nest:wwn_camera:demo_wwn_account:fish_cam:camera#last_online_change" }
String Cam_Snapshot_URL "Snapshot URL [%s]" { channel="nest:wwn_camera:demo_wwn_account:fish_cam:camera#snapshot_url" }
Switch Cam_Streaming "Streaming" { channel="nest:wwn_camera:demo_wwn_account:fish_cam:camera#streaming" }
Switch Cam_Public_Share_Enabled "Public Share Enabled" { channel="nest:wwn_camera:demo_wwn_account:fish_cam:camera#public_share_enabled" }
String Cam_Public_Share_URL "Public Share URL [%s]" { channel="nest:wwn_camera:demo_wwn_account:fish_cam:camera#public_share_url" }
Switch Cam_Video_History_Enabled "Video History Enabled" { channel="nest:wwn_camera:demo_wwn_account:fish_cam:camera#video_history_enabled" }
String Cam_Web_URL "Web URL [%s]" { channel="nest:wwn_camera:demo_wwn_account:fish_cam:camera#web_url" }
String Cam_LE_Activity_Zones "Last Event Activity Zones [%s]" { channel="nest:wwn_camera:demo_wwn_account:fish_cam:last_event#activity_zones" }
String Cam_LE_Animated_Image_URL "Last Event Animated Image URL [%s]" { channel="nest:wwn_camera:demo_wwn_account:fish_cam:last_event#animated_image_url" }
String Cam_LE_App_URL "Last Event App URL [%s]" { channel="nest:wwn_camera:demo_wwn_account:fish_cam:last_event#app_url" }
DateTime Cam_LE_End_Time "Last Event End Time [%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS]" { channel="nest:wwn_camera:demo_wwn_account:fish_cam:last_event#end_time" }
Switch Cam_LE_Has_Motion "Last Event Has Motion" { channel="nest:wwn_camera:demo_wwn_account:fish_cam:last_event#has_motion" }
Switch Cam_LE_Has_Person "Last Event Has Person" { channel="nest:wwn_camera:demo_wwn_account:fish_cam:last_event#has_person" }
Switch Cam_LE_Has_Sound "Last Event Has Sound" { channel="nest:wwn_camera:demo_wwn_account:fish_cam:last_event#has_sound" }
String Cam_LE_Image_URL "Last Event Image URL [%s]" { channel="nest:wwn_camera:demo_wwn_account:fish_cam:last_event#image_url" }
DateTime Cam_LE_Start_Time "Last Event Start Time [%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS]" { channel="nest:wwn_camera:demo_wwn_account:fish_cam:last_event#start_time" }
DateTime Cam_LE_URLs_Expire_Time "Last Event URLs Expire Time [%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS]" { channel="nest:wwn_camera:demo_wwn_account:fish_cam:last_event#urls_expire_time" }
String Cam_LE_Web_URL "Last Event Web URL [%s]" { channel="nest:wwn_camera:demo_wwn_account:fish_cam:last_event#web_url" }
/* WWN Smoke Detector */
String Smoke_CO_Alarm "CO Alarm [%s]" { channel="nest:wwn_smoke_detector:demo_wwn_account:hallway_smoke:co_alarm_state" }
Switch Smoke_Battery_Low "Battery Low" { channel="nest:wwn_smoke_detector:demo_wwn_account:hallway_smoke:low_battery" }
Switch Smoke_Manual_Test "Manual Test" { channel="nest:wwn_smoke_detector:demo_wwn_account:hallway_smoke:manual_test_active" }
DateTime Smoke_Last_Connection "Last Connection [%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS]" { channel="nest:wwn_smoke_detector:demo_wwn_account:hallway_smoke:last_connection" }
DateTime Smoke_Last_Manual_Test "Last Manual Test [%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS]" { channel="nest:wwn_smoke_detector:demo_wwn_account:hallway_smoke:last_manual_test_time" }
String Smoke_Smoke_Alarm "Smoke Alarm [%s]" { channel="nest:wwn_smoke_detector:demo_wwn_account:hallway_smoke:smoke_alarm_state" }
String Smoke_UI_Color "UI Color [%s]" { channel="nest:wwn_smoke_detector:demo_wwn_account:hallway_smoke:ui_color_state" }
/* WWN Thermostat */
Switch Thermostat_Can_Cool "Can Cool" { channel="nest:wwn_thermostat:demo_wwn_account:living_thermostat:can_cool" }
Switch Thermostat_Can_Heat "Can Heat" { channel="nest:wwn_thermostat:demo_wwn_account:living_thermostat:can_heat" }
Number:Temperature Therm_EMaxSP "Eco Max Set Point [%.1f %unit%]" { channel="nest:wwn_thermostat:demo_wwn_account:living_thermostat:eco_max_set_point" }
Number:Temperature Therm_EMinSP "Eco Min Set Point [%.1f %unit%]" { channel="nest:wwn_thermostat:demo_wwn_account:living_thermostat:eco_min_set_point" }
Switch Thermostat_FT_Active "Fan Timer Active" { channel="nest:wwn_thermostat:demo_wwn_account:living_thermostat:fan_timer_active" }
Number:Time Thermostat_FT_Duration "Fan Timer Duration [%d %unit%]" { channel="nest:wwn_thermostat:demo_wwn_account:living_thermostat:fan_timer_duration" }
DateTime Thermostat_FT_Timeout "Fan Timer Timeout [%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS]" { channel="nest:wwn_thermostat:demo_wwn_account:living_thermostat:fan_timer_timeout" }
Switch Thermostat_Has_Fan "Has Fan" { channel="nest:wwn_thermostat:demo_wwn_account:living_thermostat:has_fan" }
Switch Thermostat_Has_Leaf "Has Leaf" { channel="nest:wwn_thermostat:demo_wwn_account:living_thermostat:has_leaf" }
Number:Dimensionless Therm_Hum "Humidity [%.1f %unit%]" { channel="nest:wwn_thermostat:demo_wwn_account:living_thermostat:humidity" }
DateTime Thermostat_Last_Conn "Last Connection [%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS]" { channel="nest:wwn_thermostat:demo_wwn_account:living_thermostat:last_connection" }
Switch Thermostat_Locked "Locked" { channel="nest:wwn_thermostat:demo_wwn_account:living_thermostat:locked" }
Number:Temperature Therm_LMaxSP "Locked Max Set Point [%.1f %unit%]" { channel="nest:wwn_thermostat:demo_wwn_account:living_thermostat:locked_max_set_point" }
Number:Temperature Therm_LMinSP "Locked Min Set Point [%.1f %unit%]" { channel="nest:wwn_thermostat:demo_wwn_account:living_thermostat:locked_min_set_point" }
Number:Temperature Therm_Max_SP "Max Set Point [%.1f %unit%]" { channel="nest:wwn_thermostat:demo_wwn_account:living_thermostat:max_set_point" }
Number:Temperature Therm_Min_SP "Min Set Point [%.1f %unit%]" { channel="nest:wwn_thermostat:demo_wwn_account:living_thermostat:min_set_point" }
String Thermostat_Mode "Mode [%s]" { channel="nest:wwn_thermostat:demo_wwn_account:living_thermostat:mode" }
String Thermostat_Previous_Mode "Previous Mode [%s]" { channel="nest:wwn_thermostat:demo_wwn_account:living_thermostat:previous_mode" }
String Thermostat_State "State [%s]" { channel="nest:wwn_thermostat:demo_wwn_account:living_thermostat:state" }
Number:Temperature Thermostat_SP "Set Point [%.1f %unit%]" { channel="nest:wwn_thermostat:demo_wwn_account:living_thermostat:set_point" }
Switch Thermostat_Sunlight_CA "Sunlight Correction Active" { channel="nest:wwn_thermostat:demo_wwn_account:living_thermostat:sunlight_correction_active" }
Switch Thermostat_Sunlight_CE "Sunlight Correction Enabled" { channel="nest:wwn_thermostat:demo_wwn_account:living_thermostat:sunlight_correction_enabled" }
Number:Temperature Therm_Temp "Temperature [%.1f %unit%]" { channel="nest:wwn_thermostat:demo_wwn_account:living_thermostat:temperature" }
Number:Time Therm_Time_To_Target "Time To Target [%d %unit%]" { channel="nest:wwn_thermostat:demo_wwn_account:living_thermostat:time_to_target" }
Switch Thermostat_Using_Em_Heat "Using Emergency Heat" { channel="nest:wwn_thermostat:demo_wwn_account:living_thermostat:using_emergency_heat" }
/* WWN Structure */
String Home_Away "Away [%s]" { channel="nest:wwn_structure:demo_wwn_account:home:away" }
String Home_Country_Code "Country Code [%s]" { channel="nest:wwn_structure:demo_wwn_account:home:country_code" }
String Home_CO_Alarm_State "CO Alarm State [%s]" { channel="nest:wwn_structure:demo_wwn_account:home:co_alarm_state" }
DateTime Home_ETA "ETA [%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS]" { channel="nest:wwn_structure:demo_wwn_account:home:eta_begin" }
DateTime Home_PP_End_Time "PP End Time [%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS]" { channel="nest:wwn_structure:demo_wwn_account:home:peak_period_end_time" }
DateTime Home_PP_Start_Time "PP Start Time [%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS]" { channel="nest:wwn_structure:demo_wwn_account:home:peak_period_start_time" }
String Home_Postal_Code "Postal Code [%s]" { channel="nest:wwn_structure:demo_wwn_account:home:postal_code" }
Switch Home_Rush_Hour_Rewards "Rush Hour Rewards" { channel="nest:wwn_structure:demo_wwn_account:home:rush_hour_rewards_enrollment" }
String Home_Security_State "Security State [%s]" { channel="nest:wwn_structure:demo_wwn_account:home:security_state" }
String Home_Smoke_Alarm_State "Smoke Alarm State [%s]" { channel="nest:wwn_structure:demo_wwn_account:home:smoke_alarm_state" }
String Home_Time_Zone "Time Zone [%s]" { channel="nest:wwn_structure:demo_wwn_account:home:time_zone" }
```
## Attribution
This documentation contains parts written by John Cocula which were copied from the 1.0 Nest binding.

View File

@ -215,8 +215,8 @@ String Network_AdapterName "Adapter name" <network> { chann
String Network_Name "Name" <network> { channel="systeminfo:computer:work:network#networkName" }
String Network_IP "IP address" <network> { channel="systeminfo:computer:work:network#ip" }
String Network_Mac "Mac address" <network> { channel="systeminfo:computer:work:network#mac" }
Number Network_DataSent "Data sent" <flowpipe> { channel="systeminfo:computer:work:network#dataSent" }
Number Network_DataReceived "Data received" <returnpipe> { channel="systeminfo:computer:work:network#dataReceived" }
Number:DataAmount Network_DataSent "Data sent" <flowpipe> { channel="systeminfo:computer:work:network#dataSent" }
Number:DataAmount Network_DataReceived "Data received" <returnpipe> { channel="systeminfo:computer:work:network#dataReceived" }
Number Network_PacketsSent "Packets sent" <flowpipe> { channel="systeminfo:computer:work:network#packetsSent" }
Number Network_PacketsReceived "Packets received" <returnpipe> { channel="systeminfo:computer:work:network#packetsReceived" }

View File

@ -1,13 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<thing:thing-descriptions bindingId="nest"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:thing="https://openhab.org/schemas/thing-description/v1.0.0"
xsi:schemaLocation="https://openhab.org/schemas/thing-description/v1.0.0 https://openhab.org/schemas/thing-description-1.0.0.xsd">
<bridge-type id="wwn_account">
<label>Nest WWN Account</label>
<description>An account for using the Works with Nest (WWN) API</description>
<config-description-ref uri="thing-type:nest:wwn_account"/>
</bridge-type>
</thing:thing-descriptions>

View File

@ -1,32 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<thing:thing-descriptions bindingId="nest"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:thing="https://openhab.org/schemas/thing-description/v1.0.0"
xsi:schemaLocation="https://openhab.org/schemas/thing-description/v1.0.0 https://openhab.org/schemas/thing-description-1.0.0.xsd">
<thing-type id="wwn_camera" listed="false">
<supported-bridge-type-refs>
<bridge-type-ref id="wwn_account"/>
</supported-bridge-type-refs>
<label>Nest Cam</label>
<description>A Nest Camera registered with your WWN account</description>
<channel-groups>
<channel-group id="camera" typeId="WWNCamera"/>
<channel-group id="last_event" typeId="WWNCameraEvent">
<label>Last Event</label>
<description>Information about the last camera event (requires Nest Aware subscription)</description>
</channel-group>
</channel-groups>
<properties>
<property name="vendor">Nest</property>
</properties>
<representation-property>deviceId</representation-property>
<config-description-ref uri="thing-type:nest:wwn_device"/>
</thing-type>
</thing:thing-descriptions>

View File

@ -1,521 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<thing:thing-descriptions bindingId="nest"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:thing="https://openhab.org/schemas/thing-description/v1.0.0"
xsi:schemaLocation="https://openhab.org/schemas/thing-description/v1.0.0 https://openhab.org/schemas/thing-description-1.0.0.xsd">
<!-- Common -->
<channel-type id="WWNLastConnection" advanced="true">
<item-type>DateTime</item-type>
<label>Last Connection</label>
<description>Timestamp of the last successful interaction with Nest</description>
<state readOnly="true"/>
</channel-type>
<!-- Structure -->
<channel-type id="WWNAway">
<item-type>String</item-type>
<label>Away</label>
<description>Away state of the structure</description>
<state>
<options>
<option value="AWAY">Away</option>
<option value="HOME">Home</option>
</options>
</state>
</channel-type>
<channel-type id="WWNCountryCode" advanced="true">
<item-type>String</item-type>
<label>Country Code</label>
<description>Country code of the structure</description>
</channel-type>
<channel-type id="WWNPostalCode" advanced="true">
<item-type>String</item-type>
<label>Postal Code</label>
<description>Postal code of the structure</description>
</channel-type>
<channel-type id="WWNTimeZone">
<item-type>String</item-type>
<label>Time Zone</label>
<description>The time zone for the structure</description>
</channel-type>
<channel-type id="WWNPeakPeriodStartTime" advanced="true">
<item-type>DateTime</item-type>
<label>Peak Period Start Time</label>
<description>Peak period start for the Rush Hour Rewards program</description>
<state readOnly="true"/>
</channel-type>
<channel-type id="WWNPeakPeriodEndTime" advanced="true">
<item-type>DateTime</item-type>
<label>Peak Period End Time</label>
<description>Peak period end for the Rush Hour Rewards program</description>
<state readOnly="true"/>
</channel-type>
<channel-type id="WWNEtaBegin" advanced="true">
<item-type>DateTime</item-type>
<label>ETA</label>
<description>
Estimated time of arrival at home, will setup the heat to turn on and be warm
by the time you arrive
</description>
</channel-type>
<channel-type id="WWNRushHourRewardsEnrollment">
<item-type>Switch</item-type>
<label>Rush Hour Rewards</label>
<description>If rush hour rewards system is enabled or not</description>
<state readOnly="true"/>
</channel-type>
<channel-type id="WWNSecurityState">
<item-type>String</item-type>
<label>Security State</label>
<description>Security state of the structure</description>
<state readOnly="true">
<options>
<option value="OK">ok</option>
<option value="DETER">deter</option>
</options>
</state>
</channel-type>
<!-- Camera -->
<channel-group-type id="WWNCamera">
<label>Camera</label>
<description>Information about the camera</description>
<channels>
<channel id="streaming" typeId="WWNStreaming"/>
<channel id="audio_input_enabled" typeId="WWNAudioInputEnabled"/>
<channel id="public_share_enabled" typeId="WWNPublicShareEnabled"/>
<channel id="video_history_enabled" typeId="WWNVideoHistoryEnabled"/>
<channel id="app_url" typeId="WWNAppUrl"/>
<channel id="snapshot_url" typeId="WWNSnapshotUrl"/>
<channel id="public_share_url" typeId="WWNPublicShareUrl"/>
<channel id="web_url" typeId="WWNWebUrl"/>
<channel id="last_online_change" typeId="WWNLastOnlineChange"/>
</channels>
</channel-group-type>
<channel-type id="WWNAudioInputEnabled" advanced="true">
<item-type>Switch</item-type>
<label>Audio Input Enabled</label>
<description>If the audio input is enabled for this camera</description>
</channel-type>
<channel-type id="WWNVideoHistoryEnabled" advanced="true">
<item-type>Switch</item-type>
<label>Video History Enabled</label>
<description>If the video history is enabled for this camera</description>
</channel-type>
<channel-type id="WWNPublicShareEnabled" advanced="true">
<item-type>Switch</item-type>
<label>Public Share Enabled</label>
<description>If the public sharing of this camera is enabled</description>
</channel-type>
<channel-type id="WWNStreaming">
<item-type>Switch</item-type>
<label>Streaming</label>
<description>If the camera is currently streaming</description>
</channel-type>
<channel-type id="WWNWebUrl">
<item-type>String</item-type>
<label>Web URL</label>
<description>The web URL for the camera, allows you to see the camera in a web page</description>
</channel-type>
<channel-type id="WWNPublicShareUrl">
<item-type>String</item-type>
<label>Public Share URL</label>
<description>The publicly available URL for the camera</description>
</channel-type>
<channel-type id="WWNSnapshotUrl" advanced="true">
<item-type>String</item-type>
<label>Snapshot URL</label>
<description>The URL showing a snapshot of the camera</description>
</channel-type>
<channel-type id="WWNAppUrl" advanced="true">
<item-type>String</item-type>
<label>App URL</label>
<description>The app URL for the camera, allows you to see the camera in an app</description>
</channel-type>
<channel-type id="WWNLastOnlineChange" advanced="true">
<item-type>DateTime</item-type>
<label>Last Online Change</label>
<description>Timestamp of the last online status change</description>
<state readOnly="true"/>
</channel-type>
<channel-group-type id="WWNCameraEvent">
<label>Camera Event</label>
<description>Information about the camera event</description>
<channels>
<channel id="has_motion" typeId="WWNCameraEventHasMotion"/>
<channel id="has_sound" typeId="WWNCameraEventHasSound"/>
<channel id="has_person" typeId="WWNCameraEventHasPerson"/>
<channel id="start_time" typeId="WWNCameraEventStartTime"/>
<channel id="end_time" typeId="WWNCameraEventEndTime"/>
<channel id="urls_expire_time" typeId="WWNCameraEventUrlsExpireTime"/>
<channel id="animated_image_url" typeId="WWNCameraEventAnimatedImageUrl"/>
<channel id="app_url" typeId="WWNCameraEventAppUrl"/>
<channel id="image_url" typeId="WWNCameraEventImageUrl"/>
<channel id="web_url" typeId="WWNCameraEventWebUrl"/>
<channel id="activity_zones" typeId="WWNCameraEventActivityZones"/>
</channels>
</channel-group-type>
<channel-type id="WWNCameraEventHasSound" advanced="true">
<item-type>Switch</item-type>
<label>Has Sound</label>
<description>If sound was detected in the camera event</description>
<state readOnly="true"/>
</channel-type>
<channel-type id="WWNCameraEventHasMotion" advanced="true">
<item-type>Switch</item-type>
<label>Has Motion</label>
<description>If motion was detected in the camera event</description>
<state readOnly="true"/>
</channel-type>
<channel-type id="WWNCameraEventHasPerson" advanced="true">
<item-type>Switch</item-type>
<label>Has Person</label>
<description>If a person was detected in the camera event</description>
<state readOnly="true"/>
</channel-type>
<channel-type id="WWNCameraEventStartTime" advanced="true">
<item-type>DateTime</item-type>
<label>Start Time</label>
<description>Timestamp when the camera event started</description>
<state readOnly="true"/>
</channel-type>
<channel-type id="WWNCameraEventEndTime" advanced="true">
<item-type>DateTime</item-type>
<label>End Time</label>
<description>Timestamp when the camera event ended</description>
<state readOnly="true"/>
</channel-type>
<channel-type id="WWNCameraEventUrlsExpireTime" advanced="true">
<item-type>DateTime</item-type>
<label>URLs Expire Time</label>
<description>Timestamp when the camera event URLs expire</description>
<state readOnly="true"/>
</channel-type>
<channel-type id="WWNCameraEventWebUrl" advanced="true">
<item-type>String</item-type>
<label>Web URL</label>
<description>The web URL for the camera event, allows you to see the camera event in a web page</description>
<state readOnly="true"/>
</channel-type>
<channel-type id="WWNCameraEventAppUrl" advanced="true">
<item-type>String</item-type>
<label>App URL</label>
<description>The app URL for the camera event, allows you to see the camera event in an app</description>
<state readOnly="true"/>
</channel-type>
<channel-type id="WWNCameraEventImageUrl" advanced="true">
<item-type>String</item-type>
<label>Image URL</label>
<description>The URL showing an image for the camera event</description>
<state readOnly="true"/>
</channel-type>
<channel-type id="WWNCameraEventAnimatedImageUrl" advanced="true">
<item-type>String</item-type>
<label>Animated Image URL</label>
<description>The URL showing an animated image for the camera event</description>
<state readOnly="true"/>
</channel-type>
<channel-type id="WWNCameraEventActivityZones" advanced="true">
<item-type>String</item-type>
<label>Activity Zones</label>
<description>Identifiers for activity zones that detected the event (comma separated)</description>
<state readOnly="true"/>
</channel-type>
<!-- Smoke detector -->
<channel-type id="WWNUiColorState" advanced="true">
<item-type>String</item-type>
<label>UI Color State</label>
<description>Current color state of the protect</description>
<state readOnly="true">
<options>
<option value="GRAY">gray</option>
<option value="GREEN">green</option>
<option value="YELLOW">yellow</option>
<option value="RED">red</option>
</options>
</state>
</channel-type>
<channel-type id="WWNCoAlarmState">
<item-type>String</item-type>
<label>CO Alarm State</label>
<description>Carbon monoxide alarm state</description>
<state readOnly="true">
<options>
<option value="OK">ok</option>
<option value="EMERGENCY">emergency</option>
<option value="WARNING">warning</option>
</options>
</state>
</channel-type>
<channel-type id="WWNSmokeAlarmState">
<item-type>String</item-type>
<label>Smoke Alarm State</label>
<description>Smoke alarm state</description>
<state readOnly="true">
<options>
<option value="OK">ok</option>
<option value="EMERGENCY">emergency</option>
<option value="WARNING">warning</option>
</options>
</state>
</channel-type>
<channel-type id="WWNManualTestActive" advanced="true">
<item-type>Switch</item-type>
<label>Manual Test Active</label>
<description>If the manual test is currently active</description>
<state readOnly="true"/>
</channel-type>
<channel-type id="WWNLastManualTestTime" advanced="true">
<item-type>DateTime</item-type>
<label>Last Manual Test Time</label>
<description>Timestamp of the last successful manual test</description>
<state readOnly="true"/>
</channel-type>
<!-- Thermostat -->
<channel-type id="WWNTemperature">
<item-type>Number:Temperature</item-type>
<label>Temperature</label>
<description>Current temperature</description>
<category>Temperature</category>
<state readOnly="true" pattern="%.1f %unit%"/>
</channel-type>
<channel-type id="WWNSetPoint">
<item-type>Number:Temperature</item-type>
<label>Set Point</label>
<description>The set point temperature</description>
<category>Temperature</category>
<state pattern="%.1f %unit%" step="0.5"/>
</channel-type>
<channel-type id="WWNMaxSetPoint">
<item-type>Number:Temperature</item-type>
<label>Max Set Point</label>
<description>The max set point temperature</description>
<category>Temperature</category>
<state pattern="%.1f %unit%" step="0.5"/>
</channel-type>
<channel-type id="WWNMinSetPoint">
<item-type>Number:Temperature</item-type>
<label>Min Set Point</label>
<description>The min set point temperature</description>
<category>Temperature</category>
<state pattern="%.1f %unit%" step="0.5"/>
</channel-type>
<channel-type id="WWNEcoMaxSetPoint" advanced="true">
<item-type>Number:Temperature</item-type>
<label>Eco Max Set Point</label>
<description>The eco range max set point temperature</description>
<category>Temperature</category>
<state readOnly="true" pattern="%.1f %unit%"/>
</channel-type>
<channel-type id="WWNEcoMinSetPoint" advanced="true">
<item-type>Number:Temperature</item-type>
<label>Eco Min Set Point</label>
<description>The eco range min set point temperature</description>
<category>Temperature</category>
<state readOnly="true" pattern="%.1f %unit%"/>
</channel-type>
<channel-type id="WWNLockedMaxSetPoint" advanced="true">
<item-type>Number:Temperature</item-type>
<label>Locked Max Set Point</label>
<description>The locked range max set point temperature</description>
<category>Temperature</category>
<state readOnly="true" pattern="%.1f %unit%"/>
</channel-type>
<channel-type id="WWNLockedMinSetPoint" advanced="true">
<item-type>Number:Temperature</item-type>
<label>Locked Min Set Point</label>
<description>The locked range min set point temperature</description>
<category>Temperature</category>
<state readOnly="true" pattern="%.1f %unit%"/>
</channel-type>
<channel-type id="WWNLocked" advanced="true">
<item-type>Switch</item-type>
<label>Locked</label>
<description>If the thermostat has the temperature locked to only be within a set range</description>
<state readOnly="true"/>
</channel-type>
<channel-type id="WWNMode">
<item-type>String</item-type>
<label>Mode</label>
<description>Current mode of the Nest thermostat</description>
<state>
<options>
<option value="OFF">off</option>
<option value="ECO">eco</option>
<option value="HEAT">heating</option>
<option value="COOL">cooling</option>
<option value="HEAT_COOL">heat/cool</option>
</options>
</state>
</channel-type>
<channel-type id="WWNPreviousMode" advanced="true">
<item-type>String</item-type>
<label>Previous Mode</label>
<description>The previous mode of the Nest thermostat</description>
<state readOnly="true">
<options>
<option value="OFF">off</option>
<option value="ECO">eco</option>
<option value="HEAT">heating</option>
<option value="COOL">cooling</option>
<option value="HEAT_COOL">heat/cool</option>
</options>
</state>
</channel-type>
<channel-type id="WWNState" advanced="true">
<item-type>String</item-type>
<label>State</label>
<description>The active state of the Nest thermostat</description>
<state readOnly="true">
<options>
<option value="OFF">off</option>
<option value="HEATING">heating</option>
<option value="COOLING">cooling</option>
</options>
</state>
</channel-type>
<channel-type id="WWNHumidity">
<item-type>Number:Dimensionless</item-type>
<label>Humidity</label>
<description>Indicates the current relative humidity</description>
<category>Humidity</category>
<state pattern="%.1f %unit%" readOnly="true"/>
</channel-type>
<channel-type id="WWNTimeToTarget">
<item-type>Number:Time</item-type>
<label>Time to Target</label>
<description>Time left to the target temperature approximately</description>
<state pattern="%d %unit%" readOnly="true"/>
</channel-type>
<channel-type id="WWNCanHeat" advanced="true">
<item-type>Switch</item-type>
<label>Can Heat</label>
<description>If the thermostat can actually turn on heating</description>
<state readOnly="true"/>
</channel-type>
<channel-type id="WWNCanCool" advanced="true">
<item-type>Switch</item-type>
<label>Can Cool</label>
<description>If the thermostat can actually turn on cooling</description>
<state readOnly="true"/>
</channel-type>
<channel-type id="WWNFanTimerActive" advanced="true">
<item-type>Switch</item-type>
<label>Fan Timer Active</label>
<description>If the fan timer is engaged</description>
<state/>
</channel-type>
<channel-type id="WWNFanTimerDuration" advanced="true">
<item-type>Number:Time</item-type>
<label>Fan Timer Duration</label>
<description>Length of time that the fan is set to run</description>
<state>
<options>
<option value="15">15 min</option>
<option value="30">30 min</option>
<option value="45">45 min</option>
<option value="60">1 h</option>
<option value="120">2 h</option>
<option value="240">4 h</option>
<option value="480">8 h</option>
<option value="960">16 h</option>
</options>
</state>
</channel-type>
<channel-type id="WWNFanTimerTimeout" advanced="true">
<item-type>DateTime</item-type>
<label>Fan Timer Timeout</label>
<description>Timestamp when the fan stops running</description>
<state readOnly="true"/>
</channel-type>
<channel-type id="WWNHasFan" advanced="true">
<item-type>Switch</item-type>
<label>Has Fan</label>
<description>If the thermostat can control the fan</description>
<state readOnly="true"/>
</channel-type>
<channel-type id="WWNHasLeaf" advanced="true">
<item-type>Switch</item-type>
<label>Has Leaf</label>
<description>If the thermostat is currently in a leaf mode</description>
<state readOnly="true"/>
</channel-type>
<channel-type id="WWNSunlightCorrectionEnabled" advanced="true">
<item-type>Switch</item-type>
<label>Sunlight Correction Enabled</label>
<description>If sunlight correction is enabled</description>
<state readOnly="true"/>
</channel-type>
<channel-type id="WWNSunlightCorrectionActive" advanced="true">
<item-type>Switch</item-type>
<label>Sunlight Correction Active</label>
<description>If sunlight correction is active</description>
<state readOnly="true"/>
</channel-type>
<channel-type id="WWNUsingEmergencyHeat" advanced="true">
<item-type>Switch</item-type>
<label>Using Emergency Heat</label>
<description>If the system is currently using emergency heat</description>
<state readOnly="true"/>
</channel-type>
</thing:thing-descriptions>

View File

@ -1,34 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<thing:thing-descriptions bindingId="nest"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:thing="https://openhab.org/schemas/thing-description/v1.0.0"
xsi:schemaLocation="https://openhab.org/schemas/thing-description/v1.0.0 https://openhab.org/schemas/thing-description-1.0.0.xsd">
<thing-type id="wwn_smoke_detector" listed="false">
<supported-bridge-type-refs>
<bridge-type-ref id="wwn_account"/>
</supported-bridge-type-refs>
<label>Nest Protect</label>
<description>The smoke detector/Nest Protect for the account</description>
<channels>
<channel id="ui_color_state" typeId="WWNUiColorState"/>
<channel id="low_battery" typeId="system.low-battery"/>
<channel id="co_alarm_state" typeId="WWNCoAlarmState"/>
<channel id="smoke_alarm_state" typeId="WWNSmokeAlarmState"/>
<channel id="manual_test_active" typeId="WWNManualTestActive"/>
<channel id="last_manual_test_time" typeId="WWNLastManualTestTime"/>
<channel id="last_connection" typeId="WWNLastConnection"/>
</channels>
<properties>
<property name="vendor">Nest</property>
</properties>
<representation-property>deviceId</representation-property>
<config-description-ref uri="thing-type:nest:wwn_device"/>
</thing-type>
</thing:thing-descriptions>

View File

@ -1,40 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<thing:thing-descriptions bindingId="nest"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:thing="https://openhab.org/schemas/thing-description/v1.0.0"
xsi:schemaLocation="https://openhab.org/schemas/thing-description/v1.0.0 https://openhab.org/schemas/thing-description-1.0.0.xsd">
<thing-type id="wwn_structure" listed="false">
<supported-bridge-type-refs>
<bridge-type-ref id="wwn_account"/>
</supported-bridge-type-refs>
<label>Nest Structure</label>
<description>The Nest structure defines the house the account has setup on Nest.
You will only have more than one
structure if you have more than one house</description>
<channels>
<channel id="country_code" typeId="WWNCountryCode"/>
<channel id="postal_code" typeId="WWNPostalCode"/>
<channel id="time_zone" typeId="WWNTimeZone"/>
<channel id="peak_period_start_time" typeId="WWNPeakPeriodStartTime"/>
<channel id="peak_period_end_time" typeId="WWNPeakPeriodEndTime"/>
<channel id="rush_hour_rewards_enrollment" typeId="WWNRushHourRewardsEnrollment"/>
<channel id="eta_begin" typeId="WWNEtaBegin"/>
<channel id="co_alarm_state" typeId="WWNCoAlarmState"/>
<channel id="smoke_alarm_state" typeId="WWNSmokeAlarmState"/>
<channel id="security_state" typeId="WWNSecurityState"/>
<channel id="away" typeId="WWNAway"/>
</channels>
<properties>
<property name="vendor">Nest</property>
</properties>
<representation-property>structureId</representation-property>
<config-description-ref uri="thing-type:nest:wwn_structure"/>
</thing-type>
</thing:thing-descriptions>

View File

@ -1,52 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<thing:thing-descriptions bindingId="nest"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:thing="https://openhab.org/schemas/thing-description/v1.0.0"
xsi:schemaLocation="https://openhab.org/schemas/thing-description/v1.0.0 https://openhab.org/schemas/thing-description-1.0.0.xsd">
<thing-type id="wwn_thermostat" listed="false">
<supported-bridge-type-refs>
<bridge-type-ref id="wwn_account"/>
</supported-bridge-type-refs>
<label>Nest Thermostat</label>
<description>A Thermostat to control the various aspects of the house's HVAC system</description>
<channels>
<channel id="temperature" typeId="WWNTemperature"/>
<channel id="humidity" typeId="WWNHumidity"/>
<channel id="mode" typeId="WWNMode"/>
<channel id="previous_mode" typeId="WWNPreviousMode"/>
<channel id="state" typeId="WWNState"/>
<channel id="set_point" typeId="WWNSetPoint"/>
<channel id="max_set_point" typeId="WWNMaxSetPoint"/>
<channel id="min_set_point" typeId="WWNMinSetPoint"/>
<channel id="can_heat" typeId="WWNCanHeat"/>
<channel id="can_cool" typeId="WWNCanCool"/>
<channel id="fan_timer_active" typeId="WWNFanTimerActive"/>
<channel id="fan_timer_duration" typeId="WWNFanTimerDuration"/>
<channel id="fan_timer_timeout" typeId="WWNFanTimerTimeout"/>
<channel id="has_fan" typeId="WWNHasFan"/>
<channel id="has_leaf" typeId="WWNHasLeaf"/>
<channel id="sunlight_correction_enabled" typeId="WWNSunlightCorrectionEnabled"/>
<channel id="sunlight_correction_active" typeId="WWNSunlightCorrectionActive"/>
<channel id="using_emergency_heat" typeId="WWNUsingEmergencyHeat"/>
<channel id="eco_max_set_point" typeId="WWNEcoMaxSetPoint"/>
<channel id="eco_min_set_point" typeId="WWNEcoMinSetPoint"/>
<channel id="locked" typeId="WWNLocked"/>
<channel id="locked_max_set_point" typeId="WWNLockedMaxSetPoint"/>
<channel id="locked_min_set_point" typeId="WWNLockedMinSetPoint"/>
<channel id="time_to_target" typeId="WWNTimeToTarget"/>
<channel id="last_connection" typeId="WWNLastConnection"/>
</channels>
<properties>
<property name="vendor">Nest</property>
</properties>
<representation-property>deviceId</representation-property>
<config-description-ref uri="thing-type:nest:wwn_device"/>
</thing-type>
</thing:thing-descriptions>