• Devices: Mi Air Purifier 1 & 2, Pro
  • Model identifiers: zhimi.airpurifier.m1, zhimi.airpurifier.v1, zhimi.airpurifier.v2, zhimi.airpurifier.v3, zhimi.airpurifier.v6

Air purifiers are turned into devices of type air-purifier
and by default support power switching and setting their mode. The Mi Air
Purifiers are also sensors and can report the PM2.5 (air quality index),
temperature and relative humidity where they are placed.

Examples

Check if device is an air purifier

if(device.matches('type:air-purifier')) {
  /*
   * This device is an air purifier.
   */
}

Check if powered on

// Get if the air purifier is on
device.power()
  .then(isOn => console.log('Air purifier on:', isOn))
  .catch(...);

// Using async/await
console.log('Air purifier on:', await device.power());

Power on device

// Switch the air purifier on
device.setPower(true)
  .then(...)
  .catch(...)

// Switch on via async/await
await device.power(true);

Read temperature

// Read the temperature
device.temperature()
  .then(temp => console.log('Temperature:', temp.celsius))
  .catch(...);

// Using async/await
const temp = await device.temperature();
console.log('Temperature:', temp.celsius);

Read humidity

// Read the relative humidity
device.relativeHumidity()
  .then(rh => console.log('Relative humidity:', rh))
  .catch(...);

// Using async/await
const rh = await device.relativeHumidity();
console.log('Relative humidity:', rh);

API

Power – cap:power and cap:switchable-power

  • device.power() – get if the air purifier is currently active
  • device.power(boolean) – switch the air purifier on, returns a promise
  • device.setPower(boolean) – change the power state of the device, returns a promise
  • device.on(power, isOn => ...) – listen for power changes

Mode – cap:mode and cap:switchable-mode

The air purifiers have different modes that controls their speed.

  • device.mode() – get the current mode
  • device.mode(string) – set the current mode of the device, returns a promise
  • device.setMode(string) – set the current mode of the device, returns a promise
  • device.modes() – read-only array indicating the modes supports by the device
  • device.on('modeChanged', mode => ...) – listen for changes to the current mode

The modes supported change between different models, but most devices support:

  • idle, turn the device off
  • auto, set the device to automatic mode where it controls the speed itself
  • silent, lowest speed, for silent operation or night time
  • favorite, favorite level

Sensor – type:sensor

  • device.temperature() – get the current temperature, see cap:temperature for details
  • device.on('temperature', temp => ...) – listen to changes to the read temperature
  • device.relativeHumidity() – get the current relative humidity, see cap:relative-humidity for details
  • device.on('relativeHumidityChanged', rh => ...) – listen to changes to the relative humidity
  • device.pm2_5 – get the current PM2.5 (Air Quality Index), see cap:pm2.5 for details
  • device.on('pm2.5Changed', pm2_5 => ...) – listen to changes to the PM2.5 value

Buzzer settings – cap:miio:buzzer

  • device.buzzer() – boolean indicating if the buzzer (beep) is active
  • device.buzzer(boolean) – switch the buzzer on or off
  • device.setBuzzer(boolean) – switch the buzzer on or off

LED settings – cap:miio:switchable-led

Turn the LED indicator on the device on or off.

  • device.led() – if the LED is on or off
  • device.led(boolean) – switch the LED on or off

LED brightness – cap:miio:led-brightness

Change the brightness of the LED on the device.

  • device.ledBrightness() – the LED brightness, bright, dim or off
  • device.ledBrightness(string) – set the brightness of the LED

Other

  • device.favoriteLevel() – get the speed the device should run at when mode is favorite. Between 0 and 16.
  • device.favoriteLevel(level) – set the speed the device should run at when mode is favorite. Between 0 and 16.
  • device.setFavoriteLevel(number) – set the speed for mode favorite