该蓝牙通用网关与https%3A//github.com/custom-components/ble_monitor">Passive BLE Monitor 集成搭配使用.
从而解决因为蓝牙穿墙能力弱导致蓝牙信号无法穿墙的问题,蓝牙通用网关的主要用途有:
关于蓝牙设备的相关介绍,请参阅: HA智能硬件采购避坑指要(三) 蓝牙篇
硬件很简单,你只需要自备ESP32的主板一枚,建议最好选4M Flash的, 虽然2M的也能刷,但是稍微麻烦些(而且因为闪存小无法支持OTA了). 我选的是ESP-C3-32S(4M)
的开发板. 可在某陶上搜索"ESP-C3-32S-Kit"记得问清楚是否4M(2M和4M只差几毛钱).
ESP32-C3
是Espressif新出的RISC-V 32位单核处理器(160MHz)支持蓝牙5.0(BLE支持),以前的ESP32是基于蓝牙4.2.
然后准备好ESPHome开发环境,请升级到ESPHome的最新版(至少2022.1版本以后),请不要在arm环境下开发,因为Espressif
目前还不支持ESP-C3
在arm下的编译.
在Linux环境下安装使用很简单:
sudo apt -y install python3 python3-pip python3-pip-whl
sudo -H pip3 install --upgrade pip
pip3 install --user esphome
# To set this permanently, you can run echo 'export PATH=$PATH
HOME/.local/bin' >> $HOME/.bashrc
export PATH=$PATH
HOME/.local/bin
# You may need to logout and back in for the new group to take effect.
sudo usermod -a -G dialout $USER
好了,刷机的YAMLbluetooth-gateway.yaml
配置如下(如果板子不是ESP32-C3
请自行调整board参数),记得在相同目录下的secrets.yaml
文件中填好参数:
substitutions:
# Name the device and it's entities
device: ble_gateway
device_name: blegateway1
esphome:
name: $device_name
comment: $device
platformio_options:
board_build.flash_mode: dio
esp32:
board: esp32-c3-devkitm-1
variant: esp32c3
framework:
type: arduino
version: 2.0.2
platform_version: https://github.com/tasmota/platf ... essif32-2.0.2.3.zip
external_components:
- source: github://myhomeiot/esphome-components
esp32_ble_tracker:
# Enable logging
logger:
# Enable Home Assistant API
api:
reboot_timeout: 1h
ota:
password: !secret ota_password
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable fallback hotspot in case wifi connection fails
ap:
ssid: "$device_name Fallback Hotspot"
password: !secret ap_password
ble_gateway:
id: $device_name
# devices:
# - mac_address: 01:23:45:67:89:AB
# - mac_address: !secret lywsd03mmc_mac
on_ble_advertise:
then:
- homeassistant.service:
service: ble_monitor.parse_data
data:
packet: !lambda return packet;
gateway_id: $device_name
- homeassistant.event:
event: esphome.on_ble_advertise
data:
packet: !lambda return packet;
binary_sensor:
- platform: homeassistant
id: ble_gateway_discovery
entity_id: binary_sensor.ble_gateway
attribute: discovery
on_state:
then:
lambda: id($device_name).set_discovery(x);
text_sensor:
- platform: homeassistant
id: ble_gateway_devices
entity_id: binary_sensor.ble_gateway
attribute: devices
on_value:
then:
lambda: id($device_name).set_devices(x);
# IP address of device. Not really needed for HA (as HA already knows it), but for showing on the display during startup. The startup screen will leave on if no instance connects to the API.
- platform: wifi_info
ip_address:
name: $device_name IP address
id: ip_address
# ESPHome version used to compile the app
- platform: version
name: $device_name ESPHome Version
sensor:
# WiFi signals strength sensor
- platform: wifi_signal
name: $device_name WiFi Signal Sensor
update_interval: 60s
USB插上ESP32开发板,看清楚串口号(ls /dev/tty*
),一般是/dev/ttyUSB0
,然后执行如下语句编译烧录固件:
# choose the port after compiling
esphome run bluetooth-gateway.yaml
至此,通用蓝牙网关的硬件烧录部分完成.
接着,还要在HA上配置与https%3A//github.com/custom-components/ble_monitor">Passive BLE Monitor 集成的搭配部分.
修改HA configuration.yaml
文件:
input_boolean:
ha_started:
initial: false
settings_ble_gateway:
name: BLE Gateway
icon: mdi:bluetooth
settings_ble_gateway_discovery:
name: BLE Gateway Discovery
icon: mdi:bluetooth-connect
input_text:
settings_ble_gateway_add_device:
name: BLE Gateway Add Device
icon: mdi:bluetooth-connect
initial: ''
template:
- binary_sensor:
- name: BLE Gateway Add Device
state: "{{ (state_attr('binary_sensor.ble_gateway_add_device', 'mac_address')) }}"
availability: "{{ is_state('input_boolean.ha_started', 'on') }}"
attributes:
mac_address: "{{ states('input_text.settings_ble_gateway_add_device') | replace(':', '') | trim }}"
- binary_sensor:
- name: BLE Gateway
icon: mdi:bluetooth
state: "{{ is_state('input_boolean.settings_ble_gateway', 'on') }}"
availability: "{{ is_state('input_boolean.ha_started', 'on') }}"
attributes:
discovery: "{{ is_state('input_boolean.settings_ble_gateway_discovery', 'on') }}"
devices: "{{ states | selectattr('entity_id', 'search', '^(device_tracker||(binary_)?sensor).ble_') | selectattr('attributes.mac_address', 'defined') | map(attribute='attributes.mac_address') | unique | sort | join('') | replace(':', '') if is_state('binary_sensor.ble_gateway', 'on') }}"
然后修改automations.yaml
文件:
- alias: HA Start automation
initial_state: true
trigger:
platform: homeassistant
event: start
action:
service: input_boolean.turn_on
entity_id: input_boolean.ha_started
id: ha_start
重启HA即可. 对了记得把刚刚新鲜出炉的蓝牙网关加入进来.
然后该蓝牙网关就会自动转发已发现的并且在https%3A//github.com/custom-components/ble_monitor">Passive BLE Monitor 集成中设备.
如果要添加新的蓝牙设备请在https%3A//github.com/custom-components/ble_monitor">Passive BLE Monitor 集成上添加.
如果想只针对个别设备在指定的蓝牙网关上转发,那么请使用input_text.settings_ble_gateway_add_device
添加该设备的MAC地址.
蓝牙网关接收到已注册设备的广播后会同时触发事件esphome.on_ble_advertise
发送原始数据.
最后,记得设置input_boolean.settings_ble_gateway
为"on",启用蓝牙网关功能.
设置input_boolean.settings_ble_gateway_discovery
为"on",启用自动发现功能.
ESPHome 蓝牙网关的日志查看:
esphome logs bluegateway.yaml --device /dev/ttyUSB0
esphome logs bluegateway.yaml
选择远程LOGS
.版本更新
2022-5-9: [zxsq-anti-bbcode-Bug] esp-idf 下无法更改 scan_parameters, 使用 Arduino framework now.
2022-5-21: [zxsq-anti-bbcode-feat] 新增 启用自动发现开关
hellkun 发表于 2022-5-6 23:09
感谢LZ分享
ESP C3的开发板建议慎选,C3是单核RISC-V方案,优势是支持蓝牙5.0,价格更便宜,但是跟之前的E ...
XCray 发表于 2022-5-7 11:37
这个称为“蓝牙网关”不太准确吧?更接近于蓝牙中继器的概念。另外,ble_monitor虽然不错但也有明显的缺点 ...
XCray 发表于 2022-5-7 11:37
这个称为“蓝牙网关”不太准确吧?更接近于蓝牙中继器的概念。另外,ble_monitor虽然不错但也有明显的缺点 ...
ghostist 发表于 2022-5-7 13:10
X大白嫖一下体脂称+蓝牙温湿度可否?
riceball 发表于 2022-5-7 13:47
1. 是的主要是能中继, 不过也可以说网关: HA上可以不用插蓝牙适配器, 就可以通过这货接入蓝牙设备.
2. bl ...
XCray 发表于 2022-5-7 16:58
1. 也对,这个思路确实挺巧妙的。
2. 我知道一个情况,也不能说完全是ble_monitor的问题。ble_monitor机 ...
wison 发表于 2022-5-7 10:55
有没购买链接啊,私发我一下吧,怕买错了
evadestiny 发表于 2022-5-14 17:03
你好,问一下你买了吗?要是买了给个链接
evadestiny 发表于 2022-5-14 20:16
楼上大佬有没有推荐的淘宝链接,想少走点弯路
shavn1984 发表于 2022-5-17 02:14
我用的ESP-C3-32S(4M) ,用esphome webtool编译烧写bin成功,就是连不上wifi,怎么破? ...
riceball 发表于 2022-5-17 08:04
查日志(Logs)
evadestiny 发表于 2022-5-17 10:41
大佬请教一个问题,yaml文件里的
!secret
!lambda
shavn1984 发表于 2022-5-17 16:51
板子是2M的。。求指教如何刷?
riceball 发表于 2022-5-17 20:41
ESPHome 新手不推荐2M
shavn1984 发表于 2022-5-17 21:35
我用另外一块旧的板子刷好了。日志里有扫描到的蓝牙设备。ha config和自动化都配置好了,但是重启后扫不 ...
ilongjiang 发表于 2022-5-17 22:27
大神复制进去报错了。记得在相同目录下的secrets.yaml文件中填好参数.这个不知道怎么填 ...
riceball 发表于 2022-5-18 07:20
还是得查日志阿, 蓝牙没开?
riceball 发表于 2022-5-18 07:20
还是得查日志阿, 蓝牙没开?
shavn1984 发表于 2022-5-18 20:02
2022-05-17 17:50:25 DEBUG (MainThread) [custom_components.ble_monitor] Initializing BLE Monitor en ...
nucleic_acid 发表于 2022-5-18 19:43
感谢分享,做了一个,用的是d1 r32,安装顺利没有任何问题,C3下单了,封城了不知道啥时候能送来。用起来挺 ...
riceball 发表于 2022-5-19 06:37
留意下日志, 更新了文档,加上如何查看 ESPHome 日志
riceball 发表于 2022-5-19 06:30
你这个是ble_monitor的日志,不是esphome网关的日志, 如果要自动发现没有加密的设备,必须要在集成启用自 ...
Time | level | Tag | Message |
16:10:42 | [D] | [esp32_ble_tracker:217] | Starting scan... |
16:10:42 | [D] | [esp32_ble_tracker:726] | Found device 00:E3:5F:3A:06:08 RSSI=-40 |
16:10:42 | [D] | [esp32_ble_tracker:747] | Address Type: RANDOM |
16:10:45 | [D] | [esp32_ble_tracker:726] | Found device 72:C4:9D:A6:22:1C RSSI=-67 |
16:10:45 | [D] | [esp32_ble_tracker:747] | Address Type: RANDOM |
16:10:45 | [D] | [esp32_ble_tracker:751] | TX Power: 2 |
16:10:46 | [D] | [esp32_ble_tracker:726] | Found device EC:4D:3E:86![]() |
16:10:46 | [D] | [esp32_ble_tracker:747] | Address Type: PUBLIC |
16:11:13 | [D] | [esp32_ble_tracker:726] | Found device 72:8D:B5:5B:1D:4D RSSI=-73 |
16:11:13 | [D] | [esp32_ble_tracker:747] | Address Type: RANDOM |
16:11:13 | [D] | [esp32_ble_tracker:751] | TX Power: 2 |
16:11:33 | [D] | [esp32_ble_tracker:726] | Found device B8:7C:6F:32:95![]() |
16:11:33 | [D] | [esp32_ble_tracker:747] | Address Type: PUBLIC |
16:11:33 | [D] | [esp32_ble_tracker:749] | Name: 'MiKettle' |
shavn1984 发表于 2022-5-19 16:21
感觉问题还是在ble moniotr集成上。我之前自动扫描加入过几个设备,小米电水壶、小米温湿度2刷了ATC固件 ...
riceball 发表于 2022-5-19 18:02
很明显 HA主机上没有找到蓝牙适配器, 也可能是实体硬件没有传递到 docker 中.
我也是 [email protected] 今天 ...
shavn1984 发表于 2022-5-19 20:08
这还需要激活? 删除重装集成也没用,是不是有哪里没删干净?
riceball 发表于 2022-5-19 20:37
我的意思是HA上找不到蓝牙适配器硬件, 所以 bt_interface 是 disable 的(没激活的)
你是在 docker 容器 ...
shavn1984 发表于 2022-5-20 02:45
我删除ui集成,用yaml模式配置hci0,可以扫描到usb蓝牙适配器下的设备了。
ble_monitor:
hci_interface:
nucleic_acid 发表于 2022-5-19 12:10
刚才看了你之前的帖子
使用Passive BLE Monitor集成代替蓝牙网关直接接入HA
riceball 发表于 2022-5-20 08:40
`重启后恢复状态` 如果没有勾选,那么重启后在没有收到广播前,设备状态为 `Unavailable`.
...
shavn1984 发表于 2022-5-20 12:46
esp32编译烧录正常,启动后有扫描到设备日志。ha没有自动扫描添加实体
配置如下
esphome:
riceball 发表于 2022-5-20 19:19
你没注意看我给你的回复, `重启后恢复状态` 是我回复别人的.
esphome 网关不会发现添加设备, 你必须手动 ...
shavn1984 发表于 2022-5-20 21:17
我用了官方的配置,自动发现也可以了,感谢回复
ljw 发表于 2022-5-21 14:17
我想问下,你们使用 ble monitor 会不会不稳定,偶尔会有这条日志
HCIdump thread: Something wrong - inte ...
riceball 发表于 2022-5-21 15:17
没有出现过这个问题, 看看是docker的问题,还是蓝牙适配器硬件的瓶颈: 无法持续扫描
ESP32就存在这样的硬 ...
怪物json 发表于 2022-6-19 10:55
烧录时报错了,请教下是什么问题
kkkkllll08 发表于 2022-7-3 23:43
想问一下 esp32已经接入Hass了 但是Hass主机没有蓝牙也没有蓝牙适配器的,怎么将温湿度计通过esp32接入, ...
riceball 发表于 2022-5-21 15:17
没有出现过这个问题, 看看是docker的问题,还是蓝牙适配器硬件的瓶颈: 无法持续扫描
ESP32就存在这样的硬 ...
kkkkllll08 发表于 2022-7-5 21:05
连接wifi困难,是否有建议的scan_parameters参数值
zhaidoudou123 发表于 2022-7-26 22:55
楼主你好,请问后面如果再买第二块板子,需要修改ha里面的相应实体以区分吗? ...
hatonas 发表于 2022-9-30 09:53
合宙板子esp32c3,加上蓝牙esp32_ble_tracker,WiFi就连不上了。删掉就可以。有遇到过吗 ...
shavn1984 发表于 2022-5-15 15:39
ble_gateway:
id: $device_name 这行报错
win741852 发表于 2022-11-8 12:23
我也是这个情况 用的是ESP-C3-13U-KIT 已经确定不是路由器的问题
最新测试结果,我刚添加了手动配置网络 ...
hatonas 发表于 2022-11-14 15:06
谢谢,看来是要手动配置的,我挂了一晚上,也连上了。连接速度只能说很慢很慢 ...
justion 发表于 2022-11-24 11:25
楼主你好,我使用了你的代码成功刷入了,也接入了ha,并且小米门磁和温湿度计检测都没有问题,但是到了设备 ...
win741852 发表于 2022-11-8 12:23
我也是这个情况 用的是ESP-C3-13U-KIT 已经确定不是路由器的问题
最新测试结果,我刚添加了手动配置网络 ...
hackyjso 发表于 2022-7-7 12:40
我也是这个那个 ESP32 C3 板子,为什么不能联网呢,
就 arduino 不行,可是esp-idf平台就可以
Awe7 发表于 2024-2-2 20:04
UnknownPackageError: Could not find the package with 'espressif/toolchain-riscv32-esp @ 8.4.0+2021r2 ...
Awe7 发表于 2024-2-2 20:06
INFO ESPHome 2023.12.9
INFO Reading configuration /config/esphome/esp32c3ble.yaml...
WARNING The s ...
Awe7 发表于 2024-2-2 20:04
UnknownPackageError: Could not find the package with 'espressif/toolchain-riscv32-esp @ 8.4.0+2021r2 ...
sunjx888 发表于 2024-3-5 09:04
espreeif的git链接更新了,18行的链接换成这个试试:https://github.com/tasmota/platform-espressif32/r ...
欢迎光临 『瀚思彼岸』» 智能家居技术论坛 (https://bbs.hassbian.com/) | Powered by Discuz! X3.5 |