Start Automating InfluxDB Deployments at the Edge with balena
Session date: Jan 24, 2023 08:00am (Pacific Time)
balena.io helps companies develop, deploy, update, and manage IoT devices. By using Linux containers and other cloud technologies, balena enables teams to quickly and easily build fleets of connected devices. Developers are able to use containers with the language of choice and pull IoT sensor data from 70+ different single board computers into balenaCloud. Discover how to use balena.io to automate your InfluxDB deployments at the edge!
During this one-hour session, experts from balena and InfluxData will demonstrate how to build and deploy your own air quality IoT solution. You will learn:
- The fundamentals of IoT sensor deployment and management using balena.
- How to use a time series platform to collect and visualize metrics from edge devices.
- Tips and tricks to using balenaCloud to automate InfluxDB deployments and Telegraf configurations.
- How to use InfluxDB’s Edge Data Replication feature to collect sensor data and push it to InfluxDB Cloud for analysis.
No coding experience required, just a curiosity to start your own IoT adventure.
Watch the Webinar
Watch the webinar “Start Automating InfluxDB Deployments at the Edge with balena “ by filling out the form and clicking on the Watch Webinar button on the right. This will open the recording.
[et_pb_toggle _builder_version=”3.17.6” title=”Transcript” title_font_size=”26” border_width_all=”0px” border_width_bottom=”1px” module_class=”transcript-toggle” closed_toggle_background_color=”rgba(255,255,255,0)”]
Here is an unedited transcript of the webinar “Start Automating InfluxDB Deployments at the Edge with balena “. This is provided for those who prefer to read than watch the webinar. Please note that the transcript is raw. We apologize for any transcribing errors.
- Caitlin Croft: Sr. Manager, Customer and Community Marketing, InfluxData
- Jay Clifford: Developer Advocate, InfluxData
- Marc Pous: Developer Advocate, balena
Caitlin Croft: 00:00:00.160 Hello everyone and welcome to today’s webinar. My name is Caitlin and I’m joined today with Jay and Marc, and they will be talking about how to automate InfluxDB deployments at the Edge with balena. Please feel free to post any questions you may have for them in the Q&A or the Zoom chat. I will be monitoring both. We’ll take all the questions at the end. And without further ado, I’m going to hand things off to Marc and Jay.
Marc Pous: 00:00:34.138 Thank you, Caitlin.
Jay Clifford: 00:00:35.821 Yeah, thank you so much, Caitlin. Always an amazing intro. I always feel great and warm afterwards. So thank you guys for joining today. I’ve been super excited to work on this webinar and this demo. This project with Marc. I think we spoke way back in November, didn’t we, Marc? To start considering —
Marc Pous: 00:00:53.170 Indeed. Yeah. We almost met in Amsterdam, and this was the reason. To talk. [laughter]
Jay Clifford: 00:01:00.226 This is it. This was it. That was it. It was at The Things Network and that’s how it all stemmed. And this has been a really exciting project and I’m just excited for other people to get involved. So I guess you want to jump on to the next slide, Marc.
Marc Pous: 00:01:13.238 Sure. Yeah. That’s it. Let me get that. [inaudible]. Yeah. [inaudible].
Jay Clifford: 00:01:18.894 Fantastic. So I think some introductions are in order. So my name is Jay Clifford. I’m a sales engineer. I used to be a sales engineer for industrial IoT solutions in my previous life. I have a passion for autonomous and vision-based projects. I’m driven to make IoT accessible to all, and my belief is that industrial IoT or even enterprise IoT’s success belongs to the domain experts. And I’ll give it over to you, Marc. Would you like to introduce yourself as well?
Marc Pous: 00:01:47.380 Sure. So yeah, I’m Marc Pous. I’m based in Barcelona. Some people call me IoT giant, not because I know a lot of IoT, but because I’m very tall. I’m 6’9. And yeah, I’ve been working on the IoT and smart cities for the last 15 years. And I would love to — yeah, to make the planet a better world using IoT technologies in education and sustainability. And yeah, that’s for another webinar, right? Let’s start with, yeah, what we are going to do today, which it’s something really cool if you work with time series data and Internet of Things. We’re going to show you how to make things easy. But before, Jay, if you want to explain how are we going to deal with it?
Jay Clifford: 00:02:34.263 Absolutely. So we have quite a bit to cover today. So we’ve tried to split it into sort of four chunks, so it’s easy for you to break it out, especially when you want to watch the video back afterwards. So Marc’s going to give us a good intro to balena so you can understand exactly what balena and balena’s platform is. I will leave that to him. We’re going to introduce you to balenaAir, which was originally conceived by balena themselves, and the project that we’ll be playing with today and the project that you can start off at home with. We’re going to be talking about a new feature that we released in InfluxDB last year and how we’ve automated that process for balenaAir and for balena as a whole. And then, instead of doing death by slides, we’re going to take you through from start to finish, working through the balena platform, working through InfluxDB, on how to deploy the full project at home. So should be a really exciting, practical demo today. But without any further ado, I already seen that question in the chat, Marc, so why don’t you tell us exactly who balena is and what you guys get up to on a daily basis?
Marc Pous: 00:03:40.257 Yeah. So maybe yeah. For people who doesn’t know what is balena. Maybe some of you know what is this. So please, on the chat. Anyone knows what is this? Anyone use this software? I don’t know. The chat is silent. Yeah, Jay. You use it?
Jay Clifford: 00:03:56.699 Yeah. So a common —
Marc Pous: 00:03:58.798 So this balena — [laughter] Etcher. Yeah. Only one people. Okay. So only two people. Okay. Three people. Oh, okay. Cool. I started to see the people chatting. Okay. Awesome. Yeah. Okay. Nobody had the bad experience with it. Okay, that’s fantastic. So this is balenaEtcher. So if you use balenaEtcher, basically you use one of the software made by balena. Okay? For the people who don’t know what is balenaEtcher, basically, I think some people already mentioned this on the chat. It’s a tool that we created to flash SD cards or USB drives to wash, basically, operating systems on it and reduce the friction to flash that operating system or on computers. And we basically made these for our customers. Basically, we help companies that wants to manage their feeds of IoT devices. Of Internet of Things devices. Okay? And maybe some people will say, “Okay, what is a fleet management or a smart mean?”
Marc Pous: 00:05:03.782 So basically, balena is a platform that we created to develop, deploy, and manage IoT devices, Internet of Things devices, so tiny devices that has sensors and actuators. But when you have a lot of devices, so a tool to help you to manage all of this because I don’t know if you’ve done have any Internet of Things project or you’ve played with something like this, which is a Raspberry Pi. Basically, when you have only one device on your table and you are hacking it, usually, it’s super simple. You want to flash a new software or you want to change a variable or you want to do anything. It’s simple. But when you are successful with it, sometimes on your table, you get something like this, right? You get 9 devices and then you need to make them run, and something changed and you need to update all of them. So how do you do that? And if your project gets even more successful, you will have something like this. And this is what we see on our customers. So they have fleets of devices, connected devices, all around the world, that are heterogeneous, not the same hardware. And most of them, yeah, they need to manage the devices, they need to update the software of these devices, they need to remotely access our SSH, for example, to the services running on these devices. And basically, this is what we do at balena. We help companies who runs a lot of devices connected all around the world, and we help them with balena, which is a fleet management tool to do software updates on the one side, and on the other side, understanding if it’s connected or not, running diagnostics and access them remotely.
Marc Pous: 00:06:46.499 As we are going to see in a minute, we’re going to see on the demo how to do that and how easy is this. To achieve this, we have different products. We already talked about Etcher, but if you want to run balena, you need to run our Linux operating system, balenaOS, which is on the left. On my left. It’s an operating system optimized for running Docker containers. That means that everything that runs on balena must run on a Docker container. You cannot run anything on the host OS. Okay? So then as a Docker engine, we don’t have Docker. We made a special Docker engine called balenaEngine, which is a modified Docker system just for IoT. Then everything is opensource as well. And then on the top of that, we have the fleet management tool, which is balenaCloud, which is our premium solution. But you also have an open-source solution which is openbalena, which uses the same API calls. There are some restrictions on specific operations, but you can do exactly the same. You can manage your fleet of devices if you want with a full stack open-source solution, or you can use balenaCloud.
Marc Pous: 00:07:59.047 Then we also have balenaFin, which is a hardware. A Raspberry Pi career board that I’m going to show later. And we have a marketplace for IoT applications, which is balenaHub, that I’m going to show you in a minute. And if we zoom in on what is a device running on balena as we are going to see some devices running balena, it’s basically a device running balenaOS, which is a Linux, with a Linux kernel, a user space with system D; NetworkManager, Model Manager, [inaudible], OpenVPN, etc. We have the container engine, balenaEngine, and on the top of that, we have Supervisor. We’re going to see the supervisor as well in a second on the demo because the supervisor is the container that is responsible to maintain the device connected to the balenaCloud or openbalena all the time. And if there is a new update or a new release ready to get released on the device, deployed on the device, it’s a service in charge to allow that. And next to the supervisor, there can be multiple containers. Okay? So just to give you an example of what we are going to run today, we are going to run these containers in our demo. We’re going to run MQTT, the Eclipse Mosquitto container, we are going to run InfluxDB on the latest version, we’re going to run Telegraf, Grafana, and an indoor air quality service just that we’ll get, actually, the data. I have here the hardware that will get the data from some air quality sensors from SparkFun. Some dust quality sensor and the SCD40, which is CO2, temperature, and humidity. So this container, it’s responsible to get our [inaudible] on the quick connector all the information from the sensors and just expose it over MQTT to the other services. We are going to get into this in a second. [crosstalk]. Ah, sorry.
Jay Clifford: 00:09:58.106 And Marc, so why did you sort of pick InfluxDB as your time series database of choice?
Marc Pous: 00:10:07.471 That’s a very good question, Jay. And yeah. And I show this slide. And basically, it’s very easy. So at balena, we wanted to do some examples for the community and we wanted to use Grafana to visualize data in the Edge. Basically, we have a lot of projects that are running in the Edge. We don’t need any cloud. And Grafana was the most simple. The no-brainer solution. And we start using InfluxDB because it was the default data source for Grafana. It was as well no-brainer to use it. It worked really well. We didn’t have any problems, so we decided to start using InfluxDB just to capture all the time series data. And now, actually, last week, I was checking that I had a weather station at home for one year with InfluxDB and it’s amazing how it managed all the data and everything. So it’s working perfectly. And as well, we are pushing something that we call MING, and this is how we met, Jay, right? Because we are pushing this stack, which is MQTT, InfluxDB, Node-RED, and Grafana as kind of — I don’t know if people in the chat knows about LAMP stack; the Linux, Apache, MySQL, and PHP stack. At least this was the stack that they started to use when I learned programming websites like 20 years ago. [laughter] So we want to push, actually, from the IoT a LAMP-like stack, which we called MING. I don’t know if anyone — anyone LAMP here? Anyone learned LAMP? All right. [I guess?] —
Jay Clifford: 00:11:38.995 This will show age quite quickly.
Marc Pous: 00:11:43.162 Okay. At least one. Yeah, Mark. Thank you. So yeah, we are trying to push this MING as a IoT stack, just to reduce friction as LAMP reduce friction for a lot of developers to get started with the web development. So we want to push that. And the funny story here, if you start working on containers in the IoT, the good part is that most of the services are the [core part?], right? We could build these applications altogether in one container, no? The one that gets the data just opens the SDK of InfluxDB, stores the data, and it works, right? But we have to start giving the right tools to embedded IoT developers. And actually, as well, attract the web developers or cloud or DevOps developers into the IoT. And this is what we are trying to do as well, introducing containers into the embedded world. So yeah. And the good part here is that, yeah, if you have the code for your application, you can start changing things. In this case here, we use Node-RED, but today we are going to use Telegraf.
Marc Pous: 00:12:49.641 And to be completely honest with you, we are not going to use Telegraf by itself. We are going to use something that we call connector. And connector, it’s a balena block. Okay? And this is the last thing I tell you today, and maybe I will get to this at the end of the presentation, but we at balena, just to reduce friction to developers, we created something that we call the blocks that are like LEGO blocks. So you have two pieces to constructions and you need to connect them, so maybe you put a block and you can connect them. But these are containers that by themselves don’t do anything, but when you put that container with more containers or more services, it makes a solution or interconnects both containers or do something for them. In this case, it’s a container that gets input data with an API or MQTT or something and outputs the data wherever we want. And the funny story is that you don’t need to code anything. You manage the functionality of this block, just using device variables from balenaCloud, as we are going to see during the demo as Jay made something super cool to manage these automatic deployments of automated tasks on InfluxDB.
Marc Pous: 00:14:06.128 In this case, yeah, we are going to use the connector block, which basically it’s Telegraf, but what we did to reduce friction to developers, so you don’t need to manage the configuration files of Telegraf. If you use connector block, just using the device variables from balenaCloud, from your fleet, you just define how Telegraf it’s going to get the data and how Telegraf is going to output the data. So in this case, just with the variables, we are going to say, “We want MQTT data from this topic and we want to store it on InfluxDB.” And without checking or touching any line of code of the config file of Telegraf. Okay? But we are going to see this in a second. What else? I think it’s time to talk, yeah, what we’re going to deploy. Just for the sake of, yeah, show something interesting, we decided to, yeah, select an air quality sensor that you can deploy at home for about $100 with a Raspberry Pi Zero till 4. We’re going to use Raspberry Pi 4s. But basically, we’re going to deploy this project called balenaAir. We don’t do any sensor at balena. We don’t do anything. We just enable people to build projects on the top of balena. And in this case, as we are a remote company, we just enable all the works that have balena to have an indoor air quality sensor with sensors that you can buy in the market. It’s a really simple project and what we are going to see is the air quality that we have in our office; Jay’s office, my office, and a colleague from balena, who is based in the US.
Marc Pous: 00:15:46.215 I don’t know if you want to mention anything about the project, Jay, or we are ready to —? Ah, well, yeah, they’ve mentioned — yeah, I think I already presented the sensors that we have. This is [inaudible] materials. So we have Raspberry Pi 4. Sorry, I used a box instead of the official [Philip?] printed. But yeah, we have these PMSA003, which you can find on SparkFun, the SCD40, then we use the quick connectors, so we have this LEDs here, and everything is connected, yeah, with these cables from the quick connectors, which are really cool and simplifies the way to get the data [inaudible]. So if you don’t know what electronics or you don’t know how to manage these, just follow the instructions that we have on balena repository that we are going to share in a second and you will be able to understand how to do your own indoor air quality sensor with balena and InfluxDB. And maybe Jay here can explain how everything is going to work and the data, how it’s going to flow.
Jay Clifford: 00:16:50.096 Yeah. Absolutely. So as Marc already mentioned, every single application is decoupled and containerized, so what we’ve tried to picture for you here is the flow of data as they go through different components within the applications that we’ve deployed. So the IAQ is the indoor air quality applications. That’s sort of a python script that sits there and reads from the I2C, pulls in that sensor data, and publishes it to the MQTT brokers. That’s the Mosquitto MQTT broker. Fully open source there. From there, we use that connector block that was designed by balena, which is built on top of Telegraf, which is super cool, by the way. I’ve never seen someone dynamically generate configs for Telegraf before, so that was a game-changer for me to see for the really [cold air?]. And essentially, what that does is it uses the MQTT input plug-in and uses the InfluxDB output plug-in. It ingests from the MQTT input plug-in and then converts that data to line protocol and writes that data to InfluxDB v2. And that data is being written into the Edge bucket.
Jay Clifford: 00:17:59.913 So if you’re familiar with databases, a bucket within InfluxDB v2 is a database. And we’re writing that within a series of measurements there. What we also have installed on the edge device is Grafana, as we mentioned. Now, the cool thing that we want to mention about Grafana here is since this project was conceived back in the day of 1.x and before Flux, it uses all bindings within FluxQL. And what we wanted to showcase here was the fact that you can still use your old InfluxQL dashboards completely fine with Influx 2.x. Absolutely fine to use. So we’ll show you that as part of this project as well. The bit that’s a little bit unfamiliar will be the downsample bucket and then the crudely pointed dotted arrow to the CO2 bucket at the top. And so what we’re showing here is Edge Data Replication, a feature that we created for 2.x in order to find a way of aggregating your data into one location. So let me sort of take a magnifying glass and drop into that for you guys so you can quickly understand what this service provides you. So if you want to jump on, Marc.
Marc Pous: 00:19:12.936 Sure.
Jay Clifford: 00:19:15.392 So essentially, what Edge Data Replication is, is a durable queue on disk. And what happens when you have any of your client libraries or Telegraf right to the endpoint of an InfluxDB, it will write the data locally on your Edge device but it will also write the data to a replication queue. This queue will attempt to try and write the data to a remote bucket. It doesn’t have to be InfluxDB Cloud. It could just be a remote instance of InfluxDB OSS. The idea is you want to take the data to a location where you have more performance power to run some more interesting queries or analytics on your data. So you can do quite a lot on the Raspberry Pi, and we are doing quite a lot on the Raspberry Pi, but when we want to start using some of these more juicy algorithms for anomaly detection and sort of forecasting, it’s nicer to have a bit more bang for your buck for these devices. So this process used to be quite manual, so you used to have to use the InfluxDB CLI and you used to have to then basically fire out a few programming code lines to create this replication queue for the bucket.
Jay Clifford: 00:20:23.920 So the main part of the project of what we worked on today for upgrading this was actually automating this process so you don’t have to worry about it except for setting a few device configuration variables which Marc will show in the demo. So do you want to just jump to the next slide, Marc?
Marc Pous: 00:20:41.627 Sure.
Jay Clifford: 00:20:43.486 So as I said before, the reason why we want to use replication is we want to bring the data from our free Edge devices in this demo to one location so we can actually do some further analytics on that data. Now we’re going to be doing those analytics using Flux. So Flux was a new language conceived for InfluxDB 2.x and InfluxDB Cloud and it’s more akin to a development language than a querying language. You still have all the functionality of a querying language but it allows you to shape and control how you see or visualize your data. And that’s kind of why we went for the analogy of the water pump system here. You start with a big lake of data and you filter and shape that data until you get to the component that needs to use that data. Now the cool thing about Flux is based on community input and based on, actually, community submissions, we have some more advanced capabilities now with Flux. So if you wouldn’t mind navigating to the next slide, Marc.
Marc Pous: 00:21:45.402 Sure.
Jay Clifford: 00:21:48.059 So two of these community projects or two of these community contributions was anomaly detection and forecasting. And so we’re going to use those today. So from the anomaly detection side, we actually have a detection algorithm called MAD, which is Median Absolute Deviation. So this is really good for detecting when a device is deviating from the pact. So this is really good for our use case and the fact that we have 3 devices configured exactly the same with the exact same sensors. The main difference for us here is the actual readings from those sensors. So we’ll be able to detect when one of the free devices is showing anomalous behavior. Fingers crossed it will be Marc’s device, but we’ll see how we get on. And the next —
Marc Pous: 00:22:34.447 Yeah.
Jay Clifford: 00:22:35.347 Yeah. [laughter] Demo gods with us. On the other side of it is forecasting. And this was more of a fun project to me and Marc to try and experiment with. So we include Holt’s method within the Flux language. This is a great forecasting algorithm for non-seasonal data, which basically allows you to predict points in the future of — so in this case, we’re going to be looking at the CO2 reading and seeing what we can predict into the future and looking for those future trends in our data. It’s not a fault-tolerant algorithm, it’s more of an experiment, but it gives you the opportunity to try yourself and see what works for you and what is possible within Flux. Both algorithms are available in the open-source version, so we’ll be running them in the cloud, but this is just to let you know they’ll be open-source as well. And I think let’s get cracking, Marc. I feel —
Marc Pous: 00:23:30.442 We are ready, right?
Jay Clifford: 00:23:31.168 —the slides is complete. So let’s begin the tutorial.
Marc Pous: 00:23:35.508 So let us start on balenaHub. So I mentioned that balenaHub it’s a marketplace for IoT and Edge applications. So let’s go to balenaHub. And we find here fleets, which are basically — yeah. When you have an application and a lot of devices are running on that application release, you have a fleet. So actually, on balenaHub, you can create your fleet and make it public and anyone can join it, and as a fleet owner, you manage to stop running on all the devices connected. Then we have the applications that are the services that you define, but in this case, no devices run. And the blocks, which is this one, but it’s like the LEGO blocks that I mentioned at some point. If you want to know what different devices are compatible with balena, you have here all the list. So if you go to hub.balena.io. So let’s go to apps, and if I search for balenAir, so we have it here. So basically, we made this within our InfluxDB v2 because we have the balenAir, which is not working on v2. I don’t know if you want to mention why did we make this change or not, Jay?
Jay Clifford: 00:24:50.906 Yes, absolutely. So we basically created a version two. That’s just because InfluxDB v2 currently isn’t supported on ARM v7. So 1.x builds are, but it’s just based on the new features and the new UI requirements we added. We just didn’t rebuild new containers for that. So we’ve released it as a new project, so you still have the option of defaulting to the old project, which has more support for more devices. But if you want the replication feature that we’re going to discuss today, then yeah, you’ll be looking at a Raspberry Pi 64-bit for that. Yeah.
Marc Pous: 00:25:25.793 Yeah. If you have Raspberry Pi Zero 1, that’s going to work only on 32-bit. If you have that, then if you want to test this project, go to the balenAir project or application. If you want to run from the Raspberry Pi 3 or 4, then you can use this project. We have balenaOS on 64-bit for Raspberry Pi 3, so that should be okay. And I think for Raspberry Pi Zero 2, yeah, that will work because it also runs 64-bits and it might run here. But for the sake of the demo, we only have Raspberry Pi 4s today here. What you can do here is basically click Deploy and it will deploy the source code that we have on this GitHub repository on balena. So the balena builders on balenaCloud will just get this source code and create the images of the containers and will deploy. But I’m going to do something. I’m going to start flashing my device here to make it connected to the fleet. I’m going to join the fleet of balenAirs and then we will get into the GitHub repo later, if that makes sense to you, Jay.
Marc Pous: 00:26:38.507 So basically, yeah, if you click Deploy and you don’t have a balenaCloud account, you can connect up to 10 devices for free. So no worries, no credit cards or anything needed for that. Just click Deploy, you create a balenaCloud account, and then, you will create a fleet. Just put a name and define it for Raspberry Pi 4 or something like that. For the matter of time, we already have it created. We call it balenAir. It’s [inaudible] 64. And then, next thing in your case, yeah, if you click Deploy, you’re going to see that a new release is going to be deployed here. The next step is just to click Add Device. Okay, I’m going to add device. I’m going to say I have a Raspberry Pi 4. I’m going to select that I want the balenaOS, not the ESR. And just in case development in case that we need to do a change and we want to do it on local mode. And then, I’m going to select, yeah, the Wi-Fi. So I have my credentials. That means that now I’m going to just download the balena, so an operating system image. A Linux operating system image with a Wi-Fi credential. So automatically, when the device is going to power up, it will start and will try to connect to this Wi-Fi. Okay. So let me download this, and. I can flash directly, but yeah, I prefer to download it just for the sake of to show you.
Marc Pous: 00:28:10.586 And now I have balenaEtcher so I’m ready just to flash from file to an SD card. So maybe at this point — I’m going to select this one, and I need to target. I mean, I don’t know if I should change the — so you should share the screen or not, Jay. Let’s see if the demo gods are with us and if it is easy to flash or we have problems.
Jay Clifford: 00:28:37.048 Absolutely. If you want to — more than welcome just to pass over screen control and I can —
Marc Pous: 00:28:43.252 Let’s see if it works. Well, okay. We are flashing. Fantastic. So meanwhile, this is happening. Yeah. Maybe you can share your screen and then I will change the SD card and everything meanwhile you share a screen and it will be easier for everyone.
Jay Clifford: 00:29:04.366 So if you just — yeah. If you just [crosstalk].
Marc Pous: 00:29:06.158 And I just stopped sharing. Yeah.
Jay Clifford: 00:29:08.105 Yeah. Perfect. Awesome. There we go. So hopefully, everyone can see my screen okay. So this is the repo we’ve been contributing in. I’ll link this into the chat as well, but you’ll get this all after the webinar as well so you can see it yourself and have a look through the source code with us. Essentially, as we said before, is balena is built on containers. And if you’re familiar with Docker and containerization, you’ll be familiar with Docker Compose. And when I was learning balena to do this project with Marc, this was my familiarity point or my anchor point for understanding how a fleet or an application — sorry, the building blocks are built. So if we jump into Docker Compose, you can see we basically build the services that we want to run as part of our — correct me if I’m wrong, Marc. So this is part of our application rather than our fleet, but yeah.
Marc Pous: 00:30:15.537 Yeah. And this is the application. Then if you need, yeah, to have a multi-container tool, so you need to run more than one service, you need to run this Docker tool, which is called Docker Compose. I didn’t mention this, but actually, yeah, everything that runs on balena automatically runs on any Linux operating system with Docker container. Okay? So just to clarify as well that there is no lock in here.
Jay Clifford: 00:30:43.224 And so just so you all know, when you run this project, you don’t actually have to worry about this Docker Compose, but this is really good for you to see when you want to build out your own projects on balena and deploy your own solutions to balena in building these. And so just to show you, we have InfluxDB 2 there. We’re setting a few environment variables locally just for the sake of the demo, but these can all be exposed via balena instead. So we don’t actually have to — which you’ll see later. But you don’t actually have to define environment variables within the Docker Compose file. These can always be defined dynamically within balena, which is super cool, which you’ll see soon. We have dashboard. Actually, interestingly enough, this is Grafana. Marc, do you want to explain a little bit more why you’ve sort of built upon Grafana as well?
Marc Pous: 00:31:36.226 Yeah. Yeah. So basically, we’ve built it this way because — by the way, I just turned on the power-up the device. You can see the sensors with the green LED. Sorry. Just to give you an update about the hardware. Yeah. But yeah, we do it this way because all the configuration file for having an already defined dashboard. [laughter] It’s defined on the dashboard directory.
Jay Clifford: 00:32:06.317 Awesome. And so as you can see here as well, we have those other containers. So this is the indoor air quality application. The connector is our Telegraf S connector, which is collecting the data from the MQTT broker. We have the Eclipse Mosquitto broker here, and then the Wi-Fi connect, which I think is super cool. Do you want to, Marc — Marc, do you want to quickly explain what that Wi-Fi connect is?
Marc Pous: 00:32:31.219 Sure. This is as well another block that we find very handy to have. So if you move your device from one place to the other, changing the Wi-Fi credentials of an IoT device, sometimes it’s really hard. So what we defined some years ago was a container, a service, that enables the device itself when it didn’t detect internet to get converted as a hotspot. So yeah, you could connect from your mobile phone to this access point and just connect the device to another Wi-Fi, adding the credentials from another Wi-Fi network. This super interesting if you have to move your device to have this service on the list of your Docker Composer, your application, because it will help you to give, yeah, this superpower to your device. You need to get into the network manager and change Wi-Fi credentials from the SD card or things like that.
Jay Clifford: 00:33:29.025 Awesome. And I guess just to fire under the hood, Marc, let me know when you’re up and running. We’ll swap you back. So the most about the work was contributed here. So the cool thing is with balena and the way Docker Compose works is you can actually build, as we saw, on top of standard Docker containers. And this is what we’ve done here. We’ve built on top of the standard InfluxDB container. And essentially, what you do is just provide a Docker file. And I just copied in two files that I required in order just to automate the replication process. So the two files I copied in was this Edge replication YAML. This is known as an InfluxDB template. So this is a service that we use to automate, adding certain assets to InfluxDB. Assets such as databases or automated tasks or even dashboard components can all be done through this templating procedure. So that’s the first step. And we’re using that to create a downsampling task, which automatically takes the data from our raw data Edge bucket and writes that to the downsampled bucket. The second here is the setup script. So this is the magic source. This is probably actually something you could run locally as well. So for anyone that just wants to have a play with the bash script, you’re more than welcome.
Jay Clifford: 00:34:50.332 If I quickly jump into that, essentially what this setup script is doing is it’s basically just running through the replication commands in order to just basically set up replication to your remote instance. There’s two main lines to replication. There’s defining a remote instance. So remote instance is either InfluxDB Cloud or another remote instance of InfluxDB OSS. And then after that, you apply replication queues. So you can have many replication queues to a single remote instance. And that means you basically just define them on a local bucket to remote bucket basis. So you can replicate all your buckets if you so wish to if that’s part of your process or how you want to develop with InfluxDB. And so yeah, so all of these work with environment variables. And the cool thing here is Marc’s going to show you how we’re going to set those dynamically within balenaHub. And just to define the last —
Marc Pous: 00:35:49.556 [crosstalk], actually, Jay. If you don’t want to do the replication, actually, there is a variable that if you don’t set up, yeah, it doesn’t work. It works completely in the Edge. So this is what we mentioned before just to reduce friction to developers. Just manage everything from device variables instead of, yeah, the need to develop everything. I’m sorry. And you wanted to go to show the YAML file, or?
Jay Clifford: 00:36:16.949 Yeah. Just really quickly, so the cool thing here is what we’re going to do is we’re going to be enriching our metadata as well so it’s easier to filter in our aggregated location on InfluxDB Cloud. So we’re actually going to be adding the location tag to our data, which means I can filter between mine, Marc’s, and his colleague’s device in the US. So this will become really important later, and we’re going to dynamically set that per device in balena, which is really cool. So Marc, if you’re ready, I’ll drop sharing on my [crosstalk].
Marc Pous: 00:36:47.977 I’m ready. Yeah.
Jay Clifford: 00:36:49.327 Let’s do it.
Marc Pous: 00:36:49.545 Should I share my screen or you want to share?
Jay Clifford: 00:36:52.276 Let me stop sharing and I will send that back to you.
Marc Pous: 00:36:56.193 Yeah. Everything work as a charm, so yeah, I’m happy. Well, it’s still updating, so yeah. As you can see, I have device called Solitary Voice. This is randomly selected. So yeah, it’s right now updating. That means that, as we are going to see, the supervisor is downloading all the images from all the services and the containers right now here, so probably we’ll need to wait some minutes. But the idea is that we have some device variables that, actually, we have with the default data. But well, actually, no. Yeah. Now I’m going to explain how does it work. But one thing that it’s important is that we have a variable called replication. That means that because replication variable exists, the setup script that Jay just show some seconds ago, it’s going to be executed. Something else, so these are the device variables, but actually, we have a fleet. So balenAir, it’s a fleet with 3 devices. You can see them on a map. So yeah, we didn’t shoot anyone. We have 1 in the East Coast near New York, we have 1 in Scotland, and 1 here in Barcelona. And we can just define variables on the level of fleet.
Marc Pous: 00:38:21.363 So this is super interesting because all the devices that will belong to this fleet will share the same tokens of InfluxDB Cloud, right? So I don’t need to go one by one to the device that’s just copying and pasting the tokens. You just go to variables and define these variables on the level of fleet and then all these variables will get inherit by all the devices that will join this fleet. Okay? Then, of course, you can overwrite as well. If I want to, yeah, send the data to another cloud or whatever I can just change the token for that device. But this is actually inherit for all the devices. And as we can see here, so we have two different locations. So for the location variable, we have two different, and on my device, it’s still not defined. So let’s go to mine in Barcelona. We see that it’s still updating but I am going to just go to device variables and I’m going to override these. I’m going to say, “As from Spain, at —” usually, when you just change the variable, the device gets restarted. I don’t know how this is going to affect that it’s downloading the images. But yeah, just to let you know that when you change one device variable, that might affect the setup scripts or whatever, the business logics of the containers running on your device. So usually, it restart over device.
Marc Pous: 00:39:48.623 So maybe we can go to Jay’s device. What do you think? Let’s check how’s your indoor air quality.
Jay Clifford: 00:39:55.586 Let’s do it. Yeah. It’s cool. It’s my favorite feature.
Marc Pous: 00:40:02.378 Okay. So you opened the window, right? Yeah. This is why you are wearing the [laughter] jacket, right? So as mentioned before, so we have the connector block, which is Telegraf; we have the dashboard, which is Grafana; IAQ, which is getting the data from the quick connectors here and just sending over MQTT; we have Eclipse MQTT; InfluxDB 2; and Wi-Fi connected with [inaudible] because the device is connected. Okay. Here we can see the local IP address of the device, the version of the supervisor, which checks if there is a new release, if you remember the version of the balenaOS, etc., etc. And we have another feature which is called public device URL that we enable here. And with this, we can access to the port 80443, which is HTTPS, or 8080. So these are the only ports that it may open. And so anyone will be able to access to this URL.
Marc Pous: 00:41:07.089 Yeah. I’m going to share your Grafana to everyone if that’s okay for you, Jay.
Jay Clifford: 00:41:13.165 Absolutely. Go for it.
Marc Pous: 00:41:15.317 So everyone will be able to access here. Okay.
Jay Clifford: 00:41:20.356 We’ll see if this Raspberry Pi can cope with the amount of people online. [laughter] [crosstalk].
Marc Pous: 00:41:26.752 Let’s see, yeah, how it survives if dozens of people just try to access it. We can see in real time how, yeah, your indoor air quality index is 30, it’s healthy, the CO2, the PM, so all the particles from the sensors that we have, and then at the end, we have the temperatures, 68 Fahrenheit or 20 degrees Celsius, and some humidity and some more data. So yeah, in just one click — we didn’t show. What we did is just, at least in the Edge, we deployed just an application, download the operating system, just flash an SD card, put it on a Raspberry Pi, and automatically, you have all of these application up and running on your device in a matter of minutes. And you don’t need to do anything. And the coolest thing is that, yeah, Jay just made this script to create this Edge to cloud replication where we can do more magic and apply some innovation and some interesting ideas on the top of this data. So I think maybe it’s time to check, yeah, if we can see more of the Influx.
Marc Pous: 00:42:42.572 Something that I want to show — let’s see if my device — I think my device is still updating. It’s slower than expected. So [laughter] —
Jay Clifford: 00:42:50.216 No, I can [crosstalk].
Marc Pous: 00:42:51.544 —maybe you can share your screen again [laughter] —
Jay Clifford: 00:42:54.437 Yeah. No worries.
Marc Pous: 00:42:54.678 —and show your InfluxDB in the Edge and how the automated task is created around sampling.
Jay Clifford: 00:43:01.529 Yep. Yeah. If you chuck the sharing over to me and then I can go from there.
Marc Pous: 00:43:06.417 Sorry for changing. The plan —
Jay Clifford: 00:43:09.042 No worries.
Marc Pous: 00:43:09.066 —was that, yeah, everything should be working.
Jay Clifford: 00:43:13.886 It’s the demo gods. Demo gods.
Marc Pous: 00:43:15.349 Yeah, exactly.
Jay Clifford: 00:43:15.895 Always the case. So let me quickly jump — so I’ve got the local IP address here of my device. I’m just going to — so let me just move Zoom out the way. This bar is the doom bar. You can never get to anything you need. So I’m going to chuck it here. So InfluxDB version two always runs on 80, 86 unless you change it. This provides the UI. So we haven’t actually exposed this via the public URL because InfluxDB is really designed to be kept behind the scenes like all databases are, and this is purely at an administrating view to InfluxDB. So if I log into our InfluxDB at the Edge on this device, you can see if I navigate to buckets, we actually have two buckets. So we have the Edge bucket, which contains our raw data, and we have the downsampled bucket, which contains that data that we’ve downsampled and enriched with the location. So if I navigate to Tasks, you can see that downsampled task that we loaded in via the template. So if I click here and I go her, go Edit Task, you can see that’s exactly the code that we created as part of our template. And you can see based on that, we’ve also added a secret environment variable. So that secret environment variable was added to add the UK to that.
Jay Clifford: 00:44:42.718 If I jump out of this and I jump into templates, you can see this is where these assets were created. So we have the downsampled bucket, the label, and the task view here, which is really cool. So moving from there, if I jump into Data Explorer, we can actually see how our data’s transformed. So if I quickly jump into Edge first, which is our raw view, you can see this is our CO2 data, which we can plot within InfluxDB as an administrator. And these are the filter or tags we have available to us to filter on that data. If I now navigate to down samples and then jump in here instead and I click on MQTT, we have our CO2 data again. We’ve slightly downsampled that data but we’ve also added our location tag, which becomes important for our replication. And that was our UK for me replication variable to define that.
Jay Clifford: 00:45:44.368 So moving on from there, I could show the cloud now, Marc, and then just see how you can [crosstalk].
Marc Pous: 00:45:51.756 Sure. Yeah. Of course.
Jay Clifford: 00:45:53.445 Yeah.
Marc Pous: 00:45:53.625 Good idea.
Jay Clifford: 00:45:55.179 So what I’ll do now is I’ll navigate to InfluxDB Cloud where we’re using replication to aggregate that data together. So I’ve created this —
Marc Pous: 00:46:05.307 Sorry to interrupt you. Maybe what you can show is — I already showed that fleet variables on balenaCloud, but maybe you can explain how to get the variables if anyone wants to reproduce exactly these because I think we all need that part.
Jay Clifford: 00:46:21.463 Yeah. So there’s a few variables that you require for basically setting up replication. And so the majority of them you can find under your organization’s settings. So if I navigate to Organization and Settings, you’ll need your organization ID, you’ll need your cluster URL, and you will also need two other environment variables to be set. This is your bucket ID and this is your API token. So if I navigate to buckets, here’s our CO2 demo bucket here, you’ll need this identifier here for your bucket ID. You’ll also need to jump into API Tokens, generate a new bucket, and even create a custom API token. Or if you’re just doing it as a fun demo, then an all access API token will guarantee you get up and running easy. If you want to run it in production, I highly recommend doing a write-only token and specifying it only for the bucket for security reasons. And that makes sure anyone who grabs your token can only write to the bucket and not do anything else maliciously within your database.
Jay Clifford: 00:47:31.749 So now that we’ve done that, what I’m going to do is I’m going to jump into the dashboard that we’ve created. So remember, we’re aggregating the data together from three locations. So if I jump into this dashboard here, you can see at the moment we’re aggregating data from UK and US because Marc’s device is still being set up. But what I can do, let me drop this back a few days. Let’s try two days. Da, da, da, da, da, da, da. And there we go. Let’s maybe drop it back just a little bit more. Try seven. There we go. And my apologies for the coloring. This was definitely a Grafana job if not. But what you can see is in this initial task here, we’re actually writing the data directly from all 3 Edge devices into InfluxDB Cloud. So we’re aggregating that data together, and we’re using that location tag to separate our data so we can filter between those data points, which allows us to plot the data individually on our graphs that we see here. So this is great when we can start bringing data together like this because it allows us to run those two algorithms that we looked at before, which get quite interesting.
Jay Clifford: 00:48:56.515 So the first one was MAD, which is Median Absolute Deviation. And that sort of shows deviation from the pact. As you can see, since we’re running on this on seven days’ worth of data and we’re running this every minute, it takes a minute to process these algorithms so we’ll give it a second to do.
Marc Pous: 00:49:14.057 It’s really nice that it shows a time of computation.
Jay Clifford: 00:49:18.786 It doesn’t if you want to show you something performant, and then it doesn’t look so good, so. [laughter] But we’ll get there.
Marc Pous: 00:49:25.178 No, but I like it - I don’t know - better than just a spinning wheel with no information, right? It looks like, yeah, it’s alive.
Jay Clifford: 00:49:33.219 This is very true. Let me see if I can bring the data down just slightly. I feel this is what Zoom always does. It always slows everything down.
Marc Pous: 00:49:44.006 By the way, just to give you some context, I just stopped the previous SD card and I just flashed a new SD card because it was super slowly. This is one of the problems to trust on SD cards. SD cards are one of the main issues on this type of single board computers. So I just changed to another SD card and let’s have fingers crossed that it works faster than before.
Jay Clifford: 00:50:14.347 I’ve also reduced my time period down a little so you can see. So you can see based on the anomaly detection algorithm that based on this time period, so we can actually see it with the human eye and it’s great that the algorithm can see it too, is we can see that based on Marc’s devices highly deviating from the pact at that point in time, it’s just way higher in terms of its median than the US and the UK device, which is sort of showing fluctuations in CO2. A cool thing here is that’s represented as an anomaly within the algorithm, which we can count. So we can count those anomalies and we can also break into these and see why they’re anomalous and we can see the differential of why they become anomalous. And that’s purely because of how far you are deviating away from the pact. And this is all configurable within the Flux language when generating the algorithm. We also have the ability to do this via a timeline as well, which is really cool. So you can see when someone was anomalous versus when someone was normal. And based on the very limited data, you can also see [laughter] that very limited data point where we’ve tried to forecast that data. This, obviously, is not working very well because we’re only doing that in a very limited supply, but hopefully, when Marc’s data comes in at some point, we’ll be able to see more of that data.
Jay Clifford: 00:51:45.139 But what we’ll do is we’ll show screenshots after the fact. I think we actually have a screenshot to show it up and running. Let me see if I can grab it. Do we have a screenshot there? Yes. So you can see a little bit better here. You can see the anomalies more consistently within the data. You can see exactly why that’s happening and see who’s been anomalous at what time periods throughout the day, which is super, super cool. But yeah. And, I mean, unfortunately, we couldn’t get yours flashed in time, Marc, but I guess we could just go to what’s next and answer some questions. And if it’s up and running, we can show people that.
Marc Pous: 00:52:21.750 Yeah. Indeed. Sounds good. So just as a summary, it looks like we go super fast. We did a lot of things. So we just flash — so we enable any developers in one click to deploy InfluxDB connector, MQTT, and Grafana, and an application. In this case, it’s getting air quality sensor data. And we just deploy automatically, managed through device variables, where to move the data from sensors just without coding anything. Second, we just automatize the way to create automatic tasks on InfluxDB to replicate some part of the data on the cloud, and yeah. And that’s just on one click. So I think this is super amazing. Maybe you have to go on the left, probably, to the tips and tricks instead of the step-by-step tutorial, Jay.
Jay Clifford: 00:53:24.729 Oh, yeah. Sorry. My bad.
Marc Pous: 00:53:28.817 No, on the top. On the top.
Jay Clifford: 00:53:30.618 Yep. Yeah. Sorry. Let’s get started. Tips and tricks. There we go.
Marc Pous: 00:53:35.528 Okay. So we wanted to finish with some tips and tricks that if you want to get into this, what else we recommend to check. So as a balena point of view, yeah, so my recommendation, if you love Telegraf as we do and if you like all the Influx products, our recommendation or my recommendation is, “Hey, go to the connector block.” You have the URL here but if you go to hub.balena.io, you will find it there. And just explore the plug-ins that we have, as mentioned before. So what these plug-ins are doing, they are just trying to create the configuration file so you automatically — just changing the device variables. In this case, we didn’t change anything. The default working, it’s getting MQTT from a specific topic and just store on InfluxDB. But if you want to instead of getting MQTT data, you want to get HTTP data from a website, from etc., or you want to store it on Azure or AWS or whatever you want, you can do it just with changing some variables, adding some tokens, etc. So just take a look here and just apply your innovation and your ideas on the top of this. And please, this is open source, so feel free to contribute on this repo so all the developers that will come next will get these innovations and we will be able to do some magic things.
Jay Clifford: 00:55:03.400 Awesome. And I’ll quickly just fly through my top tip. We showed some really basic algorithms that are included in Influx. Well, I say not basic. They’re actually not trivial algorithms at all. We just use them in a very trivial way within InfluxDB. So my recommendation is build containers that use some of these other libraries. I mean, these are based on Python examples, Anomaly Detection Toolkit, FBE profit, neural profit, cats, amazing algorithm libraries that you could build Docker containers for. That’s my plan, is to build some Docker containers for this and I’m basically bring that data, your time series data, through these libraries, and then push your forecasting and your anomaly detection into InfluxDB and process these at the Edge. So that’s my plan at some point soon. So anyone that wants to help me on this journey for balena, please let me know and I’ll happily work with you to help contribute them should you so [crosstalk].
Marc Pous: 00:56:01.787 Yeah, this looks exciting.
Jay Clifford: 00:56:05.644 And so what’s next? So we’re going to get cracking with some questions because I know you guys have had a lot of questions for Marc about balena. So I’m just going to quickly gloss over this. Check out balenaHub. We’ll send out the slides afterwards. There’s a QR code. There really quickly you’ll be able to scan that to get to the project, get the hardware, and get started with one click. As Marc said, you literally just have to click Deploy, set up your environment variables, and you’re done. It’s really that easy.
Marc Pous: 00:56:33.394 And yeah, just to get in contact with us, just to go to forums.balena.io, and yeah, we can talk from there.
Jay Clifford: 00:56:41.340 Perfect. And Marc’s also within our Slack as well, so if you have any — if you’re part of the InfluxDB Community Slack as well and have any quick questions, Marc will be around there today as well. So just to let you know.
Marc Pous: 00:56:54.288 Yeah.
Jay Clifford: 00:56:54.770 And, of course, on the InfluxDB — yeah. And, of course, on the InfluxDB side, we have InfluxDB University. Learn about how to use InfluxDB and Telegraf and how those work. And we also have our Community Slack and Discourse forms as well. So that’s where I hang out. That’s where Marc will be hanging out today. So just come and get in touch if you have any more questions after. So without any further ado, I think Caitlin, we’ve got some questions in the chat. So I’ll let you be question master.
Caitlin Croft: 00:57:26.036 Yes, we do. All right, what do you feel are the advantages of balena over Azure, IoT Hub, or IoT Edge devices?
Marc Pous: 00:57:37.317 Wow, this is a super good question. Thank you. Yeah, it’s I think it’s Roger, right, saying this question?
Caitlin Croft: 00:57:46.534 Yes.
Marc Pous: 00:57:47.667 It’s a good question. So it’s up to you [inaudible]. No, you can choose the one that you prefer. So if you already work with them, just — the magic that we show today, it’s something that it works with any Linux operating system on Docker, and we automatize it with balena. If you think that you can make it work for Azure that you have or AWS or whatever you use, yeah, feel free to do it. I cannot tell you the — so the advantages of using balena, probably I’m not the right one to mention, but we offer an open-source stack on all of the steps, we are compatible with more than 100 device types, and we will give you all the support that we can to make you successful on your projects. I don’t know. But if you want to keep using Azure, I’m happy, yeah, to help you as well to Azurefy this application. I don’t want to get into these discussions that what is better or advantages. But yeah, [crosstalk].
Caitlin Croft: 00:58:55.029 It’s always challenging with the three cloud service providers. Everyone seems to have their preference and whatever you already have, if it works, great.
Marc Pous: 00:59:04.077 Exactly.
Caitlin Croft: 00:59:05.484 Does balena offer some offline solution for fleet management? There are many cases where your Edge devices are in private networks, impractical networks, and users wish to work with some of the fleets offline.
Marc Pous: 00:59:19.531 This is a very good question, to be honest, yes, as Shan, yeah, just nailed. When they are in the Edge sometimes they are not online. Actually not. Not but I’m going to explain how you can do that. So when the supervisor just power up, it checks the fleet ID and needs to connect to open balena or to balenaCloud to just get the latest release. So you need something like an entity in the cloud or somewhere that just fits the supervisor of the device. You have different options. One hack all balenaOS workflow to just get releases as it’s open source, you can do it. Second, if you are a company and you want to make it for an enterprise, we have a solution that we call balenaMachine. So that makes it. You install balenaCloud locally on your premises so you can have a private network offline disconnected from internet with everything that we show, actually, but on your private network. But yeah, these are just the two possibilities that you can have.
Caitlin Croft: 01:00:33.260 Well, can you have multiple —?
Marc Pous: 01:00:35.057 And sorry. Sorry. Sorry, Caitlin. Just to give an example, so we have customers that live on these type of situations, and what they usually do is they open windows of time where they accept the internet connections on the premises that usually are offline. So they do the maintenance windows and then they open doing one hour the internet to those devices controlling their network properly, and then the devices get updated and get the latest service or get the software update or an operating system update. So yeah, we have customers living on that situation and they handle it as well with the normal software as well.
Caitlin Croft: 01:01:20.777 Can you have multiple services? I’ve seen that on free plan you can have only one service at a time on one fleet.
Marc Pous: 01:01:29.987 I don’t think so. And I think you can when you create a fleet. You can select that you want a multi-container fleet, right, or not. If not, I’m happy to help you on the forums. If you cannot have it direct.
Caitlin Croft: 01:01:44.441 And for anyone on the webinar, if you ever want to get in touch with Jay or Marc — everyone should have my email since you registered for this webinar, so if there’s any more follow-up questions that we can’t get to today, just feel free to email me and I’m happy to put you in contact.
Marc Pous: 01:01:59.585 Yeah.
Caitlin Croft: 01:02:00.842 Does a balena image rely on cloud in order to configure itself on first boot?
Marc Pous: 01:02:12.812 Yeah. So yeah, this is actually what I explained before. So balena image, the supervisor of the device just connect to balenaCloud or open balena to check. Yeah. To understand what’s the release that needs to get downloaded, and then it can start. Yeah. If I understand well the question.
Caitlin Croft: 01:02:34.358 Does balenaOS support AB file system and partitioning? And worst-case scenario, if during an update, the device gets broke, is there a way to roll back to a previous version?
Marc Pous: 01:02:47.286 Yeah. Indeed. Yeah. We support AB file system partitioning. Actually, we have, yeah, a lot of documentation that I can share. Well, yeah. I think this is our design. It’s actually balenaOS. As I explain, it’s an open-source Linux operating system based on Yocto, so. And we designed balenaOS with emphasis on reliability basically for devices that we think there needs to be long periods of time connected doing operations. So these are important. So I think we have this tail of the cattle or the pets, right? Yeah. Yeah. If a cow dies, yeah, just put another one like in the DevOps scenario, right? Your server dies, you just change the server. But with an IoT, if an IoT dies, maybe it’s in a really hard place to replace it and it’s not that easy. So we try to design everything that we do and we try to reduce this friction as much as possible because we know that an IoT device, it’s a really important asset that you cannot replace easily. So yeah. So balenaOS and balena — yeah. And that all the diagnostics and the supervisor has been designed for have a really reliable system. And even the — sorry. Sorry to [intervene?].
Caitlin Croft: 01:04:16.899 It’s okay.
Marc Pous: 01:04:17.408 And as well for the operating system. It’s not just for the software update. It is well for when you do host OS updates. It is well. If it doesn’t work, the host OS update, then the other falls back.
Caitlin Croft: 01:04:30.533 Awesome. Thank you, Marc. That was very helpful. I think we’ve gotten to everyone’s questions. If anyone else has — oh, another question. Is there any Ansible integration for balena devices?
Marc Pous: 01:04:45.920 No. We don’t support Ansible. We only support Docker Compose.
Caitlin Croft: 01:04:51.440 Cool. If anyone has any more questions, please put them in the chat. We’ll stay on here for just another minute. Thank you, Marc and Jay. It seems like this was a really good topic. People had lots of questions. So thank you so much for presenting today. Really appreciate it. This webinar has been recorded, so it will be made available probably by tomorrow morning. Feel free to email me if you can’t find the recording. The good news is the recording is available the same link that you used to register for the event. So thank you everyone for joining.
Marc Pous: 01:05:29.454 And by the way, Caitlin, we have my device up and running, and.
Caitlin Croft: 01:05:33.594 Nice.
Marc Pous: 01:05:35.061 Finally. And we can see my air quality if you want. If you want to know. If you are wondering if I have good quality of —
Jay Clifford: 01:05:40.089 I will say, I’ve also got the data. I’ve also got the data on our dashboard now as well, so I saw that your device came online.
Marc Pous: 01:05:47.677 Okay. And is it good or bad?
Jay Clifford: 01:05:51.275 It’s pretty bad. [laughter]
Marc Pous: 01:05:52.410 Oh my God. Let me open the window quickly. [laughter] I just made it [in part?] because I just closed the door and we wanted to do this live demo. And actually, yeah, we have some LEDs here just blinking that I should do something. But yeah. Sorry, I just wanted to interrupt you to —
Caitlin Croft: 01:06:08.257 No, I love it.
Marc Pous: 01:06:08.929 —show that everything worked. The demo gods were slower than expected, but yeah, they listened.
Caitlin Croft: 01:06:13.697 It is true. As soon as you’re on a Zoom, everything else on your computer sometimes seems to take longer.
Marc Pous: 01:06:22.942 I know. All right.
Caitlin Croft: 01:06:25.632 Well, and Jay, did you want to show it on the InfluxDB side?
Jay Clifford: 01:06:30.070 Yeah. Sure. Do you want to chuck it over to me, Marc, and I can quickly show?
Marc Pous: 01:06:33.990 Sure. Yeah. [laughter] We play a Ping-Pong game today, yeah?
Jay Clifford: 01:06:37.724 Yeah. I know. It’s quite good fun. We’ll keep the service going. We haven’t dropped the ball yet. I hope you can see my screen now.
Caitlin Croft: 01:06:44.531 Yes.
Marc Pous: 01:06:44.709 Yeah.
Jay Clifford: 01:06:44.607 And you can see this is Marc’s data just coming in. So we’ve got that reading that he just had, 1.9K. And we just got a second reading in, so that’s coming from the task downsampled every minute. You can see Marc has already been marked as anomalous for that horrendous air quality. That CO2 error. And you can see the differential that was added there. So he’s very much in the red for us at the moment. He’s come onto the timeline as well. So you can see the anomaly there while everyone else has been running normal. And you can see we’re slowly starting to get a forecast. You can see this is their expectation at the moment.
Marc Pous: 01:07:20.085 Oh, wow. Oh my God.
Jay Clifford: 01:07:21.192 You’re going to get worse. But this is purely based on two points of data, Marc, so this is not a good forecast, [laughter] so. But this is just to show in the future. So yeah, this really shows how quickly Edge data replication starts replicating data to InfluxDB Cloud.
Caitlin Croft: 01:07:40.752 Beautiful. Thank you, Jay.
Jay Clifford: 01:07:42.250 Here we go. And the value looks a bit better. That forecast looks a bit better.
Marc Pous: 01:07:47.212 Oh, nice. Hopefully, [AI?] will survive this.
Jay Clifford: 01:07:52.148 Yeah. [laughter] No worries.
Caitlin Croft: 01:07:56.095 Cool. Thank you everyone again for sticking around. I know we’re completely over but it’s always fun to see dashboards and see it working live. So I really appreciate you sticking with us. Thank you, again, everyone, for joining. And I hope you have a good afternoon or evening or wherever you are. And once again, the recording will be made available by tomorrow morning. Thank you.
Marc Pous: 01:08:20.768 Thank you.
Jay Clifford: 01:08:21.867 You too. Have a great evening, morning. Cheers. Bye.
Developer Advocate, balena
Marc is currently the balena.io Developer Advocate. He has more than 15 years of experience connecting things to the Internet. Marc is also a co-founder of the IoT Coffee Talk. He is also responsible for managing the IoT communities in Barcelona and Munich, organizing meetups and inviting up-and-coming IoT companies to pitch their products. Furthermore, he is responsible for co-organizing the international event IoT Stars during the MWC at Barcelona. His advocacy efforts for the Internet of Things and his stature (6,9 feet) has earned him the nickname IoT Giant.
Developer Advocate, InfluxData
Jay Clifford is a Developer Advocate for InfluxData. Before joining InfluxData he previously specialised in solving industrial pain points using Vision AI and OT connectivity. Jay now uses his experience within the IoT and automation sector to enable developers and industrial customers alike to realise the potential of Time Series data and analytics.