Ein Gerät auf idryer-core in 5 Minuten starten¶
Nach dieser Seite ist der ESP32 im Netz, mit Ihrem Konto gekoppelt und im Portal portal.idryer.org sowie in der iDryer-App sichtbar. Sie brauchen: ein ESP32-C3-Board (DevKit, Super Mini oder kompatibel), ein USB-Kabel, PlatformIO in VS Code, ein Telefon mit der iDryer-App, ein WLAN mit 2,4 GHz.
1. PlatformIO-Projekt¶
my-device/
├── platformio.ini
├── lib/
│ └── idryer-core/ ← Kopie, Git-Submodul oder symbolischer Link
└── src/
└── main.cpp
platformio.ini:
[env:my-device]
platform = espressif32
framework = arduino
board = esp32-c3-devkitm-1
; ESPAsyncTCP ist der ESP8266-Transport aus den Abhängigkeiten von espMqttClient: auf ESP32 nicht baubar.
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
; Board ohne USB-UART (ESP32-C3 SuperMini): Serial über USB.
-DARDUINO_USB_MODE=1
-DARDUINO_USB_CDC_ON_BOOT=1
Die Bibliotheken des Kerns (MQTT, ArduinoJson, WebSockets, Improv) kommen von selbst aus der library.json des Kerns. Ein Board mit USB-UART braucht die letzten beiden Flags nicht; board passend zu Ihrem Board setzen.
2. Code¶
Kopieren Sie das Beispiel 01_blink_status nach src/main.cpp:
#include <Arduino.h>
#include <iDryer.h>
#ifndef LED_PIN
#define LED_PIN 8 // ESP32-C3 SuperMini
#endif
static const iDryer::Config CFG = {
.deviceType = iDryer::DeviceType::Unknown, // eigenes Gerät
.unitsCount = 1,
.hasAirTemp = true,
.hardwareVersion = "1.0",
.firmwareVersion = "0.1.0",
.model = "Blink Status",
};
static iDryer::Link s_link(CFG);
// Blinkperiode nach Zustand; 0 = nicht blinken.
static uint32_t blinkPeriodMs() {
if (s_link.isOnline()) return 1000;
if (!s_link.isBound()) return 200;
return 0;
}
void setup() {
Serial.begin(115200);
pinMode(LED_PIN, OUTPUT);
s_link.begin();
// Entkopplung: der Kern löscht das Geheimnis und wartet wieder auf die Kopplung.
s_link.onCommand("revoke", [](JsonObjectConst) { s_link.handleRevoke(); });
}
void loop() {
s_link.loop();
// Telemetriefelder veröffentlicht der Kern selbst, alle 30 s (im Leerlauf alle 60 s).
s_link.telemetry.airTempC[0] = temperatureRead();
const uint32_t period = blinkPeriodMs();
digitalWrite(LED_PIN, period ? (millis() / (period / 2)) % 2 : HIGH);
}
Die Firmware enthält weder ein WLAN-Passwort noch Kontodaten: Netz und Kopplung bekommt das Gerät aus der App.
3. Flashen und Log öffnen¶
Solange das Gerät kein WLAN hat, schweigt das Log: der Kern hält den Port für Improv. Die LED blinkt schnell: das Gerät wartet auf Netz und Kopplung.
4. WLAN und Kopplung in der App¶
- Verbinden Sie das Telefon mit dem WLAN, in dem das Gerät arbeiten soll, und melden Sie sich in der iDryer-App mit Ihrem Portalkonto an.
- Tippen Sie auf dem Startbildschirm auf Neues Gerät verbinden: der Schritt WLAN öffnet sich.
- Prüfen Sie den Netzwerknamen, geben Sie das Passwort ein und tippen Sie auf Gerät verbinden. Die App sendet die Einstellungen bis zu 90 Sekunden lang; sobald das Gerät im Netz ist, erscheint Gerät verbunden. Tippen Sie auf Weiter.
- Tippen Sie im Schritt Kopplung auf Koppeln. Die App findet das Gerät im Netz, holt beim Portal ein einmaliges Kopplungstoken und übergibt es dem Gerät.
- Nach Gerät gekoppelt erscheint das Gerät in der Geräteliste im Portal und in der App.
Das Log nach dem Beitritt zum Netz:
[BOOT] WiFi ok, logs enabled
[INFO ] CLOUD: WiFi connected, IP: 192.168.1.42, RSSI: -55 dBm, …
…
[INFO ] CLOUD: binding-v3: no secret — awaiting pairing token (SETUP)
Nach der Kopplung:
[INFO ] CLOUD: binding-v3: pairing token received (… chars)
[INFO ] CLOUD: binding-v3: activating with pairing token (serial=DEVICE_… mcu=-)
[INFO ] CLOUD: binding-v3: activated, deviceId=… -> Ready
…
[INFO ] MQTT: Connected! …
5. Prüfen¶
- das Gerät ist im Portal und in der App online;
- die Karte zeigt die Chiptemperatur des ESP32;
- die LED blinkt einmal pro Sekunde. Dauerhaft an oder aus bedeutet: keine Verbindung zum Portal.
Wenn es nicht klappt¶
- die App hat die Verbindung des Geräts nicht abgewartet: Passwort prüfen und ob das Netz 2,4 GHz hat; bei falschem Passwort wartet das Gerät wieder auf Einstellungen. Andere Wege, das Netz zu übergeben: WLAN;
- im Schritt Kopplung wurde das Gerät nicht gefunden: Telefon und Gerät müssen im selben Netz sein; Gastnetze blockieren oft die Gerätesuche. Mehr: Kopplung mit dem Konto;
- Build und Flags: Ausführliche Einrichtung.
Weiter¶
- Telemetrie: ein Sensor und ein eigener Wert auf der Karte.
- Beispiele des Kerns: Kartenaktionen, eigene Sensoren und Bedienelemente.