Getting Started
Adafruit Playground is a wonderful and safe place to share your interests with Adafruit's vibrant community of makers and doers. Have a cool project you are working on? Have a bit of code that you think others will find useful? Want to show off your electronics workbench? You have come to the right place.
The goal of Adafruit Playground is to make it as simple as possible to share your work. On the Adafruit Playground users can create Notes. A note is a single-page space where you can document your topic using Adafruit's easy-to-use editor. Notes are like Guides on the Adafruit Learning System but guides are high-fidelity content curated and maintained by Adafuit. Notes are whatever you want them to be. Have fun and be kind.
Click here to learn more about Adafruit Playground and how to get started.
-
Sync Adafruit IO and Home Assistant
Overview
Over the last month or so, I've been fine-tuning my Home Assistant setup and thought it would be neat if I could instantly sync data between Home Assistant and Adafruit IO. I love the local-control aspects of HA, but when it comes to creating fun and more complex custom electronics projects, Adafruit IO is much more suited for the job.
Leaning into a bit of AI-assisted vibe coding with Claude, I created a custom integration that bridges the gap. It allows you to pick exactly which Entities from Home Assistant you want to send up to Adafruit IO, and which Adafruit IO feeds you want to pull down into Home Assistant. Through the magic of MQTT, this all happens instantly and securely.
You can check out the project repository here: https://github.com/tylerdcooper/adafruit_io_sync
What does this integration actually do?
At its core, the Adafruit IO Sync app acts as a highly selective MQTT bridge configured entirely through a custom sidebar panel—no YAML required. Instead of opening up your entire local smart home network to the cloud, you remain in complete control of the data flow.
-
The Attribute Unpacker (HA to IO): One of the coolest parts of this integration is how it handles complex devices. In Home Assistant, an Entity is rarely just a single value. A smart dimmer switch, for example, isn't just "On" or "Off", it also has attributes like
brightness. Adafruit IO, on the other hand, organizes data into single-value "Feeds."When you sync an entity from HA to IO, this app automatically unpacks those extra attributes and breaks them out into multiple, individual feeds. If you sync a dimmer switch, the app instantly creates one feed for the power state (
ON/OFF) and a completely separate feed for the brightness level (0-100). This makes it incredibly easy to grab exactly the specific data point you need for your microcontroller projects. -
IO to HA: You can browse your Adafruit IO groups right from the Home Assistant sidebar and automatically import feeds as native HA sensors, switches, numbers, or text entities.
Choosing Your Sync Direction
When you configure an entity, you can choose how the data flows. Understanding when to use One-Way versus Bidirectional sync is key to keeping your setup running smoothly.
One-Way Sync (Logging and Monitoring) With a one-way sync, data flows in a single direction (e.g., AIO → HA read-only, or HA → AIO publish-only). This is ideal for logging. For example, if you just want to track when your dehumidifier turns on, or you want to map out temperature trends from a local zigbee sensor, a one-way HA → IO sync is perfect. It updates your Adafruit IO dashboards without giving the cloud any ability to write back and change the state of your local appliances.
Bidirectional Sync (Two-Way Control) If you select ⇄ Bidirectional, full two-way control is enabled. If you change a value in Home Assistant, it updates in AIO. If you change that same feed in AIO, it instantly updates the physical device via Home Assistant. To keep things stable, the integration has built-in publish-echo detection to prevent infinite data loops where the two platforms rapidly bounce the same state change back and forth.
Why choose one over the other? The biggest factor is Rate Limits. Adafruit IO's free tier allows for 30 data points per minute. Because the integration automatically unpacks attributes, a single change to a complex entity (like adjusting a smart light's color and brightness simultaneously) can generate multiple publishes in a split second. If you have dozens of entities set to bidirectional sync, you can hit that limit very quickly. Using one-way sync for sensors that update frequently saves your data rate for the devices you actually need to control.
-
-
Getting Started with the Weather Block in the New Adafruit Actions
Overview
With the new Adafruit IO Actions finally released, I wanted to come up with a quick way to test out the new weather block. The weather block is absolutely packed with information. To spin up a quick test, I pulled out my Adafruit Funhouse, and the very convenient servos with the JST connectors already installed. This is the ultimate no-code, no-solder project to dive into Adafruit IO, Wippersnapper, and the new Blockly-based Actions.
Parts Used
-
The Many Possibilities of Adafruit IO Actions and an Arcade Button
Overview
As we get closer to launching the new Adafruit IO Actions, it has been fun thinking of the many fun ways it can be used. Here is a really simple project that has a ton of potential without writing a single line of code. With this project, I simply added a NeoPixel to a simple arcade button (using the below Learn guide), and then use that LED and button to communicate information in different ways. The more I play around with this project, the more ideas I come up with. So be sure to check back here often as I will post more ideas as I come up with them.
Parts Used
I used the NeoPixel Mini Button as shown in the guide above, but used the QT Py ESP32-S3 board with the NeoPixel BFF to drive the NeoPixel, then just soldered one side of the button to 3V on the QT Py, and the other side of the button to A2.
You could also simply skip modifying the arcade button, and just use the built in NeoPixel on the QT Py. You could even just use the built in pushbutton on the QT Py and skip the Arcade Button all together. This guide isn't so much about the specific project, as it is about the possibilities of the new Adafruit IO Actions. You can set this up with any NeoPixel and button.
With that in mind, here are the products I used:
-
No-Code Easy Ambient Smart Lights
Overview
With all the newest features of Adafruit IO, WipperSnapper firmware, and the new Blockly Actions, you can create really complex projects without writing a single line of code. I've been working on a couple versions of smart lights to notify me of different things using NeoPixels. This project will focus on a super easy smart ambient lighting system that you can stick to the back of your computer monitor.
Components
Using just a few Adafruit components is all you need to create a really simple, but pretty powerful little notification system. We are gonna use a QT Py ESP32-S2 WiFi Dev Board to talk to Adafruit IO, a NeoPixel BFF for the QT Py, and finally a short NeoPixel strip with a JST connector pre-attached (so you can connect right up to the BFF board.
The only soldering you will need to do is to attach the boards together. You can solder the boards together with the included pins, or pick up some female headers so you can detach the boards and use them on any future projects.
-
Testing an eTape with my sump pump
Now that the awesome eTape liquid level sensor works with Adafruit IO No-Code devices, I figured this would be a good way to add a really accurate sensor to my house's sump pump to track the water level in the tank. I used a simple hose clamp to go through the 3d print and hold it in place on the main sump pump pipe. Then I can slide the device down so it rests on the bottom of the sump pump tank.
Next step is to connect this up and do some tests with Adafruit IO. I think I am going to use the FunHouse board with this.
-
Testing the Mosfetti with a Tower Light
-
Ultimate Omnifixo Pinecil Travel Case
After watching this Tested video on YouTube showing of the Omnifixo helping hands, I decided to pick one up. I have found it incredibly useful when soldering small electronics. After a bit of use I decided to 3d print the case recommended in the video, but wasn't happy with it. I looked around for other designs, and found some better options, but still not exactly what I was looking for. So, decided to design my own.
With the included Pinecil soldering iron, solder, and brass sponge, this design carries everything I need to solder on-the-go.
This version will require 4x 10mm ball bearings. These ball bearings are the same diameter as the balls at the end of the Omnifixo clamps. So I embed the ball bearings into the printed case and the Omnifixo magnet mounts snap to these bearings nicely to hold everything together. No other magnets are required.
The metal tin I used for the brass sponge is a ½ oz round tin I purchased off of Amazon.com here. It is a 4cm round tin, and I cut off a bit of brass sponge to fit inside. Also, this is the solder that fits perfectly in the case, but you could just bundle up any solder and throw it in that slot.
I printed this with a .4mm nozzle at .2 layer height using carbon fiber PLA (though PETG is probably a better choice). You can print the entire thing then using some force push the ball bearings into the print in the corners. They should kind of snap into place.
Note: if you stick the yellow Omnifixo magnets to the embedded ball bearings with the flat side they will stay stuck to the Omnifixo base plate when it is removed.