使用 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 或我在床上时, 如果门未上锁, 好吧,关闭它, 我还通过家里的扬声器通知了它, 发送电报, 等等, 等等…

一如既往的荣幸, 我希望你喜欢它, 一个拥抱,非常感谢您在社交网络上的点赞,无需任何费用!! 🙂

推荐文章

作者

nheobug@bujarra.com
Autor del blog Bujarra.com Cualquier necesidad que tengas, 请随时与我联系, 我会尽我所能帮助你, 分享就是生活 ;) . 享受文档!!!