保姆级教程:用ApiPost抓取德业除湿机API,5分钟搞定HomeAssistant的MQTT配置
智能家居新手指南5分钟用ApiPost实现德业除湿机MQTT接入HomeAssistant第一次接触智能家居设备接入时看到API、token、MQTT这些专业术语很多人都会感到无从下手。其实只要选对工具整个过程可以变得非常简单。本文将使用中文界面的ApiPost工具带你一步步完成德业除湿机接入HomeAssistant的全过程即使没有任何编程基础也能轻松掌握。1. 准备工作与环境搭建在开始之前我们需要准备好必要的工具和环境。首先确保你已经拥有一台德业除湿机并且已经在手机上下载安装了德业智能APP并完成设备绑定。这是后续操作的基础。所需工具清单ApiPost中文界面API调试工具下载地址www.apipost.cnHomeAssistant建议使用2023年以后的版本文本编辑器用于修改configuration.yaml文件安装ApiPost后你会看到一个非常直观的中文界面。与Postman等英文工具相比ApiPost对中文用户更加友好所有菜单和提示都是中文显示这大大降低了学习成本。工具左侧是请求历史记录区中间是请求构建区右侧是响应展示区整体布局清晰合理。2. 获取设备认证信息接入云端设备的第一步是获取必要的认证信息。德业除湿机使用标准的OAuth2.0认证流程我们需要通过API获取token和clientid。2.1 登录获取token在ApiPost中新建一个POST请求填写以下信息POST https://api.deye.com.cn/v3/enduser/login/ Content-Type: application/json { loginname: 你的德业APP账号, password: 你的德业APP密码, appid: 1.0.0, extend: {\cid\:\111111122223333\,\type\:\0\} }发送请求后你会得到一个JSON格式的响应其中包含两个关键信息{ data: { token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..., clientid: client_123456789 } }提示请妥善保存这个token和clientid它们相当于设备的身份证和钥匙后续所有操作都需要使用。2.2 获取设备列表有了token之后我们就可以查询账户下绑定的设备了。新建一个GET请求GET https://api.deye.com.cn/v3/enduser/deviceList/ Authorization: jwt eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...响应中将包含设备的关键信息{ data: [{ product_id: p123456789, device_id: d987654321, product_name: DYD-T22A3 }] }记录下product_id和device_id这两个值在MQTT配置中会用到。3. 配置MQTT连接信息MQTT是智能家居设备通信的核心协议我们需要从德业云获取MQTT服务器的连接参数。3.1 获取MQTT服务器信息继续使用之前的token发送GET请求GET https://api.deye.com.cn/v3/enduser/mqttInfo/ Authorization: jwt eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...响应中包含了完整的MQTT连接信息{ data: { loginname: mqtt_user_123, password: mqtt_pass_456, mqtthost: xxxxxx.mqtt.iot.gz.baidubce.com, mqttport: 1883, endpoint: ff7534ccae4711e7829100163e0f811e } }3.2 MQTT参数对照表参数名称说明配置位置mqtthostMQTT服务器地址HA的MQTT集成配置mqttport端口号(通常1883)HA的MQTT集成配置loginname用户名HA的MQTT集成配置password密码HA的MQTT集成配置endpoint终端标识switch配置中的topicproduct_id产品IDswitch配置中的topicdevice_id设备IDswitch配置中的topic4. HomeAssistant配置实战现在我们已经收集了所有必要的信息可以开始在HomeAssistant中进行配置了。4.1 配置MQTT集成首先编辑configuration.yaml文件添加MQTT基础配置mqtt: broker: xxxxxx.mqtt.iot.gz.baidubce.com port: 1883 username: mqtt_user_123 password: mqtt_pass_456 client_id: homeassistant_123保存后通过HomeAssistant的网页界面添加MQTT集成进入配置 设备与服务点击右下角添加集成搜索并选择MQTT系统会自动检测到yaml中的配置确认无误后完成添加4.2 配置除湿机开关继续在configuration.yaml中添加switch配置switch: - platform: mqtt name: 德业除湿机 unique_id: deye_dehumidifier state_topic: ff7534ccae4711e7829100163e0f811e/p123456789/d987654321/status/hex command_topic: ff7534ccae4711e7829100163e0f811e/p123456789/d987654321/command/hex state_on: 30 state_off: 20 value_template: {{ value_json.data[5:7] }} payload_on: \x08\x02\x03\x20\x19\x00\x00\x00\x00\x00 payload_off: \x08\x02\x02\x20\x19\x00\x00\x00\x00\x00关键参数说明state_topic和command_topic由endpoint、product_id和device_id拼接而成payload_on和payload_off是控制设备开关的十六进制指令value_template用于解析设备状态5. 高级功能与自动化基础配置完成后我们可以进一步探索更高级的功能。5.1 状态监控与反馈除湿机接入后你可以在HomeAssistant中看到设备的开关状态。如果需要更详细的信息监控可以添加传感器配置sensor: - platform: mqtt name: 除湿机湿度 state_topic: ff7534ccae4711e7829100163e0f811e/p123456789/d987654321/status/hex value_template: {{ value_json.data[9:11] | int(base16) }} unit_of_measurement: %5.2 创建自动化规则通过HomeAssistant的自动化功能可以实现根据环境湿度自动控制除湿机automation: - alias: 高湿度自动开启除湿机 trigger: platform: numeric_state entity_id: sensor.living_room_humidity above: 65 action: - service: switch.turn_on target: entity_id: switch.deye_dehumidifier5.3 常见问题排查如果遇到连接问题可以检查以下几点确认token没有过期通常有效期为24小时检查MQTT服务器地址和端口是否正确验证topic拼接是否正确确保HomeAssistant和除湿机在同一网络环境下在实际项目中我发现德业除湿机的API响应非常稳定但MQTT连接有时会受到家庭网络环境的影响。建议为IoT设备配置独立的2.4GHz WiFi网络避免5GHz信号可能带来的兼容性问题。