streaming interface for db adam api
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
lib
ssl
.gitignore
README.md
config.js.dist
package.json
server.js

README.md

Liftstream

Turns the Deutsche Bahn ADAM API into an Event Emitter or a Server for Server Sent Events and Websocket Stream.

Install

Simply npm install liftstream.

Usage as Library

Liftstream emits an event every time the state of a lift changes.

var liftstream = require("liftstream");

var stream = new liftstream({
	statefile: "/tmp/statefile.json", // save elevator states here
	interval: "5m",                   // adam api polling interval
	dev: false                        // send fake events for testing
});

stream.on("data", function(data){
	console.log("Lift Number "+data.equipmentnumber+" is now "+data.state);
});

stream.on("error", console.error);

Usage as Server

Liftstream may run as an HTTP service and provide all events as Server Sent Events and Websocket Messages.

First create your own config.js from config.js.dist. Then you can start the server with node server.js or npm start. Please be reasonable with the interval value.

The Interfaces are http://localhost:3000/stream.sse for Server Sent Events and ws://localhost:3000/stream.ws for the Websocket.

Every message consists of a single JSON encoded object.

Since the data changes very little, there is a developer mode, which returns a fake event on every update without other changes. It's activated by setting config.dev to true in config.js.

You can test your Server with wscat --connect wss://server:port/stream.ws from the ws module.

License

Unlicense