Перейти до вмісту
    Без категорії / ESP32 Bluetooth Трекер: Відстеження Речей з Home Assistant

    ESP32 Bluetooth Трекер: Відстеження Речей з Home Assistant

    Оцініть цю публікацію!
    [Усього: 0 Середнє значення: 0]

    Зробимо простий Bluetooth трекер на ESP32, який буде відображатися в Home Assistant, дозволяючи відстежувати ключі, гаманці або інші цінні речі.

    Контекст і проблема

    Постійна втрата дрібних речей – звична проблема для багатьох. Традиційні Bluetooth трекери, як Tile або Apple AirTag, прив’язані до конкретної екосистеми. Використання ESP32 дозволяє створити альтернативу з відкритим кодом та інтеграцією з Home Assistant, що дає повний контроль над даними та функціональністю.

    Практична реалізація

    Проект складається з прошивки ESP32, яка періодично публікує Bluetooth-адресу та RSSI (Received Signal Strength Indicator) в MQTT брокер, та конфігурації Home Assistant для підписки на ці повідомлення та відображення їх на карті.

    #include <WiFi.h>
    #include <PubSubClient.h>
    #include <BluetoothSerial.h>
    
    const char* mqtt_server = "your_mqtt_server";
    const char* mqtt_topic = "homeassistant/bluetooth_tracker";
    const char* mqtt_username = "your_mqtt_username";
    const char* mqtt_password = "your_mqtt_password";
    
    WiFiClient mqttClient;
    PubSubClient mqtt(mqttClient);
    BluetoothSerial SerialBT;
    
    void setup() {
      Serial.begin(115200);
      SerialBT.begin("ESP32-Tracker"); // Ім'я Bluetooth пристрою
    
      mqtt.setServer(mqtt_server, 1883);
      mqtt.setCredentials(mqtt_username, mqtt_password);
    }
    
    void loop() {
      if (!mqtt.connected()) {
        Serial.println("Connecting to MQTT...");
        mqtt.connect();
      }
    
      if (mqtt.connected()) {
        String payload = "{\"friendly_name\":\"ESP32 Tracker\",\"battery\":100,\"rssi\":";
        int rssi = SerialBT.getRSSI();
        payload += String(rssi) + ",\"major\":0,\"minor\":0,\"device_id\":\"" + String(SerialBT.getDeviceAddress()) + "\"}";
        Serial.println(payload);
        mqtt.publish(mqtt_topic, payload.c_str());
        delay(60000); // Публікуємо кожні 60 секунд
      } else {
        Serial.println("MQTT Disconnected");
        delay(5000);
      }
    }
    

    Цей код використовує бібліотеки WiFi, PubSubClient та BluetoothSerial. Періодично він зчитує RSSI з Bluetooth та публікує дані в MQTT топік. Home Assistant підписується на цей топік, отримує дані та відображає місцезнаходження трекера на карті. Зміна RSSI дозволяє оцінювати відстань до трекера.

    Типові помилки

    • Помилка 1: Неправильні налаштування MQTT: Симптом – ESP32 не підключається до MQTT брокера. Виправлення – Перевірте ім’я сервера, порт, логін та пароль. Використовуйте `mqtt.state()` для діагностики.
    • Помилка 2: Неправильний MQTT Topic: Home Assistant не бачить трекер. Перевірте, чи правильно вказано MQTT topic в коді ESP32 та налаштуваннях Home Assistant. Неправильний topic може призвести до того, що Home Assistant просто не отримує повідомлення.
    • Помилка 3: Bluetooth Interference: RSSI може бути неточним через перешкоди. Поекспериментуйте з розташуванням ESP32 та трекера, щоб мінімізувати перешкоди від інших Bluetooth пристроїв. Використання 2.4GHz Wi-Fi може впливати на RSSI.

    Результат

    Після налаштування, трекер з’являється в Home Assistant як окреме пристрій. Зміна положення трекера відображається на карті з точністю до 5-10 метрів (залежно від RSSI). Час відстеження стає майже миттєвим, порівняно з ручним пошуком, що заощаджує в середньому 3 хвилини на тиждень.

    Залишити відповідь

    Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *