hysteresis

0.0.2 • Public • Published

hysteresis build status

An implementation of hysteresis in JavaScript

Installation

$ npm install hysteresis
$ bower install littlebits/hysteresis

Example

There are a variety of use-cases for hysteresis. One use-case at littleBits is that we use it to avoid jittery event inference in the cloudBit's data stream.

Here is a naive example:

var Hysteresis = require('hysteresis')
var createServer = require('net').createServer
 
var server = createServer(9500, function(socket){
  var check = Hysteresis([68,70])
  socket.on('data', function(data){
    var didCross = check(Number(data))
    if (didCross) socket.emit(['release', 'ignite'][didCross - 1], data)
  })
})

API

Hysteresis

Hysteresis(threshold, config) -> (check(number) -> 0 | 1 | 2)`

Instantiate a hysteresis instance. You must provide a threshold and may optionally provide a config object that tweaks behaviour.

config exposes the following options:

  • initialSide – May be 1 or 0, defaults to null causing side bootstrapping to be resolved using first received number
  • initialBias – May be 1 or 0, defaults to 1
  • initialIsChange – May be Boolean, defaults to true
  • checkType – May be 'crosses' or 'crossesOrMeets', defaults to 'crossesOrMeets'

The constructor returns a check function that accepts number and returns one of the following codes:

check(number) -> 0 | 1 | 2
  • 0 – the number did not cross the threshold
  • 1 – the number fell below the threshold
  • 2 – the number rose above the threshold

For more details please read the annotated source code and review the tests.

Package Sidebar

Install

npm i hysteresis

Weekly Downloads

35

Version

0.0.2

License

MIT

Last publish

Collaborators

  • jasonkuhrt