lucyclient
v0.2.2-alpha
Published
Lucy Node JS Client Library
Downloads
6
Readme
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
}