Repository navigation
Extra Features
These features use the newer "new protocol" messages and are sent one at a time. They don't touch the basic settings. Not every unit has every feature; check Capabilities before offering them in a UI. Units usually ignore commands for features they don't have.
| Method | Function |
|---|---|
setScreenDisplay(boolean) |
LED display on or off |
setScreenDisplayAlternate(boolean) |
display on units that handle it through the new protocol |
setBreezeless(boolean) |
breezeless (draught-free) mode |
setIndirectWind(boolean) |
keep the airflow from blowing directly at people |
setHorizontalVane(Vane.Horizontal) |
park the left/right louver at a fixed position |
setVerticalVane(Vane.Vertical) |
park the up/down louver at a fixed position |
setOutdoorSilent(boolean) |
quiet mode for the outdoor unit |
setSound(boolean) |
buzzer of the indoor unit |
setSelfClean(boolean) |
start or stop self cleaning |
setRateSelect(int) |
power limit |
setFreshAir(boolean, int) |
fresh air module, speed 0 to 100 |
All of them return the new state.
The firmware only understands "toggle display", not "on" or "off". setScreenDisplay(false) therefore sends a toggle only if the display is currently reported as on. Calling it twice leaves the display off instead of flipping it back.
While the unit is off, the display is reported as off.
ac.setVerticalVane(Vane.Vertical.UP);
ac.setHorizontalVane(Vane.Horizontal.MIDDLE);Vane.Vertical |
Vane.Horizontal |
raw value |
|---|---|---|
| OFF | OFF | 0 |
| UP | LEFT | 1 |
| UP_MID | LEFT_MID | 25 |
| MIDDLE | MIDDLE | 50 |
| DOWN_MID | RIGHT_MID | 75 |
| DOWN | RIGHT | 100 |
Check Capabilities.Feature.SWING_VERTICAL_ANGLE and SWING_HORIZONTAL_ANGLE first.
While vertical swing is running, indirect wind is reported as off.
| Unit type | Accepted values |
|---|---|
| five-level | 1, 20, 40, 60, 80, 100 |
| two-level | 50, 75, 100 |
Capabilities.Feature.RATE_SELECT_2_LEVEL and RATE_SELECT_5_LEVEL tell you which kind you have. The current value is in AcState.getRateSelect(); it's only queried once the unit has advertised the feature.
ac.setSelfClean(true);The unit takes a moment before it reports the new state. For at least 30 seconds after the command, status reports that still show the old state are ignored, so your UI doesn't flicker back.
Only on units with a fresh air module. AcState.hasFreshAir() becomes true once the unit has reported one; before that, setFreshAir() throws UnsupportedOperationException.
ac.setFreshAir(true, 60); // on, speed 60
ac.setFreshAir(false, 0); // offNext: Capabilities
midea-ac · MIT License · Protocol based on midea-local · Not affiliated with Midea