33 · DIYAVANZADO
Placa propia: DIY con ESP32
Si te armás tu propio hardware no hace falta que tu marca esté en la lista de Conectar el primer dispositivo. La app te da un usuario, una contraseña y un tema de MQTT, y tu placa le manda las lecturas derecho al servidor, sin pasar por la nube de nadie. Es un camino de sólo lectura: un sensor DIY informa, no prende ni apaga nada.
- 01Menú ☰ → Agregar dispositivo → Brain ESP32 (placa propia).
- 02Antes de crear nada, abrí Ver contrato y firmware de referencia. Ahí está el protocolo escrito y un sketch de Arduino que ya habla todo esto, para adaptarlo a tu sensor en vez de empezar de cero.
- 03Tocá AGREGAR SENSOR MQTT. La app te muestra el
secrets.hcon las credenciales adentro, te deja bajar elconfig.jsony te arma un pedido listo para pegarle a una IA que te escriba el firmware. - 04Flasheá la placa y dejala publicando. Con el primer mensaje que llega, la pantalla la detecta sola y te deja asignarla a una zona.
Cómo se conecta
| Qué | Valor |
|---|---|
| Servidor | newschoolgrowers.supercycler.app |
| Puerto | 8883, con TLS obligatorio. No hay MQTT en claro, y el certificado hay que validarlo contra la CA que trae el contrato. |
| Usuario y Client ID | el board_id que te dio el alta — empieza con diy_ |
| Contraseña | el token del alta |
| Tema | sc/diy/<board_id>/telemetry/<canal> |
| Canal | el que te dio el alta. Hoy la app crea uno solo y se llama env0. |
| Entrega | QoS 1, y sin retained |
Cómo es el mensaje
- Es un objeto JSON plano: una clave por medición, todas en la raíz. Nada anidado.
- Los valores van como número, nunca como texto:
{"t":23.5}entra y{"t":"23.5"}se descarta. - Hasta 1024 bytes por mensaje. Más que eso se tira entero.
- Podés mandar varias mediciones en el mismo mensaje.
- Las que no mandes conservan el último valor conocido: una placa que sólo manda temperatura no te borra la humedad.
- Las claves que el servidor no conoce se ignoran. Si el mensaje no trae ninguna medición válida, se descarta entero.
- Un valor fuera de rango anula sólo esa medición, no el mensaje completo.
- El nombre largo de una clave sólo se usa si la clave corta no está. Si mandás
{"t":null,"temperature":21}el servidor se queda con elnulldety la temperatura se pierde sin aviso: elegí una forma y no las mezcles. - Podés incluir
ts(epoch en segundos) y se acepta, pero la hora que vale es la de llegada al servidor. - Un mensaje cada 30 a 60 segundos. El firmware de referencia manda uno cada 45.
Qué puede medir una placa
| Clave | También vale | Qué es | Rango |
|---|---|---|---|
t | temperature | Temperatura del aire, en °C | −40 a 80 |
h | humidity | Humedad relativa, en % | 0 a 100 |
sm | soil_moisture | Humedad del sustrato, en % | 0 a 100 |
vpd | — sólo la corta | VPD, en kPa | 0 a 20 |
co2 | — sólo la corta | CO₂, en ppm | 0 a 10000 |
ph | — sólo la corta | pH de la solución | 0 a 14 |
ec | — sólo la corta | EC de la solución, en mS/cm | 0 a 20 |
sec | soil_ec | EC del sustrato, en mS/cm | 0 a 20 |
stemp | soil_temperature | Temperatura del sustrato, en °C | −40 a 80 |
wtemp | water_temperature | Temperatura del agua, en °C | −40 a 80 |
Hacé esto
Arrancá del firmware de referencia y cambiale el sensor. Ya trae resuelto lo que más cuesta de cero: la validación del certificado y la cadencia.
Evitá esto
No subas el
secrets.h ni el config.json a un repositorio. Esa contraseña es la llave de tu placa y no hay forma de saber quién la usó.Nada de esto es imprescindible para cultivar — esto es para el que se arma el hardware
ImportanteCredenciales guardadas antes de cerrar, y el tema copiado tal cual.
OpcionalSumarle a la misma placa las mediciones de sustrato y de solución.