Saltar al contenido

DS18B20 con ESP8266 y ESPHome: guía One-Wire actualizada

06/01/2023
Sonda DS18B20 conectada a un ESP8266 con resistencia pull-up de 4,7 kiloohmios

En calidad de Afiliado de Amazon, obtengo ingresos por las compras adscritas que cumplen los requisitos aplicables. Si compras desde estos enlaces, el precio para ti es el mismo y Amazon me paga una pequeña comisión que ayuda a mantener Tecnoyfoto.

Actualizado el 2 de agosto de 2026.

El DS18B20 con ESP8266 y ESPHome es una combinación sencilla y fiable para medir temperatura en Home Assistant. Cada sensor tiene una dirección única de 64 bits, por lo que podemos conectar varias sondas al mismo cable de datos y reconocerlas individualmente. Es una solución muy práctica para acuarios, tuberías, cámaras frigoríficas, calefacción, depósitos y estaciones meteorológicas.

Cambio importante de ESPHome: desde ESPHome 2024.6 la antigua configuración dallas: y platform: dallas fue eliminada. Actualmente debemos crear un bus one_wire y utilizar platform: dallas_temp. Todo el código de esta guía ya utiliza el formato vigente.

Qué es el sensor DS18B20

El DS18B20 es un termómetro digital fabricado originalmente por Maxim Integrated, actualmente Analog Devices. Se comunica mediante el protocolo 1-Wire, que necesita una línea de datos y masa. Aunque admite alimentación parásita, para un proyecto con ESP8266 recomiendo el cableado normal a tres hilos: VDD, DATA y GND. Es más fácil de diagnosticar y suele comportarse mejor con cables largos o varios sensores.

  • Rango especificado: de −55 °C a +125 °C.
  • Precisión especificada: ±0,5 °C entre −10 °C y +85 °C.
  • Resolución configurable: 9, 10, 11 o 12 bits.
  • Alimentación: de 3,0 a 5,5 V.
  • Dirección individual de 64 bits para utilizar varios sensores en el mismo bus.

Estos valores proceden de la ficha técnica oficial del DS18B20. A 12 bits, una conversión puede tardar hasta 750 ms; no tiene sentido solicitar decenas de lecturas por segundo.

DS18B20 encapsulado y sonda impermeable

Podemos comprar el componente TO-92 de tres patas o una versión montada dentro de una sonda de acero inoxidable. El chip es el mismo, pero una sonda encapsulada resulta mucho más cómoda para líquidos, tuberías o exteriores protegidos. Que la punta sea impermeable no significa que también lo sean el empalme, el conector o la placa ESP8266.

En muchas sondas el rojo es VDD, el negro es GND y el amarillo o blanco es DATA, pero los colores no están normalizados en todos los fabricantes. Comprueba la ficha del producto antes de alimentar el sensor. En el encapsulado TO-92, consulta siempre el dibujo de pines del fabricante y su orientación.

Material necesario

Los enlaces de Amazon son de afiliado. El precio para ti no cambia y ayudan a mantener el proyecto.

Cableado del DS18B20 al ESP8266

DS18B20NodeMCUFunción
VDD / rojo3V3Alimentación a 3,3 V
GND / negroGNDMasa común
DATA / amarillo o blancoD5 / GPIO14Bus 1-Wire

Coloca la resistencia de 4,7 kΩ entre DATA y 3,3 V. Es el pull-up que mantiene el bus en su estado correcto cuando ningún dispositivo lo fuerza a nivel bajo. La documentación de 1-Wire de ESPHome recomienda aproximadamente 4,7 kΩ y acepta valores cercanos en instalaciones normales.

Todos los DS18B20 del mismo bus se conectan en paralelo: comparten 3,3 V, GND y GPIO14. Solo hace falta una resistencia pull-up por bus. Para una instalación larga, evita una estrella con muchas ramas; suele funcionar mejor una línea principal con derivaciones cortas y cable de par trenzado.

Preparar ESPHome y secrets.yaml

Si todavía no lo utilizas, empieza por qué es ESPHome y qué es Home Assistant. Crea un dispositivo ESP8266 desde ESPHome y guarda las credenciales en secrets.yaml:

wifi_ssid: "NOMBRE_DE_TU_WIFI"
wifi_password: "CONTRASEÑA_DE_TU_WIFI"
ds18b20_api_key: "CLAVE_BASE64_GENERADA_POR_ESPHOME"
ds18b20_ota_password: "UNA_CONTRASEÑA_OTA_LARGA"

Cómo descubrir la dirección de cada DS18B20

Primero configura únicamente el bus 1-Wire. No necesitas declarar todavía ningún sensor. Al iniciar el dispositivo, ESPHome escaneará el bus y mostrará las direcciones encontradas en el registro:

one_wire:
  - platform: gpio
    pin: GPIO14
    id: bus_1wire

Copia cada dirección completa, incluido el prefijo 0x. Utiliza solo la dirección que aparezca en tu registro; las direcciones de los ejemplos siguientes son ilustrativas.

Código completo para un DS18B20

substitutions:
  device_name: ds18b20-esp8266
  friendly_name: "DS18B20 ESP8266"

esphome:
  name: ${device_name}
  friendly_name: ${friendly_name}

esp8266:
  board: nodemcuv2

logger:

api:
  encryption:
    key: !secret ds18b20_api_key

ota:
  - platform: esphome
    password: !secret ds18b20_ota_password

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

  ap:
    ssid: "DS18B20 Fallback"
    password: !secret ds18b20_ota_password

captive_portal:

one_wire:
  - platform: gpio
    pin: GPIO14
    id: bus_1wire

sensor:
  - platform: dallas_temp
    one_wire_id: bus_1wire
    address: 0x1C0000031EDD2A28  # Sustituye por tu dirección
    name: "Temperatura DS18B20"
    id: temperatura_ds18b20
    resolution: 12
    update_interval: 30s

La dirección es obligatoria cuando hay más de un dispositivo en el bus. Con un único sensor puede omitirse, pero escribirla hace que la configuración sea más predecible si después añades otro. La plataforma actual y sus opciones están documentadas en Dallas Temperature Sensor de ESPHome.

Código para varios DS18B20

one_wire:
  - platform: gpio
    pin: GPIO14
    id: bus_1wire

sensor:
  - platform: dallas_temp
    one_wire_id: bus_1wire
    address: 0x1C0000031EDD2A28
    name: "Temperatura impulsión"
    update_interval: 30s

  - platform: dallas_temp
    one_wire_id: bus_1wire
    address: 0xA40000031F055028
    name: "Temperatura retorno"
    update_interval: 30s

  - platform: dallas_temp
    one_wire_id: bus_1wire
    address: 0xDD0000031EFB0428
    name: "Temperatura ambiente"
    update_interval: 30s

ESPHome también admite index, pero el orden puede cambiar al sustituir, añadir o retirar una sonda. Para una instalación permanente es mejor utilizar la dirección única de cada DS18B20.

Resolución y frecuencia de lectura

ResoluciónPaso aproximadoConversión máxima
9 bits0,5 °C93,75 ms
10 bits0,25 °C187,5 ms
11 bits0,125 °C375 ms
12 bits0,0625 °C750 ms

Más resolución no significa más exactitud absoluta. Para calefacción o acuarios, 11 o 12 bits y una actualización cada 30–60 segundos suelen ser suficientes. Una frecuencia excesiva solo añade tráfico y puede calentar ligeramente el propio encapsulado.

Añadirlo a Home Assistant

  1. Instala el firmware y abre Ajustes → Dispositivos y servicios.
  2. Acepta el dispositivo descubierto por ESPHome o añade manualmente la integración.
  3. Asigna el dispositivo a una zona y comprueba que cada sonda muestre una temperatura razonable.

Una tarjeta de historial resulta más útil que un valor aislado:

type: history-graph
title: Temperatura DS18B20
hours_to_show: 24
entities:
  - entity: sensor.temperatura_ds18b20

Problemas frecuentes

ESPHome no encuentra ninguna dirección

Comprueba 3,3 V, GND y DATA, la resistencia pull-up y que has usado GPIO14 en el cableado y en el YAML. Revisa también los colores reales de tu sonda. Prueba primero con un cable corto y un solo sensor.

Aparecen errores CRC o lecturas no disponibles

Suelen apuntar a ruido, mala alimentación, conexiones flojas o una topología de cable inadecuada. Acorta las derivaciones, utiliza un par trenzado para DATA/GND y evita llevar el cable junto a motores, relés o conductores de red.

El sensor muestra 85 °C

El registro de temperatura del DS18B20 contiene 85 °C después del encendido hasta completar una conversión. Si ese valor se repite, revisa alimentación, pull-up y tiempos de comunicación; no lo interpretes automáticamente como una temperatura real.

La temperatura no coincide con otro termómetro

Deja estabilizar las sondas juntas y compara en varios puntos. La carcasa, el contacto térmico, la circulación del agua o aire y la calidad de las sondas encapsuladas influyen. Puedes aplicar un filtro offset solo después de comparar con una referencia fiable.

DS18B20, DHT22 o BME280

El DS18B20 mide únicamente temperatura, pero soporta sondas remotas y varios dispositivos en un cable. Los DHT11 y DHT22 añaden humedad, aunque suelen ser más lentos. El BME280 con ESPHome ofrece temperatura, humedad y presión mediante I²C. La mejor elección depende del lugar de medida y no solo del número de magnitudes.

Conclusión

El DS18B20 sigue siendo una excelente sonda para Home Assistant, pero los ejemplos antiguos con dallas: ya no deben utilizarse. Con el bus one_wire, platform: dallas_temp, una resistencia de 4Enlace de afiliado,7 kΩ y direcciones reales obtenidas del registro, puedes montar desde un termómetro sencillo hasta una red de sondas estable y fácil de mantener.

Continúa leyendo

Siguiente guía relacionada · 8 min de lectura

Sensor de lluvia MH-RD con ESP32 y ESPHome: guía actualizada

Actualizado el 2 de agosto de 2026. El sensor de lluvia MH-RD es una forma económica de saber cuándo empieza a mojarse una superficie…

Continuar con este artículo