Skip to content
forked from andreek/node-eibd

node.js eibd client (EIB/KNX daemon)

License

Notifications You must be signed in to change notification settings

vddgil/node-eibd

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

eibd Build Status

A Node.js client for eib/knx daemon. Implements all functions of eibd client library needed for groupswrite/groupwrite, groupread and groupsocketlisten.

Install

npm install eibd

Test

npm test

Supported Datatypes

  • EIS 1 / DPT 1.xxx
  • EIS 2 / DPT 3.xxx
  • EIS 3 / DPT 10.xxx
  • EIS 4 / DPT 11.xxx
  • EIS 5 / DPT 9.xxx
  • EIS 6 / DPT 5.xxx
  • EIS 8 / DPT 2.xxx
  • EIS 9 / DPT 14.xxx
  • EIS 10.000 / DPT 7.xxx
  • EIS 10.001 / DPT 8.xxx
  • EIS 11 / DPT 12.xxx
  • EIS 11.001 / DPT 3.xxx
  • EIS 13 / DPT 4.xxx
  • EIS 14 / DPT 6.xxx
  • EIS 15 / DPT 16.xxx

CLI Usage

groupwrite

./bin/groupwrite host port x/x/x 0..255

e.g. ./bin/groupwrite localhost 6270 1/2/3 100

./bin/groupwrite --socket path x/x/x 0..255

e.g. ./bin/groupwrite --socket /run/knx 1/2/3 100

groupswrite

./bin/groupswrite host port x/x/x 0..1

e.g. ./bin/groupswrite localhost 6270 1/2/4 1

./bin/groupswrite --socket path x/x/x 0..1

e.g. ./bin/grouspwrite --socket /run/knx 1/2/4 1

groupread

(issues a read request telegram to the bus, does not wait for an answer!)

./bin/groupread host port x/x/x

e.g. ./bin/groupread localhost 6270 1/2/4

./bin/groupread --socket path x/x/x

e.g. ./bin/groupread --socket /run/knx 1/2/4

Listening for group telegrams

./bin/groupsocketlisten host port ./bin/groupsocketlisten --socket path

API

Connection.socketRemote(opts, callback)

Opens a connection eibd over TCP/IP.

var opts = {
  host: 'localhost',
  port: 6720
};
// alternatively use UNIX sockets with var opts = {path: '/pathto/socket'};

eibd.socketRemote(opts, function() {
  // connected
});

Connection.openGroupSocket(writeOnly, callback)

Opens a Group communication interface

eibd.on('data', function(action, src, dest, val) {
  // do something
});

eibd.openGroupSocket(0);

Connection.openTGroup(dest, writeOnly, callback)

Opens a connection of type T_Group

var dest = eibd.str2addr('x/x/x');
eibd.openTGroup(dest, 1, function(err) {

});

Connection.sendAPDU(data, callback)

Sends an APDU

Connection.sendRequest(data, callback)

Sends TCP/IP request to eib-daemon

Parser.parseTelegram(telegram)

Parse telegram and emits 'write', 'response' or 'read' events.

Parser.parseValue(len, telegram)

Try to parse values with assumptions about package len.

Parse.encodeEIS5(buffer)

Parse value to EIS 5 / DPT 9.xxx from buffer

str2addr(str);

Encodes string to knx address

addr2str(adr, gad=true/false);

Decodes knx address to string

Example

var eibd = require('eibd');
/**
 * groupsocketlisten
 */
function groupsocketlisten(opts, callback) {

  var conn = eibd.Connection();

  conn.socketRemote(opts, function() {
    
    conn.openGroupSocket(0, callback);

  });

}

var host = 'localhost';
var port = 6720;

groupsocketlisten({ host: host, port: port }, function(parser) {

  parser.on('write', function(src, dest, dpt, val){
    console.log('Write from '+src+' to '+dest+': '+val);
  });

  parser.on('response', function(src, dest, val) {
    console.log('Response from '+src+' to '+dest+': '+val);
  });
  
  parser.on('read', function(src, dest) {
    console.log('Read from '+src+' to '+dest);
  });

});

eibd documentation

About

node.js eibd client (EIB/KNX daemon)

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 100.0%