work in progress....
The appliance reports which features are supported to be controlled and/or monitored via the UART interface as a response to the 0xB5 query. Which capabilities are reported differs per appliance and turns out to be not 100% correct for some appliances (e.g. Artel airconditioners report to support a left right fan while the vertical position has to changed manually).
Capability | Values | Description |
---|---|---|
autoSetHumidity | boolean | It is unclear what this capability means for the UART protocol. |
autoMode | boolean | The Auto mode can be activated. |
activeClean | boolean | The Active Clean mode can be dis/enabled. |
breezeControl | boolean | The appliance supports 3 different modes to control the breeze. |
buzzer | boolean | The appliance has a buzzer that can be controlled. Note: My appliance does not report this capability but I was still able to control the command notification buzzer via the beep status property. |
coolMode | boolean | The Cool mode can be activated and the temperatureSetpoint can be set. |
dimmableLight | boolean | The LED display can be toggled on and off. |
dryMode | boolean | The Dry mode can be activated. |
ecoMode | boolean | The Eco mode can be dis/enabled. |
electricAuxHeating | boolean | It is unclear what this capability means for the UART protocol. |
fanspeedControl | boolean | Fan speed can be specified. |
frostProtectionMode | boolean | The Frost Protection Mode can be dis/enabled. |
heatMode | boolean | The Heat mode can be activated and the temperatureSetpoint can be set. |
indoorHumidity | boolean | The indoor humidity is being reported. |
leftrightFan | boolean | The vertical fan can be dis/enabled. |
manualSetHumidity | boolean | The humiditySetpoint can be specified in Dry mode. |
nestCheck | boolean | It is unclear what this capability means for the UART protocol. |
nestNeedChange | boolean | It is unclear what this capability means for the UART protocol. |
maxTempAuto | temperature | The maximum temperatureSetpoint supported in Auto mode. When not specified the default is 31°C. |
maxTempCool | temperature | The maximum temperatureSetpoint supported in Cool mode. When not specified the default is 31°C. |
maxTempHeat | temperature | The maximum temperatureSetpoint supported in Heat mode. When not specified the default is 31°C. |
minTempAuto | temperature | The minimum temperatureSetpoint supported in Auto mode. When not specified the default is 16°C. |
minTempCool | temperature | The minimum temperatureSetpoint supported in Cool mode. When not specified the default is 16°C. |
minTempHeat | temperature | The minimum temperatureSetpoint supported in Heat mode. When not specified the default is 16°C. |
oneKeyNoWindOnMe | boolean | ... |
powerCal | boolean | The appliance can report power usage. |
powerCalSetting | boolean | It is unclear what this capability means for the UART protocol. |
silkyCool | boolean | The Silky Cool function can be dis/enabled. |
smartEye | boolean | The intelligent eye function can be dis/enabled. |
specialEco | boolean | The Eco mode can be dis/enabled. |
turboCool | boolean | The Turbo mode can be dis/enabled while in Cool mode. |
turboHeat | boolean | The Turbo mode can be dis/enabled while in Heat mode. |
unitChangeable | boolean | The temperature unit can be changed from Celsius to Fahrenheit. Conversion between Fahrenheit and Celsius has to be done by the calling application, the UART protocol always uses Celsius for reporting and changing the setpoint. Note: Not all appliances report this capability correctly. |
updownFan | boolean | The horizontal fan can be dis/enabled. |
windOfMe | boolean | The Wind On Me mode can be dis/enabled. |
windOnMe | boolean | The Wind Off Me mode can be dis/enabled. |
The status of the appliance is reported and can be controlled via the UART protocol using various properties. The following table shows all properties known, what possible values can be, which method can be used to set or get the value of the property, which appliance type supports the property.
Not all properties are supported by all types of appliances and by all models of these appliances.
Property | Values | Set | Query | Appliance Type | Description |
---|---|---|---|---|---|
breezeType | uint8_t 1: disable 2: breeze away 3: breeze mild 4: breezeless |
setStatusCmdB1 | getStatusCmdB1 | Airconditioner | The breeze mode. |
catchCold | boolean | setStatusCmd40 | getStatusCmd41 | Airconditioner | Unknown |
childSleep | boolean | setStatusCmd40 | getStatusCmd41 | Airconditioner | Unknown |
cleanUp | boolean | setStatusCmd40 | getStatusCmd41 | Airconditioner | Unknown |
coolFan | boolean | setStatusCmd40 | getStatusCmd41 | Airconditioner | Unknown |
cosySleep | boolean | setStatusCmd40 | getStatusCmd41 | Airconditioner | Unknown |
double_temp | boolean | setStatusCmd40 | getStatusCmd41 | Airconditioner | Unknown |
dryClean | boolean | setStatusCmd40 | getStatusCmd41 | Airconditioner | Unknown |
dusFull | boolean | setStatusCmd40 | getStatusCmd41 | Airconditioner | Unknown |
ecoMode | boolean | setStatusCmd40 | getStatusCmd41 | Airconditioner | Dis/enable Eco mode. |
errorCode | uint8_t | - | getStatusCmd41 | Airconditioner | Code describing the type of error. See below for possible errors. |
exchangeAir | boolean | setStatusCmd40 | getStatusCmd41 | Airconditioner | Unknown |
fanSpeed | 0 - 100: % 102: Auto |
setStatusCmd40 | getStatusCmd41 | Airconditioner | Set fan speed. |
feelOwn | boolean | setStatusCmd40 | getStatusCmd41 | Airconditioner | Unknown |
frostProtectionMode | boolean | setStatusCmd40 | getStatusCmd41 | Airconditioner | Dis/enable Frost Protection Mode. Can only be enabled in Heat mode. |
humiditySetpoint | uint8_t (30 - 90) | setStatusCmd40 | getStatusCmd41 | Airconditioner | Set the humidity setpoint. Can only be set in Dry mode. |
indoorHumidity | uint8_t (0 - 100) | - | getStatusCmdB1 | Airconditioner | The humidity measured by the indoor unit. |
indoorTemperature | float | - | getStatusCmd41 | Airconditioner | The temperature measured by the indoor unit. |
inError | boolean | - | getStatusCmd41 | Airconditioner | Flag indicating the appliance has an error. Use errorCode to determine the exact error. |
leftrightFan | boolean | setStatusCmd40 | getStatusCmd41 | Airconditioner | Status of the vertical fan (true = on). |
light | boolean | toggleLight | getStatusCmd41 | Airconditioner | Status of the LED display (true = on) |
lowFrequencyFan | boolean | setStatusCmd40 | getStatusCmd41 | Airconditioner | Unknown, might have something to do with eco mode. |
mode | uint8_t (0 - 6) 1: Auto 2: Cool 3: Dry 4: Heat: 5: Fan 6: Dry (custom) |
setStatusCmd40 | getStatusCmd41 | Airconditioner | The operational mode. |
naturalFan | boolean | setStatusCmd40 | getStatusCmd41 | Airconditioner | Unknown |
nightLight | boolean | setStatusCmd40 | getStatusCmd41 | Airconditioner | Unknown |
offTimer | boolean | setStatusCmd40 | getStatusCmd41 | Airconditioner | Dis/enable timer to turn off appliance. |
offTimerHours | uint8_t | setStatusCmd40 | getStatusCmd41 | Airconditioner | The number of hours set for the off timer. |
offTimerMinutes | uint8_t | setStatusCmd40 | getStatusCmd41 | Airconditioner | The number of minutes (within the hour) set for the off timer. |
onTimer | uint8_t | setStatusCmd40 | getStatusCmd41 | Airconditioner | Dis/enable timer to turn on appliance. |
onTimerHours | uint8_t | setStatusCmd40 | getStatusCmd41 | Airconditioner | The number of hours set for the on timer. |
onTimerMinutes | uint8_t | setStatusCmd40 | getStatusCmd41 | Airconditioner | The number of minutes (within the hour) set for the on timer. |
outdoorTemperature | float | - | getStatusCmd41 | Airconditioner | The outdoor temperature as measured by the outdoor unit. The unit reported is determined by the value of the temperatureUnit property. |
peakElec | boolean | setStatusCmd40 | getStatusCmd41 | Airconditioner | Unknown |
pmvMode | uint8_t | - | getStatusCmd41 | Airconditioner | Probably the "Predictive Mean Vote", the experienced temperature. Not reported by any known appliances. |
powerUsage | unt16_t | - | getPowerUsage | Airconditioner | The power usage in Wh. |
powerOn | boolean | setStatusCmd40 | getStatusCmd41 | Airconditioner | Power status of the appliance. |
ptcHeater | boolean | setStatusCmd40 | getStatusCmd41 | Airconditioner | Status of the electrical heating support when available. |
resume | boolean | setStatusCmd40 | getStatusCmd41 | Airconditioner | Probably the status of the resume mode after recovered from a powerloss. |
save | boolean | setStatusCmd40 | getStatusCmd41 | Airconditioner | Unknown |
selfCosySleep | boolean | - | getStatusCmd41 | Airconditioner | Unknown |
selfFeelOwn | boolean | - | getStatusCmd41 | Airconditioner | Unknown |
setNewTemperature | uint8_t | setStatusCmd40 | getStatusCmd41 | Airconditioner | Probably legacy support. When set > 0 this will override the temperatureSetpoint property. |
sleepMode | boolean | setStatusCmd40 | getStatusCmd41 | Airconditioner | The status of the sleep mode. |
temperatureSetpoint | float | setStatusCmd40 | getStatusCmd41 | Airconditioner | The temperature setpoint used in Cool and Heat mode. |
temperatureUnit | uint8_t 0: Celsius 1: Fahrenheit |
setStatusCmd40 | getStatusCmd41 | Airconditioner | Unit used to specify and present temperatures. |
test2 | boolean | setStatusCmd40 | getStatusCmd41 | Airconditioner | Unknown |
timerMode | uint8_t 0: Relative Absolute |
setStatusCmd40 | getStatusCmd41 | Airconditioner | Mode used for the on and off timers. No appliances known that support the absolute mode. |
turboMode | boolean | setStatusCmd40 | getStatusCmd41 | Airconditioner | Turbo mode in Cool or Heat mode. |
updownFan | boolean | setStatusCmd40 | getStatusCmd41 | Airconditioner | Status of the horizontal swing. |
Some method support the callback argument which either has to be NULL or the address of a function that must be called when the response from the appliance has been received. See the description of the Callback Handler for more details.
This method can be used to update the list of supported features as reported by the appliance.
When the appliance responds successfully, the capabilities structure will be updated and can be examined. The full list of possibly supported features can be found here.
The appliance can report whether a feature is supported or not. Features not reported are assumed to be not supported.
Note: Not all appliances report all supported features correctly. My Midea appliance reports the leftrightFan capability while the position of the vertical swing can only be changed manually.
This method must be called from the main loop in order to handle all communication between the dongle and the appliance.
The getPowerStatus method will retrieve the current power usage from the appliance. When the appliance supports this feature it will report the powerCall capability.
The powerUsage property of the status structure will be updated based on the response from the appliance.
This method requests a status update from the appliance.
Methods that support callback handlers, expect either NULL as the callback handler or the address of a function that will be called when the response of the appliances is received or when a timeout occurs (2 seconds). The callback function must accept a uint8_t as argument which will contain a status code.
Status code | Description |
---|---|
0 | A valid response has been received from the appliance. The results are processed in the status or capabilities structure. |
1 | No response has been received from the appliance within 2 seconds. This either indicates the appliance was to busy to respond within this time, or the command or query is not supported. |
Direct position of the vertical and/or horizontal swing. Not all features could be tested on a real appliance. Pull requests and/or bug reports are welcome.
Support for dehumidifiers en humidifiers.
This page lists all devices reported to be working with this library.