手把手教你:用SonoffLAN插件将易微联智能插座接入Home Assistant(含devicekey获取与常见报错解决)
智能家居的本地化控制一直是技术爱好者追求的目标,它能摆脱云服务的延迟和隐私顾虑。易微联(Sonoff)作为性价比极高的智能硬件品牌,其设备通过SonoffLAN插件接入Home Assistant后,可以实现完全本地化的自动化控制。本文将用最详细的步骤,带你从零开始完成整个接入过程,并解决那些让人头疼的报错问题。
1. 准备工作:硬件与软件环境
在开始之前,确保你已准备好以下物品:
- 易微联智能插座:推荐使用最新固件版本(如PSF-B01-GL)
- Home Assistant系统:建议2023.7及以上版本
- 支持2.4GHz WiFi的路由器:5GHz网络可能导致配对失败
- SSH工具:如Termux(安卓)或iTerm2(Mac)
- 文本编辑器:VS Code或Notepad++
注意:部分旧款易微联设备可能需要先升级固件才能支持本地控制。可在官方APP中检查固件版本。
1.1 检查设备兼容性
并非所有易微联设备都支持本地控制,以下是已验证兼容的常见型号:
| 设备型号 | 支持协议 | 最低固件要求 |
|---|---|---|
| S31 Lite | LAN Mode | 3.5.0 |
| POW R3 | LAN Mode | 3.6.0 |
| TH16 | LAN Mode | 3.3.0 |
| S26 | LAN Mode | 3.4.0 |
如果你的设备不在列表中,可以尝试在易微联APP中开启"开发者模式",查看是否有局域网控制选项。
2. 获取devicekey:突破云控制的关键
devicekey是设备本地通信的密钥,官方APP不会直接显示。以下是三种获取方法:
2.1 通过易微联APP抓包(推荐)
- 在手机上安装HTTP抓包工具(如HttpCanary)
- 配置SSL证书解密HTTPS流量(需root或使用VPN模式)
- 打开易微联APP,进入设备控制页面
- 在抓包数据中搜索
devicekey字段
典型响应示例:
{ "deviceid": "1000123456", "devicekey": "a1b2c3d4-e5f6-7890", "apikey": "123e4567-e89b-12d3" }2.2 使用eWeLink API工具
对于技术用户,可以通过官方API直接获取:
import requests headers = { "Authorization": "Bearer your_app_token" } response = requests.get( "https://eu-api.coolkit.cc/api/user/device/your_device_id", headers=headers ) print(response.json()["devicekey"])2.3 物理标签查找(部分设备)
少数早期设备会在机身标签或说明书上印刷devicekey,格式通常为:
DK:xxxxxxxxxxxx3. SonoffLAN插件安装与配置
3.1 通过HACS安装
- 进入Home Assistant的HACS商店
- 搜索"SonoffLAN"并安装
- 重启Home Assistant服务
- 在
configuration.yaml中添加:
sonoff: username: your_email@gmail.com password: your_password devices: 1000123456: devicekey: "a1b2c3d4-e5f6-7890"3.2 手动安装(无HACS)
- 下载插件最新版:
wget https://github.com/AlexxIT/SonoffLAN/archive/refs/heads/master.zip- 解压到
custom_components/sonoff目录 - 同上修改
configuration.yaml
提示:如果使用两步验证,需在密码后追加验证码,如"password123456"。
4. 常见报错与解决方案
4.1 "Crypto module not found"错误
这是因为缺少Python加密库,解决方法:
# 对于Home Assistant OS apk add build-base python3-dev pip install pycryptodome # 对于Docker安装 docker exec -it homeassistant bash pip install pycryptodome4.2 "Invalid devicekey"错误
可能原因及解决步骤:
- 确认devicekey格式:应为32位十六进制,含连字符
- 检查设备在线状态:在易微联APP中唤醒设备
- 尝试兼容模式:在配置中添加:
sonoff: mode: local
4.3 设备频繁离线
典型解决方案:
- 调整心跳间隔:
sonoff: heartbeat: 30 - 检查WiFi信号强度:RSSI应优于-70dBm
- 关闭路由器节能模式:某些QoS设置会导致UDP丢包
5. 高级配置与自动化示例
5.1 多设备批量配置
使用device_class自动识别设备类型:
sonoff: username: user@example.com password: pass123 defaults: device_class: switch devices: 1000123456: { devicekey: "xxxx" } 1000789012: { devicekey: "yyyy" }5.2 功率监控自动化
当功率超过阈值时发送通知:
automation: - alias: High Power Alert trigger: platform: numeric_state entity_id: sensor.sonoff_power above: 2000 action: service: notify.mobile_app data: message: "警告:当前功率{{ states('sensor.sonoff_power') }}W"5.3 本地HTTP API控制
启用后可直接通过URL控制:
sonoff: reload: always # 设备状态实时更新 sensors: [power, current, voltage]调用示例:
http://ha_ip:8123/api/sonoff/device/1000123456/switch?value=on6. 性能优化与维护
6.1 减少网络负载
对于大量设备,建议:
- 设置扫描间隔:
sonoff: scan_interval: 300 # 单位秒 - 禁用不需要的传感器:
sonoff: sensors: []
6.2 固件升级策略
推荐使用OTA方式更新:
- 下载固件到
/config/www目录 - 创建服务调用:
service: sonoff.ota_update data: device: 1000123456 url: http://ha_ip:8123/local/firmware.bin6.3 备份与迁移
关键配置文件位置:
/config/.storage/sonoff.json- 设备注册信息/config/custom_components/sonoff- 插件代码
建议定期备份这些文件,迁移时直接复制即可恢复所有设置。