Neu: Die KI-Firewall überwacht die gesamte Plattform und erklärt jeden Vorfall in einfachen Worten. So funktioniert es

Antwort: BLE-Dimmer per Slider im Dashboard über die ESP32-Brücke dimmen

Von Türkçe mit KI übersetzt ·

Der Child-Device bekommt den Befehl, und die Stelle, an der du hängst, ist die ESP32-Seite. Ein Befehl an ein Gerät hinter dem Gateway kommt über v1/gw/rpc beim Gateway an, Änderungen an Shared Attributes kommen über v1/gw/attributes. Dein Code hört wahrscheinlich nur auf v1/rpc/req/+, und das gilt für die eigenen Befehle des Gateways. Deshalb bleibt der Befehl im Status Sent. Bei den Wasserstationen bin ich genau an derselben Stelle hängengeblieben.Das habe ich gemacht:

  1. Den Befehl light.set zum Profil der Dimmer hinzugefügt (nicht zu dem des Gateways), Basic Tier, Parameter level (Number, 0-100).
  2. In der Slider-Karte: Run a command: Device = atolye-3 Child, Command = light.set, für level The control’s value. Den Slider 0-100 wandle ich auf der ESP32-Seite in 0-255 um.
  3. Den Slot Current value mit der Level-Telemetrie desselben Child verbunden, damit die Karte den echten Wert des Dimmers anzeigt.
  4. Für das Licht habe ich Ask before running ausgeschaltet, damit bei jedem Verschieben keine Bestätigung abgefragt wird.

Auf der ESP32-Seite abonnierst du nach jeder Verbindung v1/gw/rpc. Gib die eingehende Nachricht zuerst auf der seriellen Schnittstelle aus und schau dir ihre Struktur an. Daraus bestimmst du, für welches Child sie gedacht ist, und schreibst dann per BLE:

mqtt.subscribe("v1/gw/rpc", 1);

void onMsg(char* topic, byte* payload, unsigned int len) {
  if (strcmp(topic, "v1/gw/rpc") == 0) {
    Serial.write(payload, len);   // önce yapıya bak
    Serial.println();
    // child adını ve level'ı çöz:
    // bleSetLevel(name, map(level, 0, 100, 0, 255));
  }
}

Die Regeln für Kontrollkarten findest du hier: Kontrol kartları

Akzeptierte Lösung♥ 5