Maximum of 8 Dallas temperature sensors (DS18B20)

Every time I try to use more than eight DS18B20 sensors on a single NodeMCU, ESPHome only reads eight of the temperature values. Even if more sensors are found and definded, they are skipped without an error.

I already tried

  • an ESP8266 and ESP32-C3
  • to use one or two Pins (currently two)
  • an external power supply
  • different resistor values

what I already found out is

  • all sensors are found, even if there are 10 or more
  • there is no error compiling with all sensors defined
  • the order of the definition in the “sensor:” section has an influence, but is kind of “random” (you never know, which sensors are skipped)

Does anyone know what I’m doing wrong?

[15:46:27][D][dallas.sensor:082]:   Found sensors:
[15:46:27][D][dallas.sensor:084]:     0xf907225272a26428
[15:46:27][D][dallas.sensor:084]:     0x380922549a5ffc28
[15:46:27][D][dallas.sensor:084]:     0xd03cf40457218228
[15:46:27][D][dallas.sensor:084]:     0x5b3c91e3810ff128
[15:46:27][D][dallas.sensor:084]:     0x2f08225461938d28
[15:46:27][C][dallas.sensor:089]:   Device 'Speicher Anschluss oben'
[15:46:27][C][dallas.sensor:089]:     Device Class: 'temperature'
[15:46:27][C][dallas.sensor:089]:     State Class: 'measurement'
[15:46:27][C][dallas.sensor:089]:     Unit of Measurement: '°C'
[15:46:27][C][dallas.sensor:089]:     Accuracy Decimals: 1
[15:46:27][C][dallas.sensor:089]:     Icon: 'mdi:water-percent'
[15:46:27][C][dallas.sensor:097]:     Address: 0x380922549a5ffc28
[15:46:27][C][dallas.sensor:098]:     Resolution: 12
[15:46:27][C][dallas.sensor:089]:   Device 'Speicher oben'
[15:46:27][C][dallas.sensor:089]:     Device Class: 'temperature'
[15:46:27][C][dallas.sensor:089]:     State Class: 'measurement'
[15:46:27][C][dallas.sensor:089]:     Unit of Measurement: '°C'
[15:46:28][C][dallas.sensor:089]:     Accuracy Decimals: 1
[15:46:28][C][dallas.sensor:089]:     Icon: 'mdi:water-percent'
[15:46:28][C][dallas.sensor:097]:     Address: 0x5b3c91e3810ff128
[15:46:28][C][dallas.sensor:098]:     Resolution: 12
[15:46:28][C][dallas.sensor:089]:   Device 'Speicher Mitte'
[15:46:28][C][dallas.sensor:089]:     Device Class: 'temperature'
[15:46:28][C][dallas.sensor:089]:     State Class: 'measurement'
[15:46:28][C][dallas.sensor:089]:     Unit of Measurement: '°C'
[15:46:28][C][dallas.sensor:089]:     Accuracy Decimals: 1
[15:46:28][C][dallas.sensor:089]:     Icon: 'mdi:water-percent'
[15:46:28][C][dallas.sensor:097]:     Address: 0xf907225272a26428
[15:46:28][C][dallas.sensor:098]:     Resolution: 12
[15:46:28][C][dallas.sensor:089]:   Device 'Speicher unten'
[15:46:28][C][dallas.sensor:089]:     Device Class: 'temperature'
[15:46:28][C][dallas.sensor:089]:     State Class: 'measurement'
[15:46:28][C][dallas.sensor:089]:     Unit of Measurement: '°C'
[15:46:28][C][dallas.sensor:089]:     Accuracy Decimals: 1
[15:46:28][C][dallas.sensor:089]:     Icon: 'mdi:water-percent'
[15:46:28][C][dallas.sensor:097]:     Address: 0x2f08225461938d28
[15:46:28][C][dallas.sensor:098]:     Resolution: 12
[15:46:28][C][dallas.sensor:089]:   Device 'Speicher Anschluss unten'
[15:46:28][C][dallas.sensor:089]:     Device Class: 'temperature'
[15:46:28][C][dallas.sensor:089]:     State Class: 'measurement'
[15:46:28][C][dallas.sensor:089]:     Unit of Measurement: '°C'
[15:46:28][C][dallas.sensor:089]:     Accuracy Decimals: 1
[15:46:28][C][dallas.sensor:089]:     Icon: 'mdi:water-percent'
[15:46:28][C][dallas.sensor:097]:     Address: 0x2f08225461938d28
[15:46:28][C][dallas.sensor:098]:     Resolution: 12

[15:46:28][D][dallas.sensor:082]:   Found sensors:
[15:46:28][D][dallas.sensor:084]:     0xc8072261514c1a28
[15:46:28][D][dallas.sensor:084]:     0xa43c190457593628
[15:46:28][D][dallas.sensor:084]:     0x323ce904576f1e28
[15:46:28][D][dallas.sensor:084]:     0xdb3c88e381635728
[15:46:28][C][dallas.sensor:089]:   Device 'Trinkwasser oben'
[15:46:28][C][dallas.sensor:089]:     Device Class: 'temperature'
[15:46:28][C][dallas.sensor:089]:     State Class: 'measurement'
[15:46:28][C][dallas.sensor:089]:     Unit of Measurement: '°C'
[15:46:28][C][dallas.sensor:089]:     Accuracy Decimals: 1
[15:46:28][C][dallas.sensor:089]:     Icon: 'mdi:water-percent'
[15:46:28][C][dallas.sensor:097]:     Address: 0xdb3c88e381635728
[15:46:28][C][dallas.sensor:098]:     Resolution: 12
[15:46:28][C][dallas.sensor:089]:   Device 'Trinkwasser unten'
[15:46:28][C][dallas.sensor:089]:     Device Class: 'temperature'
[15:46:28][C][dallas.sensor:089]:     State Class: 'measurement'
[15:46:28][C][dallas.sensor:089]:     Unit of Measurement: '°C'
[15:46:28][C][dallas.sensor:089]:     Accuracy Decimals: 1
[15:46:28][C][dallas.sensor:089]:     Icon: 'mdi:water-percent'
[15:46:28][C][dallas.sensor:097]:     Address: 0xc8072261514c1a28
[15:46:28][C][dallas.sensor:098]:     Resolution: 12
[15:46:28][C][dallas.sensor:089]:   Device 'Zirkulation warm'
[15:46:28][C][dallas.sensor:089]:     Device Class: 'temperature'
[15:46:28][C][dallas.sensor:089]:     State Class: 'measurement'
[15:46:28][C][dallas.sensor:089]:     Unit of Measurement: '°C'
[15:46:28][C][dallas.sensor:089]:     Accuracy Decimals: 1
[15:46:28][C][dallas.sensor:089]:     Icon: 'mdi:water-percent'
[15:46:28][C][dallas.sensor:097]:     Address: 0xa43c190457593628
[15:46:28][C][dallas.sensor:098]:     Resolution: 12
[15:46:28][C][dallas.sensor:089]:   Device 'Zirkulation kalt'
[15:46:28][C][dallas.sensor:089]:     Device Class: 'temperature'
[15:46:28][C][dallas.sensor:089]:     State Class: 'measurement'
[15:46:28][C][dallas.sensor:089]:     Unit of Measurement: '°C'
[15:46:28][C][dallas.sensor:089]:     Accuracy Decimals: 1
[15:46:28][C][dallas.sensor:089]:     Icon: 'mdi:water-percent'
[15:46:28][C][dallas.sensor:097]:     Address: 0x323ce904576f1e28
[15:46:28][C][dallas.sensor:098]:     Resolution: 12

[17:30:42][D][dallas.sensor:143]: 'Speicher Anschluss oben': Got Temperature=44.0°C
[17:30:42][D][sensor:093]: 'Speicher Anschluss oben': Sending state 44.00000 °C with 1 decimals of accuracy
[17:30:42][D][dallas.sensor:143]: 'Speicher Anschluss unten': Got Temperature=46.0°C
[17:30:42][D][sensor:093]: 'Speicher Anschluss unten': Sending state 46.00000 °C with 1 decimals of accuracy
[17:30:42][D][dallas.sensor:143]: 'Speicher oben': Got Temperature=46.2°C
[17:30:42][D][sensor:093]: 'Speicher oben': Sending state 46.18750 °C with 1 decimals of accuracy
[17:30:42][D][dallas.sensor:143]: 'Speicher Mitte': Got Temperature=46.2°C
[17:30:42][D][sensor:093]: 'Speicher Mitte': Sending state 46.18750 °C with 1 decimals of accuracy
[17:30:43][D][dallas.sensor:143]: 'Trinkwasser oben': Got Temperature=46.3°C
[17:30:44][D][sensor:093]: 'Trinkwasser oben': Sending state 46.31250 °C with 1 decimals of accuracy
[17:30:44][D][dallas.sensor:143]: 'Zirkulation kalt': Got Temperature=25.9°C
[17:30:44][D][sensor:093]: 'Zirkulation kalt': Sending state 25.87500 °C with 1 decimals of accuracy
[17:30:44][D][dallas.sensor:143]: 'Trinkwasser unten': Got Temperature=44.8°C
[17:30:44][D][sensor:093]: 'Trinkwasser unten': Sending state 44.75000 °C with 1 decimals of accuracy
[17:30:44][D][dallas.sensor:143]: 'Zirkulation warm': Got Temperature=41.5°C
[17:30:44][D][sensor:093]: 'Zirkulation warm': Sending state 41.50000 °C with 1 decimals of accuracy

You should open a new issue for this:

Make sure to mention everything you did in your post above (feel free to copy/paste but don’t just link to the forum post).

8 dallas sensors on a single esp board? What the heck are you making?

That’s what I’m making. Each part has its own NodeMCU with up 9 sensors, two pumps and a valve.
As you can see, I haven’t finished yet :slight_smile:

Dang, Doc Brown! Where’s the Flux capacitor? That thing will never handle 1.21 gigawatts.

looks like a fun project! are all the ds18b20’s for monitoring temps on water lines? I guess i’m just trying to understand what you are doing with all the temp data points. Are they for tracking individual places or is more for averaging a group of sensors over an area?

each of the sensors has an individual measurement in the water lines.
That way you can see where the energy is coming from and react by opening a valve for example. When the sun is shining, the system tries to use the solar energy first.
We’ll see, how good it works :wink:

Oh, i didnt realize pary of it was a solar water water heater. Thats pretty cool. Now you just need to stop teasing a fella with these cartoonish poctures and post some real DIY project porn pictures!

How about these guys? I made some PCBs for the NodeMCU and put them in a DIN rail mount. They are the core of each pump station

Oh, you tease! Those are sweet! I always liked DIN rail components. It might be one of the cleanest and visually pleasing installs you can do.

Neat. I used 6 DS18B20s for my heat pump hot water (outside temp comes from elsewhere).

Screenshot 2024-02-09 at 08-01-45 Overview – Home Assistant

Pipe temps aren’t accurate unless water is flowing.

Looks a bit more professional than my “comic style” :smile:
Do you get a status from your heat pump? That’s how I find out if the values are valid because there’s a flow in the pipes.

The graphic was cut and paste from the user pdf manual.

I control the heatpump with a Shelly 1PM. So I only automate with the temperatures when that is on.

Hi,

For the original question. Looks like might be hardware related. I would try hints from this message,

I have decribed a bit different problem that I have in my boiler room here
the topic seemed correlate better than the topic of this thread. But maybe it is related

all of my sensors (15) are detected, but their addresses are mapped to different names. looks like not related to hardware, but I might be wrong

also it looks like I am using my sensors for same type of system as mentioned here :slight_smile:

Please take a look. :crossed_fingers:

Update:

After more time spent investigating I concluded that the addresses assigned to DS18B20’s are not tied to the sensor chips :exploding_head:
Can someone take a look at the description of my struggle and confirm I have a correct conclusion? :slight_smile:

Update 2

Looks like I found a bug in Tasmota after all.