skyline-iot-events
v1.0.5
Published
Firebase pubsub wrapper
Downloads
23
Readme
Skyline Iot Events
Allows multiple devices to talk to each other by subscribing and triggering events. Uses Firebase to implement PubSub.
Install
If you are using node or a javscript build process (browserify or webpack), just use the NPM module.
>> npm install --save skyline-iot-events
Otherwise, it also just works on any static HTML page. Just add a script reference to one of the builds in the /dist
folder.
<script src='skyline-iot-events/dist/iotEvents.min.js'></script>
Methods
Three methods are exposed to handle pubsub
iotEvents.trigger(key, payload)
- Fire off an event of type 'key'. The payload is just an object, but please be a good citizen and at least add asource
property.iotEvents.subscribe(key, callback)
- Listen for a device to call.trigger()
on the specifiedkey
, your callback will be invoked with the triggeringpayload
as the first argument.iotEvents.unsubscribe(key, callback)
- Stop listening to IOT events of the specified key.iotEvents.subscribe('log', callback)
- A quick little backdoor to listen to every event. Note: the first argument to your callback is anevent
not just thepayload
.
Example Usage
Check out the /demo
folder for actual working examples... but here's the gist:
You could have a Raspberry PI running node.js to control your lights
var iotEvents = require('skyline-iot-events');
var handleLightToggle = function(payload) {
var newValue = payload.status === "on" ? true : false;
setLightValue(newValue);
broadcastStatus();
};
var broadcastStatus = function() {
var status = myLight.value ? "on" : "off"
var payload = { source: "node-server", status: status };
iotEvents.trigger("light-status", payload);
};
iotEvents.subscribe("toggle-light", handleLightToggle);
var setLightValue = function(newValue) {
// device specific code to actually toggle light bulbs...
myLight.value = newValue;
}
Then you could have a static HTML file (no server required!) that includes a reference to one of the builds in the /dist
folder.
// === Turn the light on and off ===
var toggleLight = function(status) {
var payload = { source: "html-page", status: status };
window.iotEvents.trigger("toggle-light", payload);
}
document.getElementById('turn-on-btn').onclick = function() { toggleLight("on"); }
document.getElementById('turn-off-btn').onclick = function() { toggleLight("off"); }
// === Real time display of the light's status ===
/*
* There may be other things toggling the light, so we can see the
* realtime status (w/ web sockets) by subscribing to the event
*/
var showLightStatus = function(payload) {
document.getElementById("light").innerHTML = payload.status;
};
// subscribe to events (fired from the node server in this example
window.iotEvents.subscribe('light-status', showLightStatus);