Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
iot_ha [2014/08/19 23:17]
jap [Wireless sensors]
iot_ha [2014/08/22 23:09]
jap [Telldus to MQTT Bridge]
Line 50: Line 50:
  
  
-  ​+==== Telldus to MQTT Bridge ==== 
 + 
 +Simple node.js bridge compatible with GaianDB and JSON databases. Requirements:​ net, mqtt. 
 + 
 +  npm install mqtt 
 + 
 + 
 +Package: {{:​telldus-mqtt.tgz|}} 
 + 
 +telldus-mqtt.js:​ 
 +<​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 lasttime = 0, lastid = 0; 
 + 
 +var publisher = mqtt.createClient(1883,'​localhost'​);​ 
 +var telldus = net.createConnection('/​tmp/​TelldusEvents'​);​ 
 +telldus.setEncoding('​utf-8'​);​ 
 + 
 +telldus.on('​connect'​ , function () { 
 +    console.log("​Connected to Tellstick."​);​ 
 +}); 
 + 
 +telldus.on('​data',​ function(data) { 
 +    var pos = data.indexOf("​TDRawDeviceEvent"​);​ 
 +    if (pos > -1) 
 +    { 
 + var measure={}, keyval=[];​ 
 + var arr = data.substr(data.indexOf(":",​pos)+1).split(";"​);​ 
 + for (var i=0; i<​arr.length;​ i++) { 
 +     keyval[i] = arr[i].split(":"​);​ 
 +     measure[keyval[i][0]] = keyval[i][1];​ 
 +
 + 
 + if ( measure.class == "​sensor"​ &&  
 +      ​measure.protocol == "​mandolyn"​ &&​ 
 +      ​measure.model == "​temperaturehumidity"​ ) 
 +
 +     // prevent duplicates 
 +     var now = new Date().getTime();​ 
 + 
 +     if (data.id != lastid || now > lasttime+1000) 
 +     { 
 + var topic = "​gdb/​sensor/​temperature/"​+measure.id+"/​celsius";​ 
 + console.log(topic+":​ "​+measure.temp);​ 
 + publisher.publish(topic,​ measure.temp);​ 
 + 
 + var topic = "​gdb/​sensor/​humidity/"​+measure.id+"/​RH";​ 
 + console.log(topic+":​ "​+measure.humidity);​ 
 + publisher.publish(topic,​ measure.humidity);​ 
 +  
 + lastid = data.id; 
 + lasttime = now; 
 +     } 
 +
 +    } 
 +}); 
 +</​code>​
iot_ha.txt · Last modified: 2014/08/22 23:09 by jap
Recent changes RSS feed CC Attribution-Share Alike 4.0 International Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki