
使用 Home Assistant 跟踪我们的家庭位置
在这篇文章中,我们将看到一些非常有趣的东西, 它只不过是跟踪或跟踪某些蓝牙设备的能力 (智能手环, 手机…) 每栋房屋, 旨在始终定位位置以执行自动化.
我说了什么, 我们都有一部手机,它无处不在, 或者我们佩戴智能手环或智能手环, 所有这些设备都有蓝牙, 我们可以使用每个设备的 MAC 地址在我们的家中定位它. 为什么? 嗯,首先是统计数据, 我们可以可视化我们花费了多少时间以及在哪里, 这很奇怪. 显然,我们可以这样做来放置自动化, 例如, 如果是晚上,你在房间里,房子的前门没有锁, 好吧,让它结束吧. 当你早上到达厨房时,我会说早上好, 我把这个消息放在你身上… 或者我知道什么, 直接在 平面图 o 我们房子的动画平面图, 坐在沙发上, 吃, 睡眠… 😉 眼睛, 我们也可以找到我们的动物, 如果我们放置这些蓝牙的跟踪器, 如果猫/狗进入房间,它不应该, 让家里的扬声器告诉我们.
我们是如何做到的? 我们必须考虑到房子的每个房间都必须放置某些设备, 在每个房间, 浴… 我们想要定位的位置. 解决方案显然必须在每个设备之间进行对话, 了解我们离哪一个.
如果您没有这些设备,就个人而言,最好的解决方案是依靠 ESP32-mqtt 房间, 通过基于 ESP32 芯片的板子,最重要的是非常便宜,您可以轻松地分发和隐藏在房子周围. 我必须告诉你,我使用这个解决方案大约一年了, 最后,我迁移到了我们今天将在这篇文章中看到的解决方案, 因为我有几个 Raspberry Pi 散布在房子周围, 添加此功能不需要我任何费用. 有一天,如果我感到无聊,我会在 ESP32-mqtt-room 上发帖, 这也非常酷.
我说了什么, 今天我们将看到 房间助理, 这也是一个很好的解决方案, 并且我们可以在我们心爱的 Raspberry Pi 上安装和运行, 当然也像上一个选项, 完全集成到我们的 Home Assistant 中,敬请期待!
在 Raspbery Pi 上安装,
开始! 我们将在我们拥有并希望安装 room-assistant 的每个 Raspberry Pi 中执行这些步骤, 首先要做的事情, 安装 NodeJS:
curl -sL https://deb.nodesource.com/setup_12.x | sudo -E 猛击 - sudo apt-get install -y nodejs
Instalamos todas las dependencias que necesitaremos:
Sudo apt-get 更新 && sudo apt-get install -y build-essential libavahi-compat-libdnssd-dev 蓝牙 libbluetooth-dev libudev-dev libcairo2-dev libpango1.0-dev libjpeg-dev libgif-dev librsvg2-dev
Instalamos room-assistant, 类转换器 y 类验证器:
sudo npm i --global --unsafe-perm room-assistant sudo npm install i --global class-transformer sudo npm install i --global class-validator
Añadimos los siguientes permisos:
sudo setcap cap_net_raw+EIP $(eval readlink -f '哪个节点') sudo setcap cap_net_raw+EIP $(eval readlink -f '哪个 hcitool') sudo setcap cap_net_admin+EIP $(eval readlink -f '哪个 HCIconfig')
Sinceramente no recuerdo muy bien porqué hice lo siguiente, Pero lo tengo documentado 🙂
sudo nano /etc/avahi/avahi-daemon.conf enable-dbus=yes
我们为 room-assistant 创建目录和配置文件 (小心,然后我们填写配置文件, 只是为了让您知道它在哪里):
mkdir -p ~/room-assistant/config touch ~/room-assistant/config/local.yml
开始使用配置文件之前, 让我们创建 boot room-assistant 的服务:
sudo nano /etc/systemd/system/room-assistant.service
我们向服务引入以下配置:
[单位] 描述=room-assistant service [服务] ExecStart=/usr/bin/room-assistant WorkingDirectory=/home/pi/room-assistant Restart=总是 RestartSec=10 User=pi [安装] WantedBy=多用户目标
我们启用服务, 我们启动了它 (好吧,在开始之前,您必须拥有我们将在下面看到的 room-assistant 的配置文件) 我们验证它是否已被撕下:
sudo systemctl enable room-assistant.service sudo systemctl start room-assistant.service sudo systemctl status room-assistant
Room-assistant 配置文件, 之 单个示例, 那是, 一个单独工作的 Raspberry Pi, 无需与其他 Raspberry 交谈, 我们将在 'instanceName' 中给出一个名称, 我们将在“地址”中添加要跟踪或跟踪的蓝牙设备的 MAC 地址, 和重要, 我们将指示我们的 MQTT 代理服务器, 向您发送数据:
全球: instanceName (实例名称): Garage 集成: - 首页助手 - 蓝牙经典 homeAssistant: mqttUrl 的: MQTT 协议://DIRECCIÓN_IP_BROKER_MQTT:1883 mqtt选项: 用户名: 用户名 密码: bluetoothClassic 密码: 最小 Rssi: -20 地址: - 'FD:72:03:6B:公元前:XX' - 'EA:4B:B2 层:2自:56:XX' - '7C:2F:80:电子商务:61:XX' - 'B4:C4 系列:燃料电池:64:19:XX'
这是一个 集群模式示例 Room-Assistant 配置文件的, 当我们有多个带有房间助手的 Raspberry Pi 时,我们将使用它. 与前一个不同, 在这个中,我们必须在 peerAddresses 中添加每个 Raspberry Pi 的 IP 地址:
全球: 簇: 自动发现: False 端口: 6425 peerAddresses 地址: - DIRECCION_RASPBERRY_PI_1:6425 - DIRECCION_RASPBERRY_PI_2:6425 - DIRECCION_RASPBERRY_PI_3:6425 - DIRECCION_RASPBERRY_PI_4:6425 - DIRECCION_RASPBERRY_PI_5:6425 instanceName (实例名称): 厨房集成: - 首页助手 - 蓝牙经典 homeAssistant: mqttUrl 的: MQTT 协议://DIRECCIÓN_IP_BROKER_MQTT:1883 mqtt选项: 用户名: 用户名 密码: bluetoothClassic 密码: 最小 Rssi: -20 hciDeviceId: 0 地址: - 'FD:72:03:6B:公元前:XX' - 'EA:4B:B2 层:2自:56:XX' - '7C:2F:80:电子商务:61:XX' - 'B4:C4 系列:燃料电池:64:19:XX'
井, 现在是, 录制并拥有配置文件后, 记得重启服务 (或者恶魔) by 客房助理.
Home Assistant 设置,
井, 我们已经有了! 现在剩下的就是加上我们亲爱的. 喜欢和渴望 Home Assistant 我们想要可视化的设备, 这是, 手机, 手镯… 那么让我们转到 Home Assistant 配置文件, configuration.yaml 和 'Sensor' 部分’ 我们添加以下块, 指示 MAC 和设备的说明:
传感器: ... - 平台: mqtt_room device_id: "b4c4fc6419XX" 名字: 'Teléfono móvil de Héctor' state_topic: 'room_presence' timeout: 5 away_timeout: 0 ...
一如既往, 保存文件并重新启动 Home Assistant 以加载配置. 我们将能够通过按“room_presence”类型设备进行鼠标筛选来轻松添加我们已注册的每个实体.
什么都没有, 让魔法运行, 我们将根据我们所处的位置看到如何, 我们将在这段历史中看到 Entity 的状态及其定位.
如果你走得太远,你周围躺着一个 Grafana, 例如,您可以通过非常简单的方式可视化奶酪的时代, 当然, 这有一段历史… 八卦, 我花在浴室里的时间被拿走了, 呵呵, 通过这种查询,我们将得到它:
SELECT 状态作为指标, 时间戳差异(第二, 分钟(last_updated), 麦克斯(last_updated)) 作为值, last_changed time_sec FROM 的州 $__timeFilter(创建) and state = 'Cocina' and entity_id = 'sensor.maixu_dordoka_room_presence' GROUP BY last_changed ORDER BY created DESC ;
哦,好吧, 是时候看一个自动化的例子了, 在图像中,您将很容易看到它, 在本例中为, 在晚上, 当我的 txabala 或我在床上时, 如果门未上锁, 好吧,关闭它, 我还通过家里的扬声器通知了它, 发送电报, 等等, 等等…
一如既往的荣幸, 我希望你喜欢它, 一个拥抱,非常感谢您在社交网络上的点赞,无需任何费用!! 🙂