From f260bf974bbf39e3133861788c608b319237dddf Mon Sep 17 00:00:00 2001 From: sebastianheierhoff <6094238+sebastianheierhoff@users.noreply.github.com> Date: Tue, 8 Jan 2019 18:45:35 +0100 Subject: [PATCH] Experimental ecozy support (WIP) - Documentation (#784) * Added ecozy Smart Thermostat documentation * Added initial documentation for ecozy and fixed Typo * Fixing doc issues * Fixing doc issues * Update mqtt_topics_and_message_structure.md * Finalizing documentation for ecozy and Bitron thermostats * Update mqtt_topics_and_message_structure.md * Update mqtt_topics_and_message_structure.md --- .../images/devices/ecozy_smart_thermostat.jpg | Bin 0 -> 8274 bytes .../mqtt_topics_and_message_structure.md | 142 ++++++++++++++++++ 2 files changed, 142 insertions(+) create mode 100644 docs/images/devices/ecozy_smart_thermostat.jpg diff --git a/docs/images/devices/ecozy_smart_thermostat.jpg b/docs/images/devices/ecozy_smart_thermostat.jpg new file mode 100644 index 0000000000000000000000000000000000000000..53c136c1e43415ca0f1922d4513e531024cd0421 GIT binary patch literal 8274 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 literal 0 HcmV?d00001 diff --git a/docs/information/mqtt_topics_and_message_structure.md b/docs/information/mqtt_topics_and_message_structure.md index 6d47a9115..a0456d794 100644 --- a/docs/information/mqtt_topics_and_message_structure.md +++ b/docs/information/mqtt_topics_and_message_structure.md @@ -185,3 +185,145 @@ Let the device beep. "beep": 5 } ``` + +### eCozy Smart heating thermostat (1TST-EU), Bitron Wireless wall thermostat with relay (AV2010/32) +Get local temperature in degrees Celsius (in the range 0x954d to 0x7fff, i.e. -273.15°C to 327.67 ºC) +```json +{ + "local_temperature": "" +} +``` + +Get or set offset added to/subtracted from the actual displayed room temperature to NUMBER, in steps of 0.1°C +```json +{ + "local_temperature_calibration": "NUMBER" // Possible values: –2.5 to +2.5; leave empty to read +} +``` + +Set temperature display mode +```json +{ + "temperature_display_mode": "" // Possible values: 0 to set °C or 1 so set °F +} +``` + +Get room occupancy. Specifies whether the heated/cooled space is occupied or not. If 1, the space is occupied, else it is unoccupied. +```json +{ + "thermostat_occupancy": "" +} +``` + +Get or set occupied heating setpoint to NUMBER in degrees Celsius. +```json +{ + "occupied_heating_setpoint": "NUMBER" // Possible values: MinHeatSetpointLimit to MaxHeatSetpointLimit, i.e. 7 to 30 by default; leave empty to read +} +``` + +Get or set unoccupied heating setpoint to NUMBER in degrees Celsius +```json +{ + "unoccupied_heating_setpoint": "NUMBER" // Possible values: MinHeatSetpointLimit to MaxHeatSetpointLimit, i.e. 7 to 30 by default; leave empty to read +} +``` + +Increase or decrease heating setpoint by NUMBER degrees in °C. +```json +{ + "setpoint_raise_lower": { + "mode": "0x00", // Possible values: see table below + "amount": "NUMBER" // Possible values: signed 8-bit integer that specifies the amount the setpoint(s) are to be increased (or decreased) by, in steps of 0.1°C + } +} +``` +Attribute Value | Description +----------------|----------------------------------------------- +0x00 | Heat (adjust Heat Setpoint) +0x01 | Cool (adjust Cool Setpoint) +0x02 | Both (adjust Heat Setpoint and Cool Setpoint) + +Get or set whether the local temperature, outdoor temperature and occupancy are being sensed by internal sensors or remote networked sensors +```json +{ + "remote_sensing": "NUMBER" // Possible values: see table below; leave empty to read +} +``` +Bit Number | Description +-----------|----------------------------------------- +0 | 0 – local temperature sensed internally
1 – local temperature sensed remotely +1 | 0 – outdoor temperature sensed internally
1 – outdoor temperature sensed remotely +2 | 0 – occupancy sensed internally
1 – occupancy sensed remotely + +Get or set control sequence of operation +```json +{ + "control_sequence_of_operation": "NUMBER" // Possible values: see table below; leave empty to read +} +``` +Values | Description | Possible Values of SystemMode +-------|-----------------------------------------|------------------------------------- +0x00 | Cooling Only | Heat and Emergency are not possible +0x01 | Cooling With Reheat | Heat and Emergency are not possible +0x02 | Heating Only | Cool and precooling are not possible +0x03 | Heating With Reheat | Cool and precooling are not possible +0x04 | Cooling and Heating 4-pipes | All modes are possible +0x05 | Cooling and Heating 4-pipes with Reheat | All modes are possible + +Get or set system mode +```json +{ + "system_mode": "NUMBER" // Possible values: see table below; leave empty to read +} +``` +Attribute Value | Description +----------------|------------------ +0x00 | Off +0x01 | Auto +0x03 | Cool +0x04 | Heat +0x05 | Emergency heating +0x06 | Precooling +0x07 | Fan only +0x08 | Dry +0x09 | Sleep + +Get running state +```json +{ + "running_state": "" // leave empty when reading +} +``` + +Get or set weekly schedule +```json +{ + "weekly_schedule": { + "TemperatureSetpointHold": "0x00", // 0x00 setpoint hold off or 0x01 on + "TemperatureSetpointHoldDuration": "0xffff", // 0xffff to 0x05a0 + "ThermostatProgrammingOperationMode": "00xxxxxx" //see table below + } // leave empty to read +} +``` +Attribute Value | Description +----------------|--------------------------------------------------------------------------- +0 | 0 – Simple/setpoint mode. This mode means the thermostat setpoint is altered only by manual up/down changes at the thermostat or remotely, not by internal schedule programming.
1 – Schedule programming mode. This enables or disables any programmed weekly schedule configurations.
Note: It does not clear or delete previous weekly schedule programming configurations. +1 | 0 - Auto/recovery mode set to OFF
1 – Auto/recovery mode set to ON +2 | 0 – Economy/EnergyStar mode set to OFF
1 – Economy/EnergyStar mode set to ON + +Clear weekly schedule +```json +{ + "clear_weekly_schedule": "" +} +``` +