npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

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
}