ESPHome, sensor DS18B20 - plik konfiguracyjny

Cześć, wygrzebałem z szafy cztery sensory DS18B20 i płytkę ESP. Chciałbym to podłączyć do Home Assistanta no i pojawiły się schody.

Jeśli chodzi o płytkę to nie pamiętam co to jest ale jest na niej moduł ESP8266MOD. Tak wygląda:

Na początek żeby było prościej podłączyłem jeden sensor w następujący sposób:

  • żółty do D4
  • czerwony do 3v3
  • niebieski do GND
    Między żółtym a czerwonym dałem opornik 4k7.

Plik konfiguracyjny:

esphome:
  name: esp-ds18b20
  platform: ESP8266
  board: nodemcuv2

wifi:
  ssid: "UPC1234567"
  password: "abcdefghij"

logger:

api:

ota:
  - platform: esphome
  
one_wire:
  - platform: gpio
    pin: GPIO2

sensor:
  - platform: dallas_temp
    name: "Temperatura DS18B20"

W Home Assistancie wchodzę w ESPHome, na płytce klikam LOGS i widzę, że raportuje temperaturę:

INFO ESPHome 2024.7.3
INFO Reading configuration /config/esphome/esphome-web-dd8b4b.yaml...
INFO Starting log output from 192.168.0.87 using esphome API
INFO Successfully connected to esp-ds18b20 @ 192.168.0.87 in 0.005s
INFO Successful handshake with esp-ds18b20 @ 192.168.0.87 in 0.024s
[22:55:38][I][app:100]: ESPHome version 2024.7.3 compiled on Sep 14 2024, 22:43:30
[22:55:38][C][wifi:599]: WiFi:
[22:55:38][C][wifi:427]:   Local MAC: A4:CF:12:DD:8B:4B
[22:55:38][C][wifi:432]:   SSID: [redacted]
[22:55:38][C][wifi:435]:   IP Address: 192.168.0.87
[22:55:38][C][wifi:438]:   BSSID: [redacted]
[22:55:38][C][wifi:440]:   Hostname: 'esp-ds18b20'
[22:55:38][C][wifi:442]:   Signal strength: -73 dB ▂▄▆█
[22:55:38][C][wifi:446]:   Channel: 1
[22:55:38][C][wifi:447]:   Subnet: 255.255.255.0
[22:55:38][C][wifi:448]:   Gateway: 192.168.0.1
[22:55:38][C][wifi:449]:   DNS1: 62.179.1.63
[22:55:38][C][wifi:450]:   DNS2: 62.179.1.62
[22:55:38][C][logger:185]: Logger:
[22:55:38][C][logger:186]:   Level: DEBUG
[22:55:38][C][logger:188]:   Log Baud Rate: 115200
[22:55:38][C][logger:189]:   Hardware UART: UART0
[22:55:38][C][gpio.one_wire:020]: GPIO 1-wire bus:
[22:55:38][C][gpio.one_wire:021]:   Pin: GPIO2
[22:55:38][C][gpio.one_wire:080]:   Found devices:
[22:55:38][C][gpio.one_wire:082]:     0xcb0116004bc1ff28 (DS18B20)
[22:55:38][C][dallas.temp.sensor:029]: Dallas Temperature Sensor:
[22:55:38][C][dallas.temp.sensor:034]:   Address: 0xcb0116004bc1ff28 (DS18B20)
[22:55:38][C][dallas.temp.sensor:035]:   Resolution: 12 bits
[22:55:38][C][dallas.temp.sensor:036]:   Update Interval: 60.0s
[22:55:38][C][mdns:116]: mDNS:
[22:55:38][C][mdns:117]:   Hostname: esp-ds18b20
[22:55:38][C][esphome.ota:073]: Over-The-Air updates:
[22:55:38][C][esphome.ota:074]:   Address: esp-ds18b20.local:8266
[22:55:38][C][esphome.ota:075]:   Version: 2
[22:55:38][C][safe_mode:018]: Safe Mode:
[22:55:38][C][safe_mode:019]:   Boot considered successful after 60 seconds
[22:55:38][C][safe_mode:021]:   Invoke after 10 boot attempts
[22:55:38][C][safe_mode:022]:   Remain in safe mode for 300 seconds
[22:55:38][C][api:139]: API Server:
[22:55:38][C][api:140]:   Address: esp-ds18b20.local:6053
[22:55:38][C][api:144]:   Using noise encryption: NO
[22:56:37][D][dallas.temp.sensor:054]: 'Temperatura DS18B20': Got Temperature=27.3°C
[22:56:37][D][sensor:093]: 'Temperatura DS18B20': Sending state 27.31250 °C with 1 decimals of accuracy
[22:57:37][D][dallas.temp.sensor:054]: 'Temperatura DS18B20': Got Temperature=27.2°C
[22:57:37][D][sensor:093]: 'Temperatura DS18B20': Sending state 27.25000 °C with 1 decimals of accuracy
[22:58:37][D][dallas.temp.sensor:054]: 'Temperatura DS18B20': Got Temperature=33.4°C
[22:58:37][D][sensor:093]: 'Temperatura DS18B20': Sending state 33.37500 °C with 1 decimals of accuracy

Dlaczego tego dziadostwa nie widzę w HA? Szukałem pod nazwami:

  • esp-ds18b20
  • Temperatura DS18B20
  • DS18B20

ale nic takiego nie istnieje. Restartowałem nawet malinę z HA ale to też nie pomogło. Jakieś pomysły?

EDIT: ehh jestem kretynem, nie dodałem tego w integracjach :slight_smile: teraz już widać.

Więc teraz kluczowe pytanie, jak dodać pozostałe 3 sensory? Pod ten sam pin (D4) dać wszystkie? Jak wtedy ogarnąć konfig?

Urządzenie/płytka powinna być w integracjach\esphome.
Wygląda jak nodemcu i tak ją zdefiniowałeś.
w sekcji sensor/ -platform:dallas_temp dodaj:

  - platform: dallas_temp
    name: "Temperatura DS18B20"
    address: 0xcb0116004bc1ff28

Jeśli używałeś płytki w innej konfiguracji i była już w HA to musisz/powinieneś ją usunąć.

1 polubienie

pod jeden pin

sensor:
  - platform: dallas_temp
    name: "Temperatura DS18B20"
    address: 0xcb0116004bc1ff28
    update_interval: 120s
  - platform: dallas_temp
    name: "Temperatura DS18B20 drugi"
    address: 0x<poprawny adres drugiego>
    update_interval: 120s
  - platform: dallas_temp
    name: "Temperatura DS18B20 trzeci"
    address: 0x<poprawny adres trzeciego>
    update_interval: 120s

jeśli pod wiele pinów to musisz zdefiniować więcej magistral 1-wire (na ESP8266 raczej nie polecam więcej niż 2) i przypisać konkretne sensory do magistral na których są podpięte

Pięknie dziękuję za pomoc! Wszystko działa. Udało się to zamknąć w mini pudełku śniadaniowym.



Sensory podłączałem pojedynczo żeby spisać ich adresy ale potem się okazało, że można podłączyć wszystkie naraz i te adresy są widoczne w logach - tylko był komunikat w stylu “nie można wybrać adresu”. Konfig dla potomnych:

esphome:
  name: esp-ds18b20
  platform: ESP8266
  board: nodemcuv2

wifi:
  ssid: "UPC1234567"
  password: "abcdefghij"

logger:

api:

ota:
  - platform: esphome
  
one_wire:
  - platform: gpio
    pin: GPIO2

sensor:
  - platform: dallas_temp
    name: "Temperatura DS18B20 nr 1"
    address: 0xcb0116004bc1ff28
    update_interval: 60s
  - platform: dallas_temp
    name: "Temperatura DS18B20 nr 2"
    address: 0x5d0315b02268ff28
    update_interval: 60s
  - platform: dallas_temp
    name: "Temperatura DS18B20 nr 3"
    address: 0xa6031623e80fff28
    update_interval: 60s
  - platform: dallas_temp
    name: "Temperatura DS18B20 nr 4"
    address: 0x7a021503e347ff28
    update_interval: 60s

2 polubienia

Sledzi ktos jeszcze ten temat ?

Potrzebuje pomocy :frowning:

mam eSP-12F ESP8266MOD podlaczony czujnik Ds18b20 pod GND, D4 oraz 3.3v wgrany yaml esp laczy sie z wifi ale jak staram sie dodac czujnik do kodu i zainstalowac to wywala bledy juz nie mam pomyslow :confused:
Uzywam ESPHome 2025.2.2

To jest aktualny Yaml :

esphome:
  name: czujniktemp-sauny
  friendly_name: CzujnikTemp Sauny

esp8266:
  board: nodemcuv2

wifi:
  ssid: "Smart-dzieju"
  password: "00512623706"

logger:

api:

ota:

# Używamy magistrali One-Wire
# Example configuration entry
one_wire:
  - platform: gpio
    pin: GPIO4
# Dodanie sensora z właściwym podejściem
sensor:
  - platform: one_wire
    address: "0xADDRESS" # Jeśli potrzebujesz więcej niż jednego czujnika
    name: "Temperatura Sauny"

Krotki log :

Takie bledy dostaje :

INFO ESPHome 2025.2.2
INFO Reading configuration /config/esphome/czujniktemp-sauny.yaml...
INFO Unable to import component one_wire.sensor: No module named 'esphome.components.one_wire.sensor'
Failed config

sensor.one_wire: [source /config/esphome/czujniktemp-sauny.yaml:25]
  
  Platform not found: 'sensor.one_wire'.
  platform: one_wire
  address: 0xADDRESS
  name: Temperatura Sauny
  1. nieaktualny fragment dotyczący OTA
    takie minimum na dziś (zostawiłem puste hasło)
ota:
  platform: esphome
  password: ""
  1. w ogóle wkleiłeś jakiś przykładowy kod bez adresów czujników, to jak on ma działać?

Najpierw definiujesz TYLKO magistralę

i w logach sprawdzasz skan czujników na magistrali - tam znajdziesz ich adresy…
a potem możesz dopiero definiować sensory

  1. Naprawdę zalecam zajrzeć do dokumentacji i niech nikt mi nie chrzani, że za często linkuję konkretne fragmenty dokumentacji, bo skoro ludzie tam nie zaglądają…

bo to, to nie wiem skąd się wzięło (na 100% nie z tego wątku, gdzie teraz jesteśmy…)

może jakieś słowo komentarza skąd wyczesałeś tego YAMLa, bo komentarze w nim wskazują na jakiegoś bloga? (no ale nie będę przekopywał internetu by znaleźć skąd to pochodzi… ale na 100% nie z dokumentacji)

1 polubienie

Dzieki za szybka odp.

Aktualny config :confused:

esphome:
  name: czujnik-temperatury-sauny
  friendly_name: Czujnik Temperatury Sauny

esp8266:
  board: esp01_1m

wifi:
  ssid: "Smart-dzieju"
  password: "******"
  
  # Enable fallback hotspot (captive portal) in case WiFi connection fails
  ap:
    ssid: "Czujnik-Temperatury-Sauny"
    password: "******"

captive_portal:

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "******="

ota:
  platform: esphome
  password: "*****"

  # Example configuration entry
one_wire:
  - platform: gpio
    pin: GPIO4

# Example configuration entry
sensor:
  - platform: dallas_temp
    name: temperature
    update_interval: 120s

I aktualne logi :

INFO ESPHome 2025.2.2
INFO Reading configuration /config/esphome/czujnik-temperatury-sauny.yaml...
INFO Starting log output from 192.168.1.90 using esphome API
INFO Successfully connected to czujnik-temperatury-sauny @ 192.168.1.90 in 1.063s
INFO Successful handshake with czujnik-temperatury-sauny @ 192.168.1.90 in 2.991s
[22:58:04][I][app:100]: ESPHome version 2025.2.2 compiled on Mar 18 2025, 22:40:15
[22:58:04][C][wifi:600]: WiFi:
[22:58:04][C][wifi:428]:   Local MAC: 50:02:91:4F:AD:80
[22:58:04][C][wifi:433]:   SSID: [redacted]
[22:58:04][C][wifi:436]:   IP Address: 192.168.1.90
[22:58:04][C][wifi:439]:   BSSID: [redacted]
[22:58:04][C][wifi:441]:   Hostname: 'czujnik-temperatury-sauny'
[22:58:04][C][wifi:443]:   Signal strength: -40 dB ▂▄▆█
[22:58:04][C][wifi:447]:   Channel: 1
[22:58:04][C][wifi:448]:   Subnet: 255.255.255.0
[22:58:04][C][wifi:449]:   Gateway: 192.168.1.1
[22:58:04][C][wifi:450]:   DNS1: 192.168.1.1
[22:58:04][C][wifi:451]:   DNS2: 0.0.0.0
[22:58:04][C][logger:177]: Logger:
[22:58:04][C][logger:178]:   Max Level: DEBUG
[22:58:04][C][logger:179]:   Initial Level: DEBUG
[22:58:04][C][logger:181]:   Log Baud Rate: 115200
[22:58:04][C][logger:182]:   Hardware UART: UART0
[22:58:04][C][gpio.one_wire:020]: GPIO 1-wire bus:
[22:58:04][C][gpio.one_wire:021]:   Pin: GPIO4
[22:58:04][W][gpio.one_wire:078]:   Found no devices!
[22:58:04][C][dallas.temp.sensor:029]: Dallas Temperature Sensor:
[22:58:04][W][dallas.temp.sensor:031]:   Unable to select an address
[22:58:04][C][captive_portal:089]: Captive Portal:
[22:58:04][C][mdns:116]: mDNS:
[22:58:04][C][mdns:117]:   Hostname: czujnik-temperatury-sauny
[22:58:04][C][esphome.ota:073]: Over-The-Air updates:
[22:58:04][C][esphome.ota:074]:   Address: czujnik-temperatury-sauny.local:8266
[22:58:04][C][esphome.ota:075]:   Version: 2
[22:58:04][C][esphome.ota:078]:   Password configured
[22:58:04][C][safe_mode:018]: Safe Mode:
[22:58:04][C][safe_mode:019]:   Boot considered successful after 60 seconds
[22:58:04][C][safe_mode:021]:   Invoke after 10 boot attempts
[22:58:04][C][safe_mode:022]:   Remain in safe mode for 300 seconds
[22:58:04][W][safe_mode:028]: Last reset occurred too quickly; safe mode will be invoked in 8 restarts
[22:58:04][C][api:140]: API Server:
[22:58:04][C][api:141]:   Address: czujnik-temperatury-sauny.local:6053
[22:58:04][C][api:143]:   Using noise encryption: YES

Zrobilem to dzis bez rezystora 4.7k jutro podlacze moze dlatego wali bledy jeszcze

Ja na wersji 2024.7.3 mam jak poniżej, może się przyda. 4 Dallasy i jeden Bosch.

esphome:
  name: temperatury
  platform: ESP32
  board: esp32dev
    
wifi:
  ssid: "niepodam"
  password: "bonie"

logger:

api:

ota:
  - platform: esphome
  
captive_portal:

i2c:
  sda: 21
  scl: 22
  scan: true

sensor:
  - platform: bme280_i2c
    temperature:
      name: "BME280 Temperature"
    pressure:
      name: "BME280 Pressure"
    humidity:
      name: "BME280 Humidity"
    address: 0x76
  - platform: dallas_temp
    address: 0xcb0216004bc1ff28
    name: "Temperatura DS18B20 nr 1"
    update_interval: 15s
  - platform: dallas_temp
    address: 0x5d0115b02268ff28
    name: "Temperatura DS18B20 nr 2"
    update_interval: 15s
  - platform: dallas_temp
    address: 0xa6041623e80fff28
    name: "Temperatura DS18B20 nr 3"
    update_interval: 15s
  - platform: dallas_temp
    address: 0x7a011503e347ff28
    name: "Temperatura DS18B20 nr 4"
    update_interval: 15s

one_wire:
  - platform: gpio
    pin: GPIO5

A czy rezystor jest konieczny przy jednym czujniku ?

@Grzegorz_Ciekot
Przy TYLKO jednym czujniku to powinno już działać, ale w logu masz brak czujników na magistrali (więc tym razem problem ze sprzętem).

1 polubienie

omg: / amoze inny gpio ? probowac ?

Sprawdź połączenia, normalnie żółty to Data, biały lub czarny - masa, a czerwony Vcc
a jak jest inna kolorystyka to sprawdź w ofercie sprzedaży (bo to Chińczycy “klepią w garażu”).

Nie każdy DS18B20 działa przy zasilaniu 3.3V (w szczególności nie działają oryginalne czujniki wyprodukowane przez Dallas Semicondictor, ale ich nie ma już praktycznie na rynku, bo Dallasa przejął Maxim lata temu), ale Chińczycy sprzedają własne podróbki (warto sprawdzić czy jest deklarowana praca przy zasilaniu 3.3V).


edit

dopiero zauważyłem tego posta…

nigdy nie próbowałem bez…

edit - aż z ciekawości sprawdziłem bez rezystora i u mnie działa na GPIO13

esphome:
  name: dallas
  friendly_name: Dallas

esp8266:
  board: d1_mini

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "gbBAVXmTyIL1mPYt1kI+mNa/GF1gNNKDViM26EAJT1k="

ota:
  - platform: esphome
    password: "1b1cc14ac8f17b8171711ff735114161"

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

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Dallas Fallback Hotspot"
    password: "xTT3HwoJYbwo"

captive_portal:

one_wire:
  - platform: gpio
    pin: D7

sensor:
  - platform: dallas_temp
    name: dallas_temperature
    address: 0x8680000021a81b18 

Jeszcze jedno

może warto zauważyć że D4 to NIE jest GPIO4

(tak przy okazji D4=GPIO2 to nie jest najszczęśliwszy wybór GPIO na magistralę 1-wire, ale GPIO4=D2 już jest całkiem OK, aliasy w/g popularnych konstrukcji Wemos/NodeMCU, ALE UWAGA mogą być jednak czasami inne! w szczególności na innych płytkach od tej masówki)

Jeśli dasz sobie pasującą do płytki definicję (u mnie takim poligonowym ESP8266 jest jakiś klon Wemos’a D1 mini) to wtedy może będą działać aliasy zgodne z nadrukiem na płytce (bo co do tego że nie masz płytki ESP-01s, to jestem raczej pewien, a ta definicja

esp01_1m

nie zawiera żadnych aliasów), a z tego opisu

wcale nie wynika jaką płytkę prototypową faktycznie masz.

W tamtym poście

na fotkach jest klon NodeMCU v2 (lub coś podobnego), a w bryku, który linkowałem wyżej jest kilka popularnych modeli (zwykle klony wyglądają i działają wystarczająco zgodnie z nimi).

2 polubienia

Faktycznie popelnilem kolejny raz ten blad GPIO4 jak d4 a powinno byc gpio2 jak jest d4 :smiley:

Dzieki

Doczytaj, bo edytowałem przed chwilą…
najprościej - używaj definicji płytki pasującej do płytki i aliasów Dx.

Wszystko dziala :smiley: dziekuje za szybkie wsparcie

5 postów zostało podzielonych na nowy temat: ESPHome, 4x termometr DS18B20 + LCD HD44780