This shows you the differences between two versions of the page.
Both sides previous revision Previous revision | Last revision Both sides next revision | ||
iot_ha [2014/08/20 23:41] jap [Telldus to MQTT Bridge] |
iot_ha [2014/08/22 22:38] jap [Telldus to MQTT Bridge] |
||
---|---|---|---|
Line 57: | Line 57: | ||
- | <code>var net = require('net'); | + | <code> |
+ | /*** | ||
+ | * Telldus-MQTT bridge | ||
+ | * Parse messages from telldus-core and publish to local MQTT broker. | ||
+ | * | ||
+ | * Jaakko Ala-Paavola 2014-08-22 | ||
+ | */ | ||
+ | |||
+ | var net = require('net'); | ||
var mqtt = require('mqtt'); | var mqtt = require('mqtt'); | ||
Line 74: | Line 82: | ||
if (pos > -1) | if (pos > -1) | ||
{ | { | ||
- | var jarr={}, keyval=[]; | + | var measure={}, keyval=[]; |
var arr = data.substr(data.indexOf(":",pos)+1).split(";"); | var arr = data.substr(data.indexOf(":",pos)+1).split(";"); | ||
for (var i=0; i<arr.length; i++) { | for (var i=0; i<arr.length; i++) { | ||
keyval[i] = arr[i].split(":"); | keyval[i] = arr[i].split(":"); | ||
- | if ( parseFloat(keyval[i][1])) | + | measure[keyval[i][0]] = keyval[i][1]; |
- | jarr[keyval[i][0]] = parseFloat(keyval[i][1]); | + | |
- | else | + | |
- | jarr[keyval[i][0]] = keyval[i][1]; | + | |
} | } | ||
- | if ( keyval[0][1] == "sensor" ) | + | |
+ | if ( measure.class == "sensor" && | ||
+ | measure.protocol == "mandolyn" && | ||
+ | measure.model == "temperaturehumidity" ) | ||
{ | { | ||
// prevent duplicates | // prevent duplicates | ||
var now = new Date().getTime(); | var now = new Date().getTime(); | ||
- | if (jarr.id != lastid || now > lasttime+1000) | + | |
+ | if (data.id != lastid || now > lasttime+1000) | ||
{ | { | ||
- | var jsonstr = JSON.stringify(jarr); | + | var topic = "gdb/sensor/temperature/"+measure.id+"/celsius"; |
- | var gdbstr = "sensor"; | + | console.log(topic+": "+measure.temp); |
- | for (var i=1; i<keyval.length-1;i++) | + | publisher.publish(topic, measure.temp); |
- | gdbstr += ", "+keyval[i][1]; | + | |
- | // console.log(jsonstr); | + | var topic = "gdb/sensor/humidity/"+measure.id+"/RH"; |
- | // publisher.publish("json/sensor/telldus",jsonstr); | + | console.log(topic+": "+measure.humidity); |
- | console.log(gdbstr); | + | publisher.publish(topic, measure.humidity); |
- | publisher.publish("gdb/sensor/telldus",gdbstr); | + | |
- | lastid = jarr.id; | + | lastid = data.id; |
lasttime = now; | lasttime = now; | ||
} | } |