 Welcome to the show. It's me, John Park, and this is time for John Park's workshop. Hello, everyone. I'm just getting my audio set up here. I see that it's working, but it was being shy about showing me the little VU meter that lets me really know it's working. So good. I'm glad that's all set up. Thanks for coming out. It is going to be a fun show. We got some interesting, I think, interesting things. I want to thank everyone for stopping by in the YouTube chat. I see you there. Hello, also over in the Discord chat. If you are tuning in on Twitch or something else, Facebook maybe, and you're wondering where's all the chatting, people like to chat, it's probably happening in Discord. If you want to go to the Adafruit Discord, it's at adafruit.it, that's our link shortener, adafruit.it slash discord. It'll get you an instant invite, and off you go. Got a little alert from Seagrover there that my audio level was peaking at negative 10 dB. We really want to be closer to negative 6, right? So I just gooseed it a little bit. We should be good. I've also got the air conditioner on, but I keep hearing from you that you don't really hear it so much as I do, but I don't want cameras overheating and such, which is what tends to happen this time of year in Southern California. So what have we got? I'm going to put on my glasses so I can actually see some of these. The font is a little small on my Discord. Hellweaver666 says, hi, JP. Hello, Hellweaver666. Thanks for stopping in. Andy, Seagrover, yes, Mr. Certainly, Todd Botte. Look, I can see everyone's names now. Jim Hendrickson, thanks for stopping by. Same over on YouTube. David Essa, hello. Nicholas Bourne, TroutSGG, Jacob Munford, Randall Bond, and Patrick Rankin. Thanks for stopping by. Hey, chaotic cosmos. Ooh, I sound silky. That's good. All right, yeah, I guess that AC doesn't bug you the way it bugs me. All right, so let's get on with this thing. First of all, I wanted to mention over on our jobs board, we've got jobs.atafruit.com. That's a free jobs board, and that's it right there. If you have a look at it, I was noticing there are some positions up here for a DevOps engineer at Passport Inc. in Charlotte. There's a, someone's looking for a Python program for one job, just one job with NeoTrailus button LED board in Argentina. There's a circular PCB with SMB 5050 and power conversion and micro interface gig listed in West Palm Beach, Florida. So these are some of the kinds of things that you'll see. Got a few pinned ones up there at the top. If you head on over to the job board, it's free. You can post your jobs there if you're looking to hire someone. It's free to post your info, and it's free to look at. So go check out the jobs board, I say. All right, let's see. What's next? The Sparklebeard says he's waiting for a cybernetic eyes, so he doesn't need to wear glasses anymore. That would be kind of cool. I had a friend who did that. He had lenses like cataract replacement, except for vision improvement. Interesting A. Let's see. What else did I want to talk about? Every Tuesday, I have a show that is my product pick of the week show. And this past Tuesday was no different. There it was. It was the mini GPS, the PA-1010D, little breakout GPS unit. And I will give you a little one minute recap right here, right now. Check it out. PA-1010D, which is a mini GPS module in STEM-AQT format. We're going to run this out the door so that it's facing the sky. I have a feather. This is the RP2040 feather, which has this very convenient STEM-AQT cable connector to it. And I have that running, too, one of our lovely little OLED screens. This is telling me my latitude and longitude. I'm actually running this through a bit of a scrambler. This will take you somewhere in Peru. That's not where I live. Then it's telling us our altitude, the fixed quality. And then you can see here, it's actually telling me that it's getting 11 or 10 satellites that it's seeing right now in the sky. That is my product pick of the week. It's the PA-1010D. And it is a mini GPS in STEM-AQT format for use with I2C and UART. Right on M1 thing I'll mention is when you watch that show live, when you watch the JP's product pick of the week show live, you'll usually get access to a terrific discount. It was 50% off this week for that item. Usually it's around that. You're around somewhere around 50% off. If we can afford to do that, we do. And you can stock up on some really great modules that way at a discount. So let's see. What do we got next? Oh, you know what I wanted to show you? This is just a little tool gear report and tool tip kind of thing. Let me head over to my bench cam here. And I'll throw a little side view there so you can see me. So this is a little restoration project that I'm working on. If you look here, actually, this is a marking gauge. And I haven't cleaned this one up yet. But this is roughly the condition of some of the sort of tools I pick up at things like estate sales, soften what they look like. Sort of unremarkable, dull-looking. And a lot of these older tools that I pick up are made of rosewood with brass. And so I went and I cleaned up. I took some pictures. If you look at my social media, I took some pictures as I did it for this beautiful bevel gauge. Look at this sliding bevel gauge. So this is basically the same condition. It's going to tend to look the same. This bevel gauge had steel for the nut and screw. A lot of these items will have brass. I think this one's got brass for these tightening screws. But nice rosewood here. This camera, I don't think I can boost the. It's a little dim, sorry about that. But if I get the light on there, you can see how gorgeous this is. So cleaned up this brass, which looked like that before. And you know what, we'll zoom in just a little bit more. And you can see the way this works is that you can match an angle if you're cutting a bevel into something that you need to match an existing one. You can basically use this sort of like a t-square, except it doesn't have to be square. So you can then transfer that angle from one thing to another. But this was mostly some sandpaper and steel wool. And then when I got to the lovely final finishing cleanup stages, I used a little bit of woodblock oil, some petroleum oil basically on the wood to revitalize that. It was looking pretty dry. And I used some Brasso on the brass and on the steel there to shine that up. So pretty cool. I've got a few others that I haven't cleaned up. I might do a time lapse of one. But I love watching restoration videos online. And it inspires me to occasionally clean up my stuff. So that'll be fun to do this one. Maybe I'll do a little time lapse of that. So that was just a little shop update, some old tools that needed some cleaning and some love. And let's see, let me jump back over here. JP's Restoration Workshop, that would be fun. I like that idea. Let's see, any comments on that? I know there's a lot of people who would scribe this one. So would scribe, it's a type of marking gauge. I also have a long, like a cabinet one. And you essentially can transfer a distance on a piece of wood before you cut it. There's a little sort of nail in there. So you measure a distance, tighten this up here. And then you can sort of cut a little tiny groove in something to then presumably to cut it or do something else. What did I call it, marking gauge? Yeah, wood scribe. I think that's the right name for that one. All right, so next up, this is exciting. So I'm probably going to start a new segment in the show doing Circuit Python tips. And if you have any ideas for the name of that segment, let me know. Phil Turone, Mr. Ladyata, suggested yesterday that it be the Circuit Python second. And then maybe it's longer than a second, but it's got some alliteration there. I thought maybe Circuit Python parsec, which continues to extend the joke of, oh man, my volume's a little loud, isn't it? Continues to extend the joke of a parsec being a unit of time measurement instead of distance measurement from our good friend Han Solo. But let me know. So the first one up, this is really exciting. What I'm going to do is I'm going to show you a new sort of beta feature that we have in the learn guide system for our projects that we're calling the project bundler. And we may even call this the bundle fly, which is sort of a Kronenberg, the fly movie joke that Peter Dragon came up with, Phil B came up with. So what I'm going to do is I'm going to show you a typical project download. So here we have this touch deck, which you'll recall. I don't have mine plugged in right now because I need to copy files to another Circuit Python device. So this one's unplugged right now, this is the touch deck. And I'll outline the problem for you, which is Circuit Python is incredibly quick to set up. We've made it so it's very fast to install the firmware to bootload it with a version of Circuit Python. Usually just double click the reset button, download one file, put it on. It's a UF2 file. The file system copies that, restarts and runs that program, that program being Circuit Python, which we think of not as a program, but it is. And then we have a flash drive sitting there, a USB drive sitting there named CircuitpyDrive. And we copy files onto it. So we can copy our code, which is usually code.py. We can copy assets onto it. So in the case of the touch deck, we have icons. Assets could be fonts. I think we have some on this one. Assets can be sounds. So there's sort of supporting files. And then we have libraries. And to be honest, this has always been one of the more tedious parts of doing a lot of Circuit Python projects for me is copying libraries over when I'm rebuilding something that I've kind of erased. And now I have to go back and I have to find, OK, what are the six libraries that I've got to find? Then I go into our list of 100 and something libraries and drag over the six that I need. And there have actually been some attempts to do some library management. Our good friend Todd Bott wrote something that we used for a little while that was sort of like a config that just copied over some named files for you in a shell script. There was another more advanced version of that that I saw. I can't remember its name. Maybe someone in the chat can tell me about it. The new thing, however, for, and this doesn't necessarily take the place of those, but in many cases it will, which is you're downloading a project from the learn system and you just need to get the parts of the project you need. So that's going to be the code. That's going to be the libraries. And that's going to be the assets. Well, check this out. What I'm going to do is let me see if I can open up a second screen here. And I'm going to rearrange some stuff a little bit if you'll bear with me. This should do it. I know I'm hyping this up, but I'm really excited about it. So right now in this learn guide, usually you'll go, you'll read the overview page, OK, what's this project about. Then you'll have a little link that'll talk you through getting CircuitPython onto the board. And so in this case, I'm using a Feather NRF52840. The original project used the RP2040, but I decided to try it out on the NRF52840 because I hadn't tried it before, and we were pretty sure, FOMI guy and I were pretty sure it would work. Then you'll go and you'll click on this install libraries. And it tells you all the different libraries that you need for the project. And when I'm writing a guide, I usually build the project. In this case, I collaborated with Tim on it. He wrote software, updated some libraries for us. And then I come up with a list at the end of, OK, here's the necessary stuff. So I'm going to write it down. I used to take a screenshot. That screenshot's not showing up here for some reason. And then when you're building this yourself following the guide, you go here, and you'll one by one look at our big list of libraries. You'll download the CircuitPython library bundle, just hundreds of them. And then you'll pick the few that you need and copy them over. If we go to the code, the project, this usually says, OK, make sure you got your libraries installed. Make sure you get your assets. And the assets here, I'd put a separate link for those assets. And then you go and you copy your code and maybe paste that into your favorite text editor and then save it to the drive. Well, all that changes now. As of today, we have this bundle fly, Project Bundler, which happens automatically in the background. Every day, we have jobs running on our servers, on the Learn Guide servers and GitHub, that goes and collects all the libraries that you need to run a given piece of code and all of the assets which are in that GitHub directory. And they all get put into the Project Zip file here, this little link. And I'm going to zoom into that. OK, so gone are the days of separately copying things over and finding them among needle in a haystack style. Now, all we do is, and I think we're going to make some cool icons and things for this with our little bundle fly fellow, right now all I have to do is click on this Project Zip link and you'll see over in my downloads folder, I already had it open, the, let me find where did my finder window go, hiding on me. There you are. You can see that this zip folder has been saved here. I already have one here. And I've already unpacked it. If I look in the contents of this zip folder or this unzipped archive, that's everything I need. So we get the, in this case, the code.py file, the touch deck layers file, which is sort of a config. We have all of these assets. So these are all BMP files that are used for the different touchscreen labels. And all of our libraries. All of that happened for me. I don't have to go and pick through it. And now what you'll see is if I, let me show you a down camera view of this, I'll use this one for now actually, so you can watch on the folder. And let's see, can I do that? Sorry, I've got some camera management here. Let's do that plus that. OK, so you can see here right now, this won't run because this has a essentially empty directory. If I look at my circuit pie drive, all I have on there right now is this bootout.text, which is something that CircuitPython put on there. So I've cleaned it off. It's clear, or maybe you have some old project on there. And what we'll do is we'll go and we'll pick everything here that I just unpacked from that project download. I'll drag it to my circuit pie drive. And that's going to copy over now. It's going to take it a couple of minutes actually. There's a lot of files on there, and I'm actually going over kind of a slow USB hub. So I apologize for that. But what we're going to have is about a minute now. So there's 644K heading on over there. If I look at the circuit pie drive, you'll see it's filling in those so you kind of follow along. And the exciting thing is that it is going to load all of that, all of those assets, all those libraries, all the code onto there. And then it'll automatically reset itself and start running. So fingers crossed, if we didn't miss anything, this will essentially follow all of the dependencies of everything in the code.py file and every dependency the library itself might have. OK, it's finished copying over. It should be restarting now. We can look over in Atom. I might need to give it a soft restart. Oh, there it goes. And voila, I added that page. I forgot about that one. Oh, I don't have that page on here. That's right. This is not my custom one. But what you'll see is if I head over to Discord, just as a little demo, I can now go in here and place a little happy Adabot. Just by pressing a button. Hey, Ruby. Yay. Todd asked, did I kill my video? Are you talking about me there, that video? Or did something glitch? It might have not liked when I ran outside of Broadcasters. So let me know if that's still streaming or not. I'll keep an eye on the chat here. Tell me what glitch, what kind of glitch. So that is Project Bundler. It's incredibly exciting. We'll do some other, we'll kind of introduce this more and talk about the features over the next few weeks. The process runs once a day right now. So it's an overnight kind of thing. So for any of you out there that are involved with Learn Guides or if you see some fresh new Learn Guide come out, it may take a day for the Project Bundle Zip to pull itself together. But boy, is that terrific. Because if you're not sure what I'm talking about here, I'm going to jump over to a browser window real quick. And what you'll usually run into is if we go to, let's go to circuitpython.org, Libraries. And if I'm using Circuit Python 6, I'll download the Circuit Python 6 zip bundle. It'll go to my downloads folder. Go back there and I'll show you. So here in my downloads folder, we just got this Circuit Python bundle. It's four megabytes worth compressed. I'm actually not sure how much that decompresses it. But here in Libraries, these are the current Libraries for Circuit Python in the bundle. So typically, I would go and I would pick, let's see, image load. So I kind of scroll up here and find, oh, here's image load. And maybe I need this library. And then maybe I need NeoPixel. And I'll scroll down there. And so I'll pick all of these and hopefully get it right. All of that is going to be a thing of the past with this, at least for Learn Guide projects, because they're essentially going to allow us to control what goes into the bundle based on the code. But I think also part of the idea here is that this is something that Scott and Lady Aida really considered at the very beginning a few years ago when Circuit Python first started was how to structure things so that this would be possible and so that library management will be possible inside of your IDE. So my hope is that Adam and Mu and Thani and some of these other editors, text editors for coding that people use, will at some point add in a Circuit Python library management tool that works based on this sort of principle where we can look at code. And if you look, for example, let me jump into Adam here. If you look at my code for a given project, in fact, let's open this one. Let's open up the code.py sitting here on my little touch deck. I confused it by having something already named code.py. If we look at this, here are the typically what I'll do is I'll look at this and I'll go, OK, I happen to know that time is one of the libraries that's essentially baked into Circuit Python, so I don't need to find that one. Display.io, I can never remember. I think that's baked in. Terminal.io, that's baked in. Oh, but here, OK, display text. I'm going to have to find that. Display.io layout, I'm going to have to find that. Featherwing, I think USB-HID is baked in, so I don't need to find that. But there's another one, Adafruit-HID or Adafruit-USB. So anyway, you can see the idea is I'm going to typically look through these, find those, and copy them over. Now what's going to happen is overnight our GitHub repo currently in the way this is working now for Bundlefly is, I love that new name, is going to look at this header for some code, and it's going to start bringing in the appropriate libraries based on dependencies. So it'll grab anything by name here that isn't just baked into Circuit Python. And then sometimes these libraries rely upon other libraries, so you won't see them named here, but they also have to be brought in. And so those are some of the things happening in the background that are still in the works right now that you'll still find some glitches. But the nice thing is every time we find an issue on a dependency, it gets fixed, it'll update across all of our Learn Guide code every night. So that is Bundlefly. I know I took quite a bit of time with that. That was not a succinct demonstration of it, but hopefully you're as excited about it as I am. I think this is going to make life a lot easier for some of our projects. So, hooray. All right, let's see. Next up, someone asked, where's Lars? I don't know. I haven't seen Lars lately, so. It's anyone's question, anyone's guess. Next thing I wanted to do, let's actually jump back over to the workbench here. And I think I can plug in my other camera switcher now. And I'd like to show you this project of the week, which is going to be a Internet of Things door alarm based on our new, brand spanking new, Funhouse board. So I've got a Funhouse board here, and I'm gonna zoom in on that. Let's see, I might be able to get, let's see if I can boot up my other little touch deck that I'm using as the camera switcher over here so that I can do a little bit of camera switching. Just because I like this, I'm proud of this one, I want to show it in action. Let's get this one to go into action. Are you booting up? We're gonna hit reset on this. You can do it. All of this so I don't have to walk over there and click on a thing. Hey, Lars, what are you doing? So I think on this one, I have my custom switcher, camera switcher loaded. There we go. All right, let's see if it's working. We'll do, there we go, switch to that and put me in the corner there with that. Okay, now let's look at that Funhouse board. Try to focus. That's pretty good. Okay, so this is the Funhouse board and this one I've actually got some things plugged into it. We have, this is a ESP32 S2 chip on here. So it does wifi. We've got a TFT screen on here. I'm not gonna go over all the features of it right now. I'm brand new to it so I'll get half of it wrong. But a few things that are important for this project is gonna be the JST, these are the three pin STEMMA connectors on the side. JST three pin connector I have right here is plugged into what is essentially the analog one, which can also be used as digital input or output. I have this as a digital input and I have it sort of plugged tenuously into a magnetic door sensor. If I can get this to stay, we'll see if that'll work. And this is a read switch that will close itself when there's a magnet nearby and open itself when there isn't. And what I'll do is let's give this guy power. And I forgot to grab a separate, let's see if this'll work. That one won't work. You know what I'm gonna do actually, I'm gonna bring this over to the workbench because I wanna show some stuff on the screen there. So we'll bring that over there and then that'll give me a convenient place to plug that in. All right, more camera switching. And we'll just do that for now. Okay, so this has USB-C, I'm gonna plug it in. Does not need data to work just for coding, but we're gonna plug it into the computer so that we can look at the code on it, load the code that's on it, use the serial output. And I'm gonna grab that little magnet, place that here. So this is gonna act like it's closed right now. Let's see, oh, and this is gonna have a problem because I bet it can't connect to, oh, maybe it is, wow. Is it subscribing? Yeah, okay, I have a Wi-Fi router that is nowhere near where I am right now that it managed to connect to, so that's a good thing. So what you can see, what it's doing right now is using its pressure, humidity, and temperature sensing to update that, those, actually just pressure and temperature to the screen here. And I believe the way I have it set up right now when I remove that magnet from that switch, so it says if a door is open, similar to an alarm, it just displayed door is open and it also displayed motion detected, so I have a motion detector on here. So what I wanna do is I'm gonna show you a, rearrange some stuff real quick, put that up there, shoot this over here. And I'm gonna open up an Adafruit I-O page in my Chrome browser here, okay, and this is a feed, it's actually a dashboard with a series of feeds that are designed that I created to work with the code that I have running on the Funhouse right now. So we'll see if any of it's working, I didn't test it recently, so let's see. This should change the colors of the LEDs, there we go. So this is the Adafruit I-O as an interface running over Wi-Fi, so it's actually running to the internet from my computer over ethernet and then over Wi-Fi back, actually these are on two separate networks. So that allows us to send info from Adafruit I-O out to the device. You can see here, I'm logging info, that's pretty much every 10 seconds, oops, I'm getting an update to these feeds here about the pressure, humidity and temperature. The door status and PIR status, you'll see here, I just closed the door essentially, I just moved that magnet close to the read switch and so then within 10 seconds we'll get that update, so now the door status lights up green, so essentially I'm saying that's good, we want the door to be closed and then if I open up that door, let's say it's the back door of your house or it's your refrigerator door or something and you want to know on your dashboard when that's been left open, this will show you, so now it's telling me door status is red. I have a little, just for testing purposes, I also have a little, sorry, I just wanted to check the discord since I hadn't in a while, make sure people can still hear me, yeah, you can. Fed Ed too says, did it connect with the wifi access point you have in Peru? That's based on my scrambled GPS coordinates on Tuesday. Yes, of course, so I have in the dashboard here, I wanted to set up a feed that I can read on the fun house and I want to send it either a zero or a one, so by default a one is on this feed or rather a zero is on this feed, if I send a one just by clicking on this little number pad here, what it should do is cause the fun house to beep its alarm, so there's a little piezo alarm built onto here and it's also going to do some internet of things things and send me an email alert, so you probably just heard that beep, it just went and sent that alert to the fun house but then Adafruit IO is also configured to use, I have a couple of options here that I'm using right now and one of them is if this than that, IFTT, T, T, if this than that service is now in the background preparing an email to send to me and there's actually two things that it does is actually sending me an email, it's also sending an email to my text phone number so it can send an SMS message by emailing your text mobile number gateway and by the way, thanks to Todd Bot for sharing this trick with me, I didn't realize this, I didn't really think if you're trying to use something like SMS and if this than that does not include a straight up SMS service anymore cause that costs money and someone's gotta pay for it so the hack is your mobile number at text.carrier.net, some formula like that works in many cases, at least for AT&T, T-Mobile, some other US carriers that I looked into. So within about 15 minutes based on how, if this than that, where I am in their cycle cause they run things for you basically every 15 minutes, I should get a text message, let's see, I didn't get one yet but I have some from earlier that just say door is open at and then it tells me the time so from when I was testing. And then a second option is that I have, I'm running an Adafruit IO plus account and the Adafruit IO plus account has extra features, more feeds, more data that you can, data points that you can receive with higher frequency, more dashboards I think, and it also can send an email to you so there's just a trigger using the triggers inside of Adafruit IO, I can just send an email to one of my email addresses that my account is linked to. So these are some of the options and we're looking into more all the time, particularly because things like this, which we can have a lot of different sensors on, you will want in some cases, if you're using something like you've left an important door open, a window has broken, you're flooding your basement, these are things that you wanna have a few different ways of getting updates on. So we're looking into Brent actually, thanks so much to Brent Rubel for looking into a lot of this for me, he's got some ideas about things like web hooks and Twilio and Slack and Discord, all have possible ways to have Adafruit IO send a little alert or even from Circuit Python itself since it can hook up to your Wi-Fi network using the MQTT, there are options there as well that are all being looked at. Oh, I noticed Bruce, Mr. certainly said that the one idea is to hook up the power switch tail relay to turn on fans and heaters as needed. Yeah, that's a good point. I actually, yesterday, let me show you this, I hooked up a Amazon Alexa, Alexa turn on the light. So you can see that lamp back there, Alexa turn off the light. So that's an example of a sort of internet of things relay that's very tightly bound into the Amazon system, but it's pretty cool. And so I'm definitely interested in things like home kit and home assistant, hooking into physical things, sort of multiple nodes on your home automation network with this lovely little board here acting as sort of the gateway into those things. So that right there, look again, door status, you'll see this should update pretty quickly. I think we get the way the code I have running on here right now, so some sample code that Melissa wrote, this is every 10 seconds. Oh no, someone on YouTube, Kain Pat said that their Alexa just responded, I'm so sorry. I was gonna give this one a different name because you can use I think computer and maybe some other stuff, but it was giving me problems. It didn't wanna offer up that choice yesterday when I was doing the setup. So yeah, Gary's E2, thanks for triggering my A name, A-L-E-X-A, sorry about that people. So let's see, last thing I wanted to do is if we take a look at, let me open up the code that's running on the fun house here so you can start to have a little bit of a look at how this is working. I'm gonna launch my, there we go. Let's launch Adam and leave that in the background there. So I don't think I have anything incriminating in here. I think we basically are still using like the secrets.py file to store Wi-Fi address and stuff like that or Wi-Fi credentials. So you can see here we're doing some basic library imports of time, the board for pin definitions, digital IO, because I'm using this essentially as a button or switch. The fun house is sort of built on the portal base. So again, there's a lot of, Melissa did a lot of work to structure this so that it's been easy for us to set up new things, the PyPortals, the MagTag. Now the fun house using a lot of reuse of code, which is great, the fun house here is being set up and it has a bunch of peripherals on it such as these five dot stars at the top. So that's how those are being referenced is just with set dot stars. And then I can set a different color from that Adafruit IO feed. We do some connection. We subscribe to those feeds that we wanted to publish to. And then it's being set up with some of these MQTT messages over the network. And then the network loop is sort of the main thing that runs to either get data or push data. And if I look at the, this is the thing that runs every 10 seconds. So here we check for 10 seconds to have gone by and then I added this little bit here which says if the switch is set to zero, then the door is open. If the switch is set to one, then the door is closed. And that value is being sent right here. Funhouse.network.mqttpublish, the name of the feed, which is in this case is door, and then whatever that door value is. And then over in my Adafruit IO setup, I have the widget on that dashboard, just simply looking and seeing is that a zero or one and it does something depending on that value. So it sets my little indicator light color. For something that's working in reverse, such as the, let's see, trying to find where are my neopixel or dot stars. I don't remember now. Where am I grabbing those? I swear they're still lighting up colors, but now I don't remember. And I've been playing with this for about all of two days. So sorry, I'm not super fluent in it. I'm sure Melissa, if you're here and in the chat, you can remind me, how the heck are we grabbing those? Don't know, it might be the peripherals.led, but I think that's just the little light up red one. Dot stars, yeah, is it happening? Oh, okay, okay, yeah. So this is actually running as a little separate function. So this function is how we're buzzing the buzzer and it's also how we're changing the neopixel colors. It's not running every loop, it's only happening when there's a change in those. So when the feed ID comes through that's named buzzer, if the payload is a one, then we set that buzzer. And if that feed ID is neopixels, we check for a payload. And if that payload is the, I think of a hex value that we're using for setting the colors, then it translates that into color and sets that there. And if I go ahead and open up the serial port on this, let's see, I might need to unplug the extra thing. Should work. So here you can see it's just printing out its own value for 10 seconds and then it's doing that Adafruit IO update. I'm gonna go ahead and just click on the, let me update my screen here so you can see that. I'm just gonna click on my feed buzzer. So when I press this, you'd see feed buzzer received a new value. And if I do the same for color, let's make them all blue. How about that just updated and said I got a new pixel value of this hex value and set that on the neopixels there. So change it a little and that goes to green. So that one actually doesn't wait for the 10 seconds. I guess that just when there's a new piece of data on that feed, it actually pushes it really quickly. So that's about it for kind of a little intro to the fun house. And I'm gonna set that up for, I'll probably build a little fake door, use it on like a, it works well on like a little box like this. You can put the magnet sensor, magnet and sensor on a little lid or on the door that's opening just as a demonstration. But ideal thing is things like a refrigerator door or a side door to your house that someone keeps leaving open that sort of thing. This will be useful for that kind of alert. All right, well, I think that's gonna do for today. Have we said it all? Have we covered everything? I think we have. A reminder to come on by next Tuesday for the next JP's product pick of the week for more shenanigans and a great discount on probably a very cool item. I think this next one coming up, I've already known which one it is. It's gonna be a cool one. You won't wanna miss that. So thank you everyone for stopping by. Thanks to everyone over in the Discord. And Johnny Burdell says late to the party. That's all right, rewind. You can catch up lots of fun stuff. Taba says the huge thing here is the MQTT works on the ESP32S2 and Circuit Python. Yes, this is big. So I think we're gonna get a lot of utility out of the Funhouse and the other ESP32S2 Circuit Python boards for this type of stuff. This one particularly great for the sort of home automation types of things. And clearly that's the design of the little house board there is meant to evoke that. I've also put a little Phil B designed plate here to hang it onto a couple screws or even just one screw works pretty well. Oh, I'm wigging that out. I just caused it to short. My USB just got mad at me because I was wiggling the connection. All right, enough wiggling. Thanks everyone for stopping by. This is John Park and this has been John Park's Workshop Rated Fruit Industries. I will see you next time. Bye-bye.