Home Asisstant a osprzęt Xiaomi

Witam, właśnie zaczynam przygodę z Asystentem Domu. Zapewne jak większość niewtajemniczonych zacząłem przygodę od zakupów w Chinach, najpierw popełniłem :grin: odkurzacz, gdzie konsekwencją było dodanie apki do obsługi i się wkręciłem.
Poczytałem, kupiłem Bramkę Xiaomi V3, do tego czujniki ruchu, drzwi i okien, zalania, włącznik zdalny, termometry, żarówki. Podczas zakupów oczywiście popełniłem błędy z wyborem sprzętu, chiński / EU / global itp. Z pomocą przyszła skrakowana wersja apki, dodałem wszystko co kupiłem i zacząłem zabawę, która polega głównie na szukaniu rozwiązań permanentnego zamulania chmury Xiaomi. Jedyne co dobrego mnie spotkało, to to że wszystkie urządzenia są na serwerach de, a nie cn.
Potem znalazłem w sieci informację o Home Assistant, a że miałem Raspberrypi 4b zainstalowałem go (wielokrotnie) i mnie wciągnęło. Okazało się że instalując HA na Dockerze mogę dodać Bramkę Xiaomi. Oczywiście wyniknęły inne problemy, doszedłem więc do wniosku że może lepiej pozbyć się bramy (choć będąc w HA nie muli), tylko jak?
Mam więc masę pytań, może ktoś ma doświadczenie i podpowie jak połączyć z HA na Raspberrypi:
czujniki ruchu xiaomi,
czujniki dzrwi xiaomi,
czujniki zalania xiaomi,
termometry/higrometry xiaomi,
mierniki światła xiaomi,
żarówki yelight,
lampę yelight.
Wszystko działa na Bluetooth LE Mesh, Zigbee 3 i WiFi.
Sporo tego xiaomi, ale one dobrze działają i są estetyczne. Ponadto planuję żaluzje, elektrozawór termostaty.
Jeżeli ktoś ma jakiekolwiek informacje proszę o wpisy i z góry dziękuję za pomoc i sugestie.

Token do urządzeń najprościej uzyskać za pomocą Windowsa

Ze swojej strony proponuję od razu “iść” w stronę multibramki zigbee. Apetyt rośnie w miarę jedzenia i jeśli będziesz chciał skorzystać z innych urządzeń niż xiaomi korzystanie z bramki xiaomi będzie Cię ograniczać. Co do BLE to proponuję ESP lub dongla usb i integrację ble_monitor GitHub - custom-components/ble_monitor: Passively monitors BLE messages from Xiaomi Mijia BLE MiBeacon, Qingping, ATC, Xiaomi Scale and Kegtron sensors.

Może źle się wyraziłem, ale XiaomiGateway3 mam podpięty pod HA, to już ogarnąłem. Chodzi mi o możliwość podpięcia akcesoriów od Xiaomi bez udziału XiaomiGateway3, Ona u mnie zamula strasznie. Tokeny i pozostałe info wyciągam przy użyciu “token_extractor.exe”, jednocześnie mam info co na jakich serwerach wylądowało.

Jeśli zamierzasz podejść do tematu bez bramki, to musisz sobie ogarnąć własną bramkę na bazie HA i jakiegoś sprzętu - to jest konieczność w przypadku BLE (RPi 3 i 4 mają wbudowaną kartę BT z obsługą BLE, ale polecam nieoficjalną pasywną integrację (dostępna w HACS), jakkolwiek zasięg wbudowanego onboard BT tyłka nie urywa, więc wiele osób odpala sobie bramki na bazie ESP32 - u mnie np. hula pod ESPHome) oraz Zigbee - tu to konieczne musisz kupić dość dowolny koordynator (bo RPi nie ma odpowiedniego sprzętu na pokładzie), urządzenia WiFi mogą pozostać na chmurze (i tak większość integracji działa z pominięciem chmury w obrębie LAN).

U mnie zainstalowało się z bramką takie coś, w HACS.

image

W Konfiguracji > integracje jest takie coś

image

Samo raczej chyba się nie zainstalowało :stuck_out_tongue_winking_eye: to jest właśnie nieoficjalna integracja BLE pracująca bez bramki
(pełna nazwa w HACS to faktycznie “Passive BLE monitor integration (Xiaomi Mijia BLE MiBeacon monitor)”).
u mnie to wygląda tak
passive_BLE_Screenshot 2021-06-11 at 19-38-06 Konfiguracja - Home Assistant

Integracja “oficjalna” (też bez bramki) jest konfigurowana w YAML

ale skoro używasz tej z HACS to powinieneś ją odpuścić

W momencie instalacji HA w Dockerze na Raspberrypi według GitHuba, pokazało się ileś okienek do instalacji, jako propozycje. W necie znalazłem info na jakimś blogu (zanim trafiłem tu do Was) co warto wybrać, a skoro to eksperyment był to wybrałem :laughing:. Rozumiem że teraz to korzysta z BLE na Raspberry?

Nie wiem z czego korzystasz, to Ty decydujesz (więc pewnie masz zainstalowaną integrację bez urządzeń skoro jej nie konfigurowałeś).

Chyba znalazłem, wygląda to na element bramki

image

Różnią się MACami

image

Ten drugi MAC pojawia się jak wybieram instalację integracji Passive BLE Monitor z Konfiguracja > integracje.

No to teraz powoli poprzenoś sobie urządzenia BLE do tej drugiej integracji

OK rozumiem, że nie rozumiesz jak to działa
MAC-adres który widzisz w integracji bramki Xiaomi to jej MAC-adres Ethernet, natomiast MAC-adresy, które widzisz w integracji Passive BLE monitor to MAC-adresy BLE poszczególnych urządzeń (a ten u góry w Passive BLE Monitor, kończący się na CD:02 to MAC twojej karty BT w RPi - jeśli będziesz miał więcej interfejsów BT to tu będą do wyboru ich MAC-ki).
Możesz dodać te urządzenia BLE jeśli znasz ich tokeny (tylko dla tych, które ich wymagają - cześć można dodać tak po prostu, np. Viomi czy Miflora/VegTrug = HHCCJCY01), ale wtedy będziesz miał (pozornie) zdublowane encje, więc sugeruję te dodane urządzenia bezpośrednio do HA sukcesywnie odpinać od bramki.

Reasumując, powinienem mieć tylko jedną integrację BLE?
Teraz mam zainstalowaną tą z Bramki Xiaomi i faktycznie urządzenia są zintegrowane z Bramką Xiaomi. Czyli aby obsługiwać te czujniki bez bramki powinienem zainstalować integrację BLE korzystającą z RaspberryPi i tam je przenieść?

Edytowałem wyżej - tak, jeśli chcesz się pozbyć bramki musisz je zmigrować (de facto ręcznie dodać w nowej i usunąć w starej integracji). Gdy się dorobisz koordynatora Zigbee tak samo będziesz musiał zrobić ze sprzętem Zigbee.

PS w przypadku BLE obie integracje się nie gryzą (więc możesz nie usuwać - same znikną po usunięciu bramki), ale Zigbee może mieć tylko jeden koordynator w sieci.

Nie Ty pierwszy i nie ostatni naczytałeś się bzdur wypisywanych na tym “blogu”. Tak jak napisał @szopen przenoś urzadzenia do integracji Passive BLE monitor

Ok, czyli najpierw instaluję to?
Które pola “wyptaszkować”?

To Ty decydujesz co chcesz uzyskać, sugeruję nie zaznaczać “active scan” (bardziej zużywa baterię) ani “log spikes” (chyba, że używasz czujników w ekstremalnie zmiennych warunkach) resztę zaptaszkuj.

PS na 100% masz już wykryte jakieś czujniki - jeśli nie wszystkie, tzn. są poza zasięgiem tego biednego BT onboard (albo są w innej technologii, ale to wiesz sam).

Ok, przetestowałem na BLE z Raspberry Pi i faktycznie kiszka, łapie jakieś 1,5 pokoju :sweat_smile:. Jakiego dongla BLE mogli byście polecić do raspberrypi?

Większość osprzętu BLE pojawiła się u mnie dopiero po migracji z RPi na x86-64, więc nie mam bezpośredniego porównania z BT onboard (ale pamiętam, że było kiepsko).
Jeśli masz taką możliwość wyłącz kartę WiFi w RPi (np. dodajesz linijkę dtoverlay=disable-wifi w pliku config.txt na partycji boot), ale nie licz na cud.

Ponieważ planuję pozbycie się z NUCów kart WiFi+BT to zrobiłem testy 2 dongli BT4.x a konkretniej “udział wzięli”:

  • Asus USB-BT400, stick w rozmiarze “nano” na chipsecie Broadcomm BCM20702A0 ale przedstawia się jako Asus

  • Qumox (to raczej jakiś “noname” bo nieco rozpada się w rękach :stuck_out_tongue:) “USB Bluetooth nano stick” nazwa mówi wszystko, ale nano jest trochę oszukane - jest dłuższy o 2-3mm od Asusa ten za to na chipsecie Cambridge Silicon Radio, Ltd CSR8510 A10 i tak się przedstawia

HassOS posiada dla obu wbudowane sterowniki (przynajmniej wersja amd64).

Oba mają praktycznie identyczny zasięg (Asus trochę gorszy), ale tyłka nie urywa, tzn. i tak muszę korzystać ze zbudowanej wcześniej (za czasów RPi) bramki na ESP32, bo z miejsca instalacji zasięg żadnego nie sięga do najdalszych czujników.
Tak swoją drogą fabrycznie na pokładzie NUCa miałem kartę “Intel® Wireless-AC 3168 + Bluetooth 4​,2” i jej zasięg mimo wbudowanych anten był podobny.

Za czasów RPi zbudowałem (określenie nieco na wyrost, bo w sumie to 99% roboty to było przygotowanie konfiguracji) bramkę na bazie modułu Lilygo TTGO T-7, ale można użyć dowolny moduł ESP32

Przykładowy konfig (jest on sporo okrojony z tego, który używam realnie) dla bramki na bazie ESPHome (w ESPHome yaml jest bardzo podobny do konfiguracji HA a mając włączoną opcję api: sprzęt po wgraniu firmware integruje się w pełni plug-and-play z HA) z paroma dodatkowymi wodotryskami, w przykładzie jako czujniki występują LYWSD02, LYWSD03MMC (z alternatywnym firmware) i MiFlora, a tracker dla zegarka i pilota IR (ale można też używać dla diagnostyki czujników - brak obecności = problem)

esphome:
  name: mini_bramka_ble
  platform: ESP32
  board: esp32dev

wifi:
  ssid: "realny_ssid"
  password: "oraz_klucz"

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "mini_BLE_nie_mam_sieci!"
    password: "0000000000"

captive_portal:

# Enable logging
logger:

# Enable Home Assistant API
api:

ota:

esp32_ble_tracker:

switch:
  - platform: restart
    name: "mini BLE Restart"
# Nigdy nie użyłem :P

binary_sensor:

  - platform: ble_presence
    mac_address: '48:D0:CF:00:00:00'
    name: "BLE ESP Tracker O4A"

  - platform: ble_presence
    mac_address: 'DC:41:E5:00:00:00'
    name: "BLE ESP Tracker Watch"


sensor:

  - platform: wifi_signal
    name: "mini BLE sygnał WiFi"
    update_interval: 60s
    
  - platform: esp32_hall
    name: "mini BLE sensor Hall'a"
    update_interval: 60s
    
  - platform: uptime
    name: "mini BLE Uptime"
    
  - platform: ble_rssi
    mac_address: '3F:59:C8:00:00:00'
    name: "Zegar BLE ESP RSSI"
    icon: "mdi:bluetooth"

  - platform: ble_rssi
    mac_address: '48:D0:CF:00:00:00'
    name: "RSSI BLE ESP O4A"
    icon: "mdi:bluetooth"

    
  - platform: ble_rssi
    mac_address: 'C4:7C:8D:00:00:00'
    name: "MiFlora BLE ESP RSSI value"
    icon: "mdi:bluetooth"
    

  - platform: xiaomi_lywsd02
    mac_address: '3F:59:C8:00:00:00'
    temperature:
      name: "Zegar BLE ESP Temperatura"
    humidity:
      name: "Zegar BLE ESP Wilgotność"
      
  - platform: xiaomi_hhccjcy01
    mac_address: 'C4:7C:8D:00:00:00'
    temperature:
      name: "MiFlora BLE ESP Temperatura"
    moisture:
      name: "MiFlora BLE ESP Nawodnienie"
    illuminance:
      name: "MiFlora BLE ESP Natężenie Oświetlenia"
    conductivity:
      name: "MiFlora BLE ESP Przewodność"

  - platform: atc_mithermometer
    mac_address: "A4:C1:38:00:00:00"
    temperature:
      name: "ATC BLE ESP Temperatura"
    humidity:
      name: "ATC BLE ESP Wilgotność"
    battery_level:
      name: "ATC BLE ESP Poziom Baterii"
    battery_voltage:
      name: "ATC BLE ESP Napięcie Baterii"

TL;DR zbuduj sobie bramkę na bazie ESP32 i umieść ją na tym końcu domu gdzie zasięg RPi nie sięga - to załatwia wszelkie problemy (a przy okazji można np. dodać sobie tracker BT czy mierzyć poziom sygnału radiowego czujników).

1 Like

Kurcze, o tym nie pomyślałem. To faktycznie może załatwić te marne “10” m. zasięgu a sterowniki to LBE w RaspberryPi już są i działają. Oki czyli idę na zakupy i cisnę, WiFi jest spoko, zostanie Zigbee. Ale po kolei.
Na razie dzięki. Jak co to poproszę o dalsze wskazówki w późniejszym okresie.
Pozdrawiam wszystkich i miłego weekendu

bramkę Xiaomi V3 możesz użyć też jako uniwersalną bramkę zigbee - GitHub - AlexxIT/XiaomiGateway3: Control Zigbee, BLE and Mesh devices from Home Assistant with Xiaomi Gateway 3 (ZNDMWG03LM) on original firmware

dodatkowo w tej integracji działa też jako bramka BLE dla urządzeń bluetooth Xiaomi, które masz podpięte do aplikacji Mi Home. U mnie z zasięgiem bramki było zdecydowanie lepiej niż z zasięgiem bluetootha wbudowanego w malinkę.