 Okay. So afternoon, everyone. I'm Ziran Sun from OpenSource Group, and I'm from Research UK. Today, I'd like to talk to you about IoT.js. It's a JavaScript platform for Internet of Things. So, before the talk, I, to start talk, I'd like to show you the light demo. There are a little bit, I was planning to do the real demo. Unfortunately, my, this laptop has a little bit of issues connected to my access point. So, I'll show you the video first, and then later, if we have time, we'll get connected and show you more, hopefully, in real. Then, we'll go, after the demo, we'll go behind the scenes and off the demo, and we're going to introduce you the platform, IoT.js, and in the demo, we actually introduced the BlinkT-Module for the light here. So, we're going to show you how the JS code was written for this module, and also work you through to integrate this module into IoT.js platform. So, for the demo part, sorry for, it might be a little bit disappointing, but I'll just show you the video first, and then hopefully, we have a chance to do some more later. Short demo, I will explain later. So, it's quite simple to demo. What I have here, actually inside this case, I have this Raspberry Pi, I'll show you the architecture first. I have this Raspberry Pi Zero W-Bot, and we have actually, this is the array of GPIO pod, and we have this one row of eight LED lights, which is actually like a hat mounted on the GPIO pod. So, the Pi itself is about 512K RAM, and I think the flash I have actually here is a 16 gig, we did have eight gig runs, but this doesn't matter because there's plenty, plenty for running IoT.js and JS GPIO 8. To be honest, the JS GPIO is so much small. It's, we're actually targeting like under 128K for RAM, and for flash is actually under one mic. So, it's quite impressive, JS GPIO script engine. And in this pod, we run, this pod runs Raspberry Pi Linux distribution, then we install the IoT.js. IoT.js is repository, you put the source actually has, not only has the platform itself, it also has a jerry script, the ultra light weight JavaScript engine, and also we also have this event IO, controlling an event IO handling library, Lib QV, so, and then on the top of the platform, we have our demo, and the demo code actually based on the blink team module, we introduced into IoT.js platform. So, the scenario for this demo, very, very simple. So, what you do is the demo app, pulling the current weather data through cloud, cloud API, where, so the data actually provided by openweathermap.org. So, we're actually calling the API, the API actually provided by them, and then we actually using user authentication code to get the data, you need to register your app to the third party organization. And then upon the data received, and the app will decide whether to turn the light off or change the flashing patterns. The use case for this really I'm known because my colleague did a street light demo before last year, so we're thinking like, this is really good idea, you know, you upon to the visibility, you have the data, current visibility you have, and then you turn the light on off. Considering a smart city situation, how much energy are you gonna save? And just actually what you need, obviously not this light, but just with a small chip like this, five, six pounds, you know. So, the app itself, because the app itself actually using the PEPICO, actually the generic APIs provided by IoTJS platform. So, pulling data from a third party cloud, we use HTTP request, HTTPS request, and then controlling the blinked light, we're actually using the GPIO APIs, which provided by the platform itself already. So, the whole demo actually we, I think it's worth mentioning, but including the module we introduce, blinked light module, and also demo apps, they are fully in JavaScript. So, why JavaScript? Can I ask how many of you are JavaScript developers? See, this is the reason why, because we have a big pool of developers here. And the other reason is safe, because I think in JavaScript you can't, you know, they have control on memory access. So, manufacturers, if they don't want you to access the memories, JavaScript probably is one of the good options. So, all this demo basically is based on IoT.js. What is IoT.js? As we mentioned earlier, it is a platform. It's an IoT platform. It's for, you enable you to use the JavaScript to write your IoT applications. And the platform obviously based on web technology, but this platform actually heavily rely on the engine running under it, that's JavaScript engine. So, when we design this platform, we actually have a very manned success story of Node.js. So, the architecture itself is trying to be as close, as friendly, as much to Node.js. And on the other hand, we try to make the memory, performance memory consumption as less as possible to fit more constrained devices. The, obviously the way we run here is JavaScript application. And as you see that it's actually be able to access HTTP, it's be able to access GPL. Obviously, there are a lot more modules that should already be provided by the platform itself, including file system, night, and a lot more. I will show you later. So, this is the architecture of IoT.js. Two things actually, as I mentioned before, when you download the platform's source itself, you actually already have JavaScript and LibTV included. JavaScript is a rock for IoT.js platform. It is ultra-light engine. So, the banding from the platform to ECME script really depends on JavaScript. And LibTV is actually refactoring of LibTV library that used by Node.js. So, we refactoring make it a new slice memory consumption, better performance for in banding system. And we are trying at this moment, we're discussing on IoT bandings to different platforms. One of the options is OCF Open Connected Foundations LTVT, because we have been involved in LTVT before. I'm still involved in, I guess, yeah. And that's one option, but obviously, we actually consider other popular used IoT platforms. So, the core of the IoT.js actually basically native C code. And on the top, when we wrapped up into a set of JavaScript APIs. And apart from these APIs, we created the architecture itself is very modular. So, a set of modules like file system network, this is quite similar to Node.js. So, as a JavaScript developer, to be honest, you probably don't need to worry too much about under layer. What you need to do is just go up, go call the JavaScript APIs. So, mention the rock for the JavaScript, for LTVT.js is JavaScript. We actually from the group, we have presented the JavaScript in the last couple years. It's really very good compact lightweight engine. So, this JavaScript was designed from scratch by Samsung. Initially, from the beginning, the design aim was to make it for in constraint devices. So, this idea is always, always through. Even the name Jerry actually come from the Tom Jerry. So, it's a small and a smart and fast, hopefully. So, the optimization work for this engine has been really continuously. Even last year, we actually have about another 100% improvement of performance. This is always the JavaScript top priority. Lower, reduce memory footprint increase performance. And the engine itself is really self-contained, very portable. So, you might see other places. IoT platform also use the JavaScript. So, the latest status for JavaScript is it's been transferred to JavaScript foundation in 2016. And so, 2016 under Big Umbrella. And some new features introduced I think last year, yeah. So, we have a debugger for JavaScript. So, just with the debugger, you can use the command line. If you have similar with GDB, you probably don't need to go through any menu. Just whatever GDB has, you know, you can use straight away the command. And also, there is web IDE debugger. So, you know, it's just allowing you to, you know, use an UI set up your break point and work through your code. Yes, just good actually being fully in line is yes, yes, 5.1. So, we passed all the confirmation test. So, now some new features have been introduced in ES6, including promise type array. But we're carefully introducing new features because there is a balance on rich features and, you know, lower memory. So, but this is, yes, the feature for the work is going to be carry on, you know, carry on more features will be introduced. And last year, especially last year, Jerry Scrut actually got a lot more, last couple years got a lot more interest, especially last year we got a lot more contributions from other, you know, committee members. And we actually result a lot more hardware, both support, like ARM and Band. So, the latest status for LTGS is that the big milestone is released, stable release actually 1.0 in July last year. And as we've seen early, basically has a live TV in it and the modular system. The modular system basically has two layers. One is on the native level. So, you see code. So, the code actually structure is very tidy and clean. So, you go inside, you actually see the native code actually each module very tidy listed. And then you go to JS directory, another list of module in JS format. And Node.js friendly architecture, which live TV is good, very good example. And we also introduced, sorry, we also introduced a big set of Node.js like a file system HTTP, actually HTTPS actually. I just used it early. It's not fully support HTTPS. Not every feature is fully support, but this HTTPS request is definitely working. I can confirm that. And actually support this subset of Node.js module actually is really make the developers life very easy. If you are very familiar with Node.js development and some of the code, if we support the same module, you can just seamlessly using the same code from LTGS, probably most of them without any modification. And obviously that's what most of the sample code in LT.js you can use in Node.js. And obviously a list of all control like I use the GPL and we also have a I squared C spy, quite a few other support. So, from developer point of view, I look at this blink light module. So the blink light module basically what this actually is quite popularly used in a lot of demos, this light. So we look at what are available. Actually they are passing code obviously available. And good thing is Node.js also have this MPM module. So for us actually the natural point obviously starting with Node.js module and see also one way to check the capability for us. So the module itself, we check the Node.js code. It's actually quite a straight forward. The only difference we need to change is how to access GPIO part. And Node.js blink light module using this another library is wearing pie, if you're familiar with wearing pie library. Wearing pie library basically provide the native access for GPIO for blink T. But in our case actually so straight forward because the LTT.js platform already provided the API for GPIO access. So the example really is like for us to control the light really we need to configure, we just need to configure two GPIO ports. One is for data, the other is for clock. So just call the APIs straight away like this, you know configure the APIs. The next part is to write your data into the, write your data with a large line on offer. I think this is really pretty much it, you know quite straight forward. And after you have your own module library created and then integrate to LTT.js really just add your module into the file, the JSON file and then get a build enabled when you build them. So, I mean it's really straight forward really. So to wrap up, so what I have here is the LTT.js platform is a JS platform for Internet of Things based on Jerascript, the actual light with JavaScript engine and create a module on, create your own module library to the platform really just a few steps away. So we really hope you, if you're a JavaScript developer for LTT, we hope you crack down and enjoy using LTT.js. Thank you. I'll just try if I can do questions actually. Yeah, you do good help in order to wifi. Yes, yeah. This question is fine, let's do questions. Let's do a few questions and then maybe try to connect to the wifi and give the demo anyhow. So who has any questions? Do any of you have any questions? That doesn't connect anything. Much. May I explain? Yes, yeah, question. Do you have any idea of the smallest microcontroller that could run Jerascript? Yes. Repeat the question. Yes, the question is really how small the memory footprint for microcontroller may run Jerascript, right? Yeah. Yeah, then how does it compare like if you were to write the similar code in C? Like, do you have any ideas of benchmark? The benchmark to compare this, the code you write in JavaScript with C, native code of C, right? Okay, first thing is the footprint for Jerascript. We had a build actually under about 200K. So it built for ARM sum two. So it's about 143K. So really, you know, you don't need much memory for that. Comparison C, we haven't actually, I haven't come across any comparison with C, native code. But there is a reason because it's Jerascript. Because we actually, because if you think about we're actually using C code under and then we wrap on the top with Jerascript, with JavaScript. So there must be, you know, just say even if it's the same platform, using C code access the hardware and then you're using the same C code but on the top you wrap up with JavaScript. So I would assume that it should be take more, it will take more memory. Did you know how much or do you have an idea? I actually haven't got the idea but considering how much Jerascript already, it's half small it is. Yeah, okay. Is it connected? Yeah. Okay, let's see how it goes, yeah. Okay, yeah. I can do more. More questions? So the reason you don't want to rush the pie is because you can know this one but in this way we have a lot of time. It's a very good question actually. Why we use a Raspberry Pi? Because we already have the sound we can support such a small microcontroller because the popularity of Raspberry Pi. That's the main thing, but of course we welcome to you, you know, if you try on small controller and we welcome to, you know, if you have any experience share with us we really, really appreciate it, you know. Is there support as we are in the Raspberry Pi? So on the usual support of the microcontroller? Say it again, in the microcontroller? On the other interfaces? Yes, yeah. It's actually, it's part of quite a few different parts, yeah, microcontroller, yeah. Obviously, as we said that, you know, Jerascript is modular, modular, it's a modular engine. So when you build it actually you link to whatever module you need. So don't build it with everything in. Yeah, okay. So probably mistyping, yeah. Let me just, since this is connected let me just run you through the demo. Watch the light, hopefully. Here we go, yeah. It's quite lovely actually, because, yeah, thank you very much. Thank you. We can do one or more two questions if you want to. Yeah, sure. So there's still some time for one or two questions. So for people who really care about the footprint of the performance, is it possible and or advice to write the module in C and then just create a Jerascript wrapper if I want to? That is possible, yeah, yeah. You can actually, you can't fiddle the C code anyway. Right, yeah. Yeah. One more? You know if there's still one question? Yeah. I saw Tizen, how does IoTJS relate to Tizen? IoTJS, it's post-Tizen RT. That's my colleague, he, you know, Phil got the IoTJS, runs on Tizen RT, yeah. All right, great. Thank you. Thank you very much.