ESP WROOM 32 in Verbindung mit Sensor DS1820b

Ich bin am verzweifeln. Es werden mir leider keine Sensoren angezeigt.
Angeschlossen ist der ESP mit 3,3V und einem 4,7kOhm Widerstand zum GPIO Pin. Dieser ist auf GPIO4 eingestellt. Habe bereits etliche Ports versucht.
Leider werden einfach keine Sensoren angezeigt.

@Schmavi
Ein paar Angaben solltest du schon noch machen, damit dir geholfen werden kann.

Den ESP32 hast du sicher geflasht. Wenn ja, wie und womit? Vermutlich hast du ESPHome genutzt. Dann würde es helfen, wenn du dein Script hier zeigst.

Ich habe mich nach Anleitung von Simon gehalten. Hab das Teil mit ESP Home geflasht und dies dann in die YAML geschrieben.

one_wire:
 - id: bus_one
   platform: gpio
   pin:
    number: 4
    mode:
      input: true
      pullup: true

Desweiteren sieht das Logfile dann folgendermaßen aus:

[17:27:39][C][logger:185]: Logger:
[17:27:39][C][logger:186]:   Level: DEBUG
[17:27:39][C][logger:188]:   Log Baud Rate: 115200
[17:27:39][C][logger:189]:   Hardware UART: UART0
[17:27:39][C][gpio.one_wire:020]: GPIO 1-wire bus:
[17:27:39][C][gpio.one_wire:021]:   Pin: GPIO4
[17:27:39][W][gpio.one_wire:078]:   Found no devices!
[17:27:39][C][mdns:116]: mDNS:
[17:27:39][C][mdns:117]:   Hostname: esphome-web-7b23cc
[17:27:39][C][esphome.ota:073]: Over-The-Air updates:
[17:27:39][C][esphome.ota:074]:   Address: esphome-web-7b23cc.local:3232
[17:27:39][C][esphome.ota:075]:   Version: 2
[17:27:39][C][safe_mode:018]: Safe Mode:
[17:27:39][C][safe_mode:019]:   Boot considered successful after 60 seconds
[17:27:39][C][safe_mode:021]:   Invoke after 10 boot attempts
[17:27:39][C][safe_mode:022]:   Remain in safe mode for 300 seconds
[17:27:39][C][api:140]: API Server:
[17:27:39][C][api:141]:   Address: esphome-web-7b23cc.local:6053
[17:27:39][C][api:145]:   Using noise encryption: NO

:crayon:by HarryP: Code-/Logzeilen formatiert (bitte immer in </> einbinden)

Wenn du den Widerstand eingebaut hast, dann lasse das “pullup:true” weg.

Bei mir auf einem D1mini hat es mit

one_wire:
  - platform: gpio
    id: bus_one
    pin: D6

geklappt (wobei man id: bus_one auch weglassen kann, wenn man nur einen Bus verwendet).
In deinem Fall anstelle von “pin: D6” also “pin: GPIO4”.

Das habe ich bereits alles ausprobiert und auch schon den Rest in der YAML weggelassen. Es klappt einfach nicht und er findet keinen Sensor. Hab hier 4 Stück und bereits 3 Stück ausprobiert. Ich habe es vor ein paar Monaten versucht einzurichten und ein Sensor wurde auch gefunden, hatte dann aber keine Zeit mehr mich damit auseinanderzusetzen. Damals ging es auch noch mit dem “Dallas” Eintrag soweit ich mich erinnern kann.

Ich habe den Sensor wie folgt eingebaut (esphome):

Sorry hab gerade nur Screenshots.

Hab ich gerade versucht. Geht auch nicht.

esphome:
  name: esphome-web-7b23cc
  friendly_name: Heizung Vorlauf
  min_version: 2024.11.0
  name_add_mac_suffix: false

esp32:
  board: esp32dev
  framework:
    type: esp-idf

# Enable logging
logger:

# Enable Home Assistant API
api:

# Allow Over-The-Air updates
ota:
- platform: esphome

wifi:
  ssid: !Secrets
  password: !Secrets

captive_portal:
  
one_wire:
   platform: gpio
   pin: GPIO4

:crayon:by HarryP: Code-/Logzeilen formatiert (bitte immer in </> einbinden)

Mein Code war:

one_wire:
  - platform: gpio
    id: bus_one
    pin: D6
.
. 
.
sensor:
    #DS18B20
  - platform: dallas_temp
    address: 0xAAAAAAAAAAAAAAA
    name: temperature
    update_interval: 5s

aber ohne den Senor-Teil wurde bereits ein Sensor gefunden und die Adresse angezeigt. Der Sensor-Teil ist für die Lieferung der Daten zuständig.
D1Mini, Sensor an 3,3V und Masse angeschlossen, Vom Datenpin eine Leitung zum GPIO Pin und über 4,7kOhm vom Datenpin zu 3,3V.
Bleibt als Fehlerquelle nur, das Masse und 3,3V vertausch wurden. Bei den Sensoren, die wie ein Transistor aussehen kann das leicht passieren…

Als Fehlerquelle kann die Vertauschung ausgeschlossen werden, da ich keinen Sensor hab mit 3 Beinchen, da es der Sensor ist mit Kabel.
Ich hab echt keinen Rat mehr. Hab noch einen zweiten ESP versucht, aber funktioniert auch nicht.

Es handelt sich um das Board hier:

Moin, hab gerade bei meiner “Heizung” nachgesehen. (3 Sensoren - esp8266)
Hab keinen.Widerstand mit drin, geht auch. Bin auf GPIO2 mit allen 3.
Hast schon ohne versucht ?
Grüße
Rolo

Es kann sein, dass der Widerstand bereits im Kabel mit eingelötet ist. Ich würde es auch mal ohne Widerstand probieren. Vielleicht vorher erst mal ein Messgerät zwischen Datendraht und 3,3V Draht anschließen und schauen, ob es einen Widerstand im Bereich von 1-5 kOhm anzeigt. Bei meinem nackten Sensor zeigt das Messgerät keinerlei Widerstand zwischen den Beinen an.

Widerstand gerade rausgemacht. Kein Sensor gefunden.
Vielleicht liegt es am Board? Hat er so automatisch installiert
esp32:
board: esp32dev
framework:
type: esp-idf

Hast du die Pin-Belegung mit der GPIO-Tabelle für dein Board mal gecheckt? Nicht dass du die Signalleitung an einem Pin hast, der nicht nicht deinem GPIO4 entspricht.

Ich nutze für diesen Zweck einen D1 Mini (der eigentlich mehr als ausreichend für den Job ist) und habe noch eine kleine prozentuale Anpassungsmöglichkeit für die Temperatur eingebaut, um die Messungenauigkeit außen am Rohr ein wenig kompensieren zu können (ist aber auch nicht ganz exakt). Hier mal der Code von mir:

one_wire:
  - id: bus_one
    platform: gpio
    pin:
     number: 2
     mode:
       input: true
       pullup: true

substitutions:
  temp_offset_percent: "15"

# Individual sensors
sensor:
  - platform: dallas_temp
    address: 0x943ce1d44328fc28
    name: "Vorlauf HK1"
    unit_of_measurement: "°C"
    icon: "mdi:thermometer-plus"
    device_class: "temperature"
    state_class: "measurement"
    accuracy_decimals: 2
    filters:
#      - offset: 5.0
      - lambda: return x * (1 + ${temp_offset_percent} / 100.0);

  - platform: dallas_temp
    address: 0xa6505bd446785f28
    name: "Rücklauf HK1"
    unit_of_measurement: "°C"
    icon: "mdi:thermometer-minus"
    device_class: "temperature"
    state_class: "measurement"
    accuracy_decimals: 2
    filters:
#      - offset: 5.0
      - lambda: return x * (1 + ${temp_offset_percent} / 100.0);`Vorformatierter Text`

Ich hab bereits einige GPIO Ports ausprobiert und leider immer denselben Fehler. Wenn es klappen würde, greife ich gerne auf deine überarbeitete YAML zurück. Ich habe das Gefühl, dass der Treiber anscheinend die falsche ESP Firmware aufspielt. Ich bräuchte doch die ESP8266 FW. Er installiert halt automatisch diese ESP32dev als Typ ESP-IDF

Wenn du diesen ESP gekauft hast:
[ESP32 NodeMCU Module WLAN WiFi Dev Kit C Development Board mit CP2102
dann ist

esp32:
  board: esp32dev
  framework:
    type: esp-idf

richtiger als einen 8266 auszuwählen, der ist wirklich ein ganz andere Typ.

Du könntest noch

esp32:
  board: esp32dev
  framework:
    type: arduino

ausprobieren.

Wenn die Messung zwischen 3,3V Bein und Signalbein keine kOhm Widerstand ergeben hat, dann mit 4,7kOhm Widerstand anschließen…

Hi, hier nochmal meine codes aus meinen boards mit Dallas:

ESP32:

esp32:
  board: esp32dev
  framework:
    type: arduino
...
one_wire:
  - platform: gpio
    pin: GPIO4
....
sensor:
  - platform: dallas_temp
    address: 0x39c625700a646128
    name: "Sitz"
    id: Sitz
    unit_of_measurement: "°C"
    icon: "mdi:thermometer-plus"
    device_class: "temperature"
    state_class: "measurement"
    accuracy_decimals: 1
    update_interval: 5s

ESP8266 mit einem Sensor:

esp8266:
  board: esp01_1m
....
one_wire:
  - platform: gpio
    pin: GPIO2
....
sensor:
  - platform: dallas_temp
    address: 0x11d574730a646128
    name: "Aussentemperatur"
    unit_of_measurement: "°C"
    icon: "mdi:thermometer-plus"
    device_class: "temperature"
    state_class: "measurement"
    accuracy_decimals: 0
    state_topic: "sensors/stallfenster/aussen"    

Heizung mit 3 Sensoren an 8266:

esp8266:
  board: esp01_1m
....
one_wire:
  - platform: gpio
    pin: GPIO2
....
sensor:
  - platform: dallas_temp
    address: 0xd04513700a646128
    name: "Vorlauf"
    unit_of_measurement: "°C"
    icon: "mdi:thermometer-plus"
    device_class: "temperature"
    state_class: "measurement"
    accuracy_decimals: 0
    update_interval: 60s
    state_topic: "sensors/heizungtest/vorlauf"         
  - platform: dallas_temp
    address: 0xf6bf7b700a646128
    name: "Ruecklauf"
    unit_of_measurement: "°C"
    icon: "mdi:thermometer-plus"
    device_class: "temperature"
    state_class: "measurement"
    accuracy_decimals: 0
    update_interval: 60s         
  - platform: dallas_temp
    address: 0x6c00b77d0a646128
    name: "FBH"
    unit_of_measurement: "°C"
    icon: "mdi:thermometer-plus"
    device_class: "temperature"
    state_class: "measurement"
    accuracy_decimals: 0
    update_interval: 60s

Um die Adressen zu finden, hatte ich zunächst nur den one_wire Teil drin und habe nach auslesen des Log dann weiter programmiert.
Ich gehe davon aus, dass du das auch so gemacht hast oder ähnlich.
Du hast geschrieben, dass er vor einiger Zeit die Adressen gefunden hat.
Dann geht es doch langsam in Richtung Board oder Sensor defekt…
Ausser, dass esphome bei mir automatisch arduino als framework bei dem esp32 gewählt hat, sehe ich keinen Unterschied.
Habe die Schnipsel hier auch nur eingefügt, damit man sieht, wie es bei mir funktioniert.
Im Umkehrschluss hätte esphome ja auch “meckern” müssen, wenn das mit esp-idf framework nicht gehen sollte.
Es bleibt somit ja meiner Meinung nach nur noch das Board (und wenn die 3,3V zusammenbrechen oder so )oder der Sensor.
Hoffe das hilft.
Grüße
Rolo
Nachtrag: Habe nirgendwo Widerstände mit drin.

Ich habe auch einen halben Tag damit zugebracht, 6 DS18B20-Sensoren an einem ESP-WROOM-32 zum Laufen zu bekommen. Ein einzelner Sensor hat mit “pullup: true” funktioniert. Mehrere Sensoren nicht. Ich habe dann 6 Sensoren an 6 verschiedenen Pins verlötet und jeweils “pullup: true” für die Pins gesetzt. Das Ergebnis war erratisch: Ohne Änderungen wurden mal 2 von 6 nicht gefunden, mal 3, mal 4, mal 5 nicht.

Weil ich keinen 4,7 kOhm-Widerstand hatte, habe ich dann aus einem alten Radio einen 2,7 kOhm-Widerstand ausgelötet und verbaut. Alle 6 Sensoren hängen jetzt an Pin4 und es funktioniert tadellos.

Mein YAML-Code

esp32:
  board: esp32dev
  framework:
    type: arduino

[....]

one_wire:
 - id: dallasDs18B20
   platform: gpio
   pin:
    number: GPIO4
    mode:
      input: true

sensor:
  - platform: dallas_temp
    id: esp_hwr_sp_oben
    address: 0xa900000036241d28
    one_wire_id: dallasDs18B20
    name: "Pufferspeicher oben"
    unit_of_measurement: "°C"
    icon: "mdi:thermometer"
    device_class: "temperature"
    state_class: "measurement"
    accuracy_decimals: 1
    update_interval: 30s

[....]

Die Id (hier “dallasDs18B20”) ist im Prinzip irrelevant. Wenn man, wie ich es zwischenzeitlich hatte, 6 mal einen Wirebus an 6 verschiedenen Pins definiert, dann muss der Bus jeweils eine ID bekommen und man bei jedem Sensor via one_wire_id angeben, an welchem Bus er hängt.

Das mit der ID könnte ich noch probieren. Ich versuche es heute Abend mal mit der YAML mit und ohne Widerstand.

Ich habe nun wirklich alles versucht. Hab es mit eingebautem Widerstand und “ohne Pullup=true” versucht, hab es ohne Widerstand in beiden Variationen versucht zum laufen zu bringen. Jeglichen GPIO Port versucht. Hab hier 4x DS1820B Sensorkabel. Alle ausprobiert. Es klappt nicht

Poste doch bitte mal deine ganze yaml, die du jetzt auf dem ESP hast. Es ist mühsam, sich die Bruchstücke zusammen zu suchen.

Vielleicht nochmal kurz zur Einrichtung meines ESP32 Wroom Chips.
Ich nutze ESP Home Builder via Home Assistant. Hier füge ich über den Punkt “New Device” ein neues Gerät hinzu.
Hier öffnet sich ein Fenster (ESPHome Web), wobei ich den Chip über den USB Port verbunden habe (auch passender Windows Treiber) und auf “Prepare for first Use” klicke. Dabei werden alle Daten darauf geschrieben. Danach erscheint die Meldung “Erfolgreich”. Verbinde dann den ESP über meine WLAN SSID & Passwort. Dann geht ein neues Fenster auf und der ESP wird auch direkt über die IP gefunden (ESPHome Web 7b23cc). Was merkwürdig ist, dass der am Anfang neu hinzugefügte ESP Chip nicht Online war. Wenn man dann im ESP Home Builder oben rechts auf die drei Punkte geklickt hat, kann man auf “show discovered devices” klicken und dann erst wurde ein neuer ESP gefunden, der auch “online” war. Diesen kann man mit “Take Control” einrichten. In diese YAML muss man dann händig wieder seine SSID & WLAN Passwort eintragen und updaten. Dann den alten hinzugefügten ESP musste ich immer löschen. Ich habe es gerade erneut versucht und es ist dasselbe Prozedere.

esphome:
  name: esphome-web-7b23cc
  friendly_name: Heizung Vorlauf
  min_version: 2024.11.0
  name_add_mac_suffix: false

esp32:
  board: esp32dev
  framework:
    type: esp-idf

# Enable logging
logger:

# Enable Home Assistant API
api:

# Allow Over-The-Air updates
ota:
- platform: esphome

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


one_wire:
 - id: bus_one
   platform: gpio
   pin:
    number: 4

Und das über Validate
Info über Validate des Chips

Vorformatierter Text`INFO ESPHome 2024.12.4
INFO Reading configuration /config/esphome/esphome-web-7b23cc.yaml…

esphome:
  name: esphome-web-7b23cc
  friendly_name: Heizung Vorlauf
  min_version: 2024.11.0
  name_add_mac_suffix: false
  build_path: build/esphome-web-7b23cc
  area: ''
  platformio_options: {}
  includes: []
  libraries: []
esp32:
  board: esp32dev
  framework:
    version: 5.1.5
    sdkconfig_options: {}
    advanced:
      ignore_efuse_custom_mac: false
    components: []
    platform_version: https://github.com/pioarduino/platform-espressif32.git#51.03.07
    source: pioarduino/framework-espidf@https://github.com/pioarduino/esp-idf/releases/download/v5.1.5/esp-idf-v5.1.5.zip
    type: esp-idf
  flash_size: 4MB
  variant: ESP32
logger:
  baud_rate: 115200
  tx_buffer_size: 512
  deassert_rts_dtr: false
  hardware_uart: UART0
  level: DEBUG
  logs: {}
api:
  port: 6053
  password: ''
  reboot_timeout: 15min
ota:
- platform: esphome
  version: 2
  port: 3232
wifi:
  domain: .local
  reboot_timeout: 15min
  power_save_mode: LIGHT
  fast_connect: false
  enable_btm: false
  enable_rrm: false
  passive_scan: false
  enable_on_boot: true
  networks:
  - ssid: XXXXX
    password: 'XXXXX'
    priority: 0.0
  use_address: esphome-web-7b23cc.local
one_wire:
- platform: gpio
  id: bus_one
  pin:
    number: 4
    mode:
      output: true
      input: false
      open_drain: false
      pullup: false
      pulldown: false
    inverted: false
    ignore_pin_validation_error: false
    ignore_strapping_warning: false
    drive_strength: 20.0
INFO Configuration is valid!

INFO Upload took 11.23 seconds, waiting for result...
INFO OTA successful
INFO Successfully uploaded program.
INFO Starting log output from 192.168.178.164 using esphome API
INFO Successfully connected to esphome-web-7b23cc @ 192.168.178.164 in 4.164s
INFO Successful handshake with esphome-web-7b23cc @ 192.168.178.164 in 0.049s
[17:14:07][I][app:100]: ESPHome version 2024.12.4 compiled on Jan 22 2025, 17:07:18
[17:14:07][C][wifi:600]: WiFi:
[17:14:07][C][wifi:428]:   Local MAC: XXXXXX
[17:14:07][C][wifi:433]:   SSID: [redacted]
[17:14:07][C][wifi:436]:   IP Address: 192.168.178.164
[17:14:07][C][wifi:439]:   BSSID: [redacted]
[17:14:07][C][wifi:441]:   Hostname: 'esphome-web-7b23cc'
[17:14:07][C][wifi:443]:   Signal strength: -54 dB ▂▄▆█
[17:14:07][C][wifi:447]:   Channel: 6
[17:14:07][C][wifi:448]:   Subnet: 255.255.255.0
[17:14:07][C][wifi:449]:   Gateway: 192.168.178.1
[17:14:07][C][wifi:450]:   DNS1: 192.168.178.1
[17:14:07][C][wifi:451]:   DNS2: 0.0.0.0
[17:14:07][C][logger:185]: Logger:
[17:14:07][C][logger:186]:   Level: DEBUG
[17:14:07][C][logger:188]:   Log Baud Rate: 115200
[17:14:07][C][logger:189]:   Hardware UART: UART0
[17:14:07][C][gpio.one_wire:020]: GPIO 1-wire bus:
[17:14:07][C][gpio.one_wire:021]:   Pin: GPIO4
[17:14:07][W][gpio.one_wire:078]:   Found no devices!
[17:14:07][C][mdns:116]: mDNS:
[17:14:07][C][mdns:117]:   Hostname: esphome-web-7b23cc
[17:14:07][C][esphome.ota:073]: Over-The-Air updates:
[17:14:07][C][esphome.ota:074]:   Address: esphome-web-7b23cc.local:3232
[17:14:07][C][esphome.ota:075]:   Version: 2
[17:14:07][C][safe_mode:018]: Safe Mode:
[17:14:07][C][safe_mode:019]:   Boot considered successful after 60 seconds
[17:14:07][C][safe_mode:021]:   Invoke after 10 boot attempts
[17:14:07][C][safe_mode:022]:   Remain in safe mode for 300 seconds
[17:14:07][C][api:140]: API Server:
[17:14:07][C][api:141]:   Address: esphome-web-7b23cc.local:6053
[17:14:07][C][api:145]:   Using noise encryption: NO
[17:14:08][D][api:103]: Accepted 192.168.178.22
[17:14:08][D][api.connection:1446]: Home Assistant 2025.1.3 (192.168.178.22): Connected successfully

:crayon:by HarryP:
. Zusammenführung Mehrfachpost (bitte “bearbeiten” Funktion nutzen)
. Codezeilen formatiert (bitte immer in </> einbinden)