homebridge-mi-heatercooler
Mi / Aqara AC partner plugin for Homebridge
Feature
Control
- Mode
- heat
- cool
- auto
- Temperature
- 17 - 30 Celsius
- Fan speed
- 1 : low
- 2 : medium
- 3 : high
- 4 : auto
- Oscillate
- LED
- if set enableLED in config
Display
- Sync state with AC partner
- Idle / Working color
- idle : green
- heating : orange
- cooling : blue
- Current power percent
- if set ratedPower in config
- display as Battery Level
- Current temperature & humidity
- if set sensorId in config
- would add a humidity sensor in Home app
Installation
npm i -g miio@0.14.1 homebridge homebridge-mi-heatercooler
Configuration
"accessories":
Parameter | Description | Required |
---|---|---|
accessory |
"MiHeaterCooler" | ✓ |
name |
unique name | ✓ |
address |
your AC partner ip address | ✓ |
token |
run miio --discover to get it |
✓ |
sensorId |
humidity-temperature sensor (bound to your AC partner) id. run miio --control yourACPartnerIP --method get_device_prop --params '["lumi.0", "device_list"]' to get it (without 'lumi.' prefix) |
|
enableLED |
true or 'true' to enable LED control | |
ratedPower |
Watt, your AC Normal Rated Power, used for displaying power percent by battery level | |
idlePower |
Watt, determine whether current working state is idle, default value is 100 |
Extra
Auto supports most of brands set 1 solution
Otherwise, you should use an Android simulator (like BlueStacks) and Wireshark to collect and analyze your AC partner command codes by miio --token yourACPartnerToken --json-dump packetFile
, then modify template.json
in plugin directory
The key is your current AC partner solution model, you can get it by miio --control yourACPartnerIP --method get_model_and_state
"tpl" is this model's command template, you can use ES 6 Template Literals with these params:
/** * generate command * * if your ac partner sends commands like 01xxxxxxxxpmwstlx (most of brands set 1 do) * then you don't need template config * * template uses ES 6 Template Literals to generate commands * supports +, -, *, /, %, ?:, [], toString(16) and so on * * @param p number power, 0 : off, 1 : on * @param m number mode, 0 : heat, 1 : cool, 2 : auto * @param w number wind speed, 0 : low, 1 : medium, 2 : high, 3 : auto * @param s number swing, 0 : enabled, 1 : disabled * @param td number temperature, decimal * @param th string temperature, hexadecimal * @param l string led, '0' : on, 'a' : off */