 All righty it is 3 p.m. I hope everybody's having a good day so far Seeing lots of cool tech particularly in the open source and IOT space Some housekeeping notes when we get to the end. I'm gonna hopefully have time for some questions if you Lob me a good one meatballs, please. I've got some freebies If you're interested so Welcome to building modular IOT gateways with open source technologies Hopefully the talk title leads you to believe that this will be a bit of a high-level conversation And it will we'll talk a little bit of architecture In particular, we're gonna we are gonna dig down a little bit though on to the Microsoft Azure IOT gateway SDK, so we're gonna talk about how the SDK can be used In you know sort of on-prem installations to help funnel data to the cloud and then Time permitting we'll get into some demo and actually see some code fly Because that's I know why most people are here is to actually see demos explode and Speakers look ridiculous in front of their audiences. So Without further ado, my name is William Barry. Most people call me Bill I'm a senior software developer from Microsoft in the developer experience team. So Most of the people in my group are evangelists I happen to be a software developer by trade and that's what I do day in and day out The group that I work for has a really sort of cool mission, right? We take new and emerging technologies that Microsoft is producing and working on We find partners that are out in the real world in industry and we embed with them To help them build their products and services for their own customers What that does is that helps us Microsoft learn how to use and frankly abuse Our own products right a you know feedback to our engineering teams about how things are going And also does a little bit of evangelism work where we get to see our products sort of spread out into the community And this is particularly important in the open-source world And in the IOT space since you know, we're talking about everything from devices That are on-prem within constrained networks all the way up to cloud data workloads You know post-processing machine learning and so on and so forth and and we as IOT experts have sort of that You know that great opportunity to see the stack the full system end-to-end And yeah anyhow, so without further ado just kind of curious little audience catching question Do I have any makers in the audience people that like you know build their own ships do their own work at home? Maybe some 3d printing. Yes. No, maybe this was the audience participation part So you can raise your hands enthusiastically In support. Okay. All right, so how about those of us that are in the consumer space, right? So refrigerators devices in the home, maybe home automation stuff and manufacturing around that space, okay? a few people and industry manufacturing right automotive aeronautics Anything along those lines. All right, everybody working with embedded devices All right, cool So without further ado My background is not in software. Okay, my background is actually in live entertainment. So I worked in the theater industry for years I worked on Broadway for a scene shop that put together most of the shows that you see on Broadway and the tour around the world Okay, my specialty was automation and motion control So we took the same sort of technology that you know Bic uses to make a thousand razors a second and we made really large pieces of machinery move around the stage Right for actors scene changes flying stuff And that industry has some very very hard constraints. Okay? One we're typically dealing with large machinery We're typically dealing with life safety, you know sort of scenarios, right? Because there are people around our moving machinery We've got machinery that's interacting with other pieces of machinery, right? So safety equipment pin releases and that kind of stuff for lifts that are in the stage Elevators that are backstage, you know flying pieces of scenery that come in and land on stage And above and beyond that we deal with a ton of telemetry data So these systems that we're building right that are moving from theater to theater to theater, right all across the world Right have some incredibly hard constraints and and in these environments. We're deploying things like plcs Okay, standard programmable logic controllers. We're deploying things like hydraulic controllers We're deploying regular windows machines for human machine interface. Maybe some touch screens, right? So we've got this broad base of hardware that we've installed into these spaces, right? And they all generate data lots and lots and lots of data Unfortunately Most of that data is trapped in the theater, right? We can't get it out for any any number of reasons not the least of which is that you typically don't control The internet access within the building that you're moving into most of the venues keep that stuff locked down The only thing they want you doing is checking your email, right? So you have this opportunity where you know if you could cloud enable Your Installations you could begin to collect more telemetry data, right? You could begin to collect information about how your machines are operating how the operators are operating those machines, right? What are the performance characteristics, right standard predictive, you know Maintenance and monitoring, you know remote monitoring those things become You know accessible as soon as we can sort of cloud enable our applications, right cloud enable our devices But we also have, you know, serious security risks, right? We don't want this hardware to be sitting out on the open internet, right? VPNs They're secure, but they have their drawbacks, you know, so anyhow In this particular, you know sort of environment, right? We've got lots and lots and lots of different types of machinery that are moving lots of different types of microprocessors and computers that are operating And we were in sort of the world of the classic big data space, okay? Does everybody know about the Yes, the three V's Volume velocity and variety anybody ever heard about this for big data? Yes. No. Yes. I see some nods good nods audience participation you can you can nod and and Make me feel more comfortable up here. So In our particular applications in live entertainment, right? We were dealing with a lot of data right a high volume of data We've got microprocessors that are cycling every five ten fifteen fifty milliseconds, right? They're reading their entire input space They're executing some amount of logic and then they're writing to their output space Kicking over and running that same process again So we've got the opportunity to collect a ton of data from the field, right and use that data from for processing down the roads Additionally, right and and I'll speak to at least one show that I did that toured from Chicago to just Toronto I think ultimately Boston We had high velocity data, right? So the show traveled with about seventy five axes of automation, okay? So any particular wagon piece of flying scenery lift in the floor, right? One dimension of motion for us is an axis of automation, right? And we had seventy five of them We were flying a piece of truss over the stage that weighed seventy five thousand pounds Okay, it had thirty pieces of scenery flying up in it, right with literally sixty plus motors You know hanging the thing from the sky. It was huge, right? And there were times when nearly everything it on that stage was moving at the same time, right? So we have all of this telemetry building up really quickly Executing for you know five ten fifteen seconds and then going quiet, right? So what this is is like high velocity data, right? We have nothing for a long period of time then we shoot a lot of telemetry up, right? Everything's in motion and then we calm back down as we decelerate everything sort of changes into the next scene And the last point here is that we've got variety in our data, right? Because we're reading from plcs from, you know drives from Mitsubishi and plcs from back off You know hydraulic controllers and opto 22 stuff For console integration, so we've got a wide variety of different information that can be aggregated together through some sort of Application which brings me to my next point For us, you know, we had all these things deployed out into the field and You know this was a while ago before the cloud was popular and if we had the opportunity to send stuff to the cloud Right, we've got this giant air gap, right a high impedance air gap between these two spaces, right? restricted on premises data Where we would like that data so that when things go wrong, we don't have to fly somebody to Korea Which happened to me on more than one occasion That is a long trip by the way particularly from New York And we've got this sort of this air gap between these two. We've got a connectivity problem, right? We could potentially just take each one of these endpoints, you know in the right situation in the right scenario and just pump Their data raw to the cloud. Okay, and in the Azure space, right? We do have that capability Right, we have a thing called a protocol gateway that allows you to deploy Customer-written software as a gateway on the cloud side meaning that each Individual device that you have can then talk to the cloud via whatever protocol that I'm gonna keep running into that Via whatever protocol that it wants to talk and then you can sort of normalize that information once you get to the cloud side But for us we were in a constrained space, right? We were dealing with networks that we didn't own that we weren't going to be operating over So what we needed was something that was going to sit sort of on the on-premise side that was going to give us the capability to aggregate this information together to collect it to filter it to do some sort of Pre-processing before we ship that data off-site which brings us to gateways That is my daughter by the way Checking to see if there was a gnome that was there My other daughter in this photo actually was stealing the gnomes that were there which is a totally different problem But this is a classic example of a gateway, right? There is something on the you know some thing some maybe piece of information that's on the other side of that door We open the door we get access to that information and that's what our gateway applications are allowing us to do So fundamentally at a high level the things that were you know the topics that we want to cover When we're discussing gateways are security and isolation, right? So we want to have security sort of in the forefront of our conversations, right? Are we partitioning our networks, right? Are we constraining access to our protected networks in both directions? You know are we making sure that we've got solid isolation in those networks that we don't have open-vonal abilities that we're not expecting The other opportunity for gateways is around integration, right? Can we reach out to lots of different devices, you know in in like said my last job in life live entertainment space You know we were deploying Beckhoff gear that was talking Modbus over TCP You know we had a little bit of twin cat for some of their high you know their high-speed bus applications There was can bus that was out there You know and all of you know all these different industrial automation protocols that we had deployed Leveraging a gateway we can work each one of those channels independently and aggregate that information together And we'll look how that's accomplished a little later One other opportunity we have is that if we're gonna put some smart compute out into the field Let's do some work there, right? Let's not let that machine sit idle, right? We have an opportunity to do pre-processing to do edge computing to do edge analytics on this data before we ship it to the cloud So let's get a platform together a place where we can perform some of those activities Lastly batching and compression, right? This isn't necessarily as true as it used to be but data pipelines are expensive, right? Wiring stuff up to public infrastructure is not cheap, you know t1 lines are expensive gigabit lines are expensive You know connecting yourself to the internet is not a cheap thing particularly if you're in remote communities doing manufacturing, you know doing Electrical system integrations and that kind of stuff we want to be cognizant of the amount of bandwidth that we're consuming So we also have an opportunity with our gateways to do batching and compression where we collect a bunch of messages together We compress that data and then we burst that data up to the cloud where we can use it later on So where do our gateways go? This is sort of our stock Azure IoT reference architecture You can pretty much ignore everything that's over here I have lots of friends from Microsoft that will be talking about data processing in the cloud about what you can do with your IoT data once it's up in the cloud where you can put it You know how you can store it and those sorts of things what I want to focus on is the stuff over here, right? We've got IP capable devices, you know that can connect themselves directly to the cloud And that could be using something like the protocol gateway that I was speaking of earlier Conversely, we might have a fleet of existing IoT devices, you know on-prem microcontrollers and PLCs and those types of devices That are sitting on a plant floor sitting, you know, maybe you've got a you know Some sort of Bluetooth device and a retail location that kind of thing We have an opportunity to collect those, you know those pieces of information use those devices and send their data up to the cloud And how we're going to do that is by dropping a field gateway that field gateway is going to act as a client to the cloud Okay, it's going to have an SDK on it It's going to have some client that's going to allow it to send data to a cloud Could be any cloud. I would hope that that's Azure, but it could fundamentally be any cloud So in this case, we're going to take our resource constrained devices right our Bluetooth our co-app Devices we're going to build a protocol system that we can deploy to our field gateway That will allow us to read information from those devices and then do post-processing So in this particular case the gateways that we're talking we're going to be you know continuing to talk about and look at Are going to be things that we're going to deploy, you know to some locality Some place near the devices the sensors the things that we want to interoperate with okay So continuing on Microsoft provides The Azure IoT gateway SDK, okay This is a library that gives you a little bit of application and it gives you a little bit of infrastructure Okay One of the cool things about it is that it is open source You know and That can't sort of be understated Well or overstated excuse me that can't be overstated enough You know a lot of the work that we do we can Help put our risk out into the community by sharing our knowledge right we can Collaborate together in the open we can participate in open conversations We can shape the software that many people use right and Part of that is helping de-risk our applications right when we go to build something we can do it with great speed Right, but we're also going to bake in all of our assumptions about the environments that we're operating in and there may be things That are outside of our scope of focus that we can't catch So leveraging open-source software gives us the ability to sort of in the you know in the open Aggregate all of our different viewpoints together right to build a better more solid product and in this particular case You know we're offering a gateway SDK that is open-source and above and beyond that right it's cross-platform right so Everybody's working in the Linux space. Yes Windows open-source people There we go. I got one guy in the back. Okay. The demo is just for you. No, I'm kidding I'm going to do a Linux demo today because I work at Microsoft and Yeah, somewhere right here. I have a sticker that says Microsoft loves Linux and it's true. We actually do Almost everybody on my hall Up in Redmond. We actually do a lot of open-source work So the guy that sits in the chair right behind me does Kubernetes work right and integrating Kubernetes and cluster management With Azure resources, so we do honestly love Linux We're talking about being able to deploy to lots of different types of hardware Right We can do you know raspberry pies Intel Nox, you know all the way up to full-on regular server style machines Also, we're standards compliant, right? We're written in ANSI CC 99 One of the cooler things that we'll talk about in the next slide is that we also support other languages, too So the fundamental architecture behind the SDK is that we're gonna, you know We've got this sort of baseline message broker where we're gonna send all of our data all of our messages We're gonna we're gonna hoist our workload on to that message broker just like you would with something like a MQP or Rabbit or MQTT we're gonna put all of our messages on to a broker and then tell that broker How to move our data around the system for us? Okay? the architecture itself Excuse me is highly customizable and Plugable so we can build new modules insert them into the sort of data pipeline and Augment, you know the behavior of our gateway system, right? That's particularly important in sort of you know an agile development environment where we may not understand the final business Requirements of the system that we're building right like we may want to start prototyping and be able to iterate on that You know that development work over and over and over again adding features and adding functionality Into the system without having to dramatically change its structure So the way we can do that is to isolate our processes, you know our business logic into self-contained modules Deploy those modules to the gateway and then wire them into the data flow of the gateway We support multiple language bindings so aside from being able to develop in C. We also support Java We support net And node so JavaScript with node and we have bindings for all three environments and you can mix and match Which is really quite an interesting story particularly for me. I'm primarily a dot-net developer and even weirder I'm primarily a functional programmer, so I like to write my code in F sharp And either cross-compile to JavaScript to deploy to node or actually deploy through the CLR Directly from my F sharp code So this is a great opportunity for me to continue to add to module development that kind of stuff even though I'm not primarily a C developer With the gateway and we'll talk we'll touch a little bit more on this later we deploy a handful of Modules sort of out of the box that give you some really great functionality to help you do things like connect to the cloud So we have an IOT hub module an IOT hub is our past service That's designed to help you connect literally millions of devices up to Azure right so it's a huge ingestion system We layer on top of that ability to ingest data device management capabilities So we can register devices and deregister devices we can push firmware updates from the cloud We can interoperate with devices that are on premises from the cloud using things like direct messages And we can push configuration data back and forth between our on-prem devices and the cloud using things like device twins Lastly and I touched a bit on this earlier, you know the the get our gateway provides the ability to do buffering and batching Sort of out of the box So in you know low constant connectivity scenarios places where the internet access is going in and out The SDK will help buffer those messages and keep them basically cycling around so that Eventually when connectivity comes back and the connection stands back up it will send all of that data up to the cloud Additionally, it has batching out of the gate that you can you can turn on to do message aggregation and help You know sort of constrain your internet data consumption Above and beyond that we'll talk about other techniques you can use around batching compression by building modules later on So let's talk about some concepts Excuse me in this particular case, we're gonna look at connecting a legacy device up to the cloud Right. We've got something like in this particular photo here for those of you that care. This was my thesis project I did a robotic bed for a production of West Side Story And if you're going why was there a robotic bed in West Side Story? That's a great question, and I don't honestly have a good answer for you, but there was in this particular case We were using a back off Modbus TCP IP controller Basically to interoperate with this remote device and it was using just regular wireless off the shelf hardware To do connectivity basically a bridge between two points between our controlling machine and the remote device So if we were to shift this to a cloud scenario, we've got our you know our back off controller and We're gonna do a custom module around, you know Modbus implement You know some Modbus implementation could be serial probably TCP IP in this case since 2017 And I don't know how many serial networks are left around But we're gonna do some sort of protocol ingestion and Then we're gonna pipe our data over to a module that's gonna send the information up to the cloud Okay, that's gonna be that IOT hub module more than likely that's gonna help us basically receive messages from the Broker that I was talking about earlier and fire that data up to IOT hub and to our Azure subscription So here is the actual Gateway architecture what you would build if you were to deploy the Gateway SDK To you know your your installation, so we've got our remote device It's talking whatever protocol you want co-app back net Modbus OPC UA the list goes on We're gonna have some sort of ingestion module and that thing is going to be responsible to talking to our remote device It's gonna publish messages content to the broker Those messages can have properties things that you you know sort of metadata that you attach to the message That's gonna allow you to do sort of filtering and post-processing down the road We're gonna maybe deploy another module, you know something that's gonna do data filtering Let's say worse. We're we're in a situation where we've got lots and lots and lots of telemetry data That's being generated right a temperature sensor and we're gonna read that temperature sensor every 10 milliseconds or every 100 milliseconds Well more than likely our error threshold isn't actually all that high and we're really concerned about coarse-grain temperature movements So most of our measurements will be exactly the same so in the filtering step We've got the ability to capture something like our deltas, right? Meaningful measure, you know measurable change in say our temperature sense of reading and then we propagate the data past there You know only when the data is meaningful We have modules around identity mapping that will allow you to map sort of a Mac address of a you know network device that is in your field look, you know your field deployment To a logical device address that's attached to the cloud and that way we can you know basically Create a pipeline of data from you know device all the way up to the cloud and be talking about the same consistent thing from the perspective of the gateway We've got logging modules baked in so that you can flood data down to local log files Particularly maybe around the behavior of your modules or error conditions, you know notifications and that kind of stuff We can be writing that down to local files And then the last step here would be something like our IOT hub module where you're gonna be pumping that data up to the Cloud and again at each one of these steps, you'll notice we've got properties for our messages as well as the content So you've got the ability to listen to a message stream, right pipe, you know plug modules together And then you have the opportunity to filter those messages within each module based on metadata about that message Excuse me so How do you get started? Your basic workflow will look like this You'll have some amount of business logic that you'll want to implement that is specific to your domain You will write modules that encapsulate that business logic, you know as a single unit of deployment Okay, from there all of our configuration is done via a single JSON file for the Gateway SDK So you'll add a definition around your module what arguments it takes from sort of the environment So if you have runtime or operational specific characteristics You want to apply to your module you can do that through the configuration file and then at the end of the configuration file We'll actually wire up all of our modules to create our data pipelines So ingestion to filtering to identity mapping right to logging and then off to IOT hub for our cloud ingestion And the last step will be deploying So as I mentioned before what's you know, what's in the box? What are we shipping right now? Well, we're shipping a logger that'll help you do local file logging We're shipping the IOT hub module that allows us to interoperate with IOT hub our pass service in Azure We have a blow to Bluetooth Bluetooth Bluetooth low-energy module That'll allow you to do some quick start setups particularly in the Bluetooth space So one thing I can suggest is if you look Texas interest Texas instruments makes this really cool little sensor tag It's got a bunch of little different sensors on it, you know temperature humidity velocity that kind of stuff And that thing talks via Bluetooth le it's relatively inexpensive and is a great way to sort of demo and try out these workflows for yourself We have the identity module which like I said helps us map, you know Some sort of on-premise identifier up to our cloud device identity And then we've got a bunch of community added modules and this is the part You know part of the open-source conversation here is that you know we are looking to try to build a community around modules and Functionality that people can just pull off the shelf and use within their data pipelines So places where that's relatively interesting OPC UA. We have a module for right now Modbus, which isn't you know an open protocol in the industrial automation space as well Backnet I'm actually kicking off a project relatively soon to do co-app integration for low-power devices Which would be I think a relatively interesting build and I've also published stuff around Compression using gzip compression in your data pipelines And then we've got some additional modules coming around batching So we are looking for you know community help to build out sort of this ecosystem So that we have the opportunity to pull down, you know gateways pull down modules and kick things off the ground relatively quickly Okay, so the question was all of these modules can be configured through JSON. Yes, they can So and in fact that is how you will configure them is using a JSON file, which we will see in just a moment And by just a moment. I mean now demo time so Let's minimize this Minimize that Display be a little duplicate display Are we gonna do that there we go? Okay, so if I told you that I had my slides still up, would you believe me the answer should be yes If I told you that I could run It didn't do it did it displays duplicate these displays apply Keep these changes. All right, let's see if you're gonna stay there Okay, so what do I have here? Anybody recognize this desktop? Somebody who but to yes good So I am running a boot to inside of a VM in hyper V on my windows machine because I'm cool like that And I have a super secret password There we go. So the gateway SDK Basically looks like this when you clone it. You're gonna have things like Bindings Dependencies some core information some docs some dependencies Modules samples tools, etc. The build for this is all done in CMake and the instructions are actually really good on the website We'll kind of look them over towards the end But let's drill into our samples real quick just so we can look at. Oh, I already have it up awesome So this is what the gateway configuration looks like at the top. Oh, you can't read that. Can we It's probably not even Showable here. I'm gonna flip back to visual studio code and hopefully we can make this a little bit bigger for you Okay, so this is the same configuration file happens to be a windows version To the parody one that is for Linux So the top of our configuration file like you were asking we're going to define Loaders and these are the things that are going to find those extra runtime bindings for Java node dot net So we're going to say where we're going to get our binding from any configuration parameters for that binding It's typing the name Continuing on we're going to find the modules that we want to have loaded So in this particular case, we're going to load up a module called node printer Its loader name is node which is going to be mapped to that loader array that we saw above And we're going to give it an entry point that's going to give it a path Basically to the javascript file that we want executed as part of this data pipeline And we can keep adding basically Keep adding different modules To the json file, you know to that array Specifying all the functionality that we want You know this particular case. Let's see. That was the writer. What's a good one here Here, so here's our iot hub writer So this is the thing that's going to be responsible for taking our you know Sort of the end of the pipeline out of our message broker in the gateway SDK and shuffling that information up to iot hub for us You can see in in args in this args object We've got a connection string element and here i've got the connection string for my particular device To wire that excuse me to wire the gateway up to azure iot hub At the very end of this file, you'll notice a section called links And what this is going to do is this is telling the gateway how to plumb all of our different modules together So in this particular case i'm going to define A source that could be every single module. So that's what the star stands for And i'm going to sink down to the logger what that means is that everything that the You know each module all the data that the module produces that it writes out is going to go down to the logger for processing Our next one our node sensor We're going to wire that up to the iot hub writer, right? So we're going to take our basically a simulated piece of uh of our code that runs as a simulator Create some fake data and push that data up to iot hub And additionally we'll print that out to the console when we actually go to run this So this is what your jason file looks like and it really is not all that complicated You know because it's jason we've got the ability to also script and automate this So if you're thinking like you know, I've got multiple different runtime environments that need different modules deployed It is relatively simple to script the creation of this file based on different parameters In fact, I've got a really kind of cool blog post about how to do that with power shell To just define up a series of inputs and then it will build this entire file as part of the deployment and build pipeline for you So that whole thing is uh, uh, you know can be automated Let's see. Let's flip back. Okay, so we're back in our installation Um and let me minimize this Let's actually run this thing so Excuse me The build process for this, uh, at least this particular demo because i'm using node is two step one We need to build some bindings, right that will tell our gateway sdk How to interoperate with the node scripts that we're going to run Okay, and that obviously means building a node environment So we're going to start by building our bindings and then we're going to basically build the sdk With those bindings enabled and and you know tell the sdk build scripts Look go ahead and enable all these bindings and and it'll point to those those particular artifacts for integration Now that process does take a while. It is um, it is not short You know the the build process for the node bindings is probably 20 minutes And it's another 10 minutes for the sdk to build It's c that's kind of the way life is Excuse me My apologies, um, so let's see. Let's go up to Run this if I can find my command That I had so neatly typed in before Of course, I'm not gonna be able to find it. Which dot slash node d dot dot slash dot dot slash dot slash Uh cd build cd node uh samples Node it's right there. Sorry dot slash node simple sample and then let's do dot dot slash samples node source gateway Linux There we go. Okay. So I'm going to call into the so that I created Wow, that is really small. Do I increase the font size on this? Yeah, it's not It's not giving me the love. Yeah, let's let's hope it's there. Oh, there we go Oh control plus plus So here, uh, we're going to go ahead and build We're going to execute our so file that we've generated from the build and we're going to pass at that gateway sample code Excuse me, um that we were working on earlier And right now what is basically happening is we're generating fake data that data is being printed to the screen and we're also streaming that live up to, uh, azure and We will prove that that's the case by going here And this is my azure subscription where I have, um My iot hub configured and if everything goes well, it will show more than the seven that were there before Give this a second to load Round of applause if this has worked, please Somebody want to do the jeopardy theme song while this loads? Oh, and it still says seven how pleasant So let's do It certainly should have sent those messages up, but does not appear to be showing yet in the uh In the dashboard this can occasionally take a little while for the telemetry data to show up on the home screen We'll try the diagnostics information here in a second 29 messages look at that round of applause For iot hub being kind of slowed and display that data um Anyhow, so basically we've what we've done here is we've you know built a set of language bindings Right, we've built the sdk. We've deployed our modules Through configuration with our jason file And we kick that thing off and let it run and you know, that's basically the story It is relatively fast to get started here Particularly if you're looking to do sort of integration environments where you need to read from a lot of different types of sensor data Excuse me um, so Kick this over Resources Okay, this is the location of the gateway sdk. It's github.com Slash azure slash azure iot gateway sdk Our api reference Is available on a github iot page attached to the same repository Our built-in modules are listed out sort of at this url They're also on the home page, which i'll show up in just a second And then our featured modules are a just a deep link off the main page So the question to you is Can you go out and build something on the gateway? And if so, can you help us by contributing to the ecosystem? That's my my one my one plea to you Is to help us build an ecosystem around gateway applications for iot I think there's a lot of potential here Way more potential than I think we've we've even begun to to really think about In particular around the edge compute space, right? If we're going to deploy something like a gateway We have the opportunity to actually deploy some real hardware out into the field And now all of a sudden, you know, not just edge analytics becomes sort of within scope But actual edge compute becomes within scope, right? We can do Intelligent decision-making right relay information of the cloud Potentially close some stop gap with local code execution while we wait for some longer running Distributed process to finish up into the cloud and to read that relay that information back to us on prem To our gateway for further decision-making. So I think there's a great opportunity here for integration This is who I am bill barry. You can follow me on twitter or github at William barry II I blog relatively extensively particularly in the areas of iot For those of you that are interested that is actually me welding. So, uh, you know, that's what I used to do back in the day Before I got into software And I will bring up really quick the iot gateway sdk homepage here This is the github repository. Um, you'll see a bunch of oops, of course, it's not duplicating now is the Gateway sdk page You'll see a bunch of really great information about architectural drawings Sort of fundamentals around how to get started with the gateway sdk The baked in modules that we have the bluetooth le a simple hello world identity mapping again that iot hub and the logging modules something for azure functions Are featured modules from the community like I said modbus our opcua client as well as a gzip compression module um, and then sort of Standing operating system compatibility and these are basically environments that we're building and deploying against To check to make sure that we've got full operational capacity and that includes things like wind river, right? Which I think should be particularly interesting to this crowd, you know, if you're working in the rts space, um, you know That's kind of a cool add-on Hardware compatibility doc samples, etc So with that I'll hand you all back a few minutes for your day. Um, I really appreciate your time coming out and hearing about the azure gateway sdk and uh, yeah, thank you very much Uh questions. Yes Of course, how can I forget and like I said, I've got freebies. I said that at the beginning too, so All right, who's first go for it So Sure, okay So great question the question was basically around will we be open sourcing something on the cloud side? For gateway functionality to connect to and I think this is where things get relatively particular, right? If you are looking to operate, you know infrastructure as a service in the cloud, right? So you're operating your own vms and your own servers, right? There is fundamentally no reason you cannot add an endpoint to those systems that is, you know Mirrored with a client on the client side So what protocol would you want to be speaking between your on-prem installation and your is services that are in the cloud, right? Potentially an open protocol. I would assume, you know, it could be htdp Right, so let's go with that. So we're talking, you know on-prem You know htdp client to server in the cloud, right? And that's fundamentally what we're hoping to get, you know, sort of contributions around from the community Well, okay, so what you really have is a gateway solution on prem that is open source How you fundamentally use that like what cloud you connect to is basically up to you You know, we provide out-of-the-box functionality that allows you to connect that That gateway installation to azure, but you can write modules that would do whatever you want, right? They just drop into the data processing pipeline. I'll give you an example So let's say you want to de-risk your solution by trying out the gateway on-premises, right? Without actually doing any cloud connectivity You could really just stop the gateway SDK at the logger push down to local files And work off of that sort of interface in a more skata style system, right? Where everything is going to be constrained within your operational environment And test out and run the gateway before you're ready to make the move, you know to shipping the data to a public cloud Whatever public cloud that may end up being So, you know the add-ons for us around the the gateway SDK are in particular tying into our past services, right? Which you know is iot hub and that's going to come with things like device management And those add-on services above and beyond sort of just raw data ingestion Okay, so the iot hub writer module that we support out of the box to send data to azure supports amqp Uh supports nqtt and supports htps Um, so those are your you're sort of out of the box your three protocols that we'll be Interacting with the iot hub past service with Yeah, yeah, yeah, so 509 x 509, um certificates It's up to you to implement correct or whatever protocol that you're using however that protocol handles security or data encryption and so on Between the gateway and the cloud So, uh, just a real quick question. Why would you not want to use certs that were signed by a public authority? So, sure So your uh, that is uh, the sorry just to repeat the question. It was around Using privately well publicly signed but private certs For device management situations and um, I can get some information to you after this on that Sorry, I can't answer that right off the top of my head for you. Yeah So the question was uh, why choose azure over helix device cloud and I actually can't speak to that I have no experience with the wind river products, unfortunately so Sorry about that. Oh hold on one second In terms of size memory allocation that kind of stuff. I don't have those statistics For you, but but it's relatively small So the question was does the gateway support other clouds and taking my microsoft hat off Fundamentally and and we kind of touched on this earlier You can write, you know a module at the end of the pipeline to do whatever you want, right? So if you want it to consume some rest api that you've deployed to say a service fabric cluster Or to some ias somewhere or even to your own data center That's perfectly within scope and capability of the gateway itself, right? Because we're just what we're trying to provide to you is this sort of core baseline infrastructure Around message brokers and a message or sort of a data pipeline between ingestion to exit So the question is do we think we would accept drivers for the clouds upstream and that's a great question I don't know and frankly, uh, I would think that the team would yeah In fact, that would probably be something I'd be willing to push personally, you know Was to write modules around that so You know, I think we have a really great story around device management that kind of stuff for azure But you know, there are compelling stories all over the place. So One would presuppose. Yes Uh, any other questions? Yes Okay, so how do we compare our solution to eclipse cura? Um, I don't have any, uh, personal experience with cura So I don't know. Um, I just started playing with it last week to try and get a feel around it So, uh, I wish I could answer that personally, but I'm sorry I can't Yeah, so everything that's the question was, you know, is everything that's in the box You know allow you to connect to azure and sort of get started and the answer is yes The hello world samples will get you up and running sending data to azure Um, you can get started with a free account. Um at you know, I think it's portal.azure.com We'll allow you to get started with a free account for azure with a certain number of credits And begin exploring iot hub. Um, so I use iot hub personally for my own home automation system I use the free tier. Um, it's good for 8,000 messages a day Which is more than my children can turn the lights on and off in a light switch rave at home Um, so, you know, it serves my purposes pretty well and it and it's totally free So I do pay a limited amount for storage down to doc db to keep that data, but Any other questions? Yeah Sure. Have you filed an issue on the the github repository? Okay, yeah, I would uh, so the question was whether or not we could have uh, some functions return real error codes And I would really encourage you to file an issue on github We are actively monitoring it right the code development for the sdk is done out in the open You know, I file issues with the team all the time You know, and that's that's my channel of communication of m is through github issues And part of that's about trying to encode some of this knowledge Basically in the github issues for people to be able to search and and and, you know, find down the road So it's an important form of documentation for us as well Yeah, yes, um, yes, we are currently using cmake and uh, I don't know if there have been any requests of the team to use Um, another build platform, um Unfortunately, I you know, obviously can't speak to the build system. Um, I'm just a user Yeah, no totally totally. Uh, any other questions? Yeah So the question was around whether or not the sdk is capable of handling like high bursts of data Um, the pipeline the data pipeline coming in and out of every module is serial, right? So those messages are going to stack up in the queue and be processed as fast as your code will run Um, you know, I would think in that particular type of scenario You would want to be doing, you know, some sort of preprocessing on your data at your device level Um, but I don't know enough about your application to really answer that Um, I've not tried uh to push the sdk really really really hard You know, I've gone down to I think 10 millisecond cycles and it was just fine streaming data up to azure on sort of that speed but Yeah, I don't have that answer for you off the top of my head So the comment in the back was that mqtt is obviously faster than rest and amqp Yeah, the amqp stuff the connectivity is super robust once the channel is stood up. It's amazing But it does take a while to negotiate that handshake and get that connection stood up properly Yeah, any other questions? Well, thank you all for coming a great discussion good questions. Um, I really appreciate your time today. Thanks