microBees gateBee MQTT
MQTT è un protocollo di connettività molto comune nell’ “Internet delle Cose”.
E’ stato progettato per pubblicare e ricevere velocemente informazioni.
E’ utile per i collegamenti dove è richiesto un codice ridotto e/o la larghezza di banda di rete è ridotta.
E’ ideale anche per le applicazioni mobili a causa delle sue ridotte dimensioni, il consumo di risorse esiguo, la mole di pacchetti di dati ridotto al minimo, e la distribuzione efficiente delle informazioni a uno o più destinatari. MQTT, per sicurezza, è configurato per ricevere comandi solo da un dispositivo che si trovi nella stessa rete LAN.
Il gateBee fornisce un server MQTT dove è possibile:
– ricevere aggiornamenti in tempo reale sui sensori delle Bee collegate;
– inviare comandi alle Bee collegate;
– inviare aggiornamenti di Sensori Personalizzati.
Per ricevere aggiornamenti sui sensori delle Bee collegate è sufficiente connettersi al gateBee sulla porta 1883 (TCP UDP) e sottoscriversi alla coda “sensor_logs”.
Esempio in NodeJS
var mqttServer= "tcp://ip-del-gatebee:1883";
var client = mqtt.connect(mqttServer);
client.on('connect', function () { client.subscribe('sensor_logs'); });
client.on('message', function (topic, message) { console.log("Message Received from Topic: "+topic+"\n"+message); });
client.end();
Output dell’Esempio
Message Received from Topic: sensor_logs {"product_id":1,"conf":{"smartbee_serial":"1389167104","smartgate_serial":"B3-57-F3-77-42-89"},"data":{"time_measured":1430302273274,"local_address":"192.168.1.2","param_num":7,"param_type":5,"payload":[0,0,0,228.4368,0,0,0]},"message_type":2}
vedi Lettura Aggiornamenti Bee.
Per inviare comandi tramite MQTT bisogna inviare il comando formattato secondo Comando Bee Locale alla coda “commands”.
Esempio in NodeJS
client.publish('commands',"{\"productId\":1,senderIP:\"192.168.1.5\",\"conf\":{\"smartbee_serial\":1,\"smartgate_serial\": \"B3-57-F3-77-42-89\"},\"data\": {\"command_type\": 6,\"value_type\":4, \"payload\": [1042,1,13]}}", function() { console.log("message sent to commands"); });