Let`s face the truth, "The Internet of Things" (or IoT like the all the cool cats say) isn't more than a fancy buzzword. Interestingly though, it is used by two different groups of people, one wants to "shove big data into the cloud" and the other group builds DIY software & hardware to control their coffee machine using a Tessel backed up by an Raspberry PI.
If we dive deeper into this topic, looking for a common ground both groups build upon, we see the same questions bubbling up: Is my battery powered motion detector really connected to the internet? If all these devices belong to the category "Internet of Things", why do I need a vendor specific access point to control them? Does my cloudy big data lightbulb producer know when I turn on the lights? And very important: Why doesn't this "Internet of Things" work in my browser? Do I really need 20 iPhone apps to turn stuff on and off?
On the meta level, all these questions could be answered with: "open source"! And that´s what we´re going to do, we reverse engineer one of the most used "closed source consumer electronics homeautomation protocols" (say that 5 times in a row) and build a JavaScript based open source module for it. Using that module we´re then able to control the privacy of our data (because now we truly own it), combine these former vendor locked in devices with DIY components (to build the use cases we need, not the ones the industry wants us to), control that devices from our own browser app (our goodbye to the world of "IPhone Apps of Things") and as a byproduct explain why JavaScript should be the language of choice for this "IoT" thingy (and of course, have some fun time hacking on hardware).
The breadth of topics described can easily fill a one day workshop. What exactly do you want to cover in-depth?
From a language perspective, JavaScript is not exactly the best equipped tool for dealing with binary protocols (I assume you want to talk about your HomeMatic endeavor). Go, for example, has a number of nice features built into language constructs themselves. PHP (named just because its well known) has pack() and unpack() to work with binary data. JavaScript has neither the finesse of Go, nor the basic functions PHP offers. Yes, Node has Buffer, but that's Node, not JavaScript. And looking at all the bit-shifting-cutting-slicing-concatenating stuff you know all this, maybe even had a look at jDataView.