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

 找回密码
 立即注册
查看: 38304|回复: 36

[经验分享] 判断在不在家又有新路子了,room-assistant配置分享

  [复制链接]

4

主题

107

帖子

845

积分

论坛技术达人

积分
845
金钱
728
HASS币
40
发表于 2020-12-1 16:27:17 | 显示全部楼层 |阅读模式
本帖最后由 seon 于 2020-12-1 16:55 编辑

首先感谢@xiaopi 同学的分享,正准备琢磨要判断家里是否有人的时候,就看到了他的帖子,提到了一个类似monitor的项目叫room-assistant。

打开官网看了一眼简介,这项目的目标是实现room级的自动化,也就是能做到根据人在哪个具体的房间而触发相应的自动化。

那看起来,我只想做整个屋子的检测应该也不在话下了。于是进一步看了下安装方法,似乎也还不算复杂,那就搞起来吧!

官方提供三种安装方式: NodeJS、Docker和Hass.io add-on

因为已经安装了Hass.io,所以最理想当然是Hass.io的add-on了,可惜官网给的那个repo,我没能成功添加到Hass.io里,只好作罢

最后选择了NodeJS的方式,反正我的树莓派上早已经安装好NodeJS的环境了。

下面就是我基于树莓派4B的具体的配置步骤,其实就是官网的步骤我给翻译一下

1、安装NodeJS,已经安装过的同学可以跳过这一步
curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
sudo apt-get install -y nodejs
2、安装其他的相关依赖
sudo apt-get update
sudo apt-get install build-essential libavahi-compat-libdnssd-dev bluetooth libbluetooth-dev libudev-dev
3、安装room-assistant,由于国内访问npm软件源速度很慢,所以这里指定使用淘宝的npm源来安装,速度会快很多
sudo npm i --global --unsafe-perm room-assistant --registry=https://registry.npm.taobao.org
安装期间有些native的模块需要编译,会报出一些warning,不用担心,只要最后出现类似下面的内容,就说明安装成功了,时间会有点长
+ [email protected]
added 422 packages from 339 contributors and updated 1 package in 263.822s
4、如果需要依赖蓝牙设备进行检测,还需要执行下面的命令进行授权。我主要就是通过蓝牙检测手机和手表的,所以需要执行这些命令
sudo setcap cap_net_raw+eip $(eval readlink -f `which node`)
sudo setcap cap_net_raw+eip $(eval readlink -f `which hcitool`)
sudo setcap cap_net_admin+eip $(eval readlink -f `which hciconfig`)
以上,room-assistant就安装完成了,下面是配置。

room-assistant配置

下面的配置过程,均需要在pi用户下执行。

1、创建配置目录
mkdir -p ~/room-assistant/config
2、创建配置文件
vi ~/room-assistant/config/local.yml
3、输入配置文件的内容,方括号括起来的部分需要根据你的环境替换为实际值。MAC地址是手机蓝牙的MAC地址,以iPhone 为例,查看方式为:设置 - 通用 - 关于本机 - 蓝牙
global:
  integrations:
    - homeAssistant
    - bluetoothClassic
homeAssistant:
  mqttUrl: '[mqtt://homeassistant.local:1883]'
  mqttOptions:
    username: [youruser]
    password: [yourpass]
bluetoothClassic:
  addresses:
    - [<bluetooth-mac-of-device-to-track>]

OK,配置完成。现在可以到你的room-assistant目录下面,去启动了
cd ~/room-assistant
经过一小段时间的等待,room-assistant启动完成后,应该会打印出以下内容
HomeAssistantService: Successfully connected to MQTT broker at mqtt://192.168.1.153:1883
12/1/2020, 3:35:41 PM - info - ConfigService: Loading configuration from /usr/lib/node_modules/room-assistant/dist/config/definitions/default.js, config/local.yml
12/1/2020, 3:35:41 PM - info - ClusterService: Starting mDNS advertisements and discovery
12/1/2020, 3:35:41 PM - info - NestApplication: Nest application successfully started
12/1/2020, 3:35:42 PM - info - ClusterService: raspberrypi has been elected as leader
12/1/2020, 3:35:42 PM - info - EntitiesService: Refreshing entity states
12/1/2020, 3:35:54 PM - info - HomeAssistantService: Device tracker requires manual setup in Home Assistant with topic: room-assistant/device_tracker/bluetooth-classic-f8-87-f1-12-d6-af-tracker/state
可以看到,room-assistant已经成功连接到了mqtt,并且提示需要到home-assistant里面,手动配置device tracker
到这里,说明room-assistant的安装和配置,都已经没问题了。以后为了每次重启树莓派,room-assistant都能自动启动,需要配置成一个service。

1、按ctrl + c结束掉刚刚启动的room-assistant

2、新建room-assistant.service文件
sudo vi /etc/systemd/system/room-assistant.service
3、写入以下内容
[Unit]
Description=room-assistant service

[Service]
ExecStart=/usr/bin/room-assistant
WorkingDirectory=/home/pi/room-assistant
Restart=always
RestartSec=10
User=pi

[Install]
WantedBy=multi-user.target
4、设置为自动启动,并且启动service
sudo systemctl enable room-assistant.service
sudo systemctl start room-assistant.service
好了,以后基本上就不用管它了~

如果以后有新的设备需要监测,就编辑room-assistant的配置文件
vi ~/room-assistant/config/local.yml
添加了新的蓝牙MAC后,执行
sudo systemctl restart room-assistant.service
即可完成更新。

现在就转到home-assistant里面,继续配置

home-assistant配置

1、在ha的配置目录里,新建known_devices.yaml。如果已经有这个文件了,就跳过这一步

2、在known_devices.yaml新添加一个要track的对象,方括号括起来的部分你可以自定义
[member_1]:
  hide_if_away: false
  icon:
  mac:
  name: [username]
  picture:
  track: true

3、在packages目录下新建device_tracker.yaml,写入以下内容。其中的member_1需要跟上面定义的一样。后面的内容,就是刚刚room-assistant启动后,最后一行所显示的内容,实际上是mqtt的topic
device_tracker:
  - platform: mqtt
    payload_home: 'true'
    payload_not_home: 'false'
    devices:
      [member_1]: '[room-assistant/device_tracker/bluetooth-classic-xx-xx-xx-xx-xx-xx-tracker/state]'

OK,大功告成,重启ha,在你的仪表盘里面添加一个entity: device_tracker.member_1,就可以看到状态了。你可以关掉手机蓝牙,等上一会,就会发现member_1变为离家状态,再打开蓝牙,过一会就会变为在家状态。

剩下的事情,大家就可以自由发挥啦







评分

参与人数 5金钱 +63 收起 理由
woodencow + 5 大神666!
jyz_0501 + 20 感谢楼主分享!
+ 20 厉害了word楼主!
xiaopi + 8 大神666!
he_qr + 10 论坛有你更精彩!

查看全部评分

回复

使用道具 举报

15

主题

438

帖子

4352

积分

论坛元老

Rank: 8Rank: 8

积分
4352
金钱
3914
HASS币
0
发表于 2020-12-1 16:53:00 | 显示全部楼层
这种追踪方式也能实现room级的存在检测?
回复

使用道具 举报

4

主题

107

帖子

845

积分

论坛技术达人

积分
845
金钱
728
HASS币
40
 楼主| 发表于 2020-12-1 16:57:20 | 显示全部楼层
miniknife 发表于 2020-12-1 16:53
这种追踪方式也能实现room级的存在检测?

是的,安装官方的介绍,需要每个房间放一个树莓派,分别装上room-assistant

我手里没那么多树莓派,就没试room-level的监测
回复

使用道具 举报

13

主题

554

帖子

4310

积分

论坛元老

Jeff

Rank: 8Rank: 8

积分
4310
金钱
3756
HASS币
10

活跃会员

发表于 2020-12-1 17:27:18 | 显示全部楼层
家里剪力墙太多,蓝牙覆盖估计歇菜
Jeff
回复

使用道具 举报

4

主题

107

帖子

845

积分

论坛技术达人

积分
845
金钱
728
HASS币
40
 楼主| 发表于 2020-12-1 17:38:02 | 显示全部楼层
karl_31 发表于 2020-12-1 17:27
家里剪力墙太多,蓝牙覆盖估计歇菜

这个支持cluster,可以每个房间放一个
回复

使用道具 举报

9

主题

534

帖子

4530

积分

元老级技术达人

积分
4530
金钱
3986
HASS币
60
发表于 2020-12-1 18:17:15 | 显示全部楼层
看了下,iphone能支持ble吗?好像还在beta分支,需要安装app。不知道是不是要一直运行app。
回复

使用道具 举报

4

主题

107

帖子

845

积分

论坛技术达人

积分
845
金钱
728
HASS币
40
 楼主| 发表于 2020-12-1 18:22:22 | 显示全部楼层
sangood 发表于 2020-12-1 18:17
看了下,iphone能支持ble吗?好像还在beta分支,需要安装app。不知道是不是要一直运行app。 ...

这个不是通过ble追踪的,是classic bluetooth,所以支持iPhone,也不需要安装任何额外的app。
回复

使用道具 举报

20

主题

310

帖子

1481

积分

金牌会员

Rank: 6Rank: 6

积分
1481
金钱
1171
HASS币
0
发表于 2020-12-2 08:58:47 | 显示全部楼层
今天试试这个方案,但还是希望能有esp32这种小体积的方案
回复

使用道具 举报

2

主题

366

帖子

2506

积分

金牌会员

Rank: 6Rank: 6

积分
2506
金钱
2135
HASS币
30
发表于 2020-12-2 09:50:57 来自手机 | 显示全部楼层
每間房一個樹莓會不會太貴了
回复

使用道具 举报

9

主题

534

帖子

4530

积分

元老级技术达人

积分
4530
金钱
3986
HASS币
60
发表于 2020-12-2 10:16:43 | 显示全部楼层
seon 发表于 2020-12-1 18:22
这个不是通过ble追踪的,是classic bluetooth,所以支持iPhone,也不需要安装任何额外的app。 ...

https://github.com/mKeRix/room-assistant/issues/309  ble方式听说是100ms反应
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-26 22:32 , Processed in 0.451399 second(s), 34 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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