ESP32 "Rohr Temperaturen mit Home Assistant überwachen (Heizung Vor- & Rücklauf)"

Hallo zusammen, bin gestern auf den Artikel “Rohr Temperaturen mit Home Assistant überwachen (Heizung Vor- & Rücklauf)” gestoßen, hab mir dann nen ESP32-WROOM-32 von nem bekannten geholt und wollte das gleich testen. Aber ich scheitere schon dran die pin nummer anzugeben, egal was ich Eintrag er sagt immer “Cannot resolve pin name ‘D4’ for board esp32dev.” Es gibt aber die D4 so beschriftet am Board, auch wenn ich eine andere D Nummer verwende, identischer Fehler. Sicher nur ne Kleinigkeit, wäre super wenn wir jemand auf die Sprünge helfen würde, bin was ESP angeht totaler newbie.

wenn ich GPIO4 oder 2 verwende kann ich den ersten Part aufspielen, aber beim boot erhalte ich dann “[W][gpio.one_wire:078]: Found no devices!” hab aktuell 2 DS18B20 angeschlossen. Mit Aderendhülsen und WAGOs, also Kontaktprobleme sollte es keine geben. Was mache ich falsch?

Wo hast Du deinen ESPHome Code ??

Hast Du den Pullup Widerstand mit 4.7 KOhm eingebaut?

Gruß

siehe auch.

Das die D-Angabe nicht funktioniert liegt wahrscheinlich an der Einstellung „board: esp32dev“. Das ist eine allgemeine Einstellung für mehrere ESP32 Board-Typen. Wenn du unter PlatformIO Registry eine genauer Boardangabe findest, welche speziell zu Deinem Developementboard passt (z.B. „board : nodemcu-32s“), dann ist die D-Angabe vielleicht möglich. Wenn man es nicht genau weiß, dann nimmt man „board: esp32dev“ (Ich hab bei meinen zwei Projekten mit “board: esp32dev” auch nur GPIO-Angaben verwendet).

Ich würde auf jeden Fall den 4,7k Widerstand einbauen. Der interne Pull-Up Widerstand ist soweit ich mich erinnern kann 10K Ohm oder höher. In mehreren Dokumenten wird darauf hingewiesen, dass der interne Pull-Up Widerstand normalerweise nicht ausreicht. Hinzu kommt, nicht alle ESP32 Pins und nicht alle Developementboards unterstützen Pull-Ups.

Ein Mitglied hier im Forum (hab den Namen leider nicht mehr) hat bei sich folgende Werte für den Widerstand ermittelt beim Anschluss von mehreren Sensoren:
5VDC
1x Sensor = 4,7kOhm
2x Sensor = 4,7kOhm
3x Sensor = 3,3kOhm
4x Sensor = 3,3kOhm
5x Sensor = 2,7kOhm
6x Sensor = 2,7kOhm
7x Sensor = 1,0kOhm
8x Sensor = 1,0kOhm
9x Sensor = 0.680kOhm
10x Sensor = 0.680kOhm

1 „Gefällt mir“

Und die Sensoren nicht an den 3,3V Pin des ESP anschliessen.

Hier aus dem Datenblatt rauskopiert " Obwohl die Stromversorgung
zwischen 3,3V und 5,5V liegen kann, wird eine 5V-Versorgung empfohlen."

Die 3,3 V auf dem ESP sind nicht sonderlich leistungstark und wenn längere Kabel am Sensor hängen wir das mit Signalpegeln ein Problem
( max 1m Kabel wird empfohlen und bei mehreren Sensoren wird das eh ein Problem )

Bei den GPIO’s muss du schauen, wenn Pin vom ESP als I/O oder Sonderfunktion genutzt werden - Blick in Datenblatt empfohlen.
Einige Pins haben Sonderfunktionen.

Ich verwende meist alte 5V USB Ladegeräte für die Versorgung. Ich schneide von einem alten Kabel den Stecker auf der einen Seite ab (oder baue eine Buchse ein) und verbinde die 5V mit dem VIN(5V) Eingang des ESP Developmentboard. Diese Boards haben einen internen Spannungswander, welcher die benötigten 3,3V für den ESP erzeugt.
Parallel schließe ich an die 5V Leitung alle Verbraucher an, die 5V benötigen. So kann man z.B. auch LED-Stripes versorgen, ohne den ESP zu grillen. Wichtig ist, dass die Versorgung nicht über das ESP-Board geführt wird (z.B. im USB Port rein und bei 5V oder 3,3V raus). Das Board verträgt nur sehr geringe Ströme (OK zwei DS18B20 wird es höchstwahrscheinlich überleben), also zur Sicherheit außen rum versorgen.

1 „Gefällt mir“

Hallo, hab aktuell keinen Widerstand drinnen, da ich mich da auf Simons Anleitung verlassen.

hier mein Code:

esphome:
  name: esp1-technikraum
  friendly_name: ESP1-Technikraum

esp32:
  board: esp32dev
  framework:
    type: arduino

# Enable logging
logger:

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

ota:
  - platform: esphome
    password: "xxx"

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

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Esp1-Technikraum"
    password: "xxx"

captive_portal:

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

hab jetzt mal nen Widerstand rein, leider unverändert. auch wenn die Spannungsversorgung über das Expansion Board mit 5V läuft.
2 Sensoren mit 3m Kabel hängen zum Testen dran.

Gibt es den Teil

sensor:
  - platform: dallas_temp
    address: 0xRICHTIGEADRESSE
    name: temperature
    update_interval: 120s

auch in deinem Code? Ich würde auch das “pullup: true” weglassen, wenn ein externer Widerstand dran hängt. Der Sensor-Teil wird zusätzlich zum one_wire-Teil auch benötigt.

der Teil würde kommen wenn er aus dem ersten Teil die Sensoren erkennen würde, damit ich die Adresse sichtbar hab.

Ich habe mal eben eine kleine Schaltung aufgebaut mit einem DS18B20 Sensor.

Haben den Sensor an 3,3V Versorgungsspannung und mit einen 4,7kOhm Widerstand zwischen Datenleitung und 3,3V betrieben (als D1-Mini PIN: D6).

Den DS18B20 an 5V anzuschließen hat nicht funktioniert, dadurch wurde D6 auch auf 5V hochgezogen. Wahrscheinlich sollte man dafür einen Levelschifter dazwischen schalten. Irgendwo hatte ich zwar gelesen, das D1-Mini 5V fest sein sollen (OK, meiner ist bei dem Test auch nicht abgeraucht) aber irgendwie hat es bei mir nicht funktioniert (die Stromanzeige am Labornetzteil ist auch hoch und runter gelaufen dabei).

Das verdrehen von GND und VCC am DS18D20 hat übrigens sofort zu einem Einbrechen der Versorgungsspannung geführt und sehr viel Strom gezogen (war am Labornetzteil glücklicherweise begrenzt), also besser nicht verdrehen…

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

Die Adresse wurde wie erhofft auch ohne den “sensor” Teil im Logging angezeigt, allerdings nur, wenn der Sensor hardwaremäßig korrekt angeschlossen und versorgt ist. Stimmt irgendetwas mit der Datenleitung, Versorgung oder Masse nicht, dann gibt es keine Adressangabe im Logging.