 So yes, I'm Philippe and nice to meet you again. So let's go on. Yeah. So with the advent of Internet of Things, we are uploading physical data as well as our physical entities to the Internet. And we probably don't want people to have a peek into our personal lives. And let's talk about the hidden dangers of uploading your physical life to the Internet. Let's quickly take this example of Shorana I think most of you are aware about. It's kind of this ancient that search things that are not password protected or easily IoT devices that are available on Internet. And probably what the search results looks like this and it's quite scary for people. And you probably don't want your personal life people looking at you when you're presenting at FOSDOM, looking at what's happening in your personal life. And it has a lot of potential target. It's just one example and there are a lot of examples for this. So Project Things by Mozilla comes to the rescue. It's the secure gateway to connect your things to Internet. And Mozilla is trying to solve address a big problem that people are thinking. It's by research that you have to buy a lot of services to have IoT devices. And it can compromise your data and the cost of setting up it's too high and things like that. And here at Mozilla, our main aim is to decentralize the Internet of Things and put the people first. And our mission is to make it a more secure, private and interpolable web of things. So Project Things directly monitors and controls your home over the web without a middleman. You don't need to pay subscriptions for the installations or monthly subscriptions. You have an option to not put your data on the cloud. You can expand the experience to multiple manufacturers. You can create your own adapters, gateways. And if you are a hobbyist, you can use Raspberry Pi. And there's a number of hardware available and you're good to go with them. And let's quickly look at the use cases that it can be used for. It can be used to turn on or off your appliance or check if your kids are at home or turn a light on. And these applications of Internet of Things can be done by Things Gateway. And it's an application layer. It's not about competing with the existing technologies and the protocols. It's using Rust. It can use Rust, JSON, WebSocket, OAuth. And new technologies can also be added to this. So it's not about competing with them but complying with them and working one by one together. And this example of, let's have a quick look at the example of Web of Things. So it's basically about giving a URL to a device. And in this case, we give this device name a toaster. And we define that its action is given a link when it pops the toast. And the event can be that the toast is ready. And things like that give it, and then there's a, it's written in JSON with a simple example. And the links gives the properties, the events, the actions, and the WebSockets. And you can usually link them using URLs. And currently, the version for Gateway of Things is 0.7. You can just basically download an image from the link. And you're good to go. So you can have your existing devices, smart mirrors, cameras, and things. And you have the option to keep your data private and secure with yourself. And if you want the remote access for devices, if you want somehow to access them remotely, you can do them using a lot of tunnels. I'll talk more about that later. And then you can do updates on via the Web using Project Things. And the framework is basically composed of four components, the cloud, where you get the remote access and backup and updates of the devices. And the Gateway, that is the intermediator between your connectivity hub in home and your internet or the cloud. And the device framework is basically the thing. And Controller controls these devices. You give them input, and it gives them the output. So a thing can be any device, a Raspberry Pi, or smart lamp, or smart bulb. And talking about the security perspective, so it uses HTPPS for the tunneling service and uses software like PageKite. So you can access the devices remotely from your cloud. And it also creates a unique subdomain for each device. So using Let's Encrypt TSL Certificate. But you can configure your own NAT DNS and TLS services. And for the authentication, it uses JSON Web tokens. And also it has OAuth authorization when you log into the Project Things UI. You have this OAuth for third party applications and services. So to get started with this, you just need to download the image for Raspberry Pi. Philip will tell more about in this detail. And it's perfect for hackers and makers like us. Okay, so I'm going to show you some quick instructions how to get started and implement your stuff. So once you download the image, just dump it to SD card, boot it. The system has a Wi-Fi server, and you can configure it from your domain and your credential. That's pretty easy. There is no need to connect to the cloud services and so on. This is optional. And once the system is running, you can connect for using a web browser to your UI. And then you can add some add-on and add virtual things to start and try some interaction between them. So as you can see on the screen, there is a representation of each element. So there is two classes of them. One is a sensor or there are actuators. And you have some control from the web UI. So technically speaking, what are the web things? So that's pretty simple. They are just HTTP server implementing a REST API. And they are all connected to the gateway. So it's not a peer-to-peer system. Even if it's technically invisible, everything is connected to the gateway. And the gateway is dispatching and updating a different value of the representation of those things. So it's quite easy to implement because it's a very simple description. This is defined in JSON. It's following a schema, which is under review at W3C as a specification. And if you are a JavaScript developer, you can just install the Node package. Or if you want to go more into embedded or very constrained device, you can install IOTGS, which is an alternative runtime like Node, but for microcontrollers. So this means you can deploy your application on a Linux system and deploy it to microcontroller. So it's pretty optimized. That's a contribution from Samsung. It's using the JavaScript interpreter, which is a very reduced footprint. And it's working on a POSIX system so it can be Linux or TizenRT for microcontroller. And if you don't want no more detail, it's always be a lecture tomorrow in JavaScript room. So here is a minimal code I shared to you about how to use this. So first you need to import a package. And then you describe a thing, a thing as a name. And let's add a single property to the thing, which is described by this constructor function. So this is an old school JavaScript because we're not supporting latest ECMAS standard because we want to get it supported by very weak microcontrollers. So that's ECMAS 5.1 standard. And once we have inherited our property object, we have just a value, which is the default value here. And then there is a server on this local port, which is describing the things. So it has a name, several property listed, and each property has a different endpoint. So if you connect directly to the endpoint, you have the value of the property. So the property can be, let's say, a sensor or can be an actuator or it can be something different, anything actually. So for instance, I made a fake sensor, which is using an MQTT source. So I don't know if you know about MQTT. This is a protocol very used in IoT form. It has a publishing device, which is publishing to a broker, which is dispatching to different subscribers. That's just an example. So I'm just connecting to my broker and I'm on each update of the topic, each endpoint of the device. I'm updating my web thing. So there is nothing physical here, but it's using the same description. So that's nice, but maybe we can do something more generic. So for this, Mozilla has defined a way to, it's extemposible by design and you can add a lot of add-ons. So for instance, you can add support for some class of device. Like recently we have some CCTV camera. We have supported that web thing. You can support any protocol. You can support eventually online services, web services, email, whatever. It's really flexible enough. And of course, input, output, like a sensor, input pin of the device or any other protocol. And it can be implemented in your favorite language. You just need to use an IPC mechanism to speak to the gateway and it's using a nano message library. And most of them are already supported by the community. So feel free to, this is the next level. First, you try to implement things. And if you want to make it more generic and available to the community you can submit another add-on. So let's try to show you something real. There we go. Is this worth doing? Okay. So here I'm connected to my home. So let me just show you different, maybe I should read all the page. So here is a dashboard where you have all the different things that can be listed individually. And I can also, here I have a webcam and I can turn on the light from the dashboard and also I have an app here I can use. Maybe I'm disconnected. So let's do it the damn way. Okay. So light is coming. I have different devices. So for instance I have, where is it? I have a lamp here and I can turn it on and change some properties of the light. So this light is open source hardware from my friend Leon which is in the room. Where is it? Here. Are you speaking today or tomorrow? Okay. So watch the open hardware room I think he's speaking over there. So let's change the color. So I changed it to green. And I have also another device here which is a sensor. So it's now updating. So I have this board with running IoTGS. So this is a Nord version for microcontroller. It has different input output. And I have this sensor here connecting to my flower which is monitoring the moisture of the soil. So one use case I can do is trying to get a notification when something is bad happening. And also something fun I can show you is this activity paper messenger. So this is an actuator. This means the thing that is not producing data but consuming data. So if I say let's say any text. How do you use it? I'm a Linux user so I'm not used to Mac keyboard. Is this a bad thing? No. So I'm at the end. So I'm setting a text and it should update in this frame in a couple of seconds. Here it is. So here is an activity paper filter using master. So you can subscribe. So now maybe we can do something smarter. For instance, we can create some rules. So I think I created the one already but let me do it again. So you had some rules using this tool. And from there you can describe some link between sensors. Let's say I have this light sensor and I want to send something to my student. So I'm using my master non actuator. I'm linking some properties. So when level of light is above 100 I can say to the war internet that sign is coming back. Okay, the properties are linked. You can link several. So let's set it to get back to the main menu. Okay, the value is 34. And if I'm turning on my... No, this one here. This is my desk lamp. And this is Leon's lamp. So now... Okay. Oh, no. I had another rule by setup. That's my floor running an umbrella because it's going to burn. So for instance, I shall use this MQTT code and I have the device running here. So the temperature sensor is another temperature. I have the humidity sensor here. Which is about 31. Which is measuring here in this room. This is not real use case, but for the demonstration. And something I can also share to you that I have some sensor home. I don't know if you know this project. It's called OpenSenseMap. So you can upload data to some community repository or about real time data. So I'm monitoring in my city. And quality. So in Brittany this is some value I made. So this is not military grade accuracy. But that's what I observed. And I read on the newspaper when coming to Brussels that for instance in Bangkok they decided to close the schools because the hair was too polluted. So I wanted to check on this map and observe the level of above 20. That's pretty big if you compare. So this means that in my dashboard I have, where is it? Here this hair quality sensor is a remote source but it's just added like it was local to the system. So it's very flexible in terms of the IP. I have very simple. And then you can change everything you want and everything is staying on your own control. There is no things getting out of control and no risk of privacy leaks. And this is here for the company because they have today to comply to GPR regulation that was explained just before. So if it's privacy by design the data stays inside the user or the customer environment. It's very, very simple for the company because it doesn't have to comply all those requirements in terms of data accessibility, revocation and so on. I think we are done now. Did I forget anything about it? No? For five minutes? Yeah, yeah. Okay, so we can go on now. So yeah, to get involved in this project you can contribute to by either building a thing or creating an adapter that's like a bridge in between the IoT devices and existing protocol on the web. And you can also hack on projects things, explore it using this link. And we have IRC support and we are on Twitter about this if you want to find out more. That's it. Be aware of your privacy so that your door doesn't lock you out or you don't have to buy a firewall for your toaster in the future. Yeah, that's it. Thank you. Any questions? No? Yeah. So you showed some sense of data logging there using another site. Do you have any sort of plans for sort of long-term data logging, that sort of thing? Or how does that integrate into this framework? Okay, so I can answer this one if you want. So yeah, there is an open request about using a time series database. Do you know what this is about? The question is about technically it's feasible. We don't know our software, but if we want to do some good data mining, this means we need to collect a lot of data. So I've said it's a trade-off between what the user wants to do. So if he has another, let's say, a NAS on his own gateway, he can show how many data he wants in the case of the Raspberry Pi on the SD card. Maybe this is not the smarter idea. But yeah, there is some open issue about this. So this would be done on time. I cannot say when. But yeah, we are talking about different solutions. If you have any suggestions about using some specific database for this, that can be relevant to let me know. But so far, the discussion is about just using my SQLite database or something like this. Any other questions? You can eventually connect to the third party who can store this on the cloud, on your own cloud for service. I think that it can be wise also to do this in a different outside the gateway. Do you know of any project integrating voice assistant or anything like that? Obviously, the open source ones would be interesting. Actually, there is one already. The music and the code and stuff like that. Okay, yeah. So there is... Mozilla has a big project called Deep Space. I'm not sure. It wasn't scheduled today, but it has been delayed or amended. So there is some experiment shown of this. I didn't try it. But I know that from the community add-on repository, there is someone who made the integration of Snip.io, you know this company. It's a French company which is doing offline voice recognition and somebody implemented on Raspberry Pi. But I wanted to try it, but I didn't make too much effort because I think I need to set up something. I was ready to do it. Yeah. Any other questions? Okay. Thank you so much. Thanks a lot.