Flash XIAOMI Mijia 蓝牙 lywsd03 传感器

NB 的 : 放大图像: 右键单击 / 在新选项卡中打开图像

注意/! 30以下% Jeedom上显示的电池信息的可靠性下降,约为20% 在LCD上可见低功耗显示屏,蓝牙丢失

当我们开始家庭自动化时,我们开始摸索,我们的选择迅速转向最便宜的产品。 我们中的许多人从一个不太贵且声誉良好的品牌开始,小米!

考虑到价格,我们中的许多人选择这个产品:

但当我们开始在家庭自动化的那一刻,我们无法想象这个小,美丽和便宜的温度计将把我们放在厨房!

需要什么:

  • 传感 器
  • 带有蓝牙天线的 Jeedom(本地或驱逐出境)
  • 布利 (插头)
  • JeeXplorer (插头)
  • 的 PC / Mobile with Bluetooth

有几个主题解释了如何使用绑定键,flash和hack或触摸任何东西来破解BLEA,并使用小米网关与Alexa技能相结合,并通过AlexaAPI/智能家居插件在Jeedom中提出。

让我们向所有从这些来源引述他们的人表示敬意:

https://github.com/atc1441/ATC_MiThermometer

http://atcnetz.blogspot.com/2020/09/custom-firmware-fur-das-4-xiaomi.html

https://github.com/pvvx/ATC_MiThermometer#bluetooth-advertising-formats

https://community.jeedom.com/t/refresh-xiaomi-lywsd03mmc/17216

https://community.jeedom.com/t/valeurs-non-remontees/44590/10

https://community.jeedom.com/t/refresh-xiaomi-lywsd03mmc/17216/77

每种方法都有其优点和缺点:

AlexaAPI/smarthome:

优点:

  • 没有 黑客
  • 非常简单
  • 不闪烁

缺点:

  • 小米蓝牙网关
  • 拥有 Alexa
  • 电梯中的孔(非常罕见但驾驶加热器时很烦人)
  • 不是无云(依赖互联网)

Blea with the BindKeys:

优点:

  • 无云 (依赖互联网)
  • 不闪烁

缺点:

  • 复数(Recovery @MAC, bindkey)
  • 电梯中的孔(非常罕见但驾驶加热器时很烦人)
  • 如果连接到 MihHome/Other 则更改 bindkey
  • 蓝牙天线
  • 安装密钥解密依赖

闪烁的Blea:

优点:

  • 简单 简单
  • 可调节传感器
  • 没有孔的重新组装(或迄今尚未看到)

缺点:

  • 闪烁 闪烁
  • 蓝牙天线

即使这一切都不是那么复杂,在某些情况下甚至非常简单,它不一定是一开始就可以拥有的愿景。 我挣扎,摸索,犯错误很长一段时间,往往不明白非常简单的事情。

这就是为什么我正在写这篇关于最后一个解决方案的教程,使其尽可能地流行为Jeedom初学者。

为什么选择这种方法?

我测试了它们,我从来没有真正满意过,电梯里有太多的洞,或者太多的束缚。 最后,我保持了最稳定的口味AlexaAPI/smarthome。 当时我没有保留闪光,因为没有办法把它整合到BLEA中。

新的固件终于说服了我,因为在我看来,这个解决方案在升降机方面是最稳定的,更好的电池优化和缺点可以被认为是优势。

为了比较1H与我的探测器仍然在Alexa下:

Alexa 的

Blea 闪烁

毫无吸引力的发现!

重要提醒:

对于那些想长期比较不同方法的人来说,我想提醒你,默认情况下,记录每天在CRON上平滑/平均超过2小时用于存档(大约4小时),每小时1个平均值:

归档每天晚上进行一次,从那里应用2小时。

这可以通过以下形式看到:

在凌晨3点之前,它不仅仅是每小时一个电梯,而是所有的电梯都被分组成平均每小时。

因此,有必要改变这些参数以进行客观比较。

  1. 闪烁 闪烁

即使Aaron Christophel提出的旧闪光方法已经相当不错了。

https://atc1441.github.io/TelinkFlasher.html

https://github.com/atc1441/ATC_MiThermometer

http://atcnetz.blogspot.com/2020/09/custom-firmware-fur-das-4-xiaomi.html

Victor pvvx接管并改进了它!

https://github.com/pvvx/ATC_MiThermometer

https://pvvx.github.io/ATC_MiThermometer/TelinkMiFlasher.html

总之,这个新版本提供最新固件的自动充电,电池优化,以及许多其他设置(包括在测试主轴上的物理动作触发器,需要焊接此:p)

转到页面 https://pvvx.github.io/ATC_MiThermometer/TelinkMiFlasher.html

注: 如果您的传感器已经以T1441格式闪烁,则可能需要通过闪光器T1441返回小米固件,或使用页面。 https://pvvx.github.io/ATC_MiThermometer/TelinkOTA.html 并执行从T1441到PVVX的OTA更新。 然后回到PVVX闪存器以更改设置。

  • 在尝试连接之前激活 PC/Mobile Bluetooth 
  • 在"BLE设备名称前缀过滤器"(这允许只有小米温度计)中输入"LYWSD03","ATC"将允许将过滤器放入已经闪烁的温度计
  • 点击『连接』并选择您的温度计
  • 等待连接建立
  • 按"Do Activation"
  • 等待小米钥匙的恢复
  • 按"Custom Firmware ver 2.x"
    • 注意它旁边的按钮是返回基本小米版本的按钮。
  • 按『开始闪烁』
    • Flash需要几秒钟才能看到几分钟。
  • 如果不是自己完成的,请按"Reconnect"
  • 除非有特殊需要,否则我建议只影响两个值:
  • 广告类型是帧的格式,默认情况下是"ALL",因此也以小米格式发送帧,我认为这是你在上一个视频中看到的疯狂的值来源,因为我忘记了在开始时更改这个参数。

所以我们选择 Atc1441 年 因为正是针对这种格式,以后将要使用的代码才被开发出来。 5000ms。

选择"Atc1441"而不是"ALL"可以避免不一致的温度(例如。 3000°C,除了保持『所有』会浪费电池不必要的信息,并将您感兴趣的格式的发布除以4。

使用这些设置,我们发现我们有2倍以上的可用数据(5s Vs 10s),电池几乎减少了2倍(见下图)。
  • 广告间隔是帧的刷新值,我选择了这个值,因为它可以在不影响刷新频率的情况下优化7个月的电池寿命。
  • 选中设置后,按"Send Config"

闪光结束了!

  • 编辑 lywsd03.py 文件

注: 似乎原始的.Py设法读取这个闪烁的版本而没有修改(待确认),代码差异(parse)将允许在验证存在时返回数据(在头中注明),而不建立连接,有点像如果你正在寻找一个wifi网络,名字后面有清晰的信息。 因此,下面的代码可以用于间接强制刷新而不会阻塞探针。

当你习惯了Jeedom时,它可能看起来很愚蠢,但当你开始思考如何修改一个文件; WinSCP不工作没有根右,PuTTY是不切实际的,如果你不完全熟悉linux。

答案很简单,JeeXplorer。

JeeXplorer是一个『探索者』插件,顾名思义,它允许、修改、创建、删除文件/文件夹。

  • 打开 JeeXplorer
  • 导航树到 HTML/plugins/blea/resources/blead/devices/
  • 保存文件 lywsd03.py
    • 右键 点击
  • 留下重复的文件,它将服务,如果你想恢复它
# 编码: 来自Bluepy import btle import time import logging 导入日志的 UTF-8 从多连接导入连接器从通知导入通知类 Lywsd03()导入全局导入: DEF __init __(self): self.name = 'lywsd03' self.ignoreRepeat = False def isvalid(self,name,manuf='',data=',mac=''): logging.debug('LYWSD03---isvalid data=)%s, Mac%s, 姓名=%s, 制造(Manuf)%s, 》 % (data, mac, name, manuf))如果 name.lower()在 [self.name] 中: 如果 data.lower().startswith("1a18")和(mac.lower().startswith("a4:c1:38")返回 True: #广播广告数据返回 True def parse(self,data,mac,name,manuf): logging.info('LYWSD03---adv data=)%s, Mac%s, 姓名=%s, 制造(Manuf)%s, 》 % (data, mac, name, manuf))action={} action['present'] = 1 bd = bytes.fromhex(temp,)= struct.unpack('>H', bd[8:10])如果temp > 60000: Temp = 0 -(65530 - temp)temp = temp = temp / 10 humi = bd[10] batt = bd[11] action["temperature"] = temp action["month"] = humi action["battery"]] = batt logging.info('LYWSD03---mac=%s, Temp=%s, 胡米%s, 巴特%s, 》 % (Mac,temp,humi,batt))返回动作 def read(self,mac): 结果={} 尝试: Conn = Connector(mac)conn.connect()如果没有conn.isconnected: conn.connect()如果没有 conn.isconnected: return batt = bytearray(conn.readCharacteristic('0x3a'))电池 = batt[0x3a')通知 = Notification(conn,Lywsdd03)notification.subscribe(''battery'] = battery result['''id'] = mac logging.debug('LYWSD03-'-'+str(result)))返回结果除外: logging.error(str(e)返回结果def handlenotification(self,conn,handle,data,action={}): 结果={} 如果 hex(handle)== '0x36': has = bytearray(data)temperature = float(received[1] * 256 + receive[0])/ 100 水分 = [2] 结果['moisture'] = 温度结果['temperature'] = temperature result['id'] = conn.mac result['source'] = globals.daemonname globals.JEEDOM_COM.add _changes('devices:'+conn.mac,result)globals.COMPATIBILITY(Lywsd03)
  • 保存和退出
  • 通过复制和重命名来备份您的文件
  • Blea :
  • 重新启动恶魔
旧版本的代码需要搜索未知的货币,而不是新的货币!

! 重要 : 如果您使用被驱逐的天线,请考虑一下。

以及

  • 运行扫描
    • ! 请记住切断PC / Mobile的蓝牙,因为它仍然连接,这是传感器的情况,无法检测到或检查@ MAC是否已经存在于BLEA的未知设备中。
  • 选择 lywsd03 并遵循经典的包含
  • 取消 强制 刷新
  • 检查Historiser,如果你想有图表或检查你的电梯。

就这样 你完蛋了

NB: 如果您有野生温度,请检查您是否更改了不良类型,如果是这样,您可以通过应用最大值来使用第二种安全性:

Alexa插件(ASH)

对于那些想将温度计发送到Alexa进行语音访问的人来说,这里是如何配置它们的:

  • 查找 Alexa 插件中的设备,检查 传输 器, 选择类型 温度传感器
即使我不必建议你选择不,否则他会说出它的名字。 [object]+[设备]》 
  • 如果你遇到A NOK 》 (它也与 好的 好的) 点击它,它告诉你它需要什么。
注意预期的通用类型
  • 按适当顺序报告:
装备齿轮

齿轮温度控制

最后,我们选择我们顺序的通用类型,要么是环境/温度。
  • 备份,回到Alexa插件,再次备份。
  • 在 ALEXA 应用程序上运行扫描

通常情况下,您的温度计会在插件中发现并确定。

奖金 奖金

在上一张图片中,如果我的冰箱超过11度超过10分钟,我将温度控制设置为通知(声乐和sms)。 这避免了创建场景。

发表 回复