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

BLE-Dimmer über einen Slider im Dashboard steuern, mit einer ESP32-Bridge

BLE-Dimmer über einen Slider im Dashboard steuern, mit einer ESP32-Bridge

Gelöst 4 3

Von Türkçe mit KI übersetzt ·

Hallo. In der Werkstatt haben wir 6 günstige BLE-LED-Dimmer. Das Gute ist, dass die Helligkeit durch Schreiben eines einzelnen Bytes zwischen 0 und 255 in eine einzige GATT-Characteristic eingestellt wird. Ich habe es mit nRF Connect getestet und es funktioniert. Ich habe einen ESP32 als Bridge aufgebaut: Er verbindet sich per BLE mit den Dimmern und per Wi-Fi mit MQTT zu Hermetry. Die Dimmer erscheinen als Child-Geräte des Gateways, ich sende ihre Helligkeit mit v1/gw/telemetry, und die Diagramme kommen an.Jetzt habe ich einen Slider auf das Dashboard gesetzt, aber auf der Karte steht „Choose a command in this widget’s settings“ und ich komme nicht weiter. Ich weiß nicht, wo ich den Befehl definieren soll und wie der ESP32 ihn empfängt. Da die Dimmer eigenständige Geräte sind, denke ich, dass ich den Slider mit dem Child-Gerät verbinden muss.

♥ 0

Von Türkçe mit KI übersetzt ·

Hast du den Befehl im Reiter Commands deines Profils definiert? Das Dashboard kann nur Befehle aus dem Katalog des Profils senden und akzeptiert keine rohen Methoden.

Sahadan selamlar.
♥ 0

Von Türkçe mit KI übersetzt ·

Ich habe es definiert. light.set, mit dem Parameter level. Zuerst habe ich den Tier auf Privileged gesetzt, bekam die Fehlermeldung „This command cannot be sent from a board“ und habe ihn dann auf Basic zurückgestellt. Wenn ich aber das Child-Gerät auswähle, wird der Befehl nicht gesendet, er bleibt bei Sent hängen.

♥ 2

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

Von Türkçe mit KI übersetzt ·

Hat funktioniert, danke. Der ESP32 hat tatsächlich nicht auf v1/gw/rpc abonniert, und den Befehl hatte ich im Profil des Gateways hinterlegt. Ich habe 6 Slider angelegt, jeder davon ist an sein eigenes Child gebunden. Außerdem sendet der Slider erst beim Loslassen. Ich dachte, er sendet bei jeder Bewegung, und wollte schon eine Warteschlange auf dem ESP32 programmieren, aber das ist jetzt nicht mehr nötig.

♥ 0
Ansicht von 5 Beiträgen – 1 bis 5 (von insgesamt 5)
  • Du musst angemeldet sein, um auf dieses Thema antworten zu können.

Mitdiskutieren

Melde dich an, um Fragen zu stellen und zu beantworten, hilfreiche Beiträge mit „Gefällt mir“ zu markieren und die Antwort zu kennzeichnen, die dein Problem gelöst hat. Jeder Beitrag bringt Punkte und Stufen.

Teilen