Samsung Thermostat mode control.
Issue: essentially, the Samsung HVAC internal thermostat is not a common thermostat. I (usually) has only one setpoint, manual control of cool and heat. When in auto mode, it maintains the single setpoint. For the internal auto mode, I could not find documentation on temperature range.
Solution Proposed: I have created a design for mode control that uses the common capability Thermostat model as a basis. The user will have the option to use Samsung Auto or standard thermostat Auto when selecting Auto mode on the thermostat. This should allow integration with the thermostat scheduler as well as dashboard tiles (I have expanded my simulator to test this). The design documentation is below.
Comments are encouraged.
ThermostatModeControl: [
attributes: [
coolingSetpoint: [capability: Thermostat, method: userEntry, type: integer],
heatingSetpoint: [capability: Thermostat, method: userEntry, type: integer],
thermostatSetpoint: [capability: Thermostat, setOn: modeChange, type: integer]
setThermostatMode: [
heat: [actions: [
note: automatically turns on HVAC,
setThermostatMode: heat,
setThermostatSetpoint: heatingSetpoint]],
emergencyHeat: [actions: [
note: not supported by Samsung HVAC,
setThermostatMode: heat,
setThermostatSetpoint: heatingSetpoint]]
cool: [actions: [
note: automatically turns on HVAC,
setThermostatMode: cool,
setThermostatSetpoint: coolingSetpoint]],
dry: [actions: [
note: automatically turns on HVAC,
note: Samsung custom mode,
setThermostatMode: dry]],
wind: [actions: [
note: automatically turns on HVAC,
note: Samsung custom mode,
setThermostatMode: wind]],
off: [actions: [
setOnOff: off]],
auto: [prefEmulateThermostat:
definition: [
true: Emulates a standard thermostat in auto mode,
false: Uses Samsung HVAC internal auto mode],
trueOperation: [
tempRange: [
>=coolingSetpoint: [
thermostatMode: cool,
thermostatSetpoint: coolingSetpoint]
<=heatingSetpoint: [
thermostatMode: heat,
thermostatSetpoint: heatingSetpoint]
otherwise: maintains last value],
setpointControl: [
preference: setpointOffset,
Calculation: [
[setHeatingSetpoint:
assure coolingSetpoint >= heatingSetpoint + setpointOffset],
[setCoolingSetpoint:
assure HeatingSetpoint <= coolingSetpoint - setpointOffset]]]],
falseOperation: [
note: uses Samsung Internal auto or aIComfort settings,
setpointControl: [
defaultValue: thermostatSetpoint,
valueChange: setThermostatSetpoint]]]
]
]
]