diff --git a/bundles/binding/org.openhab.binding.nest/src/main/java/org/openhab/binding/nest/internal/messages/AbstractDevice.java b/bundles/binding/org.openhab.binding.nest/src/main/java/org/openhab/binding/nest/internal/messages/AbstractDevice.java index 4ba30cded59..5b05ff198ce 100644 --- a/bundles/binding/org.openhab.binding.nest/src/main/java/org/openhab/binding/nest/internal/messages/AbstractDevice.java +++ b/bundles/binding/org.openhab.binding.nest/src/main/java/org/openhab/binding/nest/internal/messages/AbstractDevice.java @@ -33,6 +33,8 @@ public abstract class AbstractDevice extends AbstractMessagePart implements Data private String name_long; private Date last_connection; private Boolean is_online; + private String where_id; + private String where_name; public AbstractDevice(@JsonProperty("device_id") String device_id) { this.device_id = device_id; @@ -109,6 +111,23 @@ public Boolean getIs_online() { return this.is_online; } + /** + * @return Where unique identifier. + */ + @JsonProperty("where_id") + public String getWhere_id() { + return this.where_id; + } + + /** + * @return The display name of the device. Associated with the where_id. + * Can be any room name from a list we provide, or a custom name. + */ + @JsonProperty("where_name") + public String getWhere_name() { + return this.where_name; + } + @Override public void sync(DataModel dataModel) { // Link to structure @@ -128,6 +147,8 @@ public String toString() { builder.append("name_long", this.name_long); builder.append("last_connection", this.last_connection); builder.append("is_online", this.is_online); + builder.append("where_id", this.where_id); + builder.append("where_name", this.where_name); return builder.toString(); } diff --git a/bundles/binding/org.openhab.binding.nest/src/main/java/org/openhab/binding/nest/internal/messages/AlarmState.java b/bundles/binding/org.openhab.binding.nest/src/main/java/org/openhab/binding/nest/internal/messages/AlarmState.java new file mode 100644 index 00000000000..4b916c68af3 --- /dev/null +++ b/bundles/binding/org.openhab.binding.nest/src/main/java/org/openhab/binding/nest/internal/messages/AlarmState.java @@ -0,0 +1,59 @@ +/** + * Copyright (c) 2010-2016 by the respective copyright holders. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +package org.openhab.binding.nest.internal.messages; + +import org.codehaus.jackson.annotate.JsonCreator; +import org.codehaus.jackson.annotate.JsonValue; + +/** + * Possible values for *_alarm_state: + * + *
+ *
ok
+ *
OK
+ *
warning
+ *
Warning - Smoke or CO Detected
+ *
emergency
+ *
Emergency - * Detected - move to fresh air
+ *
+ * + * @author John Cocula + * @since 1.9.0 + */ +public enum AlarmState { + OK("ok"), + WARNING("warning"), + EMERGENCY("emergency"); + + private final String state; + + private AlarmState(String state) { + this.state = state; + } + + @JsonValue + public String value() { + return state; + } + + @JsonCreator + public static AlarmState forValue(String v) { + for (AlarmState as : AlarmState.values()) { + if (as.state.equals(v)) { + return as; + } + } + throw new IllegalArgumentException("Invalid alarm_state: " + v); + } + + @Override + public String toString() { + return this.state; + } +} diff --git a/bundles/binding/org.openhab.binding.nest/src/main/java/org/openhab/binding/nest/internal/messages/Camera.java b/bundles/binding/org.openhab.binding.nest/src/main/java/org/openhab/binding/nest/internal/messages/Camera.java index 3a82289cb1a..388f433647e 100644 --- a/bundles/binding/org.openhab.binding.nest/src/main/java/org/openhab/binding/nest/internal/messages/Camera.java +++ b/bundles/binding/org.openhab.binding.nest/src/main/java/org/openhab/binding/nest/internal/messages/Camera.java @@ -29,6 +29,7 @@ public class Camera extends AbstractDevice { public static class Event extends AbstractMessagePart { private Boolean has_sound; private Boolean has_motion; + private Boolean has_person; private Date start_time; private Date end_time; private Date urls_expire_time; @@ -54,6 +55,14 @@ public Boolean getHas_motion() { return this.has_motion; } + /** + * @return true if a person was detected. + */ + @JsonProperty("has_person") + public Boolean getHas_person() { + return this.has_person; + } + /** * @return event start time. */ @@ -120,6 +129,7 @@ public String toString() { builder.appendSuper(super.toString()); builder.append("has_sound", this.has_sound); builder.append("has_motion", this.has_motion); + builder.append("has_person", this.has_person); builder.append("start_time", this.start_time); builder.append("end_time", this.end_time); builder.append("urls_expire_time", this.urls_expire_time); diff --git a/bundles/binding/org.openhab.binding.nest/src/main/java/org/openhab/binding/nest/internal/messages/DataModel.java b/bundles/binding/org.openhab.binding.nest/src/main/java/org/openhab/binding/nest/internal/messages/DataModel.java index ca15c868349..61863f6ed5c 100644 --- a/bundles/binding/org.openhab.binding.nest/src/main/java/org/openhab/binding/nest/internal/messages/DataModel.java +++ b/bundles/binding/org.openhab.binding.nest/src/main/java/org/openhab/binding/nest/internal/messages/DataModel.java @@ -25,7 +25,6 @@ import org.codehaus.jackson.annotate.JsonIgnore; import org.codehaus.jackson.annotate.JsonIgnoreProperties; import org.codehaus.jackson.annotate.JsonProperty; -import org.openhab.binding.nest.internal.messages.SmokeCOAlarm.AlarmState; import org.openhab.binding.nest.internal.messages.SmokeCOAlarm.BatteryHealth; import org.openhab.binding.nest.internal.messages.SmokeCOAlarm.ColorState; import org.openhab.binding.nest.internal.messages.Structure.AwayState; diff --git a/bundles/binding/org.openhab.binding.nest/src/main/java/org/openhab/binding/nest/internal/messages/SmokeCOAlarm.java b/bundles/binding/org.openhab.binding.nest/src/main/java/org/openhab/binding/nest/internal/messages/SmokeCOAlarm.java index f16aa7bff51..e325e1a09c4 100644 --- a/bundles/binding/org.openhab.binding.nest/src/main/java/org/openhab/binding/nest/internal/messages/SmokeCOAlarm.java +++ b/bundles/binding/org.openhab.binding.nest/src/main/java/org/openhab/binding/nest/internal/messages/SmokeCOAlarm.java @@ -29,9 +29,9 @@ public class SmokeCOAlarm extends AbstractDevice { /** * Battery life/health; estimate of time to end of life. - * + * * Possible values for battery_health: - * + * *
*
ok
*
Battery OK
@@ -70,54 +70,10 @@ public String toString() { } } - /** - * Possible values for *_alarm_state: - * - *
- *
ok
- *
OK
- *
warning
- *
Warning - CO Detected
- *
emergency
- *
Emergency - * Detected - move to fresh air
- *
- */ - public static enum AlarmState { - OK("ok"), - WARNING("warning"), - EMERGENCY("emergency"); - - private final String state; - - private AlarmState(String state) { - this.state = state; - } - - @JsonValue - public String value() { - return state; - } - - @JsonCreator - public static AlarmState forValue(String v) { - for (AlarmState as : AlarmState.values()) { - if (as.state.equals(v)) { - return as; - } - } - throw new IllegalArgumentException("Invalid alarm_state: " + v); - } - - @Override - public String toString() { - return this.state; - } - } - /** * Indicates device status by color in the Nest app UI; it is an aggregate condition for battery+smoke+co states, * and reflects the actual color indicators displayed in the Nest app - * + * * Possible values for ui_color_state *
*
gray
diff --git a/bundles/binding/org.openhab.binding.nest/src/main/java/org/openhab/binding/nest/internal/messages/Structure.java b/bundles/binding/org.openhab.binding.nest/src/main/java/org/openhab/binding/nest/internal/messages/Structure.java index cb90c1fe549..2844c912904 100644 --- a/bundles/binding/org.openhab.binding.nest/src/main/java/org/openhab/binding/nest/internal/messages/Structure.java +++ b/bundles/binding/org.openhab.binding.nest/src/main/java/org/openhab/binding/nest/internal/messages/Structure.java @@ -144,6 +144,10 @@ public void setEstimated_arrival_window_end(Date estimated_arrival_window_end) { private Date peak_period_end_time; private String time_zone; private ETA eta; + private Date eta_begin; + private Boolean rhr_enrollment; + private AlarmState co_alarm_state; + private AlarmState smoke_alarm_state; public Structure(@JsonProperty("structure_id") String structure_id) { this.structure_id = structure_id; @@ -230,6 +234,14 @@ public String getName() { return this.name; } + /** + * Set the structure name + */ + @JsonProperty("name") + public void setName(String name) { + this.name = name; + } + /** * @return the country_code */ @@ -286,6 +298,38 @@ public void setEta(ETA eta) { this.eta = eta; } + /** + * Read the timestamp of the earliest expected time of arrival (eta). Used to trigger actions or events. + */ + @JsonProperty("eta_begin") + public Date getEta_begin() { + return eta_begin; + } + + /** + * Rush Hour Rewards enrollment status. + */ + @JsonProperty("rhr_enrollment") + public Boolean getRhr_enrollment() { + return rhr_enrollment; + } + + /** + * @return CO alarm status + */ + @JsonProperty("co_alarm_state") + public AlarmState getCo_alarm_state() { + return this.co_alarm_state; + } + + /** + * @return Smoke alarm status + */ + @JsonProperty("smoke_alarm_state") + public AlarmState getSmoke_alarm_state() { + return this.smoke_alarm_state; + } + /** * This method creates maps to device objects, using the list of device IDs that were deserialized from JSON. */ @@ -343,6 +387,10 @@ public String toString() { builder.append("peak_period_end_time", this.peak_period_end_time); builder.append("time_zone", this.time_zone); builder.append("eta", this.eta); + builder.append("eta_begin", this.eta_begin); + builder.append("rhr_enrollment", this.rhr_enrollment); + builder.append("co_alarm_state", this.co_alarm_state); + builder.append("smoke_alarm_state", this.smoke_alarm_state); return builder.toString(); } diff --git a/bundles/binding/org.openhab.binding.nest/src/main/java/org/openhab/binding/nest/internal/messages/Thermostat.java b/bundles/binding/org.openhab.binding.nest/src/main/java/org/openhab/binding/nest/internal/messages/Thermostat.java index 0db5e5c19fb..2d44e07e5a1 100644 --- a/bundles/binding/org.openhab.binding.nest/src/main/java/org/openhab/binding/nest/internal/messages/Thermostat.java +++ b/bundles/binding/org.openhab.binding.nest/src/main/java/org/openhab/binding/nest/internal/messages/Thermostat.java @@ -128,7 +128,6 @@ public String toString() { private BigDecimal ambient_temperature_c; private BigDecimal humidity; private HvacState hvac_state; - private String where_id; private Boolean is_locked; private String locked_temp_min_f; private String locked_temp_max_f; @@ -137,7 +136,6 @@ public String toString() { private String label; private Boolean sunlight_correction_enabled; private Boolean sunlight_correction_active; - private String where_name; private Integer fan_timer_duration; private String time_to_target; private String time_to_target_training; @@ -439,14 +437,6 @@ public HvacState getHvac_state() { return this.hvac_state; } - /** - * @return Where unique identifier. - */ - @JsonProperty("where_id") - public String getWhere_id() { - return this.where_id; - } - /** * @return Thermostat Lock status. When true, the Thermostat Lock feature is enabled, and restricts the temperature * range to these min/max values: locked_temp_min_f, locked_temp_max_f, locked_temp_min_c, and @@ -528,15 +518,6 @@ public Boolean getSunlight_correction_active() { return this.sunlight_correction_active; } - /** - * @return The display name of the device. Associated with the thermostat where_id. - * Can be any room name from a list we provide, or a custom name. - */ - @JsonProperty("where_name") - public String getWhere_name() { - return this.where_name; - } - /** * @return the length of time (in minutes) that the fan is set to run. */ @@ -615,7 +596,6 @@ public String toString() { builder.append("ambient_temperature_c", this.ambient_temperature_c); builder.append("humidity", this.humidity); builder.append("hvac_state", this.hvac_state); - builder.append("where_id", this.where_id); builder.append("is_locked", this.is_locked); builder.append("locked_temp_min_f", this.locked_temp_min_f); builder.append("locked_temp_max_f", this.locked_temp_max_f); @@ -624,7 +604,6 @@ public String toString() { builder.append("label", this.label); builder.append("sunlight_correction_enabled", this.sunlight_correction_enabled); builder.append("sunlight_correction_active", this.sunlight_correction_active); - builder.append("where_name", this.where_name); builder.append("fan_timer_duration", this.fan_timer_duration); builder.append("time_to_target", this.time_to_target); builder.append("time_to_target_training", this.time_to_target_training);