『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 30769|回复: 28

[修仙教程] 感谢n大!ESP Home基于蓝牙网关-TTL的米家蓝牙设备接入,好用

[复制链接]

98

主题

2866

帖子

1万

积分

超级版主

智能家居&单板滑雪痴迷爱好者

Rank: 8Rank: 8

积分
11443
金钱
8512
HASS币
460

教程狂人突出贡献

发表于 2020-6-19 19:41:25 | 显示全部楼层 |阅读模式
本帖最后由 XCray 于 2021-5-27 12:50 编辑

20210527更新:

n大已近乎完美地实现了这个思路!
  ESPHOME通过创米小白TTL输出接入米家蓝牙设备
  https://bbs.hassbian.com/thread-11351-1-1.html


我去年11月底看到之后就下载了n大的代码,只不过当时沉迷于雪场,竟然就把这件事儿给忘了。今天又看到,干脆动起手来!

简单修改一下代码,主要是mqtt消息topic,这样ha侧的配置就不用动了,无缝切换,爽!

代码已上传至我原来的帖子:
[新奇玩法] (多个)蓝牙网关 TTL->MQTT,支持任意米家蓝牙设备接入HA/NR

下面是以前的内容,基本不用看了:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
说在前面:这个思路只是试验性质的,意在摸清ESPHome实现TTL转发的思路。实际上我自己也没有正式用过。

简单归纳一下,用ESP转发TTL有3个实现的思路:

1、killadm大神的LOCK2MQTT,我自己改造过代码以适应我手上的硬件。这个思路的主要特点是在ESP模块上完成消息的筛选和各种转换(实现对蓝牙设备的适配)。显然,写代码前必须对每种蓝牙设备的消息都了如指掌才行,现在这个思路我已经不用了。

2、就是本贴,还是上一个思路,用ESPHome完成,试验性质,已不再发展。

3、个人认为最合理最科学的思路,就是我的签名贴里说的,主要特点是ESP模块只做最少的工作,只是把消息转发出来,天然适配所有类型的蓝牙设备,一切适配工作都在HA或NR里完成。你有什么设备,就针对什么设备编辑yaml文件就可以了。ESP模块可以和蓝牙网关1:1贴身配置。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

参见我发的其他帖子,之前尝试了用树莓派+python、ESP8266+C的方法(源自killadm大神的LOCK2MQTT),完成蓝牙网关TTL消息的接收、整理以及向mqtt的转发,实现了蓝牙智能门锁(以及花花草草、蓝牙温湿度2)的HA接入。

树莓派跑这么简单的任务确实浪费,ESP8266采用C语言程序(LOCK2MQTT),虽然可以完成任务,但和esp home毫无关系,感觉有点格格不入。

初步体会到ESP Home的强大和方便之后,便想着如何把这个任务在ESP Home下实现,经过研读官方文档、参考已有案例,终于初步实现了这个想法。

这个方案相比LOCK2MQTT的好处或优势(其实是esphome原生api相对于mqtt的好处):

0、思路更简洁,TTL消息直接转化成传感器状态
1、不依赖于MQTT
2、配置改变无需重启HA
3、ESP Home统一管理
4、无需安装Arduino IDE等任何开发环境5、hass侧配置更简单(实际上,根本不需要配置,一切都在ESPHome这里搞定)。
6、据说效率更高、更稳定、延迟更低

实施方法:
0. 安装好ESP Home
1. 编辑保存ttlsensors.h文件(保存到HA的/config/esphone目录里)
2. ESP Home里新建结点(参考压缩包里的yaml文件)
3. upload(esphome会自动编译上传,当然如果是模块第一次刷固件,还得usb)

我这里提供的代码针对的是我使用的榉树门锁、花花草草监测仪、蓝牙温湿度2,需要根据各自的情况和需要修改,注意yaml和.h的匹配

已知问题:
1. 时间戳未转换成可读格式
  哪位编程高手给指点一下,在这个环境下如何把时间戳转换成可读的格式?
2. 每次接收ttl消息会有个错误提示,不影响正常工作。
  提示内容:[E][uart:096]: Reading from UART timed out at byte 0!
  我也不知道这个错误提示是咋回事~~~所以也不知道怎么消除,等高手出手吧。。。

TTL_sensors-on-ESPHome-master.zip (3.02 KB, 下载次数: 242) 第114行是个错误语句,上传时忘记删除了,用之前需要把它注释掉或者删掉。。。否则编译报错
ESP_LOGD("TTLSensor", topic.c_str());

esphome我也是初学乍练,让大家见笑了

有图有真相: esphome.png
熟悉ESP Home的朋友一看便知。

另外,任务很简单,ESP8266/ESP32都可以运行。

期待编程高手完善代码,C++我就没好好学过,arduino也没玩过,编程能力明显跟不上。
https://github.com/xcray/TTL_sensors-on-ESPHome



评分

参与人数 2金钱 +40 HASS币 +20 收起 理由
jyz_0501 + 20 论坛有你更精彩!
+ 20 + 20 虽然看不懂,但感觉很厉害的样子。.

查看全部评分

回复

使用道具 举报

16

主题

171

帖子

757

积分

高级会员

Rank: 4

积分
757
金钱
581
HASS币
40
发表于 2020-6-19 21:32:56 | 显示全部楼层
有时间希望能研究下基于小米手环和ESP32的室内定位。
回复

使用道具 举报

98

主题

2866

帖子

1万

积分

超级版主

智能家居&单板滑雪痴迷爱好者

Rank: 8Rank: 8

积分
11443
金钱
8512
HASS币
460

教程狂人突出贡献

 楼主| 发表于 2020-6-20 09:11:13 | 显示全部楼层
icase 发表于 2020-6-19 21:32
有时间希望能研究下基于小米手环和ESP32的室内定位。

室内定位?

我个人觉得,对于智能家庭来说,真正有用的是在家/离家检测(presence detection),这方面,我最推崇的是基于树莓派的分布式多用户检测方案——monitor https://bbs.hassbian.com/thread-10096-1-1.html

esp32也有ble,这方面我刚开始琢磨,暂时没啥值得说的。
回复

使用道具 举报

16

主题

171

帖子

757

积分

高级会员

Rank: 4

积分
757
金钱
581
HASS币
40
发表于 2020-6-20 15:21:51 | 显示全部楼层
XCray 发表于 2020-6-20 09:11
室内定位?

我个人觉得,对于智能家庭来说,真正有用的是在家/离家检测(presence detection),这方面 ...

我的观点略有不同,离家/在家更多是安防的需求更大,的确很重要,不过基于iCloud,手机、ble蓝牙、路由等解决方案很多,虽然都存在稳定性不足的问题,但至少可以保证大部分普通需求,而室内定位是智能家居自动化的精髓,可能夸张点说,也是灵魂部分了,无感操作带来的便利幸福感更高。
回复

使用道具 举报

98

主题

2866

帖子

1万

积分

超级版主

智能家居&单板滑雪痴迷爱好者

Rank: 8Rank: 8

积分
11443
金钱
8512
HASS币
460

教程狂人突出贡献

 楼主| 发表于 2020-6-20 15:43:37 | 显示全部楼层
icase 发表于 2020-6-20 15:21
我的观点略有不同,离家/在家更多是安防的需求更大,的确很重要,不过基于iCloud,手机、ble蓝牙、路由等 ...

嗯,能理解这个想法,也基本同意。

不过总觉得现有的技术实现室内定位,还是有些复杂、难以普遍应用。

esp32倒是可以测量指定蓝牙设备的信号电平,如果在室内部署多个esp32、利用三点定位法,米级精度应该在技术上可以实现,但应用到自动化上,不可控的、需要考虑的因素还是很多的,可能还不如智能音箱这个途径更方便。

~~~~~~~~~~~~~~~~~~~~~~~~~~~
感谢囧大的鼓励!

囧大谦虚了哈!ESPHome我也是这几天刚开始接触,最大的感受就是强大、方便。当然,还有很多疑问需要慢慢找答案
回复

使用道具 举报

3

主题

150

帖子

941

积分

高级会员

Rank: 4

积分
941
金钱
791
HASS币
0
发表于 2020-6-20 16:23:36 | 显示全部楼层
嗯,我的是多模网关,要看看怎么接TTL。。
回复

使用道具 举报

16

主题

171

帖子

757

积分

高级会员

Rank: 4

积分
757
金钱
581
HASS币
40
发表于 2020-6-20 16:34:47 | 显示全部楼层
XCray 发表于 2020-6-20 15:43
嗯,能理解这个想法,也基本同意。

不过总觉得现有的技术实现室内定位,还是有些复杂、难以普遍应用。

的确。现实环境及各种干扰不可控,ESP32我现在也在配合小米手环在用,但是发现信号非常不稳定,官方的参数又没有诸如阈值调节等参数提供,所以只能说凑合着用。而且用不同位置的2个以上ESP32做交叉定位,貌似彼此还有干扰。我看论坛上有人提供过用N1或者树莓派的蓝牙配合手环定位,还没试过。
回复

使用道具 举报

5

主题

340

帖子

1271

积分

金牌会员

Rank: 6Rank: 6

积分
1271
金钱
931
HASS币
0
发表于 2020-6-20 20:50:59 | 显示全部楼层
谢谢分享!!!
回复

使用道具 举报

7

主题

397

帖子

2231

积分

金牌会员

Rank: 6Rank: 6

积分
2231
金钱
1834
HASS币
0
发表于 2020-6-21 14:19:04 | 显示全部楼层
小米夜灯2 可以接入吗?
回复

使用道具 举报

98

主题

2866

帖子

1万

积分

超级版主

智能家居&单板滑雪痴迷爱好者

Rank: 8Rank: 8

积分
11443
金钱
8512
HASS币
460

教程狂人突出贡献

 楼主| 发表于 2020-6-21 16:48:44 | 显示全部楼层
qjiang 发表于 2020-6-21 14:19
小米夜灯2 可以接入吗?

我没用过这个夜灯,特意到小米网站上看了一下,如果你说的是“米家夜灯2 蓝牙版”,我相信肯定可以接入,并且可以利用其集成的人体传感器和环境亮度传感器。

但是,需要自己补充代码。我现在上传的代码只适配了榉树门锁、花花草草和蓝牙温湿度2
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-4-25 08:32 , Processed in 0.183704 second(s), 36 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表