Diferència entre revisions de la pàgina «MQTTS y NodeRED»
Línia 117: | Línia 117: | ||
if (topic === topic_LDR){ | if (topic === topic_LDR){ | ||
msg.payload = "LDR: " + msg.payload | msg.payload = "LDR: " + msg.payload | ||
− | + | return msg | |
} | } | ||
Revisió del 17:48, 21 maig 2020
Contingut
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!
Código en Snap! para la placa IoT-02
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
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
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
Flujo de NodeRED para la gestión subscripciones y publicaciones dinámicas
Configuración del nodo de salida MQTT sin tema (topic queda vacío). El campo topic del nodo anterior indica el tema:
Función TOPIC_LATCHING_RELAY -->:
msg.topic = flow.get("TOPIC_LATCHING_RELAY") return msg;
Función TOPIC_REQUEST_LDR -->:
msg.payload = "reqLDR" msg.topic = flow.get("TOPIC_REQUEST_LDR") return msg;
Función TOPIC_LDR -->:
var topic = String(msg.topic) var topic_LDR = flow.get("TOPIC_LDR") if (topic === topic_LDR){ msg.payload = "LDR: " + msg.payload return msg }
Función TOPIC_BIG_TEXT -->:
msg.topic = flow.get("TOPIC_BIG_TEXT") return msg;