HomeAssistant小米xiaomi_miot报错ipm不存在
集成简介
MIoT-Spec 是小米IoT平台根据硬件产品的联网方式、产品功能的特点、用户使用场景的特征和用户对硬件产品使用体验的要求,设计的描述硬件产品功能定义的标准规范。
本插件利用了miot协议的规范,可将小米设备自动接入HomeAssistant,目前已支持大部分小米米家智能设备。且该插件支持HA后台界面集成,无需配置yaml即可轻松将小米设备接入HA。
问题描述
昨天在研究玩客云静态问题后(注:后边是找到了解决方法,使用很多都失败,多次dchp绑定后发现每一次重启MAC地址都会改变,因此设置固定MAC即可,走了很多弯路)
突然发现这个功能无法加载,每次启动都报错!
昨天尝试了很多方法,重新卸载然后安装,还有恢复homeassistant到之前备份版本等等
依然报以下错误:
详情如下:
研究了好久,一直以为 xiaomi_miot 集成库问题,或者兼容性问题,所以方向是放在这两个上面,然而尝试很久依然如此。
有尝试过修改 xiaomi_miot 的py文件,也是一样不行,网上类似问题也没有
集成中小米集成一直显示如下:
也就是说集成一直没法使用,但之前明明一直正常,不可能因为做了静态IP影响到它吧?
解决办法
方法其实很简单,就是把错误点处理即可。
根本原因还是新版本 python 3.12 之后将不提供imp模块,使用import imp 发现会报错。
当定位到问题之后就好解决了!
在上边报错信息中看出来,报错位置为:
就是这句话问题,看都最后他调用了 imp 模块,所以解决办法就是屏蔽掉 imp 调用即可
步骤一:打开相应docker镜像并进入
查看 homeassistant 的 docker ID并进入到 docker 内部中
1 | docker ps |
使用 docker exec -it
当前的镜像名称为:ghcr.io/home-assistant/raspberrypi3-homeassistant:2024.2.2
镜像ID为:3f8ac3040249
输入以下命令即可进入config中
1 | docker exec -it 3f8ac3040249 /bin/bash |
步骤二:打开报错文件 core.py 并屏蔽 imp 调用
1 | cd /usr/local/lib/python3.12/site-packages/construct |
修改之前备份一下,养成好习惯
1 | vi core.py |
屏蔽如下:
1 | import struct, io, binascii, itertools, collections, pickle, sys, os, tempfile, hashlib, importlib #, imp |
步骤三:退出docker并重启镜像
退出:
1 | exit |
重启:
1 | docker restart 3f8ac3040249 |
之后就能正常使用集成了
总结
其实问题一早都显示在log里边,只是没仔细查看
网上查找的也没那么详细
加之对 python 的陌生才白耗费昨天一天
不过好在最后能发现问题
所以说,只有知道问题的根本才好解决问题,做什么事情方向对了的话后边就水到渠成,但方向不对努力就真的白搭了
这也算侧面学习 python 了。
相关链接(侵删)
欢迎到公众号来唠嗑: