 Hi everybody, this is Zeek. It's an honor to be here this evening, afternoon, morning, depending on where you're located. I wanted to share with you my experiences using Fedora Linux to create a private and locally based mat home hub. I'm hoping that during this talk many of you, especially those in the smart home space, will appreciate how much open source software has really become the bedrock for much of the smart home devices you see out there on the market. I'm also hopeful that you will gain some insights on how to build some very cool features and applications for your very own smart home projects out there. And when you do, please do let me know. I would love to hear from you on what you're putting up and what you've set up. I can be reached in several, several places online, but maybe perhaps I need to first say who I am. Officially I'm Joseph Zeek Sooka, but I prefer Zeek or some people say ZIK or ZIK depending on your locality. I'm an engineer with Jambula Labs located in East Africa. So I am truly, truly honored to be here, but feel free to reach me on any of these socials, like Amsterdam, Twitter or X, LinkedIn. I'm also available on GitHub, so you'll find some repositories including these projects on that link there. I also write tutorials occasionally, how tos, specifically on Linux and open source software in general. So feel free to check out my personal webpage too. And anyway, I post, I would really appreciate you either following me, liking what I'm doing, but I'm really, really honored once again to be talking to you. I want to begin by just prefacing why a smart home to begin with and why Fedora Linux and especially in a smart home in a remote area such as where I am. I think basically smart homes have sort of in the last decade have really taken off. I think most people look at like smart speakers but really the last 10 years there's been a lot of advancement in more than just smart speakers, but in general technology that is really meant to help you handle the mundane at home. So the idea is that you don't have to necessarily get up to turn on a light or you don't have to remember whether you close the door or whether you lock the window. Those are things that presumable technology is supposed to do. We were promised that and it's supposed to do that. And for the most part, that's what a smart home does. The idea is that you don't have to remember each and everything. I personally, I think the major motivation was really more trying to push open source software to mimic or to come close to what most of the devices that are proprietary try to do. So for all the features that you get with proprietary software based products I really wanted to do something similar and even much more. So the idea is that if open source software could do it then why not go that route? I also really, I think naturally just like to break things from very early childhood of mine. Like most of you as a geek, you really are always fascinated. So this was not something that I was surprised I would end up doing. I also learned a lot in the process. So the learning bit is also a great motivator. So I am glad I really went with this project because I really learned quite a lot about Linux in general, Fedora, and just open source software. Of course there is always the money motivation who doesn't like money, right? Fedora is very well suited for a project like this one because someone might ask well why not go with bill route, yokto, all these that are embedded software or OS that are meant really for embedded devices. But first of all you have to understand I was starting this at a very nascent stages of a lot of these projects. 2013, most of these projects were just barely beginning. But also Fedora was also kind of like had been proven in some ways. Proven was easy to use. It was my primary distribution that I was using. In fact, I've always used Fedora up to now. So it wasn't a no brainer for me to basically go with Fedora as opposed to any other distribution. But in terms of the smart home, traditionally Fedora has been associated with being the distro that tries to be on the cutting edge. So some of the latest technologies, you remember things like system D, pulse audio, most of those began really on Fedora before other distributions eventually picked up on those technologies. So in a smart home setup you really want something like that where you're trying to tap into new technologies, cool features, things like that that might not be available on all the platforms. So Fedora offered that opportunity. Plus of course it has a very great community. A really large community, very helpful folks out there. Thank you for the people who really sometimes go and recognize for doing what I consider God's work. So I started off in 2013 and I wanted to do a smart hub that basically would fit my environment and we're talking again an African environment with lots of infrastructure challenges such as internet and power. So I came up with Jambola TV which is really a low cost smart home automation and entertainment hub and the idea that it would control your lighting, security and entertainment in the home and basically serve as a nerve center of sorts of the home. But the idea was to keep, I wanted to keep it private and really local. So the idea is that I didn't need something to go searching the internet in order for it to be able to function, right? We've all had those stories where companies shut off their cloud services living users, smart home users in the dark. So I really didn't want that sort of scenario. But also just internet in general in this part of the world is a little bit expensive and quite slow. So plus also issues to do with power so the idea was to really build a system that could really withstand some of those challenges. So yeah, I know what you're thinking. It looks a bit clunky but initially that was the box itself or what I would call the hub and really more a piece is set up as you can see there the workstation that I originally was using for this, pretty humble but quite did quite a bit of stuff there. So why the name Jambula? Okay, so this one I just included just for trivia. It's basically really Jambula is like a colorful summer fruit and my friends from India would know what I'm talking about. Say Java, sometimes they call it Java Plam or Black Plam or some people call it Jamun. Here we call it Jambula and it's really a tropical, subtropical type of fruit and I always like to tell this little story that when we're kids we would always play and usually the Jambula tree was always like that magnet so whenever your parents would send you somewhere you'd always branch off to pick some Jambula and of course when you would return you'd tell you to open your mouth and usually it leaves like a papo or collar on your tongue so they would always know you've been playing and of course what followed wasn't always nice but in terms of the smart home the architecture that I decided to settle on was again this idea that the smart home hub would be the nav center or the central server in a home and everything else would sort of revolve around that so basically what a smart home hub should function like but I also wanted to have a hub that basically the devices could communicate to and it could also communicate to the devices and they could also communicate with each other so the idea is some sort of like mesh but also be able to function even without the hub in some situations so if you're looking at, let's say the cameras if the hub wasn't on for whatever reason that in fact the cameras would continue to function that if the entertainment bit was off then the hub would continue to function so the idea is that independence of each unit in the home so the way we tried to connect it all together was using wireless obviously 8.211.x and then also using wired ethernet depending on the type of home and then of course Bluetooth connections for things like lighting, motion sensors I basically tried to go with Z-Wave although you can also use ZigBee I was really excited about by the way the MATA standard but that's a story for another day but all of that was also like it's nice to be able to have also MQTT to publish alats and things like that but the idea is that you keep it local and everything is not, is local everything is not going into the cloud some of the features that the hub has one is the ability to be able to turn on turn off lights if a person is home or aware of course if someone enters the room turns turning on the lights and then when they leave the room turn off which is nice when someone arrives being able to to announce their arrival being able to have them maybe play their favorite music as they arrive typical smart home stuff that people like to build initially being able to turn off appliances let's say when you leave home or you're going to bed the one I like is where I was able to to get my jogging statistics updated every time I would return back from jogging so that was pretty cool and then of course maybe when the kids have returned home being able to to alat letting you know the kids are back home from school if someone actually comes in at least if you're away getting alat either using some type of text messaging or even a phone call being able to turn on security cameras so pretty much the standard some smart home features another feature that I really like this one I feel is important in a smart home setting is in the event of a buglary kidnapping file medical emergency being able to trigger events depending on what is happening and being able to send that to key contacts so using WhatsApp WhatsApp is big in this area but you could also use telegram or SMS I also set up an ability where you could actually call have an automated phone call go to a key contact to a doctor, to the police or even the fire brigade and also have a location with directions to your home but in terms of an actual if there was a buglary and security cameras picked up on it there would be a siren activated so that is also a nice thing to have so one of the things that I really spent a great time doing was to really create an alating system that was really I want to say very local so very, very useful and not very dependent so much on the phone because when you get home sometimes you place your phone on the couch or you leave it in the bedroom so I wanted something where especially for key notifications you would always be alerted so I came up with an in-house streaming radio to basically alert as well as key information so for example if there is a severe weather warning for example thunderstorms in the area or rainfall and a lot goes off I do have on the website I do have some of those clips in case you want to hear how it sounds like birthdays and anniversaries appointments, reminders, holidays being able to know so on those birthdays coming up being able to know if actually you need to charge your phone battery or if your electricity, mida units or the internet data is running low sometimes here we have power outages it's actually quite frequent but also sometimes when the water supply goes off so it's nice to be alerted on those outages the other thing that usually smart homes tend to do is being able to have sort of like a morning routine and a night routine so I have that also implemented so you're able to then wake up and have your news just the summer of the news play to you your weather just reminders of the day things like when garbage if today it's garbage collection day it's nice to know and also just to give you tabs on what happened maybe in the night if there were any security incidents but there are also these regular announcements throughout the in-house radio streaming throughout the day so you can set up breakfast, lunch, dinner, movie announcements time announcements there are also like when there are significant temperature changes just being able to alert you incoming phone calls and then of course on the screen being able to have an image of a camera if there's been a trigger in some sort of incident on one of the cameras while you're watching a movie same thing with a phone call if you're watching I in terms of entertainment we basically set up a Kodi or I set up Kodi basically to do that and Kodi is really nice but sometimes a bit clunky so but you could use any other media center the idea was that most of the movies shows would be loaded onto the hub and then Kodi would pick it up it would also play free to air TV so I spent a great deal of time doing DVBT setups around that time 2013-2015 we're going through an analog to digital migration actually most parts of the world we're going through that so it was a very good time for me to basically get DVBT to support setup there also so like local channels you basically can see that satellite channels also available you could also stream internet TV and events FM radio, online radio watch movies and store pictures collections just like any media center so that's not really so much of a big deal but being able to do that all that on Fedora based system is really cool in terms of entertainment again one thing I really spent a great deal of time was being able to setup like a music server where I could stream to any part of the home and so you could use your phone you could be seated in the garden with a tablet and listen to the music that was actually coming in through the house and it would be kind of all synchronized so you get what you call a multi-room audio effect I also did a bit of TV streaming of live TV so re-broadcast of sorts so you can think of it as your own TV station at home the idea was that you could then schedule channels programs that people could stream either on video and demand or live so in terms of lighting the normal stuff I setup turning on and off at dusk and dawn when someone enters a room and leaves the room on and off and then also being able to use like color lights to be able to notify so for example being able to turn the light to red if let's say there's a severe thunderstorm on the way being able to turn the light to purple in case of a security issue utilities those are also monitored by the hubs so being able to have selected appliances monitored how much energy you are using being able to be notified if you are running long meter units we have a prepaid electricity meter system in this region I also wanted to be able to monitor usage water usage and power lights during outages being able to monitor water tank levels and also LP gas cylinders which is what most people use to cook in this area how is the hub accessed? well most of the hub can be accessed using a web interface so you don't necessarily have to have internet so you can just as long as you have a web interface it could be your laptop phone you can access it so you can also use the telephone network to dial in basically follow an IVR prompt to either turn on the light or turn off the light maybe you forgot to turn off the lights as you left in the morning you can call in and basically turn it using the phone or even the internet if you do have access be able to turn the internet so in terms of the hardware I set up initially on Intel Seleron 1.6G so it's not much so if you're thinking why not a Raspberry Pi that was 2013 at the time I don't even think the Pi was out as yet but now you could actually do something like a Raspberry Pi 5 most of the hardware is really like USB dongles that I was using for the connectivity so for Z-Wave I used an Iotec controller Wi-Fi devices and then of course DVPT 2 dongles and a 3G LTE connection so for the clients a bunch of Raspberry Pi is basically some of them for entertainment but some really more for to actor sensors smart lights, motion sensors and of course security cameras and lots of smart hardware that you could use I want to talk about a little bit about the software itself because that's where really Fedora comes in and I used quite a bit and I know it's a lot of moving parts but again I was trying to leverage at the time different open source software projects to try and accomplish some of the tasks that might seem a bit easy to do now but at the time were a little bit challenging so I had to deploy basically different software projects to really do some of the things that I wanted to do as I will talk about shortly Fedora itself I used as the best OS for the smart home so I started off with pre-releases of Fedora 20 so that was around Fedora was released around December 2013 but already began using the pre-releases so by the time the actual for release arrived I was already on it I made a decision initially to basically recompile in Xcano and I believe that decision really paid off in the long term so the idea was that I needed to be able to support newer hardware or hardware that was not accommodated for in the maintainers the Kano maintainer config files basically the idea was that if something new came up I would be able to simply recompile the Kano and have that device supported much of the installation was automated so I used kickstart installs and Fedora has a very great page on kickstart installation so if you're really into automated installs especially if you're with a large organization you're trying to set up Linux on several workstations I would really recommend you use kickstart I specifically used a project called Kobla, I'm sure some of you will recognize it but it's basically DHCPPXCTF TP server setups that you have to have and then use the kickstart files to do what you need to do in terms of the deployment also I made the decision very early on to use LXDE as the Graphico display manager GNOME was a little bit heavy on resources so I figured I would use LXDE which is a bit light on resources I also tried to customize the boot splash screen to try and just give it a nice looking splash screen so in the source code you will see some of that I also disabled quite a number of services that were enabled at least in Fedora 20 at that time by default so whatever was needed I disabled I also created my own local repository for the RPMs by the way that's really proved to be daunting task as anybody was done maintaining that is a bit of a nightmare but luckily most of those were for just a few few packages but most of those packages were really based or installed using a kickstart file during installation so that really helps speed things up a little bit in terms of building the packages beyond the RPM fusion Fedora repositories I really wanted to compile most of the major open source packages that I was going to use especially the key ones and here is why I wanted one to avoid running into end of life and unsupported versions I think very early on I knew this would take quite some time of course it's been many years so I really needed to avoid that I also wanted to support certain unique features that were not included by maintainers of certain packages so that was really necessary that I compiled from source just to allow it to be a bit small in terms of size so that was a key decision I made very early on some of those packages that were really key for this for this project one include host APD so host APD some of you have seen like traditional on most Linux distributions you are using WPA that's part of the host APD package and host APD is the server side that is an implementation of a wireless hotspot on open source systems so if you are really thinking of building a wireless hotspot then I would really recommend that I would also recommend Ichinga I usually pronounce Ichinga but I think it's Ichinga or Ichinga I guess my German friends would pronounce it better but the idea is that and by the way it's an adjust fork if you're not familiar with monitoring software but I wanted to leverage Ichinga to be able to pick up certain events very quickly and a lot so again keep in mind this was way before things like home assistant things like tomotix, I think open hub but I really wanted to use Ichinga to really do the monitoring to see what was going on and then quickly send out a lot and it's a bit overkill but it really does the job very well so I'm glad I chose that actually even recently within home assistant I still use some of that some of that workflow to basically do the alerting so I would really recommend in case you are looking at monitoring Ichinga Next Cloud which is really my favorite one of my favorite open source solutions out there if you have not heard of Next Cloud they are really really big right now in terms of the office productivity space really replacing almost like your Google 365 apps so I would really recommend Next Cloud if you're really into file sharing things like that what we really wanted to use Next Cloud 4 was mainly or what I wanted to use Next Cloud 4 was to do calendaring so being able to monitor what was coming up and also just for sharing video files pictures and sound files Next Cloud does a great job for that ZoneMinder is really more of a security for CCTV cameras so it's a CCTV camera surveillance software server so you basically set up you basically set up like cameras that then the server controls but it's really nice because it also has mechanism to basically alert you again this was way before things like frigate that you probably are aware of right now then another favorite of mine was TV head and I spent quite a great deal of time on this especially for the TV streaming especially the DVB T2 streaming that's what I used for the back end it also has some very cool things you can do so really literally setting up almost like your TV channel or a set of channels that you can then stream out to devices wherever they are within that Wi-Fi hotspot range Kodi which is also very familiar I just wanted to give a plug to them also and then of course Remind this one might not be familiar to some of you but it's a nice little program open source program that is quite sophisticated and really does some very cool things so like I use that also for reminders things like birthdays so that was really a nice choice to begin with of course if I were starting out today I would probably go somewhat of a different route but I just wanted to give a plug to projects like Home Assistant Open Hub and Domotix all of these are fully supported on Fedora Linux and if you're not familiar with any of them definitely look them up there especially like Home Assistant that's taken off in the last couple of years so I love them because they're doing some really really great things so check them out on the web I just wanted to talk a little bit about what I'm thinking of in terms of the next generation of this project obviously time allowing and resources I'm hoping that I can add support for system boards like Raspberry Pi especially starting with Raspberry Pi 5 the new smart home standard that just got launched recently it's supposed to pick up so hopefully a lot of devices coming out for the smart home will support the matter standard new wireless standards like IE802.11AX Wi-Fi 6 plus Wi-Fi 7 I would really love to support that and also better voice assistant using satellite clients I did not do much in terms of voice assistants except for a little bit of work on using pockets things but it was pretty rudimentary did the job but very rudimentary so I would really want to focus on that so you have a completely open source and really DIY type of setup so that's pretty much my talk again I'm hoping that this provides you with some insights on some of the things you can do with open source software and just understanding that a project like Fedora is very powerful when it comes to setting up an embedded device solution despite what you might read out there I would really recommend Fedora and also just because it's really been around and really proven so check out the project if you're still not into it the links to the software the code that I used are shown up there on the screen please just check them out if you have any comments or any contributions please feel free to let me know but I just want to say it's truly an honour to once again have been here with you and I wish you the best as you continue with the summit