lucyclient

0.2.2-alpha • Public • Published

Lucy-Client-NodeJS

This repository hosts the client side library of the lucy smart house framework. An extensible event driven framework used to connect smart devices accross multiple platforms and programming languages via generic message passing.

Available via npm

If you are using npm go ahead and add the module to your project npm i lucyclient --save

Hello World

 
//Import module
const SmartHouse = require('lucyclient');
 
//Settings
const DEVICE_NAME = "UniqueDeviceName"; //Device name matching identifier at server side
const UDP = false;                      //Do we wish to estabish a udp connection
 
//Logging
const winston = require('winston');
var logger = winston.loggers.get('lucyLogger');
 
const lucy = new SmartHouse(DEVICE_NAME,UDP);
 
//Register event handlers
lucy.registerEventCallback(1,handleContinueOperation);
lucy.registerEventCallback(2,handleHaltOperation);
lucy.registerEventCallback(3,turnOnLight);
 
//Perform handshake with the server
lucy.connectToServer();
 
//Event callbacks 
function handleContinueOperation(inPacket){
    logger.info("handle Continue Operation called");
}
 
function handleHaltOperation(inPacket){
    logger.info("handle Halt operation called");
}
 
function turnOnLight(inPacket){
    logger.info("Turn On Light called");
    logger.info("Payload: " + inPacket.readInt());
}
 

Please be aware that opposed to all other client libraries no IDE extension is currently available, therefor the above boilerplate code has to be written by yourself. For extensive examples please refer to the main git repository .

Logging

Logging is performed via winston v3.xx. Please see the winston github page on how to configure the logger. A named logger with the category lucyLogger is available and can be configured to output the desired information. The logging defaults to the format given in the example below with an info log level. This snippet is to be placed after you have required the smarthouse module.

var winston = require('winston');
//Retrieve logger used in the package
var logger = winston.loggers.get('lucyLogger');
 
//Define a logging format
const loggingFormat = winston.format.printf(info => {
    return `${info.timestamp} ${info.level}: ${info.message}`
});
 
//Set log level and transport (e.g. file or console)
logger.configure({
    level: 'silly',
    format: winston.format.combine(
        winston.format.timestamp(),
        loggingFormat
    ),
    transports: [new winston.transports.Console()]
});

Winston log levels:

  error: 0,   //Errors experienced during connection
  warn: 1,    //Timeouts
  info: 2,    //Information about which stage the module is in
  verbose: 3, 
  debug: 4,   //Notify the arrival of network packets packets
  silly: 5    //Byte level content of tcp packets
}

Readme

Keywords

Package Sidebar

Install

npm i lucyclient

Weekly Downloads

2

Version

0.2.2-alpha

License

GPL-3.0

Unpacked Size

71.7 kB

Total Files

8

Last publish

Collaborators

  • kilian19