Configuración detallada¶
La vía corta es Arrancar en 5 minutos. Esta página cubre el entorno, las opciones de compilación, los logs y el modo de desarrollo.
El núcleo en el proyecto¶
El núcleo está en lib/idryer-core del proyecto PlatformIO: como copia, submódulo git o enlace simbólico a un clon compartido. Su library.json trae las dependencias: MQTT, ArduinoJson, WebSockets, Improv. El lib_deps del proyecto solo lleva las bibliotecas de tus sensores.
Placas de los productos sobre el núcleo: ESP32-C3 (DevKit, Super Mini), ESP32-S3 (XIAO ESP32-S3, Waveshare ESP32-S3 Zero).
platformio.ini¶
[env:my-device]
platform = espressif32
framework = arduino
board = esp32-c3-devkitm-1
; ESPAsyncTCP es el transporte de ESP8266 de las dependencias de espMqttClient: no compila en ESP32.
lib_ignore = ESPAsyncTCP
build_flags =
-DIDRYER_API_BASE='"https://portal.idryer.org/api"'
-DMQTT_BROKER='"mqtt.idryer.org"'
-DMQTT_PORT=8883
-DMQTT_USE_TLS=1
; Placa sin USB-UART (ESP32-C3 SuperMini): Serial por USB.
-DARDUINO_USB_MODE=1
-DARDUINO_USB_CDC_ON_BOOT=1
| Opción | Para qué |
|---|---|
IDRYER_API_BASE |
dirección de la API del portal: activación, vinculación |
MQTT_BROKER, MQTT_PORT |
el broker del portal |
MQTT_USE_TLS=1 |
conexión segura con el broker |
lib_ignore = ESPAsyncTCP |
transporte de ESP8266 de las dependencias del cliente MQTT: no compila en ESP32 |
ARDUINO_USB_MODE, ARDUINO_USB_CDC_ON_BOOT |
Serial por USB en placas sin USB-UART |
Las macros de cadena necesitan comillas por fuera y por dentro.
Periodos de publicación¶
Los campos Config.telemetryPeriodMs, telemetryPeriodIdleMs, statusPeriodMs, statusPeriodIdleMs; cero significa el valor del contrato:
| Qué | En funcionamiento | En reposo |
|---|---|---|
| telemetría | 30 s | 60 s |
| estado | al instante al cambiar modo, consigna o tiempo; conciliación cada 60 s | conciliación cada 5 min |
«En reposo» significa que ninguna unidad está en un modo activo.
Logs¶
Mientras el dispositivo no tiene red, el log calla: el puerto está ocupado por Improv. Los logs se activan con la línea [BOOT] WiFi ok, logs enabled. Después funcionan los comandos STATUS, WIPE_IDENTITY, PAIR_TOKEN: ver Vinculación con la cuenta.
Modo de desarrollo: IDRYER_DEV_REPL¶
[env:my-device-dev]
extends = env:my-device
build_flags =
${env:my-device.build_flags}
-DIDRYER_DEV_REPL=1
Con la opción:
- los logs van al puerto nada más encender;
- Improv y los comandos
STATUS,WIPE_IDENTITY,PAIR_TOKENestán desactivados: tu código lee las líneas entrantes del puerto; - la red llega desde la aplicación (ESPTouch) o desde el código:
seedWifiCredentialsIfEmpty()antes debegin(), ver Wi-Fi.
El firmware publicado se compila sin la opción.