Dallas DS18B20 an D1 Mini über ESP Home funktionieren nicht mehr

Hallo,

ich habe seit ein paar Wochen 5 Dallas DS18B20 mit jeweils 5 Meter Kabel über den internen Pullup an einem D1 Mini (8266) hängen, was auch gut funktioniert hat bis auf den Umstand, daß bei den Aktualisierungen mal der eine oder andere Sensorwert vorübergehend als “unbekannt” angezeigt wurde. Damit konnte ich aber gut leben.

Seit heute Morgen werden die Sensoren aber gar nicht mehr angezeigt. Erst war es nur einer, dann alle.

Ich hatte dann die Fehlermeldung “found no sensors”.

Die Verkabelung habe ich schon überprüft, ESP Home dann auch auf 2023.12.7 aktualisiert (war vorher 2023.12.6). Ich habe auch schon einen anderen D1 Mini ausprobiert, aber es geht auch damit nicht.

Ich hatte die Sensoren die ganze Zeit auf GPIO02, habe jetzt aber auch mal GPIO01 ausprobiert, alles ohne Erfolg. Auch wenn nur 1 Sensor verkabelt wird, geht es nicht.

Die aktuelle Fehlermeldung im Log sieht so aus:

[18:09:13][E][dallas.sensor:112]: Requesting conversion failed
[18:09:13][D][sensor:093]: ‘Vorlauf Gasheizung’: Sending state nan °C with 2 decimals of accuracy
[18:09:13][D][sensor:093]: ‘Rcklauf Gasheizung’: Sending state nan °C with 2 decimals of accuracy
[18:09:13][D][sensor:093]: ‘Vorlauf Solarthermie’: Sending state nan °C with 2 decimals of accuracy
[18:09:13][D][sensor:093]: ‘Rcklauf Solarthermie’: Sending state nan °C with 2 decimals of accuracy
[18:09:13][D][sensor:093]: ‘Auentemperatur’: Sending state nan °C with 2 decimals of accuracy

Liegt es vielleicht an ESP Home oder hat noch jemand eine Idee?

Danke und LG

Pit

@Pit
hab’ zwar keine erste Idee, aber sieht Du den ersten Schritt im Logfile, also die Sensoren? Also folgenden ähnlichen Eintrag, das lesen der Werte kommt ja erst später.

18:39:39][C][dallas.sensor:075]: DallasComponent:
[18:39:39][C][dallas.sensor:076]: Pin: GPIO17
[18:39:39][C][dallas.sensor:077]: Update Interval: 60.0s
[18:39:39][D][dallas.sensor:082]: Found sensors:
[18:39:39][D][dallas.sensor:084]: 0x8c3c01d075847128
[18:39:39][D][dallas.sensor:084]: 0xc672ad571f64ff28
[18:39:39][C][dallas.sensor:089]: Device ‘Gehauesetemperatur’
[18:39:39][C][dallas.sensor:089]: Device Class: ‘temperature’
[18:39:39][C][dallas.sensor:089]: State Class: ‘measurement’
[18:39:39][C][dallas.sensor:089]: Unit of Measurement: ‘°C’
[18:39:39][C][dallas.sensor:089]: Accuracy Decimals: 1
[18:39:39][C][dallas.sensor:097]: Address: 0x8c3c01d075847128
[18:39:39][C][dallas.sensor:098]: Resolution: 12
[18:39:39][C][dallas.sensor:089]: Device ‘Aussentemperatur Nord’
[18:39:39][C][dallas.sensor:089]: Device Class: ‘temperature’
[18:39:39][C][dallas.sensor:089]: State Class: ‘measurement’
[18:39:39][C][dallas.sensor:089]: Unit of Measurement: ‘°C’
[18:39:39][C][dallas.sensor:089]: Accuracy Decimals: 1
[18:39:39][C][dallas.sensor:097]: Address: 0xc672ad571f64ff28
[18:39:39][C][dallas.sensor:098]: Resolution: 12

Gruß
Frank

Hallo Frank,

ich glaube nicht:

[18:57:41][C][dallas.sensor:075]: DallasComponent:
[18:57:41][C][dallas.sensor:076]: Pin: GPIO1
[18:57:41][C][dallas.sensor:077]: Update Interval: 30.0s
[18:57:41][W][dallas.sensor:080]: Found no sensors!
[18:57:41][C][dallas.sensor:089]: Device ‘Vorlauf Gasheizung’
[18:57:41][C][dallas.sensor:089]: Device Class: ‘temperature’
[18:57:41][C][dallas.sensor:089]: State Class: ‘measurement’
[18:57:41][C][dallas.sensor:089]: Unit of Measurement: ‘°C’
[18:57:41][C][dallas.sensor:089]: Accuracy Decimals: 2
[18:57:41][C][dallas.sensor:089]: Icon: ‘mdi:thermometer-plus’
[18:57:41][C][dallas.sensor:097]: Address: 0x0136c6d443e9ab28
[18:57:41][C][dallas.sensor:098]: Resolution: 12
[18:57:41][C][dallas.sensor:089]: Device ‘Rcklauf Gasheizung’
[18:57:41][C][dallas.sensor:089]: Device Class: ‘temperature’
[18:57:41][C][dallas.sensor:089]: State Class: ‘measurement’
[18:57:41][C][dallas.sensor:089]: Unit of Measurement: ‘°C’

LG Pit

@Pit
Du musst an das Grundübel ran [18:57:41][W][dallas.sensor:080]: Found no sensors!.state nan °C ist hier ein Folgefehler.

Kannst Du einen anderen DS18B20 (nicht einer der 5) unabhängig der 5er-Verkabelung direkt an den D1 mini hängen? Dies würde mein erster Ansatz sein und dann weiter … geht (Feldverkabelung und Sensoren), geht nicht (ESP & Software).

Gruß
Frank

Nimm mal einen richtigen PullUp, das hat bei mir geholfen.

Stimmt @spiderrolli, da hatte ich nicht dran gedacht … ich arbeite nur mit externen 4k7, da ist mir dieser Gedankengang erstmal weit weg.
An anderer Stelle hatte ich schonmal geschrieben, gemäß Herstellerspec 4k7. Und das ich auch nicht habe rausfinden können, wie groß der interne Pullup eigentlich ist.

Danke @spiderrolli
Frank

Ich habe keine weiteren Dallas-Sensoren und auch keinen Widerstand zum Testen.
Ich verstehe halt nicht, daß es wochenlang funktioniert hat und jetzt plötzlich nicht mehr. Es können doch kaum alle Sensoren auf einmal ausfallen, und am D1 Mini lag es offenbar auch nicht.

Kannst Du mir mal einen passenden Widerstand verlinken, z. B. bei Amazon?

LG Pit

@Pit
gib bei Amazon “widerstand 4k7” als Suchbegriff ein und Du wird erschlagen :wink:

Es muss ja nur einer der DS18B20 mucken und er zieht Dir den ganzen 1-Wire Bus runter. Bestelle mal einen Ersatz DS18B20 gleich mit.

Gruß
Frank

Hier hast du direkt ein Sortiment
AUKENIEN 1/4W Kohleschicht Widerstände Sortiment 25 Werte 1250 Stück Widerstand Wiederstand Set 1 Ohm bis 1M Ohm 1/4 Watt 5% Carbon Film Elektronik Resistors Resistor Kit : Amazon.de: Gewerbe, Industrie & Wissenschaft

1 „Gefällt mir“

Danke, da gibt es aber verschiedene Wattwerte, welchen sollte man da am besten nehmen?

Ich habe die drei Kabel an den ESP gelötet und die Sensoren dann mit WAGO-Klemmen verbunden. Kann ich den Widerstand auch in die WAGO-Klemmen mit einstecken oder wie bringe ich den ansonsten am besten an?

Danke und LG Pit

Das hatte ich auch. In meinem Testaufbau funktionierte es ohne Widerstand, im produktiven Einsatz dann nicht. Man liest auch immer wieder, dass es ohne Widerstand funktionieren kann, aber nicht muss.

Also: Widerstand dran wie in der Beschreibung zum Sensor und es lief bei mir.

@Pit
1/4 Watt sind vollkommen ausreichend.
Nur als Set würde ich so etwas wie hier 1% Widerstände nehmen, 5% wäre mir zu schlecht (wer weiß was man in der Zukunft noch so braucht.

grafik

Die Strecke R1 zu +3,3V würde ich kurz halten.

Gruß
Frank

Hallo Frank,

danke, genau das Set habe ich zufällig gestern bestellt.

Also sollte ich den Widerstand am besten direkt auf den ESP zusammen mit den Kabeln anlöten?

LG Pit

Hallo und guten Abend.
ich hänge mich hier mal dazu. Meine 18b20 3 Stück sind seit gut einem Jahr mit einem ESP32 verbunden.
Haben bis ca. vor Weihnachten sehr gut funktioniert.
Plötzlich fallen sie ständig, kurzfristig aus.
Jetzt habe ich den ESP32 auf ein Board geklemmt. Die Kabel zu den Sensoren sind mit WAGO Klemmen verbunden.
Sie fallen immer kurzfristig aus. Im Dashboard kommt die Meldung: kein numerischer Wert

jetzt sehe ich gerade ihr habt die Sensoren mit 3.3V verbunden? Ich hab sie mit dem 5 V Pin verbunden?

Danke für eure Hilfe
Helmut

Hi

Ich klinke mich auch einmal mit rein, habe auch eine Lösung, welche zumindest bei meiner Konfiguration fehlerfrei funktioniert.

Ausgangslage:
2 Dallas Hubs auf einem ESP8266 D1mini
Je Kanal ein Externer Pullup-Widerstand
Funktionierte, aber sporadische Aussetzer mit - Scratch pad checksum invalid auf unterschiedlichsten Kanälen

Dann bin ich auf einen ESP32 D1mini umgezogen
(weil die weiteren Programmteile den ESP8266 hoffnungslos überlastet haben).

Böses Erwachen:
Die Aussetzer wurden häufiger bis hin dass ALLE Sensoren nach ca. 3 Tagen keine Werte mehr lieferten.

Meine Lösungen:

  1. Github
    Meine Recherche im Netz hatte ergeben, dass viele ESP32-Boards aktuell mit Problemen in Verbindung mit den Dallas DS18B20 klagen.
    Nette Menschen haben eine neue Bibliothek bereitgestellt, welche anstatt der ESP-Standard Dallas-Integration geladen wird und das Timing-Problem behebt.
    Hier der Link dazu:
    DALLASNG

  2. Ein vernünftiges Netzteil
    Da ich mit meiner Applikation Stellventile der Fußbodenheizung ansteuere, brauchte ich eh etwas mehr Strom, also ein MeanWell NDR - 240-24 eingebaut.
    Einen Step-Down Regler 5V/2,5A dahinter geschaltet und damit den ESP32 versorgt. Die 3,3V für die Dallas Sensoren greife ich vom ESP32 Board ab.

Ergebnis:

Mit der neuen Integration dallasng wurde der ursprüngliche Totalausfall abgestellt.
Es traten noch vereinzelt und deutlich seltener Fehler mit Scratch pad checksum invalid auf.

Nach Einbau des neuen Netzteil verschwand auch diese Problemchen.

Zusammenfassend:
Meine 10 Dallas Sensoren laufen ohne Problem am ESP32 D1mini, in einer 2x5 Konfiguration.

3 „Gefällt mir“

@FunnyRS:

Das klingt interessant, ich würde das mit dem anderen Code auch gerne mal versuchen, aber ich stehe etwas auf dem Schlauch, wie ich den Code für meine 5 Sensoren auf den ESP und in HA bekomme. Gibt es da auch eine einfache Anleitung?
Kann man da einfach in ESP Home den Code editieren und wie funktioniert das mit dem OneWireNg library? Hast Du da evtl. einen Beispielcode?

Danke und LG
Pit

Hier mal ein Code-Schnipsel zur Einbindung:

esphome:
  name: esp32-modul-heizung-steller
  friendly_name: esp32-modul-heizung-steller

esp32:
  board: wemos_d1_mini32


# GITHUB externer Code Dallas
external_components:
  - source:  github://nrandell/dallasng

dallasng:
  - pin: GPIO17
    id: dallas_hub_1
  - pin: GPIO16
    id: dallas_hub_2      

Der interne pullup Widerstand ist nur für einen einzelnen Sensor empfohlen. Steht zumindest in der tasmota Dokumentation. Aber der ESP ist ja die gleiche Hardware.
Bei mehreren Sensoren kann man auch probieren den externen Widerstand etwas niedriger zu verwenden.
Ich hab mir da eine Art Steckerleiste für die Sensoren und den Widerstand gebaut. Hab ich hier irgendwo schonmal gezeigt.

Danke, aber ich bekomme da Fehlermeldungen:

INFO ESPHome 2023.12.7
INFO Reading configuration /config/esphome/esphome-web-d07fc0.yaml...
Failed config

sensor.dallas: [source <unicode string>:47]
  
  Couldn't find any component that can be used for 'dallas::DallasComponent'. Are you missing a hub declaration?.
  platform: dallas
  address: 0x136C6D443E9AB28
  name: Vorlauf Gasheizung
  unit_of_measurement: °C
  icon: mdi:thermometer-plus
  device_class: temperature
  state_class: measurement
  accuracy_decimals: 2
  disabled_by_default: False
  force_update: False
  resolution: 12
sensor.dallas: [source <unicode string>:56]
  

Mir ist immer noch nicht klar, wenn ich in ESP-Home den Code vom ESP vor mir habe, der zuvor funktioniert hat, an welchen Stellen ich dann was austauschen muß, damit ich dallasng integrieren kann.

Im Moment sieht der Code so aus (für einen Sensor, und API und Wifi kommen natürlich noch vorher).

captive_portal:

dallas:
  pin:
    number: GPIO1
    mode:
      input: true
      pullup: false
  update_interval: 30s 
    
# Individual sensors
sensor:
  - platform: dallas
    address: 0x0136c6d443e9ab28
    #resolution: 12
    name: "Vorlauf Gasheizung"
    unit_of_measurement: "°C"
    icon: "mdi:thermometer-plus"
    device_class: "temperature"
    state_class: "measurement"
    accuracy_decimals: 2
  - platform: dallas
    address: 0xf544c5d443538328
    #resolution: 11

Danke und LG Pit

Sorry, hatte nachfolgenden Auszug vergessen.
Man muss jetzt auch auf die neue Plattform dallasng verweisen, wenn man den Sensor anspricht.

sensor:
  - platform:  dallasng
    dallasng_id:  dallas_hub_1
    address: 0xc83ce1e3817ef628
    device_class: temperature 
    state_class: measurement
    name: "RL_CO"
    resolution: 12

Auch bei der Deklaration, muss schon auf—ng verwiesen werden

dallasng:
  pin:
    number: GPIO1
    mode:
      input: true
      pullup: false
  update_interval: 30s