Kilka różnych czujników pod ESP32 z ESPHome

Cześć, mam w tej chwili 2 ESP32 z wgranym esphome, pod jednym mam 5 czujników ds18b20 a pod drugim ESP32 mam bmp280.
Chcę to spiąć pod jeden moduł ESP32 z esphome.
Podczas dodawania czujników ds18b20 pojawia mi się błąd. Nie wiem jak to ogranąć aby spiąć te dwa rodzaje czujników.
Najlepiej mój problem wyjaśni printscreen


Dziękuję Wam za pomoc.
Pozdrawiam

BME280 i dallasy pod sobą w jednym “sensors”

Przykład:

sensor:
  - platform: wifi_signal
    name: "ESP salon signal"
    update_interval: 60s
  - platform: bmp085
    address: 0x77
    temperature:
      name: "BMP180 Temperature"
    pressure:
      name: "BMP180 Pressure"
    update_interval: 60s
  - platform: bme280
    temperature:
      name: "BME280 Temperature"
      oversampling: 16x
    pressure:
      name: "BMP280 Pressure"
      oversampling: 16x
    humidity:
      name: "BME280 Humidity"
      oversampling: 16x
    address: 0x76
    iir_filter: 4x
    update_interval: 30s
1 polubienie

W tej chwili mam tak:



I niestety błąd

Do dokumentacji zaglądałeś?
- platform: dallas ma być w sekcji sensor: W sekcji dallas: definiujesz tylko pin GPIO

dallas:
  - pin: GPIO23

sensor:
  - platform: dallas
    address: 0xA40000031F055028
    name: "Temperature #1"
  - platform: dallas
    address: 0xDD0000031EFB0428
    name: "Temperature #2"
  - platform: dallas
    # ...
1 polubienie

Marek Właśnie tak miałem na samym początku i niestety też był błąd że mam powtórzony dwa razy “sensors”

esphome:
  name: esp-kotlownia
  platform: ESP32
  board: esp32dev

wifi:
  ssid: "xxxxxxxx"
  password: "xxxxx"
  
# Optional manual IP
  manual_ip:
    static_ip: 192.168.1.14
    gateway: 192.168.1.1
    subnet: 255.255.255.0  
  

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "xxxxxxFallback Hotspot"
    password: "xxxxxx"

captive_portal:

# Enable logging
logger:

# Enable Home Assistant API
api:
  password: "xxxxxxx"

ota:
  password: "xxxxxxx"

web_server:
  port: 80

esp32_ble_tracker:

i2c:
  sda: 21
  scl: 22
  scan: True
  id: bus_a

sensor:
  - platform: bme280
    temperature:
      name: "Temperatura Sypialnia"
      oversampling: 16x
    pressure:
      name: "Ciśnienie Sypialnia"
    humidity:
      name: "Wilgotność Sypialnia"
    address: 0x76
    update_interval: 10s
    
dallas:
  - pin: 4
  - platform: dallas
    address: 0x6B9A1913E7C7FF28
    name: "Piec Temperature"
  - platform: dallas
    address: 0x6E8A190326E1FF28
    name: "Piec powrót"  
  - platform: dallas
    address: 0x74A1A04099D8FF28
    name: "Podłogówka zasilanie"   
  - platform: dallas
    address: 0x6B00000CFA8C2B28
    name: "Bojler"  
  - platform: dallas
    address: 0x2E9A1913EF25FF28
    name: "Testy"  


Niestety nie potrafię znaleźć błędu :frowning:

To zajrzyj do dokumentacji.

Platformę sprzętową definiujesz oddzielnie (nie wewnątrz bloku sensors:) zasady są właściwie takie same jak przy definiowaniu konfiguracji HA w YAMLu.

Poprawię ten twój kod na szybko, więc może zawierać nadal jakieś istotne błędy, zasadniczo linter wbudowany w ESPHome wykrywa większość błędów składniowych, to jednak czasem trudno zrozumieć jego podpowiedzi.

esphome:
  name: esp-kotlownia
  platform: ESP32
  board: esp32dev

wifi:
  ssid: "xxxxxxxx"
  password: "xxxxx"
  
# Optional manual IP
  manual_ip:
    static_ip: 192.168.1.14
    gateway: 192.168.1.1
    subnet: 255.255.255.0  
  

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "xxxxxxFallback Hotspot"
    password: "xxxxxx"

captive_portal:

# Enable logging
logger:

# Enable Home Assistant API
api:
  password: "xxxxxxx"

ota:
  password: "xxxxxxx"

web_server:
  port: 80

esp32_ble_tracker:


i2c:
  sda: 21
  scl: 22
  scan: True
  id: bus_a

dallas:
  - pin: 4

sensor:
  - platform: bme280
    address: 0x76
    update_interval: 10s
    temperature:
      name: "Temperatura Sypialnia"
      oversampling: 16x
    pressure:
      name: "Ciśnienie Sypialnia"
    humidity:
      name: "Wilgotność Sypialnia"
    
  - platform: dallas
    address: 0x6B9A1913E7C7FF28
    name: "Piec Temperature"
  - platform: dallas
    address: 0x6E8A190326E1FF28
    name: "Piec powrót"  
  - platform: dallas
    address: 0x74A1A04099D8FF28
    name: "Podłogówka zasilanie"   
  - platform: dallas
    address: 0x6B00000CFA8C2B28
    name: "Bojler"  
  - platform: dallas
    address: 0x2E9A1913EF25FF28
    name: "Testy"  

Warto jakoś usystematyzować sobie zawartość konfiguracji - dlatego np. adres BME280 dałem wyżej (z punktu widzenia interpretera YAML i generatora kodu c++ nie ma to znaczenia, ale ludzkim okiem “czyta się lepiej”) oraz zostawiłem pustą linię by wizualnie rozdzielić sensory z rożnych platform sprzętowych (nie jest do niczego potrzebna, ale jeśli sobie nie komentujesz pliku to chociaż zrób jakieś proste rozróżnienia stosując puste linie).

Inne rzeczy które mi się rzuciły w oko

  • platforma BLE zużywa spore zasoby, więc warto spojrzeć na końcówkę kompilacji jak są wykorzystane zasoby (RAM i flash), skoro już ja używasz to możesz też zasysać dane z wybranych sensorów BLE (np LYWSD03MMC lub podobnych - sprawdź w dokumentacji co jest obsługiwane)
  • statyczny IP lubi robić problemy, zdecydowanie lepiej przypisać IP z poziomu routera (tzw. “statyczny przydział z DHCP”, czyli w praktyce powiązanie ARP z DHCP)
2 polubienia

Twój Yaml szopen ruszył od strzała, teraz widzę jak na dłoni gdzie popełniałem błąd. Bardzo Ci dziękuję.
Widzę że jeszcze długa droga przede mną.
Zmienię ip na dynamiczne, jak poogarniam sterowanie tym co potrzebuję.
Raz jeszcze wielkie dzięki za pomoc.

@on6222 No cóż usunąłeś posta zanim miałem czas na opublikowanie odpowiedzi…

@szopen tak bo byłem w błędzie i już nie chciałem niepotrzebnie mieszać…pozdrawiam :slight_smile:

1 polubienie

Witaj Szopen

Czy mógłbys coś wiecej dodać o połaczeniu do powyższej konfiguracji czujników , dodatkowo LYWSD03MMC ciekawi mnie to bo można by było rozwiązać problem z zasięgiem Ble tych czujników niskim kosztem.

Pozdrawiam

Jeśli chcesz mieć czujniki obsługiwane bezpośrednio z poziomu ESPHome

jak widać są 3 różne integracje zależnie od tego czy masz fabryczny firmware

Dla fabrycznego softu może się przydać to (czujniki skonfigurowane z chmurą mają tokeny)

Jeśli chodzi o alternatywne firmware to polecam to (dobrze zoptymalizowane pod względem poboru energii,

Można wybrać protokół BTHome

można je tez użyć na tym (nie śledzę sytuacji na bieżąco, ale rozwój chyba się zatrzymał, skoro wersja proponowana przez @pvvx jest lepsza)


A pomijając te kwestie są jeszcze 2 projekty umożliwoiające wykorzystanie ESP32@ESPHome

(ewentualnie fork dla starej wersji GL.iNet GL-S10)

oraz takie mniej oficjalne

Dołączę do tematu jeśli można. Chciałbym zapytać jak skonfigurować i czy to w ogóle możliwe dallas na kilku pinach w ESPhome na ESP32. Kiedy próbuję to zrobić na czterech pinach to na każdym z nich ESPhome identyfikuje po osiem czujek ds18d20. Wszystko działa do momentu kiedy chcę zaadresować te czujki. Czy to możliwe by z czterech różnych pinów odczytywać po osiem czujników ?

Adresować możesz w ten sposób

# Sensory temperatury
dallas:
- id: "dallas_hub_1"
  pin: D4 
- id: "dallas_hub_3"
  pin: D7
sensor:
  - platform: dallas
    address: 0x2000000a42618728
    name: "kuchnia"  
    dallas_id: dallas_hub_1
  - platform: dallas
    address: 0x3d031731515eff28
    name: "przedpokoj"  
    dallas_id: dallas_hub_1
  - platform: dallas
    address: 0x5700000a434e0028
    name: "dziewczyny" 
    dallas_id: dallas_hub_3
  - platform: dallas
    address: 0x8600000a98937228
    name: "lazienka" 
    dallas_id: dallas_hub_3

patrz sekcja Multiple dallas hubs w podlinkowanej w tym wątku dokumentacji.

1 polubienie

Działa dzięki za rozwiązanie