← Todas las publicaciones
La base de mi cama se volvió más lista con un ESP32

La base de mi cama se volvió más lista con un ESP32

Para ser justos, mi base articulada ya era bastante lista. Habla Bluetooth Low Energy, que es como el control se comunica con ella. Lo frágil es toda la infraestructura alrededor, y es genuinamente incómoda de controlar.

Primero se murió el control, y después el app lo empeoró

La base venía con un control físico por Bluetooth, que por supuesto se me murió unos tres meses después. Podría haberle cambiado las pilas, pero ya recorrí ese camino con otras cosas a pilas por la casa, y se convierte en un ciclo infernal de dispositivos que se mueren (sí, te estoy mirando a ti, Nest by Yale). Así que decidí dejarlo morir e irme por la vía del app en el teléfono, que se suponía que era la mejor idea. Un dispositivo para controlarlos a todos.

El app no es la mejor experiencia del mundo. Es lento para escanear y lento para conectar. Es genérico para toda una familia de camas parecidas, así que hay un par de pasos que atravesar antes de llegar siquiera a la pantalla de mi propio control. Y cuando termino, tengo que acordarme de cerrarlo de verdad, porque si se queda conectado en segundo plano mantiene el enlace con el controlador inteligente y bloquea a los demás clientes, ya que el controlador BLE solo aguanta una única conexión a la vez. Lo que en la práctica significa que mi pareja no puede controlarla al mismo tiempo.

También es puramente local y puramente manual. No hay forma de automatizar nada en función de la temperatura de la casa o de la luz de la habitación.

Lo que realmente cambió la ecuación

Así que decidí que un ESP32 era el camino. Una placa en el dormitorio manteniendo un enlace BLE permanente con la base, lo que me da varios clientes a la vez, automatizaciones y control remoto de verdad.

Me llevó unas cuantas iteraciones averiguar qué había que enviar. Una vez que tuve los comandos, todo el asunto se convirtió en un YAML de ESPHome sobre un ESP32 que mantiene el cliente BLE conectado, publica por MQTT a Home Assistant y aparece ahí como un dispositivo más.

El panel de SmartBed en Home Assistant: controles de cabecera y pies, luz bajo la cama, onda de masaje, preset plano y una parada de emergencia

Cabecera arriba y abajo, pies arriba y abajo, luz bajo la cama, onda de masaje, un preset plano y una parada de emergencia. Todo desde el app companion de Home Assistant, con interacciones casi en tiempo real porque no hay necesidad de conectarse cada vez que vas a realizar una acción. El ESP mantiene la línea para que los demás podamos descansar tranquilos (sin doble sentido).

Decirle al motor cuándo parar

Lo único que realmente necesitaba emular era cómo decirle al motor cuándo parar. Esa lógica no está en la cama, está implementada directamente en el control o en el app.

Un solo toque mueve la cama a paso de tortuga. Así que para conseguir alguna sensación de movimiento real tuve que emular varios toques en rápida sucesión. Eso es lo que hace cada script de movimiento: dispara el mismo comando de 5 bytes cada 200 ms, hasta 75 veces, y al final envía el comando de parada.

Lo bueno del controlador de la cama es que se detiene solo cuando llega a los límites del hardware, así que nunca tuve que investigar dónde están los límites del mecanismo por arriba y por abajo (uf, me salvé de esa).

Restart es una función propia de la cama que permite volver a ponerla plana con un único botón. Cada acción además verifica que haya una conexión activa con la cama, así que un enlace caído termina el movimiento en lugar de quedarse callado sin hacer nada.

La placa parpadea su LED en cada pulsación y publica un evento en MQTT, así que cada botón pulsado es visible en Home Assistant y está disponible como disparador de automatizaciones.

La página del dispositivo Pachy en Home Assistant, mostrando las integraciones de ESPHome y MQTT y un registro en vivo de las pulsaciones de botones

El ESP lleva meses conectado a mi cama haciendo su trabajo en silencio. He olvidado que existe como hardware, solo veo la pantalla en Home Assistant y lo ajusto a mi modo. La cama está efectivamente en el WiFi de mi casa. Varias personas pueden controlarla, no hay que emparejar nada, y no hay que cerrar ningún app.

Cosas muy locas que podría lograr con este setup

La base tiene una función donde pulsas un botón cuando tu pareja te oye roncar, y te levanta la cabecera apenas un poco, lo que ayuda con mi apnea del sueño. Funciona, pero necesita que alguien me oiga. Yo no, obviamente, estoy dormido como un tronco en medio de todo eso.

También tengo una máquina PAP, y detecta los ronquidos por su cuenta. Esos datos ya llegan a Home Assistant, en vivo, como su propio sensor.

El panel de ResMed en Home Assistant, donde las métricas de ronquido y terapia de la propia máquina ya llegan como sensores en vivo

Así que el círculo completo está ahí mismo: se detecta un evento de ronquido, la cama entra en modo antirronquidos, nadie se tiene que despertar.

Todavía no está construido. El preset antirronquidos no fue uno de los comandos que saqué del control cuando lo esnifé. Tengo los ocho que están conectados, más gravedad cero, inicio de masaje y una posición de memoria que encontré pero nunca expuse. La posición de ronquido necesita una sesión de captura más, y después la automatización en sí es la parte fácil.

Eso es lo próximo que le hago a esta cama.

Me emociona mucho lo bueno que se ha puesto el ESP

Ha sido un antes y un después en casa para estas pequeñas manías que todo el mundo tiene en distintos espacios, y para poder personalizar tu propia casa rápido y barato.

Todo esto corre sobre un ESP32-C3 Super Mini.

Si quieres uno de estos en tu propia cama, hablemos.

Creo genuinamente que podrías tener una casa inteligente increíble con pequeños ajustes e inversiones baratas que podrían subir tu nivel de comodidad 100 veces (es broma, podría ser más). Si tienes curiosidad por una cosa de tu casa que podrías hacer con esto, probablemente se puede hacer. Agenda una sesión y hacemos cosas increíbles con tu casa.

¿Quieres que te lo construya? Agenda una consulta