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 Like

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 Like

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)
1 Like

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 Like