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

¿Mis relés pueden simplemente suscribirse a su propio topic MQTT, o Hermetry quiere otra cosa para los actuadores?

¿Mis relés pueden simplemente suscribirse a su propio topic MQTT, o Hermetry quiere otra cosa para los actuadores?

Resuelto 6 5

Traducido del English por IA ·

Probablemente sea una pregunta de principiante total. Estamos piloteando la monitorización de cámaras frigoríficas en nuestro almacén logístico. Seis placas ESP32 publican temperaturas en v1/telemetry y eso funciona bien, el gráfico y la alarma están listos.Ahora quiero actuadores: resistencias calefactoras del marco de las puertas y dos ventiladores adicionales, cada uno en una placa de relés con un ESP32. En mi cabeza, pub/sub funciona en ambos sentidos, así que mi plan era: la placa del ventilador se suscribe a warehouse/zone3/fan/set, y algo (¿un botón del panel?, ¿un script?) publica on u off en ese topic.Así que lo probé desde mi portátil con paho-mqtt, conectado como uno de los dispositivos sensores, y publiqué en v1/zone3/fan/set. No llegó nada a la placa del ventilador. Después de tres intentos, se cerró la conexión de mi portátil. La pestaña Log de ese dispositivo sensor muestra que las publicaciones fueron rechazadas como unknown_reserved_topic.¿Es pub/sub simplemente el modelo equivocado para los actuadores aquí? ¿O me falta algún ajuste que permita a los dispositivos comunicarse entre sí?

Still waiting for the gateway to reconnect.
♥ 2

Traducido del English por IA ·

¿No es para eso la opción Custom topics del perfil? Recuerdo un ajuste que acepta cualquier topic fuera de v1/.

QoS 1 and a lot of patience.
♥ 0

Traducido del English por IA ·

Los topics personalizados son solo de entrada, se convierten en telemetría del dispositivo que publicó. Y los dispositivos nunca reciben los mensajes de otros en Hermetry, así que un sensor que publique para un ventilador nunca funcionará.Además, por 14 años de trabajo en planta: quiere que el actuador responda. Enviar sin confirmación a un relé es la forma de acabar con un ventilador que aparece encendido en la sala de control y está apagado en la sala.

♥ 0

Traducido del English por IA ·

ok, eso tiene sentido. Entonces, ¿cómo llega algo hasta la placa del ventilador? Todavía necesito un botón en algún sitio para el supervisor del almacén.

Still waiting for the gateway to reconnect.
♥ 0

Traducido del English por IA ·

Tenemos válvulas fan coil en 140 habitaciones de hotel que funcionan así, así que aquí está nuestra configuración.Hermetry envía los comandos al dispositivo en su propio topic de downlink. La placa del ventilador se suscribe a v1/rpc/req/+, un comando llega como v1/rpc/req/<id> con un método y parámetros, y la placa responde en v1/rpc/res/<id>. El id del topic es lo que se usa para asociar la respuesta.En el perfil del ventilador, abra la pestaña Commands y añada un comando, por ejemplo el método fan.set, un parámetro on de tipo Yes/no, tier Basic. Basic es importante, porque un Switch del panel solo envía comandos de tier Basic. Después, dé a la placa del supervisor una tarjeta Switch cuya acción sea Run a command fan.set con el valor del control, y enlace el Current state a una clave de telemetría que la placa informa tras conmutar; nosotros usamos fan.on.Lado Arduino, a grandes rasgos con PubSubClient:

void onMsg(char* topic, byte* payload, unsigned int len) {
  String t(topic);
  if (!t.startsWith("v1/rpc/req/")) return;
  String id = t.substring(11);
  StaticJsonDocument<256> doc;
  deserializeJson(doc, payload, len);
  if (doc["method"] == "fan.set") {
    bool on = doc["params"]["on"];
    digitalWrite(RELAY, on ? HIGH : LOW);
    client.publish(("v1/rpc/res/" + id).c_str(), "{"ok":true}");
    client.publish("v1/telemetry", on ? "{"fan.on":1}" : "{"fan.on":0}");
  }
}
// after every connect:
client.subscribe("v1/rpc/req/+", 1);

La documentación dice que un comando puede llegar dos veces, así que guardamos los últimos ids y omitimos las repeticiones. Página: Envío de comandos a dispositivos. Para los setpoints que deben sobrevivir a un reinicio (temperatura objetivo del calefactor) usamos en su lugar atributos compartidos en v1/attributes/set; la placa los pide justo después de conectarse.

QoS 1 and a lot of patience.
Solución aceptada♥ 5

Traducido del English por IA ·

Una cosa de campo: haga que el conjunto de comandos sea un estado, nunca un cambio de estado (toggle). Un comando que caduca solo significa que no llegó respuesta; es posible que se haya ejecutado igualmente. Si el supervisor vuelve a pulsar, fan.set on enviado dos veces es inofensivo, pero fan.toggle enviado dos veces apaga el ventilador.

If it isn't logged, it didn't happen.
♥ 2

Traducido del English por IA ·

Funciona. Tarjeta de conmutación en la placa supervisora, el ventilador hace clic y el estado vuelve como fan.on.Dos cosas que tenía mal. Al principio lo puse como fan.toggle, y lo cambié después del mensaje de Tyler. Y solo me suscribí una vez en setup(), así que los comandos funcionaban hasta la primera caída de WiFi y luego nunca más. Moví la suscripción a la función de reconexión y ahora sobrevive.

Still waiting for the gateway to reconnect.
♥ 1
Viendo 7 entradas – de la 1 a la 7 (de un total de 7)
  • Debes estar registrado para responder a este debate.

Únete a la conversación

Inicia sesión para preguntar y responder, dar me gusta a las publicaciones útiles y marcar la respuesta que resolvió tu problema. Cada aportación suma puntos y niveles.

Compartir