MQTTS y NodeRED

De binefa.com
Salta a la navegació Salta a la cerca

Temas (topics)

Tal y como vimos en el dia anterior en Conexión entre la placa IoT-02 y Snap! mediante MQTT (recordar hacer la cancelación de subscripción después de recibir la MAC), podemos usar estos temas con el último firmware ( IoT-02_mqtts_09 en GitHub ):

#define TOPIC_REQUEST_MAC "/macReq"
#define TOPIC_MAC "/mac"
#define TOPIC_LED_W "/ledW"
#define TOPIC_LED_R "/ledR"
#define TOPIC_LED_Y "/ledY"
#define TOPIC_LED_G "/ledG"
#define TOPIC_LATCHING_RELAY "/latchingRelay"
#define TOPIC_BT_IO0 "/btIO0"
#define TOPIC_BT_I34 "/btI34"
#define TOPIC_BT_I35 "/btI35"
#define TOPIC_LATCHING_RELAY_STATE "/latchingRelayState"
#define TOPIC_REQUEST_LATCHING_RELAY_STATE "/latchingRelayStateReq"
#define TOPIC_REQUEST_LDR "/ldrReq"
#define TOPIC_LDR "/ldr"
#define TOPIC_REQUEST_T "/tempReq"
#define TOPIC_T "/temp"
#define TOPIC_SMALL_TEXT "/10pxTxt"
#define TOPIC_MEDIUM_TEXT "/16pxTxt"
#define TOPIC_BIG_TEXT "/24pxTxt"

Adquisición de la MAC

Snap!

Adquisición de la MAC con Snap!

Código en Snap! para la placa IoT-02

Gestión de la MAC como variable de flujo

Flujo de NodeRED para la gestión de la MAC como variable de flujo

Función --> MAC:

flow.set("MAC",msg.payload)
return msg;

Función MAC -->

var MAC = flow.get("MAC");
msg.payload = MAC;
return msg;

JavaScript encastado en HTML

Gestión de la MAC con JavaScript en HTML

Enlace con la herramienta de gestión de MAC via web. Código de la herramienta de gestión de MAC via web

Flujo de NodeRED

Subscripción a temas (topics) dinámicos

Subscripción MQTT

Flujo de NodeRED para la gestión subscripciones dinámicas

Función --> MAC + Topics:

flow.set("MAC",msg.payload)
flow.set("TOPIC_LATCHING_RELAY","/"+msg.payload + "/latchingRelay")
flow.set("TOPIC_BT_I35","/"+msg.payload + "/btI35")
flow.set("TOPIC_BT_I34","/"+msg.payload + "/btI34")
flow.set("TOPIC_BT_IO0","/"+msg.payload + "/btIO0")
msg.payload = flow.get("TOPIC_BT_IO0")
return msg;

Función if it is my MAC -->:

var MAC = flow.get("MAC");
var topic = String(msg.topic);
if (topic.indexOf(MAC) !== -1)
   return msg;

Función TOPIC_BT_I35 -->:

var MAC = flow.get("MAC");
var topic = String(msg.topic);
var topic_BT_I35 = flow.get("TOPIC_BT_I35");
if (topic === topic_BT_I35)
   return msg;

Función topic,payload:

return [{payload: msg.topic},msg];

Subscripción y publicación de temas (topics) dinámicos

Subscripción y publicación MQTT

Flujo de NodeRED para la gestión subscripciones y publicaciones dinámicas

Función TOPIC_REQUEST_LDR -->

msg.payload = "reqLDR"
msg.topic = flow.get("TOPIC_REQUEST_LDR")
return msg;