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

A raczej działało przez długi czas!!! Jednak nastąpiła aktualizacja ESP Home i już nie działa. Wedle instrukcji:

# Old
dallas:
  - pin: GPIOXX

sensor:
  - platform: dallas
    address: 0x1234567890abcdef
    name: "My Sensor"

# New
one_wire:
  - platform: gpio
    pin: GPIOXX

sensor:
  - platform: dallas_temp
    address: 0x1234567890abcdef
    name: "My Sensor"

działa pojedynczy czujnik ale nie cały hub. Nigdzie nie mogę znaleść poprawnej instrukcji dla Haba w nowej wersji.

Pokaż prawdziwy kod (stary i nowy), a nie wklejki z dokumentacji (w której jest trochę więcej niż najuboższy przykład dla jednego huba), ile masz hubów?

Aha i nie twierdzę, że aktualizacja jest idealna i niczego nie psuje (jakkolwiek zmiana była podyktowana koniecznością rozwoju), ale widziałem, że były ruchy w kierunku poprawy i od mniej więcej miesiąca te problemy chyba są rozwiązane?

esphome:
  name: "ogrzewanie-podogowe"
  friendly_name: Czujniki temperatury

esp32:
  board: esp32dev
  framework:
    type: arduino

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "xxx"

ota:
 password: "xxx"


wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Czujniki-Temperatury"
    password: "DOLKPU5XgYEB"

# Sensory temperatury
dallas:
- id: "dallas_hub_2"
  pin: 2
  update_interval: 10s
- id: "dallas_hub_4"
  pin: 4
  update_interval: 10s
- id: "dallas_hub_5"
  pin: 16
  update_interval: 10s
- id: "dallas_hub_15"
  pin: 15
  update_interval: 10s
sensor:
  - platform: dallas
    address: 0xa701143bb641aa28
    name: "Salon kominek"  
    dallas_id: dallas_hub_2
  - platform: dallas
    address: 0xdf01144fc4b1aa28
    name: "Salon pod oknem"  
    dallas_id: dallas_hub_2
  - platform: dallas
    address: 0x3e0121132556c628
    name: "Salon przed kanapą" 
    dallas_id: dallas_hub_2
  - platform: dallas
    address: 0xc63c01f095cc2328
    name: "Salon środek" 
    dallas_id: dallas_hub_2
  - platform: dallas
    address: 0x0a062017e5afe728
    name: "Salon przed telewizorem" 
    dallas_id: dallas_hub_2
  - platform: dallas
    address: 0xc2012113774c0a28
    name: "Przybudówka" 
    dallas_id: dallas_hub_4
  - platform: dallas
    address: 0x6201144fe4b0aa28
    name: "Łazienka dolna" 
    dallas_id: dallas_hub_4
  - platform: dallas
    address: 0x4b01144fd7f0aa28
    name: "Łazienka dolna - prysznic" 
    dallas_id: dallas_hub_4
  - platform: dallas
    address: 0xfd0121137eda1e28
    name: "Przybudówka pod izolacją" 
    dallas_id: dallas_hub_4
  - platform: dallas
    address:  0x2a062017dc0a2028
    name: "Panorama" 
    dallas_id: dallas_hub_5
  - platform: dallas
    address:  0xc001211345246228
    name: "Sypialnia" 
    dallas_id: dallas_hub_5
  - platform: dallas
    address:  0x3b3c01f0955f0528
    name: "Poddasze biurko" 
    dallas_id: dallas_hub_5
  - platform: dallas
    address:  0xe201212fc6313b28
    name: "Łazienka góra" 
    dallas_id: dallas_hub_5    
  - platform: dallas
    address:  0xc2062017de107028
    name: "Bufor 3/4" 
    dallas_id: dallas_hub_15
  - platform: dallas
    address:  0x4c0121131c9e7028
    name: "Bufor dół" 
    dallas_id: dallas_hub_15
  - platform: dallas
    address:  0x250121134015a428
    name: "Bufor góra" 
    dallas_id: dallas_hub_15
  - platform: dallas
    address:  0x9701144fcde2aa28
    name: "Wejście" 
    dallas_id: dallas_hub_15
  - platform: dallas
    address:  0x0101144fd15baa28
    name: "Przedpokój" 
    dallas_id: dallas_hub_15
  - platform: dallas
    address:  0x97062017ed6dce28
    name: "Wykusz" 
    dallas_id: dallas_hub_15
  - platform: dallas
    address:  0x810121133e35fe28
    name: "Jadalnia" 
    dallas_id: dallas_hub_15
  - platform: dallas
    address:  0xfa0121132b03cf28
    name: "Bufor 2/4" 
    dallas_id: dallas_hub_15
switch:
  - platform: gpio
    name: "Panorama"
    pin: 13
    inverted: True
  - platform: gpio
    name: "Poddasze biurko"
    pin: 14
    inverted: True
  - platform: gpio
    name: "Jadalnia i wykusz"
    pin: 27
    inverted: True
  - platform: gpio
    name: "Przedpokój"
    pin: 26
    inverted: True
  - platform: gpio
    name: "Łazienka góra"
    pin: 25
    inverted: True
  - platform: gpio
    name: "Sypialnia"
    pin: 33
    inverted: True
  - platform: gpio
    name: "Taras północ"
    pin: 32
    inverted: True
  - platform: gpio
    name: "Salon"
    pin: 22
    inverted: True
  - platform: gpio
    name: "Przybudówka"
    pin: 23
    inverted: True
  - platform: gpio
    name: "Łazienka dół"
    pin: 5
    inverted: True
  - platform: gpio
    name: "Pompa podłogówki"
    pin: 18
    inverted: True
  - platform: gpio
    name: "Grzałka suszarki dół"
    pin: 19
    inverted: True
  - platform: gpio
    name: "Grzałka suszarki góra"
    pin: 21
    inverted: True
  - platform: gpio
    name: "Pompa grzałek"
    pin: 12
    inverted: True
captive_portal:
    

Proszę bardzo to jest stary. nadal działa ale nie mogę go aktualizować bo wywala błąd. Dlatego też nowego nie ma póki co.

Może źle się wkleiło ale brakuje odpowiednich wcięć w konfiguracji.

tak to przy wklejeniu ale nie to jest problemem taka platforma jak dallas już nie istnieje teraz to jest one_wire. Tylko nie ma nigdzie instrukcji jak napisać hub.

naprawdę nigdy nie czytujesz dokumentacji??


robisz wszystko analogicznie stosując się do zmian (nie wnikam we wcięcia, kopiowałem z dokumentacji, więc w tym dalszym kawałku powinny być OK)

# Sensory temperatury
dallas:
- id: "dallas_hub_2"
  pin: 2
  update_interval: 10s
- id: "dallas_hub_4"
  pin: 4
  update_interval: 10s
- id: "dallas_hub_5"
  pin: 16
  update_interval: 10s
- id: "dallas_hub_15"
  pin: 15
  update_interval: 10s
sensor:
  - platform: dallas
    address: 0xa701143bb641aa28
    name: "Salon kominek"  
    dallas_id: dallas_hub_2
  - platform: dallas
    address: 0xdf01144fc4b1aa28
    name: "Salon pod oknem"  
    dallas_id: dallas_hub_2

zmieniasz w

one_wire:
  - platform: gpio
    pin: 2
    id: dallas_hub_2
  - platform: gpio
    pin: 4
    id: dallas_hub_4
  - platform: gpio
    pin: 5
    id: dallas_hub_5
  - platform: gpio
    pin: 15
    id: dallas_hub_15

sensor:
  - platform: dallas_temp
    address: 0xa701143bb641aa28
    name: "Salon kominek"
    update_interval: 10s
    one_wire_id: dallas_hub_2
  - platform: dallas_temp
    address: 0xdf01144fc4b1aa28
    name: "Salon pod oknem" 
    update_interval: 10s
    one_wire_id: dallas_hub_2

itd.

1 polubienie