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

node-enocean

v3.3.1

Published

full implementation of the enocean protocol (ESP3 + EEP2.6)

Downloads

20

Readme

node-enocean

an enocean implementation for node.js

full documentation, is (partly) available at the projects new homepage

http://node-enocean.com

The EnOcean technology is an energy harvesting wireless technology used primarily in building automation systems, and is also applied to other applications in industry, transportation, logistics and smart homes. Modules based on EnOcean technology combine micro energy converters with ultra low power electronics, and enable wireless communications between batteryless wireless sensors, switches, controllers and gateways.

Wikipedia

to find out whats new in the latest version see the changelog

for a full documentation of the interface visit the wiki-page (Work In Progress)

for a fully functional server/client boilerplate see node-enocean-server-template

installation

npm install node-enocean

receiving telegrams

the enocean object is an event emitter. it emits events for all kinds of things that may happen. with the following code you can listen for any type of package.

var enocean      = require("node-enocean")();
enocean.listen("/dev/ttyUSB0");
enocean.on("data",function(data){   
	console.log(data)
});

to only listen for known sensor data, use

enocean.on("known-data",function(data){   
	console.log(data)
});

teach in automaticly

to make a sensor known you have to bring the enocean object into a lerning state by calling .startLearning() When a sensor is successfully learned, a "learned" event is fired.

enocean.startLearning()
enocean.on("learned",function(data){   
	console.log(data)
});

the learning phase stops after a configurable timeout. the default is 60 seconds. during runtime you can change this timeout with enocean.timeout=30

teach in by hand

you can also change a learned sensor or add a new one by hand. this only works after the ready event was fired.

enocean.learn({
		id:"aabbccdd",
		eep: "f6-02-03",
		desc:"Switch",
		manufacturer:"Enocean GmbH"
	})

teach in by editing the knownSensor File

alternatvely you can also hand edit the knownSensors.json file. By default its located at ./modules/knownSensors.json.

EEP Resolvers

the enocean object has a property called .eepResolvers. This is an array which holds functions that can handle specific EEPs. When a known Sensor is received, the eep is determined form the sensorFile. Then the databytes of the telegram are passed to each resolver function one after the other until one of them returns somthing other than null. The build in resolvers implement the following eep

  • f6-03-02
  • d5-00-01
  • a5-02-01
  • a5-02-02
  • a5-02-03
  • a5-02-04
  • a5-02-05
  • a5-02-06
  • a5-02-08
  • a5-02-09
  • a5-02-0A
  • a5-02-0B
  • a5-02-10
  • a5-02-11
  • a5-02-12
  • a5-02-13
  • a5-02-14
  • a5-02-15
  • a5-02-16
  • a5-02-17
  • a5-02-18
  • a5-02-19
  • a5-02-1A
  • a5-02-1B
  • a5-02-20
  • a5-02-30
  • a5-04-01
  • a5-04-02
  • a5-04-03
  • a5-05-01
  • a5-06-01
  • a5-06-02
  • a5-06-03
  • a5-07-01
  • a5-09-04
  • a5-10-06
  • a5-11-02
  • a5-12-01
  • a5-30-01
  • d2-32-02

I will add more when i need them or find the time to add some random ones. if you need a specific eep that is currently not supported, just let me know. It will be a pleasure to add it.

you can easily implement your own eep handler, by adding a function to the .eepResolver array.

var enocean      = require("../")();  // require node-enocen
enocean.eepResolvers.push(function(eep,data){
	if(eep==="a5-99-99") {
		return {
			type:"custom",value:"Hello World!"
		}
	}
	return null
})

you can test you implementation by calling enocean.getData with your implemented eep and some test data.

console.log(enocean.getData("a5-99-99","8003f001"))

sending Data

sending data can be done in raw form. just pass a string to the send function.

enocean.send("5500010005700838")

there now is a sendAsync function which returns a promise. It therefor is thenable and yieldable so it works with frameworks like co. It can be used with ES7 async/await. sendAsync returns after sending, successful receiving is not guaranteed

async function test(){
  await enocean.sendAsync("5500010005700838")
}

to make it easier to send Data, there are separate modules that implement certain EEPs. The following modules are currently available.

to find out how to use them, see the examples in the example folder here or in the other modules repository.

the base address

for sending Data the base address is needed. You don't have to care about it though, because its handled automatically for you. If you are interested in the details see "sending Data" in the wiki. you can access your base address with enocean.base

the config object

the learned sensors are saved in the knownSensors.json file located in ./modules/knownSensors if you want to change the location of the file, you can pass a config object when creating the enocean object. you can also change the location of the configFile and the timeout of the learning phase.

var enocean      = require("node-enocean")({
sensorFilePath:"/path/to/sensorfile",
configFilePath:"/path/to/configFile",
memoryDirectoryPath:"/path/to/memorydirectory",
timeout:30
});

the sensor file

the sensorFile can be an empty json file. your initial sensor file should look like this:

{}

the config file

the configFile must contain a base address. If you don't know your base address, put "00000000" in. your initial configFile should look like this:

{
base:"00000000"
}

special thanks for supporting this project:

  • Collin Payne (complyNC)
  • Matteo Di Sabatino (apio.cc)
  • Rafael Kähm (https://github.com/RafaelKa)