Quantcast
Channel: PDC Blogs
Viewing all articles
Browse latest Browse all 26

Plantronics to Firebase integration sample - JavaScript

$
0
0

Kickin it hear at the Launch Hackathon! (http://www.facebook.com/Hackathonio)!!!

 

Created a demo integration between Plantronics headset with wearing sensor events and our nearest neighbour at the event: Firebase, (Based on Firebase chat sample app).

 

Worn/not worn events with timestamp are inserted into Firebase store when user puts on/takes off their Plantronics headset.

 

**See attached file for required spokes.js file!**

 

---

 

<!doctype html><html><head>    <title>Plantronics Firebase Integration Sample</title>    <script src='https://cdn.firebase.com/v0/firebase.js'></script>    <script src='https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js'></script>    <link rel='stylesheet' type='text/css' href='../css/example.css'></head><body onload="connectMain()" onunload="disconnectMain()">    <div id='messagesDiv'></div>    <input type='text' id='nameInput' placeholder='Name'>    <input type='text' id='messageInput' placeholder='Message'>    <script>        // INFO: Need to obtain a firebase store, check out:        // https://www.firebase.com/signup/        var myDataRef = new Firebase('https://[YOUR FIREBASE ID].firebaseio.com/');   // .firebaseio-demo.com        $('#messageInput').keypress(function (e) {            if (e.keyCode == 13) {                var name = $('#nameInput').val();                var text = $('#messageInput').val();                myDataRef.push({ name: name, text: text });                $('#messageInput').val('');            }        });        myDataRef.on('child_added', function (snapshot) {            var message = snapshot.val();            displayChatMessage(message.name, message.text);        });        function displayChatMessage(name, text) {            $('<div/>').text(text).prepend($('<em/>').text(name + ': ')).appendTo($('#messagesDiv'));            $('#messagesDiv')[0].scrollTop = $('#messagesDiv')[0].scrollHeight;        };    </script>    <script type="text/javascript" src="spokes.js"></script>    <br />    <br />    <p>Put your Plantronics headset on and off to send data records to Firebase!    <br />INFO: You need to obtain a firebase store and paste your store URL at top of this page code, check out:    <br /><a href="https://www.firebase.com/signup/">https://www.firebase.com/signup/</a>    </p>    <br />    <div id="log">        <b>Plantronics Log:</b>    </div>    <!-- Plantronics Device Services -->    <script type="text/javascript">        var spokes; // global Spokes object, initialised on page load        var plugin_registered = false;        var plugin_name = "Plantronics Firebase Plugin";        var callid = 0;        // Button commands:        function connectMain() {            appendLog("Connecting...");            connectToSpokes();        }        function disconnectMain() {            disconnectFromSpokes();        }        // Helper functions:        function getCallId(callid) {            return new SpokesCallId({ Id: callid });        }        function getContact(contactname) {            return new SpokesContact({ Name: contactname });        }        // displays status of call commands        function showCallStatus(result, toJson) {            if (result.isError) {                appendLog("Error: " + result.Err.Description);            }            else {                if (toJson) appendLog(JSON.stringify(result.Result))                else appendLog("Success.");            }        };        function appendLog(str) {            log.innerHTML = log.innerHTML + "<br />" + str;        }        function connectToSpokes() {            // check Jquery is loaded before using Spokes object...            checkJquery();            //Create my spokes object            spokes = new Spokes("http://127.0.0.1:32001/Spokes");            // get list of attached devices            spokes.Device.deviceList(function (result) {                //Create table of all the devices we found if no errors                if (!result.isError) {                    if (result.Result[0] != null) {                        // Log Spokes active device found (first in list returned, index 0)                        appendLog("Device found = " + result.Result[0].ProductName + ", id = " + result.Result[0].Uid);                        // attach to the device                        spokes.Device.attach(result.Result[0].Uid, controlInterface);                        // start polling the device for events...                        pollDeviceEvents();                    }                    else {                        appendLog("Error: Device was null on connecting to Spokes. Is there a Plantronics device connected?");                    }                }                else {                    appendLog("Error connecting to Spokes.");                }            });        }        //Creates a control interface        function controlInterface(session) {            if (session.isError || !spokes.Device.isAttached) {                appendLog("Session Registration Error");            }            else {                appendLog("Session ID: " + session.Result);                registerPlugin();            }        }        // Register a Spokes Plugin session to get access to Call Services and Session Manager interfaces        function registerPlugin() {            //Choose to register, or unregister the plugin            if (!plugin_registered) {                // register new plugin to Spokes                spokes.Plugin.register(plugin_name, function (result) {                    if (!result.isError) {                        //Set plugin active status to true                        spokes.Plugin.isActive(plugin_name, true, function (result) {                            if (!result.isError) {                                // plugin registered and active. Show UI.                                plugin_registered = true;                                appendLog("Plugin \"" + plugin_name + "\" registered successfully.");                            }                            else {                                appendLog("Error checking if plugin is active: " + result.Err.Description);                            }                        });                    }                    else {                        appendLog("Error registering plugin: " + result.Err.Description);                    }                });            }        }        // Unregister Spokes plugin session        function unregisterPlugin() {            spokes.Plugin.unRegister(plugin_name);            plugin_registered = false;            appendLog("Plugin un-registered.");        }        function disconnectFromSpokes() {            unregisterPlugin();            spokes.Device.release(function (result) {                if (!result.isError) {                    appendLog("Released device");                }                else {                    appendLog("Error releasing device");                }                spokes = null;                appendLog("Disconnected from Spokes");            });        }        function getTimeStamp()        {            var d = new Date();            var h = d.getHours();            var m = d.getMinutes();            var s = d.getSeconds();            return h + ":" + m + ":" + s;        }        // Set up device event polling if we are connected to Spokes        function pollDeviceEvents() {            setInterval(                function () {                    if (spokes == null) return;                    if (!spokes.Device.isAttached) return;                    //Make an events call                    spokes.Device.events(                        function (result) {                            if (result.isError) {                                appendLog("Error polling for events: " + result.Err.Description);                            }                            else {                                // display list of events collected from REST service                                if (result.Result.length > 0) {                                    for (var i = 0; i < result.Result.length; i++) {                                        appendLog("<font color=\"#0000FF\">Device Event: " + result.Result[i].Event_Log_Type_Name + ", " + result.Result[i].Event_Name + "</font>");                                        if (result.Result[i].Event_Name == "Don") {                                            appendLog("Send Don to Firebase...");                                            var name = $('#nameInput').val();                                            if (name=="") name="Plantronics User";                                            myDataRef.push({ name: name, text: "Is wearing their Legend UC at " + getTimeStamp() });                                        }                                        if (result.Result[i].Event_Name == "Doff") {                                            appendLog("Send Doff to Firebase...");                                            var name = $('#nameInput').val();                                            if (name == "") name = "Plantronics User";                                            myDataRef.push({ name: name, text: "Has taken off their Legend UC at " + getTimeStamp() });                                        }                                    }                                }                            }                        });                }, 500);    //500ms seconds polling        }    </script></body></html>

 

 

Have fun!


Viewing all articles
Browse latest Browse all 26

Trending Articles