Zum Hauptinhalt springen

Single Module Gateway

Dieses Beispiel zeigt ein ArmorLink-Projekt mit nur einem ESP32.

Das Module steuert seine eigene Hardware und übernimmt gleichzeitig die Gateway-Rolle.

Es werden keine zusätzlichen Modules benötigt.

Weitere Informationen zur Gateway-Rolle findest du unter Gateway.

Wann dieses Setup sinnvoll ist

Verwende dieses Setup, wenn dein Projekt aus einem einzelnen ESP32 besteht, aber dennoch über die ArmorLink App gesteuert werden soll.

Beispiele:

  • Arc Reactor Beleuchtung
  • Eigenständiger Prop
  • Einzelner Lichtcontroller
  • Einzelner Audiocontroller
  • Kleines Wearable

Architektur

ArmorLink App
|
BLE
|
v
ESP32 Module
|- Application Logic
|- Actions
|- Configuration
|- Telemetry
`- Gateway Role

ESP-NOW wird nicht benötigt, da keine weiteren Modules vorhanden sind, mit denen kommuniziert werden muss.

Vollständiges Beispiel

#include <ArmorLink.h>

ArmorLinkModule module(
"Arc Reactor",
ArmorLinkModuleType::Generic
);

bool lightEnabled = false;
int brightness = 120;

void applyLightState()
{
if (lightEnabled) {
ArmorLink.info("Arc Reactor light enabled");
} else {
ArmorLink.info("Arc Reactor light disabled");
}
}

void setup()
{
Serial.begin(115200);
delay(500);

module.actions()
.add("toggleLight")
.label("Toggle Light")
.command("Light", "toggle")
.onExecute([]{
lightEnabled = !lightEnabled;
applyLightState();
});

module.config()
.addInt("brightness", &brightness, 120)
.label("Brightness")
.section("Light")
.range(0, 255)
.step(1)
.onIntChange([](int value)
{
brightness = value;
ArmorLink.info("Brightness changed");
});

ArmorLinkOptions options;
options.enableGateway = true;
options.enableEspNow = false;
options.enableBle = true;
options.enableSerialLogging = true;
options.bleName = "Arc Reactor";

ArmorLink.begin(module, options);

ArmorLink.info("Single Module Gateway started");
}

void loop()
{
ArmorLink.loop();
}

Was dieses Beispiel macht

Dieser Sketch erstellt ein Module mit dem Namen Arc Reactor.

ArmorLinkModule module(
"Arc Reactor",
ArmorLinkModuleType::Generic
);

Er aktiviert den Gateway-Modus:

options.enableGateway = true;

Er deaktiviert ESP-NOW:

options.enableEspNow = false;

Er aktiviert BLE, damit sich die ArmorLink App direkt mit diesem Module verbinden kann:

options.enableBle = true;

Actions

Das Module stellt eine Action bereit:

module.actions()
.add("toggleLight")
.label("Toggle Light")
.command("Light", "toggle")
.onExecute([]{
lightEnabled = !lightEnabled;
applyLightState();
});

Diese Action erscheint automatisch in der ArmorLink App und kann remote ausgeführt werden.

Weitere Informationen findest du unter Actions.

Configuration

Das Module stellt einen Configuration-Wert bereit:

module.config()
.addInt("brightness", &brightness, 120)
.label("Brightness")
.section("Light")
.range(0, 255)
.step(1);

Der Wert wird lokal auf dem Module gespeichert und kann über die ArmorLink App geändert werden.

Ein Neustart ist nach Änderungen nicht erforderlich.

Weitere Informationen findest du unter Configuration.

App-Verbindung

Da BLE aktiviert ist, kann sich die ArmorLink App direkt mit diesem Module verbinden.

Die App kann:

  • Actions ausführen
  • Configuration bearbeiten
  • Telemetry anzeigen
  • Remote Logs anzeigen

Wann dieses Setup nicht sinnvoll ist

Verwende dieses Setup nicht für Systeme mit mehreren Modules.

Wenn dein Projekt zusätzliche ArmorLink Modules enthält, sollte ESP-NOW auf dem Gateway aktiviert werden.

Verwende für Multi-Module-Projekte stattdessen Basic Gateway.

Nächste Schritte

Weiter mit: