Rekuperator Prana integracja przez BLE

Podepnę sie pod wątek by nie zakładać nowego.

Posiadam moduł ESP32 z zainstalowanym Bluetooth proxy, chcę to połączyć z HA aby widzieć/ sterować rekuperatorami ściennymi Prana.
Mam zainstalowane ESP z dodanym modułem.


konfiguracja chyba prawidłowa

stitutions:
  name: esp32-bluetooth-proxy-2a8ad0
  friendly_name: 'Bluetooth Proxy '
packages:
  esphome.bluetooth-proxy: github://esphome/firmware/bluetooth-proxy/esp32-generic.yaml@main
esphome:
  name: ${name}
  name_add_mac_suffix: false
  friendly_name: ${friendly_name}
api:
  encryption:
    key: XXXXXXXXXXXXX
wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
esp32_ble_tracker:

Logi:

INFO ESPHome 2023.11.6
INFO Reading configuration /config/esphome/esp32-bluetooth-proxy-2a8ad0.yaml...
INFO Starting log output from esp32-bluetooth-proxy-2a8ad0.local using esphome API
INFO Successfully connected to esp32-bluetooth-proxy-2a8ad0 in 0.434s
INFO Successful handshake with esp32-bluetooth-proxy-2a8ad0 in 0.127s
[09:12:22][I][app:102]: ESPHome version 2023.11.6 compiled on Nov 28 2023, 20:43:38
[09:12:22][I][app:104]: Project esphome.bluetooth-proxy version 1.0
[09:12:22][C][wifi:559]: WiFi:
[09:12:22][C][wifi:391]:   Local MAC: A0:A3:B3:2A:8A:D0
[09:12:22][C][wifi:396]:   SSID: 'HUAWEI-B535-B45B'[redacted]
[09:12:22][C][wifi:397]:   IP Address: 192.168.8.184
[09:12:22][C][wifi:399]:   BSSID: 00:BB:1C:0A:B4:5B[redacted]
[09:12:22][C][wifi:400]:   Hostname: 'esp32-bluetooth-proxy-2a8ad0'
[09:12:22][C][wifi:402]:   Signal strength: -70 dB ▂▄▆█
[09:12:22][C][wifi:406]:   Channel: 5
[09:12:22][C][wifi:407]:   Subnet: 255.255.255.0
[09:12:22][C][wifi:408]:   Gateway: 192.168.8.1
[09:12:22][C][wifi:409]:   DNS1: 192.168.8.1
[09:12:22][C][wifi:410]:   DNS2: 0.0.0.0
[09:12:22][C][logger:416]: Logger:
[09:12:22][C][logger:417]:   Level: DEBUG
[09:12:22][C][logger:418]:   Log Baud Rate: 115200
[09:12:22][C][logger:420]:   Hardware UART: UART0
[09:12:22][C][bluetooth_proxy:088]: Bluetooth Proxy:
[09:12:22][C][bluetooth_proxy:089]:   Active: YES
[09:12:22][C][safe_mode.button:022]: Safe Mode Button 'Safe Mode Boot'
[09:12:22][C][safe_mode.button:022]:   Icon: 'mdi:restart-alert'
[09:12:22][C][esp32_ble:374]: ESP32 BLE:
[09:12:22][C][esp32_ble:376]:   MAC address: A0:A3:B3:2A:8A:D2
[09:12:22][C][esp32_ble:377]:   IO Capability: none
[09:12:22][C][esp32_ble_tracker:645]: BLE Tracker:
[09:12:22][C][esp32_ble_tracker:646]:   Scan Duration: 300 s
[09:12:22][C][esp32_ble_tracker:647]:   Scan Interval: 320.0 ms
[09:12:22][C][esp32_ble_tracker:648]:   Scan Window: 30.0 ms
[09:12:22][C][esp32_ble_tracker:649]:   Scan Type: ACTIVE
[09:12:22][C][esp32_ble_tracker:650]:   Continuous Scanning: True
[09:12:22][C][mdns:115]: mDNS:
[09:12:22][C][mdns:116]:   Hostname: esp32-bluetooth-proxy-2a8ad0
[09:12:22][C][ota:097]: Over-The-Air Updates:
[09:12:22][C][ota:098]:   Address: esp32-bluetooth-proxy-2a8ad0.local:3232
[09:12:22][C][api:139]: API Server:
[09:12:22][C][api:140]:   Address: esp32-bluetooth-proxy-2a8ad0.local:6053
[09:12:22][C][api:142]:   Using noise encryption: YES
[09:12:22][C][improv_serial:032]: Improv Serial:
[09:12:25][D][esp-idf:000]: W (4885421) BT_APPL: gattc_conn_cb: if=3 st=0 id=259 rsn=0x8
[09:12:25][D][esp-idf:000]: W (4885428) BT_APPL: gattc_conn_cb: if=4 st=0 id=260 rsn=0x8
[09:12:25][D][esp-idf:000]: W (4885432) BT_APPL: gattc_conn_cb: if=5 st=0 id=261 rsn=0x8
[09:12:25][D][esp-idf:000]: W (4885439) BT_HCI: hcif disc complete: hdl 0x1, rsn 0x8
[09:12:25][I][bluetooth_proxy:278]: [0] [00:A0:50:6E:D3:D3] Connecting v3 with cache
[09:12:25][D][esp32_ble_tracker:215]: Pausing scan to make connection...
[09:12:25][I][esp32_ble_client:069]: [0] [00:A0:50:6E:D3:D3] 0x00 Attempting BLE connection
[09:12:25][D][esp-idf:000]: W (4886116) BT_HCI: hcif disc complete: hdl 0x1, rsn 0x3e
[09:12:26][D][esp-idf:000]: W (4886760) BT_HCI: hcif disc complete: hdl 0x1, rsn 0x3e
[09:12:29][D][esp-idf:000]: W (4889423) BT_HCI: hcif disc complete: hdl 0x1, rsn 0x3e
[09:12:30][D][esp-idf:000]: W (4890371) BT_APPL: gattc_conn_cb: if=3 st=0 id=259 rsn=0x3e
[09:12:30][D][esp-idf:000]: W (4890377) BT_APPL: gattc_conn_cb: if=4 st=0 id=260 rsn=0x3e
[09:12:30][D][esp-idf:000]: W (4890381) BT_APPL: gattc_conn_cb: if=5 st=0 id=261 rsn=0x3e
[09:12:30][D][esp-idf:000]: W (4890385) BT_HCI: hcif disc complete: hdl 0x1, rsn 0x3e
[09:12:30][W][esp32_ble_client:139]: [0] [] Connection failed, status=133
[09:12:30][D][esp32_ble_tracker:266]: Starting scan...
[09:12:30][I][bluetooth_proxy:278]: [0] [00:A0:50:6E:D3:D3] Connecting v3 with cache
[09:12:30][D][esp32_ble_tracker:215]: Pausing scan to make connection...
[09:12:30][I][esp32_ble_client:069]: [0] [00:A0:50:6E:D3:D3] 0x00 Attempting BLE connection
[09:12:31][D][esp-idf:000]: W (4891786) BT_HCI: hcif disc complete: hdl 0x1, rsn 0x3e

Integracja do rekuperatorów zainstalowana, urządzenia są wyszukiwane i można je dodać, ale niestety są niedostępne.

Czy czegoś jeszcze brakuje, czy w czym może być problem?

Podaj proszę linka do integracji, będzie prościej podejść do analizy problemu a ja nie będę tracił czasu na szukanie czego faktycznie używasz

Nie jest ona jakoś mocno rozbudowana, chyba nie ma chętnych sie tym zająć, ja niestety nie znam się aż tak.

Może to kwestia zasięgu Bluetooth, spróbuj skrócić odległość między rekuperatorem a modułem ESP32

To raczej nie to, bo znajduje mi urządzenia naprawde daleko, ale czy to w odległości 4m w lini prostej bez przeszkód czy 8 ze ścianami to jest tak samo. Ale konfiguracja wygląda na prawidłowa rozumiem?

@michal0111 to może od początku, jak flashowałeś moduł ESP32? Czy wcześniej ten moduł był do czegoś wykorzystywany? Jeżeli tak to musisz ponownie zrobić flash koniecznie przez kabel szeregowy.

Oprogramowanie instalowane bezpośrednio przez stronę ESPhome.io za pomocą przycisku Connect kablem microusb, instalacja przebiegła prawidłowo.
Ready-Made Projects — ESPHome

Jest jakakolwiek dokumentacja do tego projektu (prana)? Może, chociaż wątek na oficjalnym forum HA albo jakiś blog autora (no cokolwiek nie wymagającego analizy kodu), bo o mam podejrzenie, że nie jest on w stanie pracować z użyciem BLE proxy lecz prawdopodobnie wymaga innego rozwiązania (sugeruje to wzmianka o parowaniu w config flow).

Oczywiście podpinanie się do wątku na zupełnie inny temat było kiepskim posunięciem, działanie BLE proxy proponuję przetestować na jakimś sprzęcie o którym wiadomo, że działa przez proxy.

Nie ma zbyt wiele o tym, jednak sugerowałem sie tym postem

Dokładnie, będę musiał sprawdzić na czymś co powinno działać czy to nie problem po stronie modułu ESP.

Niestety użytkownicy w tamtym wątku zachowują się jak dzieci we mgle = zero konkretów, ponadto przez tyle czasu zarówno w HA jak w i w EBP mogły wystąpić drastyczne zmiany.

Sam projekt wygląda jak porzucony przez autora (brak reakcji na issues), ponadto zero forków, więc brak szans na to, że ktoś inny się podjął rozwoju.

W EBP możesz spróbować ustawić taką opcję (no i skompilować i zrobić update OTA)

esp32_ble_tracker:
  scan_parameters:
    active: true

to jest jednak porada dziecka we mgle (po prostu wydaje mi się, że dawno temu ta opcja byłą domyślnie włączona w EBP a teraz nie jest ale to trzeba sprawdzić w dokumentacji)
edit - sprawdziłem i chyba po prostu nie wkleiłeś całego YAMLa, bo dla ESP32-generic jest włączona (choć w sumie mogliby importować zdalny kod do postaci jawnej to bym nie musiał kopać po repo)

więc porada w kubeł, bo już tak masz (chociaż nie widać, bo to jest w zdalnej części kodu)

Dodałem przez ESP czujnik bluetooth od Xiaomi i działa prawidłowo, wiec prawdopodobnie jakiś problem musi być po stronie integracji Prana :rage:

Obsługa Bluetooth i BLE się drastycznie zmieniła w HA i W HAOS przez ostanie 2 lata.

Z jakiegoś niezbyt zrozumiałego powodu (może autor skasował repo i je utworzył ponownie?) projekt “hassio-prana” we wskazanym wątku jest wspomniany ze 2 lata temu, ale samo repozytorium jest sporo świeższe (ma zaledwie klika miesięcy).

Jeśli w maszynie z HA masz jakiegoś rozsądnego dongla BT4 lub BT5 możesz próbować integracji bez używania proxy (teoretycznie proxy powinno być przezroczyste, jednak dobra karta BT bywa zaskakująco lepsza od proxy, oczywiście mam na myśli połączenie z urządzeniem w rozsądnej odległości).

Mac-adres zaczynający się od 00:A0:50 wskazuje na Cypress Semiconductor, jak rozumiem encje powstały dopiero po połączeniu (dopiero zajrzałem w logi).
Może stwórz sobie sensory RSSI dla tego mac-adresu oraz dla WiFi w tym ESP to będzie jakaś informacja jak sytuacyjnie wyglądają zasięgi BT i WiFi.

Przez Passive BLE monitor z wbudowanym bluetooth w Rpi4 wykrywa mi jeden z rekuperatorów, dodało 2 encje, ale “Ta encja nie jest obecnie dostępna.”
Próbowałem połączyć się z rekuperatorami jeszcze ta metodą

ale nie mogę wykonać restartu HA bo nie znaleziono integracji.
I jeszcze jeden sposób:

z dodatkowym Rpi i nawet przez chwile działało, ale encje stawały sie nie dostępne. Poza tym tu juz kombinacja z dockerem itp. Ta opcja z bluetooth proxy wydaje sie najlepsza, bo mogę moduł dać bliżej tylko co z tego skoro encje są niedostępne i to nie z powodu zasięgu.

Skoro masz te same objawy przy bezpośrednim połączeniu, to nie szukajmy przyczyny w EBP.
Sugeruję issue, może autor się zreflektuje i pomoże.

Zmieniłem integrację Prany i można powiedzieć że coś działa, ale nie tak jak powinno, łączy się z jednym urządzeniem chociaż w integracji mam dodane 4, nie wiem czy da sie wymusić w ESP łączenie tylko z jednym lub dwoma urządzeniami?

prana:
  scan_interval: 60 
  devices:
  - mac: '00:A0:50:XX:XX:XX'
    name: 'Prana Ania'
  - mac: '00:A0:YY:YY:YY'
    name: 'Prana Łuki'
  - mac: '00:A0:50:XX:XX:XX'
    name: 'Prana Sypialnia'
  - mac: '00:A0:50:XX:XX:XX'
    name: 'Prana Salon'

Esp niby łączy się przez Proxy Bluetooth z 2 urządzeniami jak widać w logach, ale chyba łączność jest tylko z jednym i to też co jakiś czas na chwilę.

[11:07:20][C][improv_serial:032]: Improv Serial:
[11:08:19][I][bluetooth_proxy:282]: [0] [00:A0:50:XX:XX:XX] Connecting v3 without cache
[11:08:19][D][esp32_ble_tracker:215]: Pausing scan to make connection...
[11:08:19][I][esp32_ble_client:069]: [0] [00:A0:50:XX:XX:XX] 0x00 Attempting BLE connection
[11:08:19][I][esp32_ble_client:201]: [0] [00:A0:50:XX:XX:XX] Connected
[11:08:19][D][esp32_ble_tracker:266]: Starting scan...
[11:08:20][I][esp32_ble_client:086]: [0] [00:A0:50XX:XX:XX] Disconnecting.
[11:08:20][D][esp-idf:000]: W (5378489) BT_HCI: hci cmd send: disconnect: hdl 0x0, rsn:0x13

[11:08:20][D][esp-idf:000]: W (5378496) BT_APPL: gattc_conn_cb: if=3 st=0 id=3 rsn=0x16

[11:08:20][D][esp-idf:000]: W (5378501) BT_APPL: gattc_conn_cb: if=4 st=0 id=4 rsn=0x16

[11:08:20][D][esp-idf:000]: W (5378505) BT_APPL: gattc_conn_cb: if=5 st=0 id=5 rsn=0x16

[11:08:20][D][esp-idf:000]: W (5378578) BT_HCI: hcif disc complete: hdl 0x0, rsn 0x16

[11:08:20][I][bluetooth_proxy:282]: [0] [00:A0:50:YY:YY:YY] Connecting v3 without cache
[11:08:20][D][esp32_ble_tracker:215]: Pausing scan to make connection...
[11:08:20][I][esp32_ble_client:069]: [0] [00:A0:50:YY:YY:YY] 0x00 Attempting BLE connection
[11:08:20][D][esp-idf:000]: W (5378845) BT_HCI: hcif disc complete: hdl 0x0, rsn 0x3e

[11:08:22][D][esp-idf:000]: W (5380581) BT_HCI: hcif disc complete: hdl 0x0, rsn 0x3e

[11:08:25][I][esp32_ble_client:201]: [0] [00:A0:50:YY:YY:YY] Connected

prana

Ten kawałek YAMLa, który pokazałeś dotyczy jedynie trackera.
To nie ma wiele wspólnego z proxy, a właściwie nic.

W logu dość pieczołowicie wstawiłeś iksy, tak że zaciemniły całkowicie obraz loga (zasadniczo MAC-adresy w BLE nie są danymi wrażliwymi, więc nie należało ich usuwać).

Przypuszczam, że sprzęt którego używasz wymaga połączeń aktywnych (pasywny nasłuch wystarcza jedynie, gdy beacon BLE jest jakimś sensorem).

Z tego co wiem ESP32 jest w stanie utrzymać maksymalnie 3 połączenie aktywne jednocześnie (nie wiem czy to ograniczenie sprzętowe, czy programowe, w każdym razie siedzi mi w głowie, że ono istnieje, pewnie więcej można wygrzebać z dokumentacji lub czytając kod źródłowy, czego nie zrobię).

Natomiast na zdrowy rozum wydaje się, że użycie kilku proxy ESP32 rozmieszczonych w różnych strategicznych miejscach mogłoby pomóc.