矿渣斐讯M1 WIFI联网,WIFI闪烁,加入HomeAssistant解决方法

斐讯M1介绍

一直希望寻找一个能带有时间,温度和湿度的电子设备。之前买过电子钟,大概60左右,带这些功能。后来有了小米智能设备,也买过小米家的一些温湿度计。可惜我买的小米那些温湿度计都是蓝牙的,必须配合小米蓝牙网关才能统一管理和查看数据。每次用手机连这些设备读取历史数据特别麻烦。前一阶段在折腾矿难或者称为矿渣斐讯N1设备时候,无意间看到了斐讯悟空M1这个设备。不光有温湿度,还有甲醛和PM2.5,功能十分完善,而且最关键的价格也实惠,大概75元左右。

第一眼感觉这设备有点山寨。但看久了,其实挺耐看的,简洁,大方,明了。根据网上测评资料,斐讯M1的传感器都是运用比较广泛的传感器。至于数据准不准,仁者见仁智者见智。个人觉得这些数据只是一个参考或者预警提醒。究竟有多少精度和科学性,这个不能钻牛角尖。具体设备测评,可以看什么值得买上面mars208写的测评文章《大师兄!斐讯要发车啦!——斐讯 悟空M1 智能空气检测仪体验》。点击此处前往。这里截一些传感器说明图片,来充实本文。

期望实现功能

最初我认为这个设备买来就可以用,没想到会折腾出这么多事情。原本希望买来放着看时间,看温湿度,甲醛,PM2.5。由于斐讯矿难,斐讯服务器挂了。因此这个设备时间无法连接到斐讯服务器上校对时间。也有些卖家提供已经校对好时间的斐讯M1设备贩卖。但是如果不联网,时间会越走越不准,到时还需要校对时间。并且如果买了个设备连时间都是不准确的,那可真的太汗颜了。必须要想办法把时间校准了。但是校对时间需要让设备能连上WIFI。原来的悟空APP也挂了,无法注册新用户,因此通过悟空APP来校对时间也不可行了。尝试了其它方法终于让设备成功连上了家里的WIFI,校对了时间。紧接着问题又来了。由于斐讯服务器挂了,设备联网后时间是准了,但是设备与斐讯服务器无法通讯,因此WIFI图标一直闪烁。这个小瑕疵也挺难受的。必须要解决。在网上学习一番后,知道了两种方法。一种是拆机刷固件,一种是局域网域名劫持。本人正好用软路由替换家里网件硬路由,又开始研究域名劫持指向本地。接着又发现光劫持也没用,需要将设备接入HomeAssistant才能让WIFI不闪烁。对于HomeAssistant零基础的我,又开始了搭建环境。好不容易让WIFI不闪了,但是在HomeAssistant中的展现又不能令我满意。最初用了一个HomeAssistant脚本是针对的是一个斐讯M1设备。由于我买了三个斐讯M1设备,放在不同的房间。所以又开始折腾让这个三个设备在HomeAssistant中分别显示数据,并做UI自定义汉化。解决完之后,有发现新版本的HomeAssistant不兼容之前的HomeAssistant脚本,最后又开始研究脚本兼容问题。

一路折腾下来,花了挺多心思的。好多实现的步骤都是零基础。因此准备时间较长,好在最终解决了一系列问题。那么这些问题解决之后,最终斐讯M1达到的效果就是让多个斐讯M1接入家中WIFI并校对时间,让设备WIFI标志不闪烁,并且让多个斐讯M1在最新版HomeAssistant中分开显示各自数据。接下来我会详细介绍每一个步骤。这些步骤对于每个人的需求是不一样的。大家可以各取所需。

在介绍具体步骤之前,先说说一下需要准备的工具。1. 苹果IOS设备,用来配置M1的WIFI。2. 能进行内网DNS劫持的硬件路由器或者软路由。3. 准备一个HomeAssistant环境。

解决问题1 M1配置WIFI联网

斐讯M1原配的悟空APP已经废了。无法通过其来进行WIFI配置。目前可以通过一个叫EasyLink的APP进行WIFI配置。这个APP只有IOS平台上有,Android的Play没有。所以需要准备一个苹果IOS设备。APP图标如下图所示。

首先将IOS设备连入需要配置的WIFI网络。注意不要使用WIFI 5G信号。

然后点击EasyLink。打开后,界面如下图,点击右上角的“+”号。

接下来填写WIFI SSID名称和对应的密码,如下图。点击Normal mode。

在斐讯M1设备上按一下右侧的按钮。然后在EasyLink APP中点击Next。

这是斐讯M1会发送一个WIFI信号。我们需要将IOS设备接入这个WIFI网络。这个WIFI SSID名称已EasyLink开头。请注意观察。在IOS 设置中切换网络,并回到EasyLink中。然后点击Next。

这时EasyLink会与斐讯M1进行配置,WIFI连接成功后斐讯M1的WIFI标识的红叉会消失,WIFI标识会闪烁,时间会自动校准。

至此联网和校准时间功能已经完成。

解决问题2 M1的WIFI标识不闪烁

前往说过,WIFI标识闪烁是因为斐讯服务器挂了。联网后的M1无法与斐讯服务器通讯,所以WIFI信号闪烁。恩山上有个最简单的解决方法,点击查看。这个方法非常直接,简单。如果不满意,那就需要折腾一番。

首先需要具备一个内网域名劫持的路由器或者软路由,以及一个HomeAssistant环境。内网域名劫持是为了将斐讯M1联网的服务器域名劫持到我们内网的HomeAssistant中。这个域名就是aircat.phicomm.com。网上有些教程说将这个域名劫持到内网随便一个内网IP就可以解决WIFI闪烁。我测试下来是不可行的。因为这个内网IP还需要保持9000通讯。也有教程说劫持到一个123.207.43.137地址,亲测下来目前也是失效的。至于如何进行内网域名劫持,这里就不介绍了。太过于复杂了。如果路由器系统是OpenWRT,ROS,爱快,LEDE应该都可以实现,不同的系统实现这个功能叫法都不一样。但是需要注意,设置完内网域名劫持后,有时通过Ping命令发现没有生效,这时需要进行刷新DNS缓存。如果是Windows系统,在CMD中执行ipconfig /flushdns命令来清楚DNS缓存。最终实现将aircat.phicomm.com指向内网HomeAssistant的地址(IP地址预先流出来,后面在配置HomeAssistant环境)。

接下来需要配置一个HomeAssistant。我采用的是群晖中Docker方式。如果你只需要解决WIFI不闪烁。可以看恩山上这篇帖子,点击查看。不管几个M1设备,用这个帖子中脚本都可以解决WIFI不闪烁。但是这个帖子无法实现在HomeAssistant中支持多个斐讯M1设备分开显示数据问题。

下面我介绍一下群晖中Docker安装HomeAssistant方法。

在Docker 注册表中找到homeassistant下图这个版本。

选择latest版本。目前最新版本是0.103.0。

下载完成后,启动映像。

配置卷和端口如下图。

启动后,即可在群晖IP地址的8123端口访问HomeAssistant服务,请自行创建用户。这里开放9000端口是为了与斐讯M1设备通讯。

至此,域名劫持做好了,HomeAssistant环境好了,被劫持的域名也指向了HomeAssistant,但是WIFI闪烁还没有好。这是因为HomeAssistant中对应插件没有放入。

这里我参照的插件脚本是瀚思彼岸论坛上这篇帖子,点击查看。这个插件较好的解决了多个M1接入HomeAssistant的问题。但是帖主没有详细介绍如何配置。对于小白来说,不容易上手。并且没有汉化界面,而且该插件在最新版本的HomeAssistant中已经无法生效,需要做一下小改动。

这里我将调试好的脚本放在谷歌云盘,供大家下载。点击下载

下载完脚本后,将HomeAssistant停止运行。将脚本复制到HomeAssistant文件夹中,替换文件,修改配置(参见本文解决问题3 脚本中说明)。重启HomeAssistant后,斐讯M1的WIFI标志就不再闪烁。打开HomeAssistant界面显示如下。

解决问题3 脚本中说明

配置多个M1设备

在aircat.yaml中,修改M1的MAC地址。如下图红圈位置位置。填入格式为AABBCCDDEEFF。

在input_select和group中检查对应脚本是否添加。

在apparent_temperature.yaml中,检查对应脚本是否添加。

修改configuration.yaml配置

在configuration.yaml中必须添加下面红框中几句脚本。也可以复制我插件包中的configuration.yaml文件直接替换。这是为了让HomeAssistant包含对应插件脚本运行。

自定义界面文字

在customize.yaml中修改entity的显示文字。这样在UI界面显示更满足个人需求。

至于custom_components文件夹中脚本,不要去修改。否则会出错。

 

至此M1的WIFI联网,WIFI闪烁,接入HomeAssistant都已经解决。并且采用的是最新版的HomeAssistant。

有相同问题的朋友可以参照本文解决。

在 “矿渣斐讯M1 WIFI联网,WIFI闪烁,加入HomeAssistant解决方法” 上有 9 条评论

  1. 你好,我3个M1,HA在N1的armbian上,下载了脚本,按照你的这个操作,9000端口是起来了,但是报错:
    2020-01-07 22:34:41 ERROR (Thread-24) [custom_components.aircat.sensor] Exception: Traceback (most recent call last):
    File “/home/homeassistant/.homeassistant/custom_components/aircat/sensor.py”, line 53, in update
    self.handle(fd)
    File “/home/homeassistant/.homeassistant/custom_components/aircat/sensor.py”, line 94, in handle
    if len(mac) > 0 and len(self._macs.get(mac)):
    TypeError: object of type ‘NoneType’ has no len()
    无法获取数据,看起来好像是脚本不正确,可是我不懂,麻烦帮分析下可能是哪里问题,谢谢!

      1. 感谢回复,HA启动了的,脚本也是用了的,我另外还有个DC1,都是正常的,就是M1不正常,我没用DOCKER,用的虚拟环境。

  2. 跟楼上一样的问题 因为我手上只有一个 所以删除了2 3的配置 Mac地址确认已经修改
    M1WiFi已经不闪烁 但Ha里均为不可用 并且提示group配置有问题
    请问博主的Ha是什么版本 我是直接拉的群晖docker里的lastest 如果只有一个还有其他地方需要修改的话还请博主帮助一下 感谢!

发表回复