liftstream

streaming interface for db adam api

Usage no npm install needed!

<script type="module">
  import liftstream from 'https://cdn.skypack.dev/liftstream';
</script>

README

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