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
Last revision Both sides next revision
iot_ha [2014/08/20 23:40]
jap
iot_ha [2014/08/22 22:38]
jap [Telldus to MQTT Bridge]
Line 52: Line 52:
 ==== Telldus to MQTT Bridge ==== ==== Telldus to MQTT Bridge ====
  
-Simple bridge compatible with GaianDB and JSON databases.+Simple ​node.js ​bridge compatible with GaianDB and JSON databases. Requirements:​ net, mqtt.
  
-<​code>​var net = require('​net'​);​+  npm install mqtt 
 + 
 + 
 +<​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 71: 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