Differences

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

Link to this comparison view

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(topicmeasure.humidity);
- publisher.publish("​gdb/​sensor/​telldus"​,gdbstr);+
   
- lastid = jarr.id;+ lastid = data.id;
  lasttime = now;  lasttime = now;
      }      }
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