Zum Hauptinhalt springen

Configuration API

Die Configuration API wird verwendet, um persistente Moduleinstellungen für die ArmorLink App bereitzustellen.

Configuration-Werte werden lokal auf dem Module gespeichert, bleiben automatisch über Neustarts hinweg erhalten und können ohne Neustart des Modules geändert werden.

Für den konzeptionellen Überblick siehe Configuration.

Basisbeispiel

int volume = 20;

module.config()
.addInt("volume", &volume, 20)
.label("Volume")
.section("Audio")
.description("DFPlayer volume")
.range(0, 30)
.step(1)
.onIntChange([](int value)
{
dfplayer.volume(value);
});

Dieses Beispiel definiert einen persistenten Integer-Wert, der:

  • Den Namen volume besitzt
  • In der ArmorLink App als Volume angezeigt wird
  • In der Section Audio gruppiert wird
  • Werte von 0 bis 30 erlaubt
  • Eine Schrittweite von 1 verwendet
  • Die Lautstärke des DFPlayers sofort aktualisiert

Zugriff auf die Configuration API

Configuration-Felder werden über die Modulinstanz erstellt.

module.config()

Weitere Informationen findest du unter ArmorLinkModule.

Unterstützte Feldtypen

ArmorLink unterstützt aktuell folgende Configuration-Feldtypen:

MethodeTypBearbeitbarBeschreibung
addInt(...)IntegerJaGanzzahliger Wert
addFloat(...)FloatJaFließkommawert
addBool(...)BooleanJaWahr/Falsch-Wert
addReadonly(...)ReadonlyNeinReines Informationsfeld

addInt(...)

Erstellt einen Integer-Configuration-Wert.

int volume = 20;

module.config()
.addInt("volume", &volume, 20);

Der Wert wird lokal gespeichert und automatisch in der ArmorLink App bereitgestellt.

addFloat(...)

Erstellt einen Float-Configuration-Wert.

float speed = 1.0f;

module.config()
.addFloat("speed", &speed, 1.0f);

Float-Werte eignen sich für Zeiten, Geschwindigkeitsfaktoren, Sensorgrenzen und ähnliche Einstellungen.

addBool(...)

Erstellt einen Boolean-Configuration-Wert.

bool eyesEnabled = true;

module.config()
.addBool("eyesEnabled", &eyesEnabled, true);

Boolean-Werte eignen sich für Schalter und Ein/Aus-Funktionen.

addReadonly(...)

Erstellt ein schreibgeschütztes Informationsfeld.

module.config()
.addReadonly("firmware", "1.0.0")
.label("Firmware Version");

Readonly-Felder werden in der ArmorLink App angezeigt, können jedoch nicht verändert werden.

Typische Anwendungsfälle:

  • Firmware-Version
  • Hardware-Revision
  • Modulinformationen
  • Kalibrierungsstatus

label(...)

Legt die sichtbare Bezeichnung in der ArmorLink App fest.

.label("Volume")

Verwende klare und verständliche Bezeichnungen.

description(...)

Fügt eine ausführlichere Beschreibung hinzu.

.description("Controls the DFPlayer output volume")

Beschreibungen helfen Benutzern zu verstehen, was eine Einstellung bewirkt.

section(...)

Gruppiert Configuration-Felder in Sections.

.section("Audio")

Sections sind besonders hilfreich bei vielen Configuration-Werten.

Typische Sections:

  • Audio
  • Servos
  • LEDs
  • Timing
  • Sensors

unit(...)

Legt die Anzeigeeinheit fest.

.unit("ms")

Typische Einheiten:

  • V
  • %
  • ms
  • deg
  • C

Die Einheit wird von der ArmorLink App bei der Darstellung verwendet.

range(...)

Definiert den erlaubten Wertebereich.

.range(0, 30)

Die ArmorLink App verwendet diese Information, um geeignete Eingabefelder bereitzustellen.

step(...)

Definiert die Schrittweite.

.step(1)

Dies wird für Slider, Stepper und numerische Eingabefelder verwendet.

advanced(...)

Markiert ein Feld als erweitert.

.advanced()

Erweiterte Felder sind für Einstellungen gedacht, die normale Benutzer selten ändern müssen.

Änderungs-Callbacks

Configuration-Werte können automatisch Callbacks ausführen, wenn sie über die ArmorLink App geändert werden.

Dadurch kann ein Module sofort reagieren, ohne neu gestartet werden zu müssen.

tipp

Configuration-Änderungen werden sofort angewendet.

Wenn die ArmorLink App einen Wert ändert, wird der neue Wert unmittelbar übernommen und der passende Callback automatisch ausgeführt.

onIntChange(...)

Führt einen Callback aus, wenn sich ein Integer-Wert ändert.

module.config()
.addInt("volume", &volume, 20)
.onIntChange([](int value)
{
dfplayer.volume(value);
});

onFloatChange(...)

Führt einen Callback aus, wenn sich ein Float-Wert ändert.

module.config()
.addFloat("speed", &speed, 1.0f)
.onFloatChange([](float value)
{
animationSpeed = value;
});

onBoolChange(...)

Führt einen Callback aus, wenn sich ein Boolean-Wert ändert.

module.config()
.addBool("eyesEnabled", &eyesEnabled, true)
.onBoolChange([](bool value)
{
setEyesEnabled(value);
});

Persistenz

Configuration-Werte sind immer persistent.

Es ist keine zusätzliche Persistenz-Konfiguration erforderlich.

Die Werte werden lokal gespeichert und nach einem Neustart automatisch wiederhergestellt.

Configuration und das Gateway

Das Gateway speichert keine Configuration-Daten anderer Modules.

Configuration gehört immer dem Module, das sie bereitstellt.

Wenn die ArmorLink App einen Wert liest oder aktualisiert, leitet das Gateway die Anfrage lediglich weiter.

Weitere Informationen findest du unter Gateway.

Vollständiges Beispiel

int volume = 20;
float servoSpeed = 1.0f;
bool eyesEnabled = true;

void setupConfig()
{
module.config()
.addInt("volume", &volume, 20)
.label("Volume")
.section("Audio")
.range(0, 30)
.step(1)
.onIntChange([](int value)
{
dfplayer.volume(value);
});

module.config()
.addFloat("servoSpeed", &servoSpeed, 1.0f)
.label("Servo Speed")
.section("Servos")
.range(0.1f, 2.0f)
.step(0.1f);

module.config()
.addBool("eyesEnabled", &eyesEnabled, true)
.label("Eyes Enabled")
.section("LEDs")
.onBoolChange([](bool value)
{
setEyesEnabled(value);
});

module.config()
.addReadonly("firmware", "1.0.0")
.label("Firmware Version")
.section("System");
}

Zusammenfassung

Die Configuration API stellt persistente Moduleinstellungen für die ArmorLink App bereit.

Häufig verwendete Methoden:

  • addInt(...)
  • addFloat(...)
  • addBool(...)
  • addReadonly(...)
  • label(...)
  • description(...)
  • section(...)
  • unit(...)
  • range(...)
  • step(...)
  • advanced(...)
  • onIntChange(...)
  • onFloatChange(...)
  • onBoolChange(...)

Configuration-Werte werden lokal gespeichert, automatisch wiederhergestellt und sofort angewendet.