Xiaomi Miot For HomeAssistant
English | 简体中文
MIoT-Spec: The protocol specification for Xiaomi IoT devices, is a standard designed by the Xiaomi IoT platform to describe the function definition of hardware products according to the networking mode of hardware products, the characteristics of product functions, the characteristics of user usage scenarios and the user's requirements for hardware product use experience specification.
This component uses the miot protocol to automatically integrate Xiaomi devices into HomeAssistant, and currently supports most Xiaomi IoT devices. And it supports HA Web UI, and you can easily integrate Xiaomi devices into HA without configuring yaml.
Installation
Method 1: HACS
- First installation
HACS > Integrations > ➕ EXPLORE & DOWNLOAD REPOSITORIES >
Xiaomi Miot> DOWNLOAD THIS REPOSITORY - Update component
HACS > Integrations >
Xiaomi Miot> UPDATE / Redownload
Method 2: Manually installation via Samba / SFTP
Download and copy
custom_components/xiaomi_miotfolder tocustom_componentsfolder in your HomeAssistant config folder
Method 3: Onkey shell via SSH / Terminal & SSH add-on
wget -O - https://get.hacs.vip | DOMAIN=xiaomi_miot bash - # Or wget -O - https://raw.githubusercontent.com/al-one/hass-xiaomi-miot/master/install.sh | ARCHIVE_TAG=latest bash -
Method 4: shell_command service
- Copy this code to file
configuration.yamlshell_command: update_xiaomi_miot: |- wget -O - https://get.hacs.vip | DOMAIN=xiaomi_miot bash -
- Restart HA core
- Call this
service: shell_command.update_xiaomi_miotin Developer Tools - Restart HA core again
Config
⚙️ Configuration > Devices and Services > 🧩 Integrations > ➕ Add Integration > 🔍 Search
Xiaomi Miot
Add devices using Mi Account:
Starting from the v0.4.4 version, the component has added support for selecting the connection device mode when integrated by account:
- Automatic: The component will regularly update the devices that support miot-spec in LAN, and automatically use the local connection for the supported devices (recommended)
- Local: All devices filtered by the integrated configuration will use local connection. If you check the devices that do not support miot in LAN, they will be unavailable
- Cloud: All devices filtered by the integrated configuration will use cloud connection. It is recommended that miio, BLE, ZigBee devices use this mode
Note: For Local mode, some devices require Home Assistant to be on the same subnet/VLAN. They will not respond to requests from a different subnet. A workaround is to NAT your Home Assistant IP to the device's subnet.
Add device using host/token:
Suitable for devices support miot-spec protocol in LAN
Config Xiaomi Cloud:
Config Xiaomi cloud for the devices integrated by host/token
# configuration.yaml xiaomi_miot: username: xiaomi_username password: xiaomi_password # server_country: cn # Location of xiaomi cloud: cn(default), de, i2, ru, sg, tw, us # http_timeout: 15 # Timeout (seconds) for requesting the xiaomi apis
⚙️ Configuration > Devices and Services > 🧩 Integrations > Xiaomi Miot > Options > ☑️ Enable miot cloud
Translations
Looking forward to your contribution.
# configuration.yaml xiaomi_miot: language: zh # Using the built-in dictionary, currently only `zh` is supported # https://github.com/al-one/hass-xiaomi-miot/blob/master/custom_components/xiaomi_miot/core/translation_languages.py translations: # Global dictionary idle: '空闲' busy: '工作中' # Dictionary for specifying fan modes fan.mode: straight wind: '直吹模式' natural wind: '自然风' # Dictionary for specifying the drying modes of the washer washer.drying_level: moist: '微湿' extra: '特干'
# configuration.yaml homeassistant: customize: !include customize.yaml # Customize via device model xiaomi_miot: # https://github.com/al-one/hass-xiaomi-miot/blob/master/custom_components/xiaomi_miot/core/device_customizes.py device_customizes: chuangmi.plug.212a01: miot_local: true chunk_properties: 7 # Customize via parent entity # customize.yaml domain.your_entity_id: miot_local: true # Force to read and write data in LAN (integrate by account) miot_cloud: true # Enable miot cloud for entity (read, write, action) miot_cloud_write: true # Enable miot cloud (only write) miot_cloud_action: true # Enable miot cloud (only action) check_lan: true # Check LAN connection in cloud mode miio_properties: power,battery # Get miio properties to state attributes miio_cloud_props: prop.power,event.dev_online # Custom sub entities domain.parent_entity_id: sensor_properties: temperature,humidity,illumination # Miot properties binary_sensor_properties: is_volume_muted,any_boolen_property switch_properties: on,power number_properties: volume select_properties: mode fan_properties: mode,fan_level cover_properties: motor_control light.your_entity_id: color_temp_reverse: false # Reverse color temperature (Requires reload config entry) yeelight_smooth_on: 2000 # milliseconds (Only for Yeelights in local mode) yeelight_smooth_off: 3000 # milliseconds (Only for Yeelights in local mode) climate.your_entity_id: bind_sensor: sensor.temperature_entity,sensor.humidity_entity # Sensor entities camera.your_entity_id: video_attribute: 1 # https://github.com/al-one/hass-xiaomi-miot/issues/11#issuecomment-773054167 keep_streaming: true # Continuously update stream address cover.your_entity_id: closed_position: 5 # Change cover state to closed when position <= 5% deviated_position: 2 # Current position deviation 2% -> 0%, 98% -> 100% motor_reverse: true # Reverse motor state (Requires reload config entry) position_reverse: true # Reverse motor position (Requires reload config entry) open_texts: Open,Up close_texts: Close,Down media_player.mitv_entity_id: bind_xiaoai: media_player.xiaoai_entity_id # Bind xiaoai speaker for turn on TV domain.your_entity_id_xxxx: interval_seconds: 30 # Seconds between each update state (Requires reload config entry) chunk_properties: 10 # Chunk miot properties on update state (LAN) reverse_state: true # Reverse the On/Off state of a binary sensor
Filter entity attributes
Too many entity attributes will make your HA's database very large. If some entity attributes are useless to you, you can configure
exclude_state_attributesto ignore them.
# configuration.yaml xiaomi_miot: exclude_state_attributes: - miot_type - stream_address - motion_video_latest
YAML configuration reloading
This component has added support for configuration reloading (to avoid having to restart HomeAssistant instance after a YAML configuration change):
🔨 Developer tools > YAML Configuration > YAML configuration reloading > 🔍 Look for
Xiaomi Miot(almost at the bottom of the list)
- 🔌 outlet / switch
- 💡 light
- ❄️ air-conditioner / air-conditioner-outlet / ir-aircondition-control
- 🌀 fan / ceiling-fan
- 🛀 bath-heater / 🔥 heater / thermostat
- 📷 camera / video-doorbell ❓️
- 📺 television / 📽️ projector / tv-box
- 🗣️ intelligent-speaker ❓️
- 🎮️ ir-remote-control ❓️
- 🔐 lock / 🚪 door
- 👕 washer / dryer / fridge
- 🚰 water-purifier / kettle
- ♻️ air-purifier / air-fresh / hood
- 🌡 temperature-humidity-sensor / submersion-sensor / smoke-sensor
- 🥘 cooker / pressure-cooker / electric-steamer
- 🍲 induction-cooker / oven / microwave
- 🍗 air-fryer / multifunction-cooking-pot
- 🍵 health-pot / ☕️ coffee-machine
- 🍹 juicer / fruit-vegetable-purifier
- ♨️ water-heater / dishwasher / foot-bath
- 🦠 steriliser / towel-rack
- 🪟 curtain / window-opener / airer
- 🧹 vacuum / mopping-machine
- 💦 humidifier / dehumidifier / diffuser
- 🍃 air-monitor / 🪴 plant-monitor
- 🛏 bed / blanket / 😴 sleep-monitor
- 💺 chair / table
- 💆 massager / magic-touch
- 🏃 walking-pad / treadmill
- 🚽 toilet / cat-toilet / 🪥 toothbrush
- 🐱 pet-feeder / ⛲ pet-drinking-fountain / 🐟 fish-tank
- 🦟 mosquito-dispeller / germicidal-lamp
- 🚘 rearview-mirror / head-up-display
- ⌚️ watch / bracelet
- 🚶 motion-sensor / 🧲 magnet-sensor ❓️
- 📳 vibration-sensor
- 🌐 router / 🖨 printer
Unsupported devices
This component uses the polling method to obtain the device state, so it cannot listen the events of some devices in real time.
- Wireless Switch (like: lumi.sensor_switch.v1 / lumi.remote.b686opcn01)
- Motion Sensor (like: lumi.sensor_motion.v1)
- Window and Door Sensor (like: lumi.sensor_magnet.v1)
Services
Since the HA support service response has been for some time, this component no longer triggers events starting from v0.7.18.
service: xiaomi_miot.set_property data: entity_id: camera.isa_hlc7_xxxx field: camera_control.on value: true
service: xiaomi_miot.set_miot_property data: entity_id: camera.isa_hlc7_xxxx siid: 2 piid: 1 value: true
service: xiaomi_miot.get_properties data: entity_id: camera.isa_hlc7_1ab7 mapping: - siid: 2 piid: 1 - siid: 3 piid: 2 update_entity: true # Update to entity state attributes
service: xiaomi_miot.call_action data: entity_id: vacuum.dreame_p2259_entity_id siid: 4 # vacuum-extend aiid: 1 # start-clean params: - 18 # piid: 1 - work-mode - '{"selects":[[7,1,0,2,1]]}' # piid: 10 - clean-extend-data
service: xiaomi_miot.send_command data: entity_id: switch.your_entity_id method: set_power params: - on
service: xiaomi_miot.get_token data: name: Light # Keyword of device name in Mihome / IP / Model.
service: xiaomi_miot.intelligent_speaker data: entity_id: media_player.xiaoai_lx04_xxxx text: Turn on the light execute: true # Execute text directive. silent: true # Silent execution.
service: xiaomi_miot.xiaoai_wakeup data: entity_id: media_player.xiaoai_lx04_xxxx
service: xiaomi_miot.renew_devices data: username: 80001234 # Xiaomi Account ID / Email / Phone
service: xiaomi_miot.request_xiaomi_api data: entity_id: sensor.your_entity_id api: /v2/plugin/fetch_plugin data: latest_req: api_version: 10070 plugins: - model: brand.device.model
Debug
Get Entity State Attributes
🔨 Developer tools > ℹ️ State > 🔍 Filter Entity
# configuration.yaml logger: default: warning logs: custom_components.xiaomi_miot: debug
Obtain miio token
- Use HomeAssistant Service
- Goto HomeAssistant service developer tool
- Select
xiaomi_miot.get_token, Enter the keyword of device name - Find the token from the HA notifications
- Goto HomeAssistant service developer tool
- Use MiHome mod by @vevsvevs
- Down apk from СКАЧАТЬ ВЕРСИЮ 7.x.x and install
- Start Mihome APP > Profile > Experimental features
- Check on
Write custom log filesandEnable app's debug mode - Find the token from
vevs/logs/misc/devices.txtafter restart app
- Xiaomi Cloud Tokens Extractor
- Download and run token_extractor.exe for Windows or install for Python
- Enter username, password and your server region
- Extracts tokens from your cloud account. Also reveals the bind_key for BT devices
