Novedad: el cortafuegos de IA supervisa toda la plataforma y explica cada incidente con palabras sencillas. Vea cómo funciona

Respuesta: Atenuar dimmers BLE con el deslizador del panel a través de un puente ESP32

Traducido del Türkçe por IA ·

El child recibe el comando, y el punto donde te atascas está en el lado del ESP32. Un comando enviado a un dispositivo detrás del gateway baja al gateway por v1/gw/rpc, y los cambios de atributos compartidos llegan por v1/gw/attributes. Tu código probablemente solo escucha v1/rpc/req/+, que es para los comandos propios del gateway. Por eso el comando se queda en Sent. Yo me quedé atascado exactamente en el mismo punto con las estaciones de agua.Esto es lo que hice:

  1. Añadí el comando light.set al perfil de los dimmers (no al del gateway), nivel Basic, parámetro level (Number, 0-100).
  2. En la tarjeta deslizador: Run a command: Device = child atolye-3, Command = light.set, para level The control’s value. Convierto el deslizador 0-100 a 0-255 en el lado del ESP32.
  3. Vinculé el slot Current value a la telemetría level del mismo child, para que la tarjeta muestre el valor real del dimmer.
  4. Para la luz desactivé Ask before running, para que no pida confirmación en cada desplazamiento.

En el lado del ESP32, después de cada conexión, suscríbete a v1/gw/rpc. Muestra primero el mensaje recibido en el puerto serie para ver su estructura, luego determina de ahí para qué child es y haz la escritura 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));
  }
}

Las reglas de las tarjetas de control están aquí: Kontrol kartları

Solución aceptada♥ 5