-
Adafruit IoT Monthly: Guardian Robot, Weather-wise Umbrella Stand, and more!
IoT Projects
Weather Wise WiFi Umbrella Stand
Looking for a fun and functional DIY project that can brighten up even the gloomiest of days? This WiFi-enabled umbrella stand checks the weather for you and glows if you are going to need your umbrella. Step-by-step instructions, easy to make, and stylish to boot. - Adafruit Learning System
Smart Home Guardian Robot
A DIY version of the Amazon Astro for home surveillance. - HackADay
Canary Nightlight
Wouldn’t it be great to have a nightlight that changes color based on the time to help with sleep and waking up? Even better, what if it lets you know when your internet is down so you’re not wondering? Build your own red and blue canary to put in the outlet by the light switch where it can watch over you! - Adafruit Learning System
ChatGPT for the Smart Home
Using ChatGPT, atomic14 was able to generate a Python script to control specific pins on a Raspberry Pi. After generation, they “added on a bunch of bells and whistles afterwards, but the core of the API was generated by ChatGPT”. -atomic14
PiPyPirate Radio
Make a low-power FM transmission radio station with a Raspberry Pi or other single-board Linux computer. -Adafruit Learning System
IoT News and More!
Adafruit IO WipperSnapper gets a Web-Installer Update
We’re excited to show you the improved Adafruit IO firmware installer that makes it easier than ever to get started on IO with a WipperSnapper-compatible device. - Adafruit Blog
Flipper Zero Gets a 1-Month Battery Firmware Update
The Flipper Zero team details how a firmware update they rolled out increases the device’s battery life from one week to one month. - Flipper Zero Blog
What’s Next for the Smart Home?
An analysis of Jabil’s 2023 Smart Home Report finds that consumers are still overwhelmed by choice, fragmentation, and concern about their privacy. - StacyonIoT
Support Adafruit
Here at Adafruit, we sell all of these amazing components, but we couldn’t find a good way to interact with them over the Internet. So, we decided to create our own IoT platform, and that’s Adafruit IO. It’s built from the ground up to be easy to use and platform agnostic (connect any development board or device!). For those who want to get a project off the ground without programming - Adafruit IO offers a No-Code interface for building IoT electronics projects using WipperSnapper, our open-source IoT firmware. Support Adafruit’s open-source development by subscribing to Adafruit IO Plus, the upgraded, all-systems-go version of the Adafruit IO service.
-
WipperSnapper Firmware Installer Updates
A warm hello from the Adafruit IO team!
Today we’re excited to show you the improved Adafruit IO firmware installer that makes it easier than ever to get started on IO with a WipperSnapper-compatible device.
Here’s a short video if you prefer to watch, and a detailed blog post follows.
The Story Thus Far…
Last year, we added a firmware installer to IO that walked users step-by-step through the process of flashing the WipperSnapper firmware to their boards. It was great!
But, it only worked for boards with UF2 bootloader support, what about boards without?
Browsers + Tools = Browser Tools
We try make things surprisingly simple for WipperSnapper, so we reached for the new Web Serial API and Adafruit’s own @makermelissa ported some key firmware tools to JavaScript (details). In what seemed like no time, we had an experimental web page (source) that could flash the WipperSnapper firmware onto these boards. Hurray!
For folks who can’t (or prefered not to) use the web-based tool, we added an option to download the firmware as a file that can be flashed in the traditional manner at the command line.
How Did It Go?
There were a few reasonably concerning things about this experiment:
- Redirecting users a stand-alone site might be jarring.
- Connecting to USB ports from a website is new and surprising.
- No design or UX pass: it’s function over form.
But it turns out it’s pretty good! Measuring by the sheer quantity of these boards we’ve seen connect, it must be working out well for our users.
So we did the natural thing: we built it into IO!
The New, Improved Firmware Installer
Let’s take a quick look at it here.
We select our board and enter our WiFi credentials. In this flow, the credentials (including our AIO Key) are written to the board automatically, along with the firmware.
Web Serial Installer
If the board is compatible with the Web Serial flow (and we’re using a compatible browser), we’ll get step-by-step instructions that guide us straight through the process of installing WipperSnapper: no code or command lines required!
MergeBin Installer
And if we don’t want to use the Web Serial flow for any reason, the MergeBin-based download flow is also built in, with nice instructions and snappy performance.
Guides, Guides, Guides
What would a new feature be without some Learn Guide content to go with it? Here’s the guides for the 5 boards we currently support with this flow:
- ESP32 Feather V2
- QT Py ESP32-C3 WiFi Dev Board
- HUZZAH32 ESP32 Feather
- Feather HUZZAH ESP8266
- QT Py ESP32 Pico
That’s It (For Now!)
With these updates and lots more to come, we hope to see your project built on WipperSnapper soon!
Technical Footnote:
These are the firmware tools that were ported to JavaScript (and open sourced!) in the creation of this feature:
As always, if you have any suggestions or bugs to report about these new features, please let us know in the forums.
-
Adafruit IoT Monthly: AI Teddybear, Designing Accessible IoT Products, and more!
IoT Projects
AI-powered E-Ink Newspaper
Hyepaper is an “automatic newspaper in a frame, intended as a decorative piece”. The project scrapes popular websites, has OpenAI’s ChatGPT API summarize the articles, and delivers a “front page” newspaper view to an E-Ink display. - Hackaday.io
Robotic AI Bear using ChatGPT
Inspired by “a popular toy in the 1980s called Teddy Ruxpin that would tell stories while making prerecorded robotic gestures and movements”, this project upgrades an off-the-shelf robotic teddy bear to utilize OpenAI’s ChatGPT API to add prompts and tell bedtime stories. Click through the link for a video of this project in action. - Adafruit
14-Segment Display + Boredom = IoT Message Board
Floating.io was bored and “had a Raspberry Pi, a bunch of 14-segment displays, and way too much time on my hands”. The result is a 12-character, 14-segment display acting as a message board that can be modified by the Internet. - floating.io
Italian Espresso Robot with Live Flow Data
The Gaggia Pro is an excellent espresso machine, except it requires a lot of manual tweaking to perform the functions of a more expensive espresso machine. Nicholas DiPatri modified an Italian espresso machine to execute the steps of an expensive espresso machine (things like modulating brew pressure, dual PID control, auto-shutoff, and more). - Adafruit Blog
IoT News and More!
Over 2,000 devices running WipperSnapper have connected to the Adafruit.io No-Code IoT Platform
Over two thousand microcontroller boards have successfully connected and sent data to Adafruit.io using our Open-Source WipperSnapper firmware! WipperSnapper is a firmware designed to turn any WiFi-capable board into an Internet-of-Things device without programming a single line of code. WipperSnapper connects to Adafruit IO, a web platform designed (by Adafruit!) to display, respond, and interact with your project’s data. WipperSnapper’s open-source firmware currently supports 22 development boards and 46 components (including various sensors, actuators, LEDs, buttons, and switches)! - Adafruit Blog
The Uninvited Guest: IDORs, Garage Doors, and Stolen Secrets
Sam Sabetan writes about discovering vulnerabilities in Nexx’s smart garage door openers leading to anyone being to open a garage door “belonging to others from anywhere in the world”. - Medium
Designing Accessible IoT Experiences
Smart devices should make everyone’s lives easier. This article dives into how engineers and product designers can build better “smart devices” with accessibility for users with disabilities in mind. - Staceyoniot
Hands-On: Matter beta for Home Assistant
A hands-on review of the Home Assistant project’s Matter support which is currently in beta. - Staceyoniot
Support Adafruit
Here at Adafruit, we sell all of these amazing components, but we couldn’t find a good way to interact with them over the Internet. So, we decided to create our own IoT platform, and that’s Adafruit IO. It’s built from the ground up to be easy to use and platform agnostic (connect any development board or device!). For those who want to get a project off the ground without programming - Adafruit IO offers a No-Code interface for building IoT electronics projects using WipperSnapper, our open-source IoT firmware. Support Adafruit’s open-source development by subscribing to Adafruit IO Plus, the upgraded, all-systems-go version of the Adafruit IO service.
-
Adafruit IoT Monthly: Star Fragments, Fish Farms, and more!
IoT Projects
Star Fragment IoT Lamp
Inspired by Star Fragments from video games such as Zelda: Breath of the Wild and Animal Crossing: New Horizons, this fully 3D printed star-shaped lamp uses a QT Py ESP32-S2 and NeoPixel LEDs to turn on when the sun rises and off when it sets. - Adafruit Learning System
IoT Powered Tide Clock and Water Level Display
Ever wanted to know what the local tide was doing? Here’s an IoT device that uses an NOAA API to tell you all about it. It displays how long it is until the next high or low tide and shows the current water level. - HackADay.io
Mini Weather Station
Is the weather outside delightful or frightful? A mini weather monitor using the OpenWeatherMap API to extract and display information - Adafruit Learning System
A fully custom mailbox alert system with LoRa
TreasureDev posts on Mastodon their fabulous multimedia project, a take on a notification system when something arrives in one’s mailbox. - Mastodon
Conversion of a defective flip clock to NTP
Converting a lovely flip clock from 1960 to use a stepper motor and obtain the current time from the Internet. - Wolfgang Jung
Self-Watering Plant System
James Black shared their self-watering plant system “Calm Station” which provides users with real-time room conditions. - Adafruit Blog
Wrist-mounted Air Quality Monitor
A wearable take on an internet-connected air quality monitor. - Adafruit Learn
Grafana on a Fish Farm
Details of using Grafana to monitor a fish farm. - Grafana Blog
IoT News and More!
Amazon opens its Sidewalk network to developers
Four years ago, Amazon announced their low-bandwidth long-range wireless network named Sidewalk. This week, Amazon announced that the private network is now open to developers using AWS IoT. - Techcrunch
28% of US Internet Households Have 3+ Smart Home Devices
First-time homebuyers are leading the charge in expanding the connected device market. While smart home purchases are generally down from 2022, “robotic vacuum cleaners, smart cameras, video doorbells, and smart thermostats experienced higher purchase rates than in 2021. - PRNewsWire
Support Adafruit
Here at Adafruit, we sell all of these amazing components, but we couldn’t find a good way to interact with them over the Internet. So, we decided to create our own IoT platform, and that’s Adafruit IO. It’s built from the ground up to be easy to use and platform agnostic (connect any development board or device!). For those who want to get a project off the ground without programming - Adafruit IO offers a No-Code interface for building IoT electronics projects using WipperSnapper, our open-source IoT firmware. Support Adafruit’s open-source development by subscribing to Adafruit IO Plus, the upgraded, all-systems-go version of the Adafruit IO service.
-
New Feature: SMS Inbound Messaging
Hello IO community! We’ve released a new Power-Up to Adafruit IO that should be fun to use and is included with existing IO+ subscriptions (see below for location details).
Inbound Messaging Service
The inbound messaging feature allows you to send a message to IO directly from a text on your phone.
For example, you can send a message to update the Lamp feed with the value of ‘off’ by sending
lamp, off
, and IO will respond with an “OK” if the operation was successful. Similarly, you can send a message oflamp
to receive the current value of the Lamp feed.We also support sending location data, such as
feed, value, latitude, longitued, elevation
.The rate limit for this feature is the same rate limit that is in place for the SMS Actions, and currently allows up to 25 messages per day.
You can set this up in your account via the Messaging Power-Up
Locations support to start
Similar to our SMS Actions update, we’re currently supporting USA and Canada.
The reasons for this are mostly around the high variability of the cost of SMS messaging. Our plan is to gradually add more locations.
As always, if you have any suggestions or bugs to report about this update, please let us know in the forums.
-
Adafruit IoT Monthly: Boxing Glove Tracker, Disconnecting Smart Appliances, and more!
IoT Projects
Buying, Programming, and Testing Capacitance Soil Moisture Sensors
A video of a maker’s exploration into capacitive-type soil moisture sensors. These sensors are frequently used by DIY soil monitoring projects (including some the Author of this newsletter has published). In the video, Modest Maker explains why “I don’t think you can just put these sensors in the ground and walk away”. - YouTube
Microsoft Teams/Webcam On-Air Light
A visual indicator for when you’re in a virtual meeting. - nothans.com
PyLeap ESP32-S2 TFT Boxing Glove Tracker w/ Adafruit IO
Building a boxing glove tracker to measure the force of a punch. - Adafruit Learning System
Water Meter Monitor with Raspberry Pi Pico W
Using a Raspberry Pi Pico W and a magnetometer to monitor a home’s water consumption in real time. - HackADay.io
Another Sensor Hub
An ESP32-based environmental sensor hub with a multi-use physical interface. - GitHub
VOC Monitor for a Print Shop
Clint Wolf built a monitor for their print shop because “print shops are concerned about indoor humidity as it can affect the transfer of, and drying characteristics, of ink and the media it is being applied to”. They cited another concern of working in a print shop is the air quality the staff is exposed to during the day. - Adafruit Blog
Room Temperature Circuit Sculpture
A sculpture made from brass rods, an Arduino, a temperature sensor, and a block of walnut. Editor’s note: While this project is not connected to the internet, it’s a really beautiful example of circuit art and I wanted to include it. - HackADay.io
IoT News and More!
Customers disconnecting from Connected Appliances
LG and Whirlpool are noticing that customers with Connected Appliances are not registering them with the Internet. - WSJ.com
Twitter Ends Free API Access
On February 9, Twitter stopped allowing free access to their API. This ends the era for fun IoT projects (including one built by the Author of this newsletter) connecting to a “bot” Twitter account. - Twitter
Printable Batteries for IoT Nodes
Imprint Energy is developing a printable battery to create batteries in any shape imaginable. - Bloomberg
State of Home Assistant: Matter and Thread
The massively popular open-source home automation project, Home Assistant, posted a long update on their upcoming support of Matter and Thread protocols. - Home Assistant Blog
Support Adafruit
Here at Adafruit, we sell all of these amazing components, but we couldn’t find a good way to interact with them over the Internet. So, we decided to create our own IoT platform, and that’s Adafruit IO. It’s built from the ground up to be easy to use and platform agnostic (connect any development board or device!). For those who want to get a project off the ground without programming - Adafruit IO offers a No-Code interface for building IoT electronics projects using WipperSnapper, our open-source IoT firmware. Support Adafruit’s open-source development by subscribing to Adafruit IO Plus, the upgraded, all-systems-go version of the Adafruit IO service.
-
Adafruit IoT Monthly: Cat Doorbell, Deep Algae Bloom Detector, and more!
IoT Projects
Waving Cat Doorbell
A “Maneki-Neko” cat gains “enhanced cat biceps” with a servo and waves when the door to an apartment has been opened. - HackaDay.io
IoT AI-assisted Deep Algae Bloom Detector
Detecting harmful algae blooms and toxins using machine learning. -HackADay.io
Connecting a complicated boiler system to Home Assistant
Gray Malk’s home has an unconventional heating system. There’s a heating zone for the upstairs (using radiators) and then another for downstairs (using underfloor heating). Due to this, they found none of the off-the-shelf solutions would work, except for a £300 option. In the blog, they detail how they rolled their own custom solution. -Gray Malk
Having fun with hyperlocal data
Alex S. writes about using the Pimoroni wireless sensors to send all kinds of hyperlocal data to the internet. -lagomor.ph
IoT News and More!
Taking over a Dead IoT Company
Kevin Chung writes about the collapse of NYCTrainSign and how they ended up writing an exploit to take over their entire fleet. - blog.kchung.co
6 Smart Home Finds from CES 2023 (that aren’t about the Matter standard)
This year’s CES event came and went with a lot of talk about the new Matter standard. The Verge recaps a few products on the show floor that weren’t focused on Matter. - TheVerge
Dracula Sucks Indoor Light to Power IoT Devices
Given the hungry power needs of the rapidly expanding realm of the Internet of Things, clever solutions are needed to generate and conserve energy consumed by these devices. One such solution is Dracula. No, not the blood-sucking Transylvanian count, the ambient indoor light-sucking technology.. - Adafruit Blog
Support Adafruit
Here at Adafruit, we sell all of these amazing components, but we couldn’t find a good way to interact with them over the Internet. So, we decided to create our own IoT platform, and that’s Adafruit IO. It’s built from the ground up to be easy to use and platform agnostic (connect any development board or device!). For those who want to get a project off the ground without programming - Adafruit IO offers a No-Code interface for building IoT electronics projects using WipperSnapper, our open-source IoT firmware. Support Adafruit’s open-source development by subscribing to Adafruit IO Plus, the upgraded, all-systems-go version of the Adafruit IO service.
-
Adafruit IoT Monthly: 2022 in Recap!
Editor’s Note
Hello readers! I hope you are warm and cozy, and reading this issue in the new year. This is the last newsletter I’ll be writing in 2022. This issue will read a little differently. Below, I’ll be listing my favorite things posted in the Adafruit IoT Monthly during 2022.
If you’re one of the 1,000+ new subscribers in 2022 - welcome! My name is Brent and I’m an engineer at Adafruit Industries who works on all sorts of things, including this newsletter. The IoT Monthly was previously known as the Adafruit.io newsletter and only contained news and projects about our Adafruit.io IoT Platform. In 2019, we expanded this newsletter to the broader topic of the Internet of Things. Unlike Adafruit’s other newsletters which are sent on a frequent basis, this newsletter is distributed only once a month, giving me time to gather information from across the ‘net and giving you time to breathe.
This past year, I’ve been working with the team on Adafruit’s IoT offerings. Specifically, I’ve been working on enhancing and improving Adafruit.io and WipperSnapper, our (beta) no-code IoT firmware. In a year, we’ve seen thousands of people try this platform out for the first time. We’ve added support for more I2C sensors, OneWire sensors, PWM outputs (such as buzzers, and switches), and even servos.
The WipperSnapper firmware is now more stable and we’ve redesigned the onboarding process to help folks create their connected electronics project even faster. We’ve also added platform support for the ESP32-C3, ESP8266, and Raspberry Pi RP2040. And there’s still more to come in 2023, including power-saving sleep modes, displays, new transport types, offline logging, more projects, increased board support, and increased component support.
Thank (over 5,000+ of) you for subscribing to this newsletter. Next month’s issue will return to regular programming.
Cheers,
p.s.: If you have any feedback about this newsletter, or want to submit something you’re working on, send an email to iotnews@adafruit.com.
Favorite 2022 Projects
TurtleSense Disguises a Sensor Package as a Loggerhead Egg
Whole-home circadian lighting
These beautiful WiFi jellyfish lanterns
A CO2 sensing canary
Comic Strips generated by the Air Quality Index
e-Ink postcard frame can receive images over-the-air
A nautical barometer for perfect forecasting
Water pollution monitor using AI/ML
Connected bird-feeder
Prototypes for future homes
This weather forecasting diorama
IoT henhouse
-
Adafruit IoT Monthly: Turtle Eggs, Pool Monitors, and more!
IoT Projects
TurtleSense Disguises a Sensor Package as a Loggerhead Egg
Researchers hid an accelerometer in a fake turtle egg [a ping pong ball] to send data via SMS. With this data, people will be able to understand more about the nesting/hatching process and deploy effective protection for the turtles. - Adafruit Learning System
No-Code IoT Pool Monitor
You can build your own IoT Pool Monitor (without code!) using Adafruit IO and WipperSnapper. This can help you keep track of water temperatures by logging and plotting data to a dashboard! All of the electronics are housed in a clear sealed enclosure that is also water resistant. - Adafruit Learning System
Pico W HTTP Server with CircuitPython
Set up an HTTP (web) server with a Pico W running CircuitPython. HTTP servers are handy for creating custom web interfaces to monitor and control IoT projects. - Adafruit Learning System
BLE Soil Sensor
b-parasite is an open-source Bluetooth Low Energy (BLE) soil moisture and ambient temperature/humidity/light sensor. - GitHub
Home Buttons
An open-source device for locally controlling your smart home. While this is a purchasable project, the technical overview on the build log is informative for anyone looking to build a smart panel. - Hackaday.io
Circadian Lighting a Home
Light messes with Tyler’s head, so they built a way to auto-adjust the lights in their home according to circadian lighting. This is a self-hosted solution, replacing something which would be commercially offered by a vendor such as Philips. - tylercipriani.com
Turbidity Sensor
An open-source, low-cost, in-situ turbidity sensor for river network monitoring. Results and data from this sensor were published in Scientific Reports. - GitHub
Solar/Wind Power Self-Sustained IoT System
Research and attempts to use a renewable energy source (solar or wind) to power a sensor node. - Hackster.io
IoT News and More!
Make Noise with Adafruit IO WipperSnapper!
You can now connect analog output components such as Piezo buzzers and dimmable LEDs to a development board running Adafruit’s no-code IoT firmware, WipperSnapper. We’ve made it super easy to configure a PWM output component on a development board and immediately start using it. - Adafruit Blog
The HTTP crash course nobody asked for
A whirlwind tour of HTTP, with Rust! - fasterthanlime
SpaceX now advertising Swarm satellite IoT connectivity on its Starlink network
SpaceX bought satellite data start-up Swarm, in a rare acquisition by Elon Musk’s space company over a year ago. SpaceX is now advertising Swarm satellite Internet of Things connectivity on its Starlink website, with IoT service at $5 per month. - Adafruit Blog
-
Dark Sky Migration to WeatherKit
Starting today, November 15th, 2022, all new Power-Ups in IO for the weather service will be using Apple’s WeatherKit weather service.
Dark Sky has been deprecated and will be shut down on March 31st, 2023. All existing weather integrations will continue to work until that time.
We recommend that prior to that deadline you migrate your existing weather integrations to the new WeatherKit weather service.
The steps to create the integration are the same, and we will automatically default to the new service for you.
If you need help migrating your client code, Apple has a Transitioning from Dark Sky section that provides field mapping data from Dark Sky to WeatherKit.
As always, if you have any suggestions or bugs to report about this update, please let us know in the forums.
-
Adafruit IoT Monthly: Jellyfish Lanterns, Matter 1.0, and more!
IoT Projects
WiFi Jellyfish Lanterns with WLED
Create your own luminescent jellyfish out of iridescent vinyl and NeoPixel LEDs. Easily add endless light patterns with the free, and easy-to-use WLED software, with no coding required. You can even make multiple jellyfish and sync them up over your WiFi network. - Adafruit Learning System
Using Plumbing Valves as Heavy Duty Analog Inputs
Alistair Aitchison of Playful Technology shows how to repurpose plumbing valves for use as inexpensive, heavy-duty, analog inputs. - Arduino
ESP32 Thin Client
A DIY thin client with a tiny keyboard and a 320×240px touchscreen display. - HackaDay
No-Code IoT Soil Sensor
A soil stake that monitors plant vitals using Adafruit’s No-Code WipperSnapper firmware. - Adafruit Learning System
Pothole Detection with Sony Spresense Camera
A project that uses the Sony Spresense module to detect and log the GPS location of potholes. - Hackster
IoT News and More!
Matter 1.0 is finally finalized — so what’s next?
Matter, the latest smart home standard, opened for certification last month. Jennifer Tuohy writes about “what’s next” for this standard. - TheVerge
Home Assistant’s SkyConnect Dongle Offers Plug-and-Play Zigbee, Matter, and Soon Thread Support
SkyConnect, a $29.99 dongle designed to add Zigbee, Matter, and Thread support to a server running Home Assistant OS. - Hackster
Everything we know about the White House’s IoT security labeling effort
The White House is working towards a “national cybersecurity certification and labeling authority” for all electronics, including IoT devices. - arstechnica
-
Adafruit IoT Monthly: CO2 Canary In a Coalmine, AQI Funnies, and more!
IoT Projects
No-Code IoT CO2 “Canary In a Coalmine”
Much like the canaries that were kept in coal mines to detect gases, this build uses a CO2 sensor to detect indoor air quality. When the air quality is poor, the bird will drop, until you open your windows and bring it back to life! - Adafruit Learning System
AQI Funnies
The “AQI Funnies” project by extrasleepy combines air quality readings from sensors with comic strips. The comic strip’s content changes depending on the day’s air quality index. - ExtraSleepy
FloWat - Sustainably Powered Water Flow Analyzer
A “sustainable way to analyze flow rates in irrigation pipes for agriculturists without needing to worry about changing the battery every day”. An F50 Hydroelectric Generator charges and powers the FloWat’s sensor node. Data about the water flow (in mL and Water flow per revolution) is logged to the internet over WiFi. - FloWat
Tiny LED WiFi Companion Cube
This tiny LED cube scrolls messages from the internet. - Adafruit Learning System
WiFi Mailbox Notifier
Inconsistent US Postal Service delivery times led Kattni towards building a notifier “that tells you when your mailbox has been opened.” - Adafruit Learning System
Water Detector with Home Assistant
Andres Leon’s indoor air conditioner’s condensation pipe clogged and caused a small flood. In lieu of purchasing an off-the-shelf solution, they “decided to spend an inordinate amount of time, money, and effort into creating a water alarm device.” If a flood is detected, their device emits a high-pitched alarm and sends an email and text message. The 2500mAh LiPO battery runs for about 2439 hours. - GitHub
Affordable Solar-Powered Weather Station
The fourth revision of Debasish Dutta’s weather station is designed to be placed in remote areas which lack data-driven weather predictions. The “Solar Powered WiFi Weather Station V4.0” is solar-powered and transmits data using a LoRa module to a base receiver. - HackADay.io
IoT News and More!
Community-led Flood Monitoring with NYC FloodNet and FieldKit
The FloodNet cooperative is a group of researchers and NYC agencies that seek to reduce the risk of flooding in NYC. FloodNet has collaborated with FieldKit and created an online portal to allow NYC residents to visualize flood data, submit feedback, and assess their flood risk. - FieldKit
Building Dynamic Grafana Dashboards
Golioth published a blog post about making Grafana IoT dashboards more dynamic. - Golioth Blog
-
WipperSnapper UPDATE - Servo Control
The Adafruit IO team just released an update for Adafruit IO and the No-Code IoT Firmware, WipperSnapper. This update brings the ability to control the position of a servo motor from Adafruit IO, without writing a line of code. Servos may be used in any IoT projects where you need to physically display a value or to open a door/window/lock.
Combine Adafruit IO Actions with Servos for Rule-based IoT Projects
We also enabled control of a servo motor from an Adafruit IO Action. For example, the Action below tells a servo to write a pulse width of 2500uS if the temperature sensor (also connected to a WipperSnapper device) is greater than 70 degrees Celsius. The servo could be attached to a door, and open it if the temperature is too high.
How we implemented servos in Adafruit IO
The Adafruit Shop stocks many different types of servos that can rotate 180 degrees (90 degrees in each direction). While most (standard, non-continuous) servo motors generally adhere to “default” servo pulse widths provided by the Arduino library (1ms to 2ms), it’s possible that the defaults may not give you a full 180 degrees of motion. Instead of setting the angle of the servo, Adafruit IO’s servo support includes a “Generic Servo Component” that lets you set the minimum and maximum pulse width for your servo, in uS. Further - if your servo uses a non-standard frequency (anything other than 50Hz), it can be changed from here.
Read the Quickstart: Adafruit IO WipperSnapper guide to get started today for free »>
As always, if you have any suggestions or bugs to report about these new features, please let us know in the forums.
-
Adafruit IoT Monthly: BBQ Smoker, Emoji Telegraph, and more!
IoT Projects
Two Way Telegraph with Analog Feedback Servos
A fun way to communicate quietly (and wirelessly) within the same household or long distance to let someone know you’re thinking of them. These modern telegraphs use a combination of analog feedback servos and capacitive touch to create a two-way communication system. The emoji-clad dial is inspired by a ship’s mast. - Adafruit Learning System
cloudSmoker - BBQ Temperature Monitor
This is the last newsletter of summer, so we’ll include one last BBQ project. The cloudSmoker is a DIY temperature monitor for BBQ grills that can display time graphs of two temperature probes (pit and internal meat temperatures) and push notification alerts to a smartphone for when the meat is ready. -GitHub
E-Paper Price Tag Grid
E-Paper price tags are becoming ubiquitous at big-box stores in Europe (with slow adoption in the United States). After the tags were reverse-engineered, Aaron purchased a couple hundred of the tags and built them into a grid. Each display is controlled over ZigBee from a host PC. - YouTube
Using AWS IoT with the ESP8266
Brian took a deep dive to get AWS IoT working with his ESP8266 development board. This guide “should be treated like a recipe” and includes reproducible steps for using this board with the AWS IoT platform. - NetNinja
Modular Control System for a Garden Pond
Poseidon is a modular system for a garden pond. Leveraging a TICK stack (Telegraf, Influxdb, Chronograf, and Kapacitor), the system can control a fish feeder, water tap, the pond controller, and monitor the overall water quality. There’s also a web app to interact with the pond. - GitHub
MiniHelmetTracker - NFL Standings Tracker
As we proceed into American Football season in the States, Simon Schoar published their real-time NFL standings table robot. The MiniHelmetTracker “retrieves standings data - close to real-time - via WiFi and sorts mini helmets by the league, conference, division, and playoffs.” -schoar
CircuitPython on ESP32
The ESP32 is a great and very popular processor used on lots of development boards. However, its lack of native USB has kept it from getting a CircuitPython build… Until now! A new web workflow feature being added to CircuitPython 8 has brought the ESP32 back to the scene. This guide gets you started with CircuitPython on the ESP32. - Adafruit Learning System
IoT News and More!
The Engineer’s Guide to Matter
Ovyl has an excellent blog post up that cuts through the marketing details about the Matter IoT protocol and provides only the technical details. - ovyl
Azure Embedded Wireless Framework
Microsoft published information about their Azure Embedded Wireless Framework to GitHub. This is “a framework for writing applications and controlling wireless network adapters (cellular, WiFi, …) while abstracting a driver interface for hardware vendors to plug-in modules with self-developed drivers.” We’re all for abstracting driver interfaces! -Adafruit Blog
-
WipperSnapper Custom Component Visualizations
Another month, another Adafruit IO update! This time we’re bringing gorgeous default WipperSnapper component visualizations and the ability for users to customize them.
New! Configurable Component Visualizations
We’re pretty proud of our built-in visualizations:
…but we don’t require you to like them, so we’ve made them customizable.
Custom Labels
Maybe “On/Off” isn’t exciting enough for your IoT lights and you want to change it to something more provocative. Now you can!
Simply open the component settings (little gear icon in the top right of its panel) and you’ll see an “Appearance” section of the form. Type whatever text you want in the “On Label” and “Off Label” fields to see your changes reflected in the visualization live:
Custom Icons
What about those icons? I’m so glad you asked, because those are customizable as well! At launch, we have 2 sets of icons available:
- Font Awesome 6 (the same icons you see around the site)
- Emoji 😎
Changing icons is similar to editing labels, but you click the icon field to see a snazzy new icon picker:
New! Component Contributors Can Set Their Default Visualizations
In the last update, we talked about how our WipperSnapper-capable Components are now completely managed via JSON in a public GitHub repository. Now, that JSON can include visualization data, so folks contributing new Components to IO can make sure they are rendered beautifully by default. (At least until a user overrides those settings with their own idea of “beautiful”!)
Here’s a quick look at the JSON for the LED component:
{ "displayName": "LED", "autoSelectString": "led", "mode": "DIGITAL", "direction": "OUTPUT", "visualization": { "type": "switch", "offLabel": "Off", "offIcon": "fa6:regular:lightbulb", "onLabel": "On", "onIcon": "fa6:solid:lightbulb-on" } }
That
visualization
section is the new bit. It’s pretty straightforward, but you’ll still need a guide to explain the syntax and options available. Check out the Component Contribution Guide to learn how to add (and visualize) all those components you wish IO had.New! I2C Sensors Display Their Appropriate SI Units
Those incredible little I2C components can sure sense a lot of different stuff! From temperature to acceleration to air quality, we know it’s important to be clear about what exactly we’re tracking. With this update we’ve added the appropriate SI Units to each kind of sensor, so you always know exactly what the numbers mean.
Here’s an example using an upcoming component (the LC709203F Battery Monitor):
As always, if you have any suggestions or bugs to report about these new features, please let us know in the forums.
-
Adafruit IoT Monthly: Detect Radiation, ML Baby Monitor, and more!
IoT Projects
IoT Geiger Counter
With increasing discussions about nuclear war, g3gg0 felt “people got into thinking about radioactive exposure again”. However, most Geiger counters, a small instrument to detect radiation, available on the internet do not send their measurements to the internet. In the link, G3gg0 built their own internet-connected Geiger counter from start to end. - g3gg0
Machine Learning Hungry Baby Monitor
Caleb built a warning system for when his baby gets hungry. The baby monitor’s camera, interfaced with Google MediaPipe, can now detect behaviors like lip smacking, pacifier rejection, and fist rejection. - HackaDay
Tracking Satellites with a Low-Cost Base Station
Alberto Nunez built a base station for $40 capable of tracking satellites as they pass overhead. This project sends data to TinyGS, an “open network of Ground Stations distributed worldwide to receive and operate LoRa satellites, weather probes, and other flying objects. - HackaDay
Trials of Building an Internet-Enabled Vaccine Fridge
Charlie is building an internet-enabled fridge for a local veterinarian’s vaccine storage. The previous design used a Particle board and a cellular network to send a fridge’s configurable temperature reading to the internet. The latest post in this series attempts to “live the IoT dream” by connecting the fridge to an Arduino Opla and Arduino Cloud. -molecularist
IoT Pet Food Scale with Azure and CircuitPython
Liz Clark built a pet food scale using CircuitPython and a strain gauge. Measurements are sent to Microsoft Azure to ensure your pet doesn’t go hungry. - Adafruit Blog
LoRa Water Tank Level and Pump Controller
Renzo Mischianti is building a solar-powered controller for a water tank. This tank sits 1.5km away from home, with no power. The controller sends the water tank sensor readings over LoRa. The water pump activates when the tank’s water is too low. - HackaDay
A Simple Garage Door Opener with the Raspberry Pi Pico W
Core Electronics wired a garage door controller to the new Raspberry Pi Pico W. With some MicroPython code, the Pico W hosts its own web server which can be accessed to control the garage door. - core-electronics
IoT News and More!
Adafruit WipperSnapper - Updates & More!
The Adafruit IO team recently pushed a shiny new “getting started” experience for WipperSnapper that’s perfect for folks building their first IoT project. In addition to us blogging about the new onboarding process and design changes, we’ve also swept through existing product documentation to update the WipperSnapper firmware setup and Adafruit IO Usage process for each board.
Blecon - Network Infrastructure for BLE
BLEcon attempts to be the “missing network infrastructure for BLE” by using smartphones as Internet access points. - blecon
-
Adafruit IoT Monthly: Nautical Barometer, Raspberry Pi Pico W, and more!
IoT Projects
A Nautical Barometer for Precise Weather Forecasts
Debinix is a sailor who built a nautical barometer with environmental sensors to measure short-term changes in the weather, and also fetch long-term forecasts to display future weather on the sea. - instructables
Check your Mailbox with a fake Apple AirTag
Dakhnod developed FakeTag, a custom firmware for nRF51 chips that is compatible with Apple’s “Find My” ecosystem. With an nRF51 running FakeTag and a vibration sensor, dakhnod monitors if their mailbox has been opened. - GitHub
Building a Smarter Kitty Litter Tray
Andy Bradford‘s cat, Ellie, is hard to pick up and place on a scale. Unfortunately, this means that Ellie is weighed only once a year at the vet. He “wanted to build something that would fit into her life to track her weight automatically, without any intervention”. - Adafruit Blog
ESP32 TikTok Watch
A wearable device to stream TikTok videos to your wrist. - HackADay
LIDAR-based Letterbox Notifier
A mailbox notifier using a LIDAR distance sensor instead of the standard vibration sensor we usually see in these types of projects. - inspectmygadgets
Beehappy, an IoT Beehive
An internet-enabled beehive for beekeepers to track honey quantity, quality, and alerts for if the beehive was tampered with. - instructables
$10 Automated Blinds
An inexpensive automatic blind setup (around $10 per blind) that can be controlled automatically by the open-source Home Assistant software. -HackADay
Cellular-Enabled Power Outage Detector w/ SMS Notifications
Building a cellular power outage detector with Twilio and a Cellular Notecard from Blues Wireless. - Hackster
IoT News and More!
Raspberry Pi Pico W: $6 IoT platform
The brand-new Raspberry Pi Pico W features a powerful chip, the RP2040, and all the fixin’s to get started with IoT embedded electronics projects at a stress-free price of $6. - Adafruit Shop
ESP32-C5: Espressif’s first Dual-Band Wi-Fi 6 MCU
Espressif announced the ESP32-C5, a dual-band (2.4GHz and 5GHz) microcontroller with WiFi 6! - Espressif
Expired Certificate Causes German Card Payment Systems Outage
The Verifone H5000 had a security certificate stored on the card reader expire. While this hardware is no longer produced by Verifone, it is still in use across Germany. When building a device that connects to the internet, it’s important to consider how many years the certificates stored on the device are active for and provide a way to update them. - HackADay
Custom Web-Based UI for IoT devices with Golioth
Golioth published a blog about designing a custom, web-based UI project, using their firmware and web console. - Adafruit Blog
Adafruit.io, the IoT Platform for Everyone
Sign up for our IoT Platform, Adafruit IO (for free!) by clicking this link. We don’t have investors and we’re not going to sell your data. When you sign up for Adafruit IO+, you’re supporting the same Adafruit Industries whose hardware and software you already know and love! You help make sure we’re not going anywhere by letting us know we’re on the right track.
-
WipperSnapper Firmware Installer and Design Update
We’re back with new WipperSnapper features, exciting open source integrations, and a fresh design language for all of IO!
New! Built-in Firmware Installer for WipperSnapper
With the WipperSnapper firmware rocketing through the versions (Beta 39 last I checked!), we’ve made it easier than ever to install it on compatible hardware. Visit the new board selector to get started!
First, you’ll be presented with a list of compatible boards (18 and growing!) Select a board and IO dons its robe and hat to walk you through the install as a series of simple, well-explained steps (it’s a wizard, get it?)
Here’s the sort of thing we cover:
- plugging the board in with an appropriate cable
- downloading the latest, stable firmware version, built custom to your board
- a helpful reset timing animation for reliably entering bootloader mode
- setting up your secrets file (AIO Key embedded automatically!)
- understanding the pattern of blinking lights during firmware boot
Note: Not all WipperSnapper-compatible boards work with the new firmware installer. We still have our external firmware tool for LittleFS boards, and the original, manual install guide.
Open Source the Good Parts
Curious how all of this works? You’re in luck, as WipperSnapper is following a well-worn path for us here at Adafruit of open-sourcing the most powerful bits of our software systems: the data that drives things!
The list of compatible boards is driven by a few lines of JSON and some optional image files from the WipperSnapper Boards repository. Go on, take a peek if you’re curious! I’ll wait.
Cool huh? Now, if you’re interested in adding a whole new board to the WipperSnapper system, you’re in luck! Just for folks like you, we’ve written a guide to submitting new hardware to WipperSnapper.
So what are you waiting for?!? Now anyone can get their IoT products into the no-code-zone… with Adafruit IO and WipperSnapper!
User Interface Update: Main Menu
If you’ve looked in the past couple of weeks, you may have noticed the entire top of Adafruit IO has gotten a refresh. We’ve cleaned up the main menu, made links instant, and organized individual pages to share a common design language. Taken altogether, the site becomes easier to get around and just feels snappier.
Let’s look at some of the changes.
AIO Key and New Device Button
The “AIO Key” button is now a simple key icon. It still works the same, it’s just prettier! Its companion, the “New Device” button, gets you straight into the new, easy-to-use board installer no matter what page you’re on.
Devices
The “Devices” menu item is really just WipperSnapper, but renamed and moved to the front of the menu! As WipperSnapper settles down and accepts its destiny as the easiest way to use IO, it will gradually just become IO.
Take a look at the Devices page and you’ll see we’ve improved how your existing WipperSnapper devices are visualized:
Feeds, Dashboards, and Actions
These 3 pages kept their names (though “Actions” used to be “Triggers”.) The Feeds page now more clearly differentiates traditional Groups and Feeds from WipperSnapper Devices and Components.
Services became Power-Ups
“Power-Ups” is a simple rename from what were called “Services”. This is in anticipation of expanding these in the medium future, as we think they pair beautifully with the sheer ease of using WipperSnapper. Stay tuned!
Flyouts Gone
There are no more “flyouts” when you click a menu item, instead we navigate to the selected page instantly. We think this is a better experience: the whole site feels snappier!
Where’s my Profile?
We removed “Profile” as a main menu link, it was taking up valuable space and we already had other ways to get to those account pages. For instance, you can click your username just below the main menu on the left of most pages. You can also click “Account” near the top right of the page to reveal an “Adafruit IO Profile” link. (Sub-pages in the Profile area also need love and will be updated in a future release.)
Buttons! Alerts!
We’ve begun a broad overhaul to the design language of Adafruit IO, starting with the things you touch the most (Buttons!), and the things that yell at you the most (Alerts!).
This work will continue as we ship other features in the coming weeks.
Actions Page Update
The interface for creating and changing Actions was kind of buggy, so we updated it in this release as well. (Actions are another great pair for WipperSnapper!) The form is laid out better on its own page (instead of inside a “pop over” window.) We think it’s much nicer to use, now.
We think this makes a lot more sense, and it doesn’t break so easily now!
As always, if you have any suggestions or bugs to report about these new features, please let us know in the forums.
-
Adafruit IoT Monthly: eInk Postcard, VR Spectrum Instrumentation, and more!
IoT Projects
eInk Postcard Frame
This digital picture frame with an e-Ink display allows friends to upload and share photos to the display via a web interface. The project’s creator notes, “a kind of slow, fancy and black and white Snapchat”. - Hackaday.io
VR Spectrum Analyzer
A virtual reality interface for the spectrum analyzer software package, RTL-SDR. Considering most of our reader’s workbenches are full of diagnostic tools with small displays like oscilloscopes or multimeters, there’s a lot of potential in VR/AR tooling for engineering work. There’s a video on YouTube showing the tool in action. - GitHub.com
LoRa QWERTY Communicator
A “feature-packed” communication device for communicating text messages over the LoRa protocol. This project provides an alternative to cellular-based text message communication with low setup overhead. The editor especially likes the repurposing of a Blackberry Q10 keyboard. - GitHub
Plant Bot - Automated Plant Care
A “smart” gardening stake project that monitors and measures a plant’s moisture. Plants can be watered by pumps connected to the plant bot stake, too. - Hackaday.io
Building A Smarter Sprinkler System
Chris moved into a home and the “existing sprinkler system controller turns on when it is not supposed to, and forgets everything whenever the power blips”. The completed project integrates into Chris’ existing home sprinkler system controller and he now manages the 24V system using Python. - cdake
IoT News and More!
S1 System On Module
Silicon Witchery announced their S1 “System on a Module” for Bluetooth, FPGA, and Battery Management. This “hybrid” module mixes 4 components which are traditionally separate on a development board, into one chip. The S1 contains a nRF52 for processing and Bluetooth 5.2 support, a flash module for boot-code and user storage, a iCE40 FPGA for additional GPIO/SPI/I2C peripherals, and a PMIC buck-boost for charging. - Silicon Witchery
ESP32uesday: ESP32 Family, GPIO and Adafruit_Protomatter
Adafruit’s Phil B writes about the journey to acquire a more profound knowledge of the Espressif ESP32 family. - Adafruit Blog
Adafruit.io, the IoT Platform for Everyone
Sign up for our IoT Platform, Adafruit IO (for free!) by clicking this link. We don’t have investors and we’re not going to sell your data. When you sign up for Adafruit IO+, you’re supporting the same Adafruit Industries whose hardware and software you already know and love! You help make sure we’re not going anywhere by letting us know we’re on the right track.
-
Adafruit IoT Monthly: Detecting Water Pollution, Smart Girder, and more!
IoT Projects
Smart Girder - a Structural Information Display
Lame_Dave’s Smart Girder project adds an enormous RGB LED matrix into a structural girder in their home. Using a combination of scripts including Home Assistant, the Smart Girder can display data such as train times, weather information, overhead flights, and their car’s battery level - Hackster.io
Using SDR to Monitor Tire Pressure on a 2008 Toyota Tacoma
With his 2008 Toyota Tacoma only giving him information that the tire pressure is low, Ross reverse-engineered the tire pressure monitoring sensors. He used a Software Defined Radio (SDR) dongle to listen in on the frequency broadcasted by the tire monitoring sensors. If you’re into reverse engineering radio packets, this is the write-up for you! - r-c-y
Pothole detector using Kria KV260
The Kria KV260 camera module is used in conjunction with machine learning models to identify and take pictures of potholes in India. If a pothole is identified, an image and the location of the pothole are transferred to the local repair authority. - Adafruit Blog
GSM & SMS Enabled AI-driven (TinyML) Water Pollution Monitor
A budget-friendly device for collecting water resources in the field and forecasting pollution levels using TinyML. - Adafruit Blog
LoRa Mesh Network of Birdhouses
Placing LoRa radios in birdhouses to build a low-cost emergency mesh network for communicating across town. - WARS-Birdhouse
Building Alerts for Household Water Leaks
Suhas Deshpande built a water leak detection (and alert) system using a Raspberry Pi and a water leak sensor. Their software setup consisted of using Courier to create custom alert thresholds and Twilio for SMS/Email notifications if a leak is detected. - Courier Blog
Build an IoT Thermometer with Adafruit IO WipperSnapper
Digi-Key built an IoT thermometer using Adafruit’s no-code IoT platform, WipperSnapper. The ESP8266-based development board communicates with a BME280 module via I2C, requests temperature and humidity data every 30 seconds, and uploads the measured values to Adafruit IO. - Digi-Key
IoT News and More!
Home Automation Company Insteon Abruptly Closes
The smart-home company, Insteon, vanished during the month of April. Ars Technica reports:
“The service has been down for three days now despite the company status page saying, “All Services Online.” The company forums are down, and no one is replying to users on social media.
Insteon devices are reported to work locally, however, the voice assistant features no longer work. Further - the application used to configure (or re-configure) the Insteon Hub or Insteon Automations no longer works.
Thankfully, Home Assistant - an Open Source Home Automation project, supports Insteon devices. A blog post details how to integrate Home Assistant with existing Insteon devices and previews a new hub within Home Assistant for Insteon devices.
Better IoT Design Patterns: Desired State vs. Actual State
Golioth’s Mike Szczys is writing a series entitled “Better IoT Design Patterns”. In this blog post, he addresses the problem of a remote device’s state not syncing with the state of a virtual device. - Golioth
Adafruit.io, the IoT Platform for Everyone
Sign up for our IoT Platform, Adafruit IO (for free!) by clicking this link. We don’t have investors and we’re not going to sell your data. When you sign up for Adafruit IO+, you’re supporting the same Adafruit Industries whose hardware and software you already know and love! You help make sure we’re not going anywhere by letting us know we’re on the right track.
-
API Data Limit Default Changes
For the endpoint: https://io.adafruit.com/api/docs/#get-feed-data
We will be adjusting the default limit of 1000 records down to 100 records on April 29th, 2022.
This is simply the default, and if you need to process more you can pass the proper params to retrieve more data.
We’ve found that they way these endpoints are being used is that this is being called over and over by programs at a rapid rate, when I don’t think many users are expecting to retrieve the same 1000 records over and over again. This should help reduce some unexpected loads on our backend systems.
As always, if you have any suggestions or bugs to report about these blocks, please let us know in the forums. We have a specific forum for block suggestions that we periodically check as well.
-
Adafruit IoT Monthly: Happy Birds, Boat Monitoring, and more!
IoT Projects
Happy Birds - a Connected Bird Feeder
An internet-connected bird feeder with an ultrasonic sensor that snaps pictures of birds when they land for dinner. Data is sent to a mobile application named Happy Birds. - Instructables
Is My Boat Safe - An Arduino-Based Boat Monitor
This project monitors a riverboat parked at a marina. This IoT system has it all - geofencing (locational GPS) to prevent boat theft, an accelerometer for if someone crashes into the boat, alarms to track if the bilge is filling, fuel status, battery voltage, and more. - Arduino Create
Remote Temperature Sensor with Indoor Display
An outside temperature sensor’s value is displayed both on the internet and inside a home on a small OLED display. - whatimade
HTML5 and CSS parser and render pipeline on an ESP32
Rendering and parsing HTML5 + CSS on an ESP32 with the goal of displaying dynamically generated web content on a screen connected to the ESP32. - libwebsockets
Indoor air quality measurement with Adafruit Feather and Adafruit IO
Worried about your indoor air quality? tdw writes:
I was feeling poorly late this Summer and during that time, my wife made a comment about the quality of the air in our home. Since I wasn’t sleeping well during that period, it got me thinking that perhaps I should do a quick project to measure it. I did some research into various sensors, bought a few and set up a breadboard circuit that measured CO2, PM2.5, temperature, humidity and TVOC. I connected the thing to the Adafruit.io IoT cloud and built a few dashboards to let me watch.
Solar Tracker based on ESP32 with low-cost actuators integrated on Home Assistant
Vini’s Lab was visiting their parents in Brazil when they noticed they used statically mounted solar panels. To improve the output of the solar panels, they used low-cost actuators to move the panels based on the time of the day. - HackADay
Raspberry Pi Smart Magic Mirror
A DIY smart mirror powered by the Raspberry Pi and the MagicMirror2 software to display weather, calendar appointments, and the NYC subway transit schedule. - Becky Stern
IoT News and More!
WipperSnapper Updates - No-Code IoT by Adafruit
The Adafruit IO team has been working on WipperSnapper, our no-code IoT platform which works with any WiFi-enabled device. If you haven’t tried it out yet - we added a few installation and usage guides for popular IoT hardware such as the Feather ESP32v2, Feather ESP32, and the Feather ESP8266. Additionally, we’ve added support for the MCP9601 thermocouple amplifier and a guide on how to add your own components to WipperSnapper.
NIST CyberSecurity for IoT Publications
NIST, the National Institute of Standards and Technology, published some guidance documents and drafts which dive into IoT Device guidance for manufacturers and federal agencies looking to deploy IoT devices within their network.
Adafruit.io, the IoT Platform for Everyone
Sign up for our IoT Platform, Adafruit IO (for free!) by clicking this link. We don’t have investors and we’re not going to sell your data. When you sign up for Adafruit IO+, you’re supporting the same Adafruit Industries whose hardware and software you already know and love! You help make sure we’re not going anywhere by letting us know we’re on the right track.
-
New Action Features
New Features to IO Actions
We’ve deployed a few improvements to actions recently.
Email Templating
The first is the ability to modify the subject and body of the email related actions (reactive and scheduled). You can now customize the content of them by using a simplified templating system similar to how webhooks worked in the past. For example your subject can now include the name of the feed and value:
The
{{feed_name}}
has just gone above the high mark of{{value}}
degrees.Reactive Notification Limits
The second new feature is the ability to limit how often reactive actions will notify you if something happens. For example, you may only want to be notified once per day if your mailbox is opened. This was an oft-requested feature, and we’re hopeful it makes the actions a bit less spammy for those that prefer fewer notifications.
Another feature that we added, is the reactive action option to “Notify on Reset”. If selected, this feature will bypass any notification time limits and always alert you once your action is no longer in an ‘alarm’ state. A good example of when this woudl be useful is if you have a sump pump. You get a notifiaction when the water level is high, but then you also want to know that the water level has gone back down once the water is pumped out and is no longer in an alarm state.
IO Free and Reactive Emails
IO users on a free account can now setup reactive actions with email as an output format. This is limited to a single email every 15 minutes. Your adafruit account must be verified in order to enable email actions as well.
Various actions fixes
We’ve also deployed quite a few fixes around creation and editing of actions. Let us know if you’ve found anything new or still outstanding.
As always, if you have any suggestions or bugs to report about these new features, please let us know in the forums.
-
Adafruit IoT Monthly: Mailbox Bot, Wireless MIDI, and more!
IoT Projects
Solar-powered MailboxBot
An internet-connected camera takes daily pictures of the inside of fhuable’s mailbox and uploads them to an FTP server. - fhu-space
WeatherBot - 3D Printable Weather Forecasting Theater
An internet-connected weather machine that displays the current forecast using a miniature diorama - hackaday
ML Weather Station Predicts Future Air Quality
A DIY weather station that uses machine learning to predict future air quality readings. - hackaday
Home Applications Prototype
Bakken & Bæck developed a “technical prototype for a collection of apps which would allow you to teach your old furniture some new tricks, which you could then control to suit your own personal needs at your leisure.” - everydayexperiments
Off-Grid Raspberry Pi Pocket Cloud Server
A Raspberry Pi Zero W is turned into a portable off-grid NAS storage solution. - instructables
Wireless MIDI with nRF24L01
A hack to send MIDI data over nRF24L01 radio modules. This may be useful for artists who are limited by physical MIDI cables in their performances. - hackaday
Off-grid LoRa Communicator
“I started this project because I often travel in convoy with friends to remote areas where sending a simple WhatsApp message is impossible due to non-existent cell phone signal.” - hackaday
TshWatch, ESP32 Watch
An ESP32 e-ink watch with a real-time clock, skin temperature monitoring, pedometer, air humidity, and pressure sensors. - hackster
IoT News and More!
WiFiWire – a I2C to UDP Bridge
WiFiWire provides a Wire (i2c) protocol able to communicate over AsyncUDP. You can have your program use a Wire (i2c) sensor/device, but it is communicating over a network rather than wiring. - Adafruit Blog
Cloning the AirTag
An experiment to develop an AirTag-clone. - positive.security
Adafruit.io, the IoT Platform for Everyone
Sign up for our IoT Platform, Adafruit IO (for free!) by clicking this link. We don’t have investors and we’re not going to sell your data. When you sign up for Adafruit IO+, you’re supporting the same Adafruit Industries whose hardware and software you already know and love! You help make sure we’re not going anywhere by letting us know we’re on the right track.
-
Triggers Renamed to Actions
We just wanted to write a quick update that “Triggers” in Adafruit IO are now named “Actions”.
Existing API endpoints should continue to work, or you can use the new ‘/api/v2/actions’ endpoint.
Any client libraries or code using triggers should not require any changes.
As always, if you have any suggestions or bugs to report about these blocks, please let us know in the forums. We have a specific forum for block suggestions that we periodically check as well.
-
New Dashboard Blocks and Block Changes
New Dashboard Blocks - Divider and Battery
We have two new block additions ready for you to use in your IO dashboards.
The first is the Divider Block. This block is a simple way to help you organize your dashboard and break it up a bit. You can stretch the block horizontally or vertically. Basically, just edit the block layout and drag and drop to where you would like the line divided. It allows for a couple of line widths as well.
The second new block is the Battery Block. This block takes a value from 0-100.0 and displays the percentage left in a battery icon. It also allows for the text of the value to be displayed, similar to the options on a phone. This block works particularly well paired with the Adafruit LC709203F Fuel Gauge and Battery Monitor.
Resizable Toggle Switch Block
A change you’ll be seeing soon (or it’s already been made by the time you read this) is that the Toggle Switch Block will be updated to dynamically resize.
It will fit a percentage of the block’s entire size. This may cause some of your existing toggle switches to either jump in size or shrink down a bit. We think the added flexibility is worth the trade-off in having to adjust the existing blocks, and we hope you do as well.
As always, if you have any suggestions or bugs to report about these blocks, please let us know in the forums. We have a specific forum for block suggestions that we periodically check as well.
-
Adafruit IoT Monthly: Automated Chicken Coop, the Matter Standard, and more!
IoT Projects
Monitoring the 21st Century Henhouse
James Bowman posts about successfully automating reading the status of a chicken coop. It uses a Raspberry Pi Pico doing perform sensing, with a 915 MHz Lora module to transmit the status back to the base. It’s powered by the coop’s 12V battery via a 5V linear regulator. - Adafruit Blog
Internet of Things Mood Tracker for School or Work
How are you doing? That’s sort of the idea behind this project that helps track the overall mood of a cohort of students. - Adafruit Blog
IoT Project Ideas for COVID-19 Prevention
Umwelt-Caompus Birkenfeld has been building up a large number of projects revolving around CO2 measuring devices for classrooms. Even after the pandemic, CO2 visualization leads to targeted ventilation in classrooms which reduces a student’s fatigue. - umwelt-campus, Note: This website is in German, you may need to use Google Translate
Hot Tub Water Quality Monitoring
Building a water quality monitoring system for a hot tub. The hot tub’s water quality can be measured on an online dashboard and send SMS texts for chlorine emergencies. - Hackster
Plush IoT Birthday Reminder Lamp
Charvi Shrimali created an internet-connected cupcake lamp “that receives data from my calendar and lights up, reminding me to not forget my friends in the madness of grad school”. This plush lamp is stitched using polyfill and fabric and uses a combination of the Adafruit Feather HUZZAH ESP8266, Adafruit IO, and IFTTT Google Calendar applet. - Adafruit Blog
IoT News and More!
Espressif Matter Series
Matter is a new initiative of the Connectivity Standards Alliance and developed through collaboration amongst all the leaders of the IoT industry. Espressif has developed a series of 6 blog posts that detail the protocol. - Espressif
Samsung Upcycling Program to Enable Consumers to Repurpose Galaxy Smartphones Into IoT Smart Home Devices
I previously posted about Samsung’s upcycling program when it was announced as I’m interested in the concept of giving our outdated devices a “new life”. Samsung’s new SmartThings Labs app allows a person to reuse their Galaxy smartphone as sound or light sensor nodes, for use in a smart home. - Samsung Newsroom
Sigfox, HT Micron, and Nowi Tease an Energy-Harvesting IoT Module
Sigfox, a firm known for low-power-wide-area (LPWA) technology, is working with Nowi and HT Micron on a new energy harvesting IoT device. The device will reportedly extract “extracts power from ambient energy sources like light and vibration to charge a variety of energy storage elements such as a rechargeable battery or a capacitor.” - enterpriseiotinsights
Amazon expands Sidewalk with a new bridge
Amazon’s Sidewalk low-power wide-area network protocol has been running on echo devices for the past year. The Amazon Ring and Amazon Tile devices operate on the same bandwidth and connect to this network. In an effort to expand their Sidewalk network, Amazon introduced the “Amazon Sidewalk Bridge Pro by Ring”. This is an enterprise-grade LPWAN bridge designed to build a network of devices that operate on their Sidewalk ecosystem. - TechCrunch
Casually Chirping Into the World of LoRaWAN
Hackaday’s Maya Posch writes about the long-range wide area network (LoRaWAN) modulation technique which is becoming popular in IoT applications. - HackaDay
A Practical Approach To Attacking IoT Embedded Designs
An incredibly in-depth blog post from IOActive Labs about embedded IoT software hacking. - IOActive
Adafruit.io, the IoT Platform for Everyone
Sign up for our IoT Platform, Adafruit IO (for free!) by clicking this link. We don’t have investors and we’re not going to sell your data. When you sign up for Adafruit IO+, you’re supporting the same Adafruit Industries whose hardware and software you already know and love! You help make sure we’re not going anywhere by letting us know we’re on the right track.
-
Adafruit IoT Monthly: 2021 in Recap!
Editor’s Note
Hi readers! This is the last Internet of Things Monthly newsletter for the calendar year of 2021. I’ll be listing off what I enjoyed reading about in 2021, some trends, and the excellent projects which have come across my desk.
If you’re a new reader to this newsletter - welcome! I’m Brent. I’m an engineer at Adafruit who works on all kinds of things, including writing the IoT Monthly. This newsletter was previously known as the Adafruit.io newsletter and only contained news and projects about our Adafruit.io IoT Platform. In 2019, we expanded this newsletter to the broader topic of the Internet of Things. Unlike Adafruit’s other newsletters which are sent on a more frequent basis, this newsletter is distributed only once a month, giving enough time for me to gather information from around the internet for readers. I’d also like to extend thanks to Anne Barela for her behind-the-scenes editing work on these newsletters for the past two years.
This past year, I’ve helped launch the beta of Adafruit’s WipperSnapper platform. I’ll be working with the IO team on making it even better in 2022, more to come!
Thank (over 4,000+ of) you for subscribing to this newsletter. Next month’s issue will return to regular programming.
Cheers,
p.s.: If you have any feedback or want to submit your project to this newsletter, send an email to iotnews@adafruit.com.
Projects
We’ve posted a good number of IoT projects which combine Machine Learning with the capabilities of the internet….
- The camera that determines the type of bird at a feeder
- Making an analog power meter smart with a neural network
- Detecting if a package is sitting on your porch
Another recurring project type we saw was data visualization projects. The environment around us is often invisible and people enjoy building projects to help illustrate trends and understand environmental data.
- This freeform circuit sculpture displays the current weather forecast.
- The Weather station that predicts rainfall intensity.
- A network of over twenty(!) Bluetooth soil sensors in a garden “to provide a comprehensive picture of just what the water in the dirt is doing”.
- The Canari lamp is a beautiful way to transform local air quality readings into lighting patterns.
- A wall-mounted e-ink newspaper that fetches the news every morning.
- Lots of air quality sensor projects have been written about this year.
- Lastly, tracking a turtle’s activity during the day.
Stories and News
I’ve enjoyed reading and learning about…
- Increased deployment of satellite-based internet providers.
- Sensors that harvest energy and generate their own power.
- Matthias Bösl’s writings on developing commercial IoT projects.
- 2021 has brought a nice offering of IoT chipsets from EspressIf such as the ESP32-S2, the ESP32-C3, and the ESP32-H2.
- Device upcycling initiatives by large corporations like Samsung.
- Ultra-wideband radios caught my eye when Apple announced their new AirTag location tags, powered by Ultra-wideband. Jenny List provides a technical dive into these new radio signals and modules.
- Improv, an initiative funded by Nabu Casa which promises a “free and open standard with ready-made SDKs that offer a great user experience to configure Wi-Fi on devices”.
- An attempt to illustrate the contrasting internet speeds in Germany where reporters ran an experiment to see if data delivered via horse would arrive faster than over broadband.
-
Adafruit IoT Monthly: Coffee Routine, IoT Cat, ESP32-S2 Feather, and more!
IoT Projects
Automating a Morning Coffee Routine
Petertree built a coffee maker which is “2x more expensive and messy than the one you can get on Amazon”. - Hackster
Putting a WiFi Router into an iPhone Wall Charger
Ryan Walker is building a “purpose-built router to be used in network attacks and exploits” which fits inside the casing of a standard iPhone wall charger - MachineHum.Medium.com
How to Get an AWS IoT Project Quickly Off the Ground
Demonstrating a model-based AWS IoT development for IoT development using state machines. - EmbeddedArtistry
Integrating a Plant Watering Project into an Existing Home Automation System
Sasa details their experience integrating a watering system into a scratch-built home automation system. - HackADay
Extracting Data from a Smart Scale
Kevin Norman extracted his data from a WiFi scale’s mobile app using optical character recognition (OCR) - HackADay
Pogo Pin Lock and Key with MQTT
Cheats built “a kind of lock and key that acts sorta like a USB hardware token”. Once the key is placed into the “lock”, an MQTT message is sent from the ESP8266 to perform an “unlock” action on the internet. - Hackster
Connecting a Robot Cat to the Internet
Charlyn Gonda developed a LinkedIn Learning IoT course for beginners which teaches “how to use CircuitPython—a version of Python specifically for microcontrollers—to program a robot cat that reacts to events while connected to the internet.” - LinkedIn Learning
IoT News and More!
Best practices for debugging Zephyr-based IoT applications
Best practices for debugging IoT projects that run on the Zephyr real-time operating system. - Embedded
Building an IoT Product — The Product(ion) Feedback Loop
A blog post from the perspective of an engineer about producing a physical IoT product using different Electronic Manufacturing Services. - Medium
ESP32-H2 Officially Recognized as a “Thread-Certified Component” and a “Zigbee-Compliant Platform”
The upcoming ESP32-H2 module is ZigBee compliant and supports the upcoming Matter protocol. - Espressif
No battery? That’s no problem for the future Internet of Things
Josiah Hester is producing batteryless devices for the future of IoT. One of the devices is a Gameboy powered by button presses and the sun. - Adafruit Blog
Adafruit ESP32-S2 Feather
What’s Feather-shaped and has an ESP32-S2 WiFi module? What has a STEMMA QT connector for I2C devices? What has your favorite Espressif WiFi microcontroller and lots of Flash and RAM memory for your next IoT project? What will make your next IoT project flyyyyy? That’s right - it’s the new Adafruit ESP32-S2 Feather! We also made one with a built-in BME280 temperature/humidity/pressure sensor - Adafruit Store
NEW IOT HARDWARE: ESP32-S3 Box
The ESP32-S3-BOX provides a platform for developing the control of home appliances using Voice Assistance + touch screen controller, sensor, infrared controller, and intelligent Wi-Fi gateway. - Adafruit Store
NEW IOT HARDWARE: ESP32-S3-WROOM-1 Dev Boards
The ESP32-S3-DevKitC-1 is an entry-level development board equipped with ESP32-S3-WROOM-1, a general-purpose Wi-Fi + Bluetooth LE MCU module that integrates complete Wi-Fi and Bluetooth LE functions. - Adafruit Store
Adafruit.io, the IoT Platform for Everyone
Sign up for our IoT Platform, Adafruit IO (for free!) by clicking this link. We don’t have investors and we’re not going to sell your data. When you sign up for Adafruit IO+, you’re supporting the same Adafruit Industries whose hardware and software you already know and love! You help make sure we’re not going anywhere by letting us know we’re on the right track.
-
Adafruit IoT Monthly: Energy Harvesting Sensor Nodes, Tracking a Turtle, , and more!
IoT Projects
Grafana Data Source for The Things Network
A method for streaming LoRaWAN sensor data from The Things Network to Grafana, an open-source data visualization tool. - Lupyuen on GitHub
Tracking a Turtle’s Day with WipperSnapper
Using an Adafruit Funhouse and a PIR motion sensor, this fun project tracks the movement of Cujo the turtle. Then it analyzes and visualizes the data gathered. - Adafruit Learning System
Determining When to Water your Plants with an Internet-Enabled Scale
Typically, IoT plant monitoring involves a resistive moisture sensor. Phidgeteer built a plant monitoring solution that monitors the water weight of the plant with an internet-connected scale. - Adafruit Blog
IoT Alarm Clock with Speech Synthesization
This alarm clock has a 3W speaker which can wake you up by playing audio from a text to speech synthesizer, an internet radio station, or local news. - Instructables
No-Code WipperSnapper Water Detection
Setting up a water sensor inside Adafruit’s factory to prevent water damage from the massive AC units. - Adafruit Learning System
Connecting a Miffy bunny to the Internet of Things with MicroPython, ESP8266, and MQTT
Jesse Andrews posts about hacking a Miffy bunny lamp from Japan with NeoPixels and a web server. - Adafruit Blog
IoT News and More!
Resurrecting the Nabaztag IoT Bunnies from 2005
The Nabaztag bunny released in 2005 could display ambient information from the internet. Unfortunately, “Violet closed down and Nabaztag was bought out by Mindscape then Aldebaran Robotics and in 2015 the servers were shut down leaving the bunnies dead as a brick”. With a new refurbishment kit, powered by a Raspberry Pi, you can bring these IoT displays back to life. - Adafruit Blog
Staying data compliant in the IoT
The General Data Protection Regulation (GDPR) of the European Union brings a unique set of data privacy challenges to all internet-connected products. Ludovic Rembert offers a few suggestions to keep your products and projects data compliant. - Embedded
More Satellite IoT Deployments
With SpaceX leading the way, a large number of IoT providers are launching satellites into space. - staceyoniot
NEW HARDWARE: Realtek RTL8722 Ameba Mini Board
Ameba RTL8722DM Mini Board (AMB 23) is a devkit for a different family of WiFi/BLE-integrated chipsets from RealTek. Some notable specs - high-performance 32-bit dual MCU, 5GHz WiFi, BLE5, and rich I/O peripherals. - Adafruit Store
NEW HARDWARE: Newt – a low-power, open-source, 2.7-inch IoT display
Newt is a battery-powered, always-on, wall-mountable display that can go online to retrieve weather, calendars, sports scores, to-do lists, quotes…really anything on the Internet! - Adafruit Blog
NEW HARDWARE: Nordic and Nowi Thingy:91 NH2, an Energy Harvesting Sensor Node
The NH2 is a sensor node development platform that combines Nordic’s Thing:91 with Nowi’s NH2 Energy Harvesting PMIC. - Nowi Energy
Adafruit.io, the IoT Platform for Everyone
Sign up for our IoT Platform, Adafruit IO (for free!) by clicking this link. We don’t have investors and we’re not going to sell your data. When you sign up for Adafruit IO+, you’re supporting the same Adafruit Industries whose hardware and software you already know and love! You help make sure we’re not going anywhere by letting us know we’re on the right track.
-
Adafruit IoT Monthly: No-Code IoT with WipperSnapper, Beaming Internet across the Congo, and more!
IoT Projects
Adafruit Wippersnapper Beta Launches!
WipperSnapper is an interface for Adafruit IO, our incredibly easy-to-use IoT platform, designed to turn any WiFi-capable board into an IoT device without programming a single line of code.
WipperSnapper is now in Public Beta, you can get started with WipperSnapper by visiting io.adafruit.com/wippersnapper.
Over Engineered Smart Doorbell with Machine Learning
Instead of picking up a Ring doorbell, Victor Sonck created a machine-learning system to detect when his doorbell rings. - HackADay
Building an IoT Product — Continuous Battery Lifetime Testing
One of the key features of an internet-of-things device is its power consumption. Matthias Boesl of tado details his team’s journey integrating battery-life testing into their product’s CI/CD pipeline. - Medium
Buddy - Personal Home Office Assistant
Buddy is a hardware platform built around the M5Stack Core 2 which connects to a mobile app. The app “runs an algorithm to calculate productivity considering temperature, humidity, light and, IAQ” and re-calculates the productivity percentage as you re-arrange your home office environment. - Hackster.io
IoT News and More!
Beaming broadband across the Congo River
Alphabet’s X Company is transmitting broadband using an optical link between Brazzaville in the Republic of the Congo and Kinshasa in the Democratic Republic of Congo. The optical link uses beams of light to send data over a river at up to 20 Gbps. - X.Company
A Horse-based Internet Speed Test
In an attempt to illustrate the contrasting internet speeds in Germany, reporters ran an experiment to see if data delivered via horse would arrive faster than over broadband. - HackADay
Silicon Labs ‘Works With’ Announcements
Silicon Labs held a “Works With” event last month to introduce new capabilities including new systems-on-chips operating in the sub-gigahertz spectrum, a unified SDK for their product line, and a new custom manufacturing service to enhance the security of modules from the foundry. - EETimes
Home Assistant’s Amber is a unified Smart Hub for your home
Home Assistant is crowdfunding for their Amber Smart Home Hub. Amber is a device that can be used to get started using Home Assistant without fussing with buying a single-board computer and installing software. Onboard is a Raspberry Pi Compute Module 4 and Zigbee module which is compatible with the upcoming Matter IoT standard. - CrowdSupply
On the economic impact of Open Source Software and Hardware on the EU economy
The European Commission concluded a study which considered “if OSH is to follow the same development as OSS, it could constitute a cornerstone of the future Internet of Things (IoT)”. Their study listed relevant policy improvements to support a the EU economy gaining a competitive edge on the software and hardware industries. - Adafruit Blog
Adafruit.io, the IoT Platform for Everyone
Sign up for our IoT Platform, Adafruit IO (for free!) by clicking this link. We don’t have investors and we’re not going to sell your data. When you sign up for Adafruit IO+, you’re supporting the same Adafruit Industries whose hardware and software you already know and love! You help make sure we’re not going anywhere by letting us know we’re on the right track.
-
Adafruit IoT Monthly: WFH Stress Monitor, Helping Parkinson's Patients with IoT, and more!
IoT Projects
Bluetooth WFH Stress Monitor
If Slack notifications are making you anxious, this project monitors your heart rate (along with your office’s environment) and sends a notification when you need to take a break. - Hackster.io
Three WiFi Meters built for Arduino and ESP32
An art project which provides three ways to physically communicate information about the invisible WiFi networks all around you. - GitHub
Home Assistant Controller with MacroPad
Using a USB keypad to control IoT smart-things over a local home network. - Adafruit
Pet Food Monitor with Computer Vision
Determining the level of a cat’s food bowl using computer vision. - projects-raspberry
Hacking the Things Network Indoor Gateway
Tinkerman cracks open the Things Network Indoor Gateway, a low-cost indoor LoRaWAN gateway, and experiments with everything from adding an external antenna to peeking at the firmware. - Tinkerman
Smart Farming System
An indoor smart-agriculture system with automatic watering and an Adafruit.io dashboard for monitoring. - An indoor smart-agriculture system with automatic watering and an Adafruit.io dashboard for monitoring. - [GitHub](https://circuitdigest.com/microcontroller-projects/iot-based-smart-agriculture-moniotring-system)
Helping Parkinson’s Patients with AWS IoT
A device that can monitor Galvanic Skin Response, Microphone and Gyroscope data, and send it to AWS cloud. - Hackster
The 603-200 Watch
An ESP32-based watch project with 4 concentric circles of LEDs (200 total!). While inspired by TokyoFlash, this watch aims to be a “fully modern connected watch”. - HackaDay
IoT News and More!
Build a no-code IoT project with ESP32 and WipperSnapper
Last week, we added a new board to Adafruit.io WipperSnapper – our no-code IoT project interface for adafruit.io. WipperSnapper now supports the ESP32 platform. - Adafruit Blog
Can IoT Help Catch Wildfires In Time?
An investigation into IoT solutions for monitoring wildfires in the Western United States. - EETimes
Security flaws found in popular EV chargers using Raspberry Pi
The commercial use of the Raspberry Pi is introducing security issues with new EV chargers. - Adafruit Blog
Adafruit IO News
Get a beta invite to Adafruit.io WipperSnapper
Wippersnapper is a new no-code IoT interface for Adafruit.IO – it lets you turn any WiFi-capable board into an IoT device without any programming. Simply select what devices are connected to which pins on the hardware and it will auto-configure the firmware and even create an IO feed for visualization.
How can I get an invite to the Adafruit.io WipperSnapper Beta?
First – You’ll need a compatible board to use with WipperSnapper. WipperSnapper currently supports the following hardware: Metro ESP32S2, FunHouse ESP32-S2, MagTag ESP32S2, ESP32, PyPortal, Metro SAMD51+AirLift.
Then – Navigate to the official Adafruit Discord Server and post in #help-with-adafruit-io that you’d like a WipperSnapper beta invite. We’ll message you over Discord with further instructions!
Adafruit.io, the IoT Platform for Everyone
Sign up for our IoT Platform, Adafruit IO (for free!) by clicking this link. We don’t have investors and we’re not going to sell your data. When you sign up for Adafruit IO+, you’re supporting the same Adafruit Industries whose hardware and software you already know and love! You help make sure we’re not going anywhere by letting us know we’re on the right track.
-
Adafruit IoT Monthly: Forest Fire Beacons, IoT for Beginners, and more!
IoT Projects
eON e-ink Air Quality Sensor
Unlike air quality sensor projects we’ve previously included in this publication, this is a modular air quality sensor. Due to the chip shortage and supply chain woes, the eON air quality sensor can be built using a variety of sensors and radios. - HackADay
MicroPython Vegetable Garden Automation Tutorial
Rototron highlights a project which adds solar-powered sensors and home automation to a vegetable garden and transmits the data using MQTT for review and control on a mobile app. - Adafruit Blog
Traffic Mitigation with a Machine Learning Speed Trap
Tired of reckless driving in his neighborhood, Rob Lauer built a speed trap to measure the frequency of speeding cars. Data aggregated from this project was submitted to the city for their traffic mitigation planning efforts. - Hackster.io
HomeKit Connected Fence Door Monitoring System
A DIY solar-powered fence door monitoring device. The door’s state is monitored with Apple HomeKit. - movingelectrons
Ikea VINDRIKTNING meets MQTT
Ikea released this super-inexpensive air quality sensor. The only downsides are that the VINDRIKTNING lacks internet connectivity and it does not seem to be available in the United States yet. Hypfer connected an ESP8266 to the VINDRIKTNING’s PCB pads and has firmware on a GitHub repository which allows it to connect with any MQTT broker - GitHub
Early Forest Fire Detection System
Wesley Eccles created this IoT fire detection system. Instead of heavy infrastructure drones deliver IoT beacons for a mesh system. - Adafruit Blog
IoT News and More!
Microsoft Launches Free “IoT for Beginners” Course
A free, open-source, 12 weeks/24 lesson IoT curriculum designed for beginners by the Azure IoT team. - GitHub
Light Gestures by Timi Oyedeji
Light Gestures is a technical prototype for a method of using natural gestures (making a “shhh!” motion at your smart speaker) for smart home appliances. - Adafruit Blog
Echo Devices - Reset, but not wiped?
Northeastern University researchers spent 16 months performing forensic analysis on 86 used Amazon Echo devices. The end result - researchers were able to extract a rough idea of the device’s previous geolocation and a list of previously connected WiFi networks. - Adafruit Blog
Newark 2021 Global IoT Trends Report
Newark reached out to its global customer base with an IoT survey between September 2020 and December 2020. They got 2,095 completed questionnaires, primarily from engineers of IoT solutions, in 60 countries. They have compiled the results into their 2021 Global IoT Trends Report. - Adafruit Blog
The Strings of Cellular IoT
Brandon Satrom writes about the “invisible strings of cellular IoT” - the invisible difficulties which exist when building a cellular IoT solution. - Cellular IoT
Adafruit IO News
Get a beta invite to Adafruit.io WipperSnapper
Wippersnapper is a new no-code IoT interface for Adafruit.IO – it lets you turn any WiFi-capable board into an IoT device without any programming. Simply select what devices are connected to which pins on the hardware and it will auto-configure the firmware and even create an IO feed for visualization.
How can I get an invite to the Adafruit.io WipperSnapper Beta?
First – You’ll need a compatible board to use with WipperSnapper. WipperSnapper currently supports the following hardware: Metro ESP32S2, FunHouse ESP32-S2, MagTag ESP32S2, PyPortal, Metro SAMD51+AirLift.
Then – Navigate to the official Adafruit Discord Server and post in #help-with-adafruit-io that you’d like a WipperSnapper beta invite. We’ll message you over Discord with further instructions!
Adafruit.io, the IoT Platform for Everyone
Sign up for our IoT Platform, Adafruit IO (for free!) by clicking this link. We don’t have investors and we’re not going to sell your data. When you sign up for Adafruit IO+, you’re supporting the same Adafruit Industries whose hardware and software you already know and love! You help make sure we’re not going anywhere by letting us know we’re on the right track.
-
Adafruit IoT Monthly: Smart Agriculture, an E-Ink Newspaper, and more!
IoT Projects
IOT Based Fertilizer System for Smart Agriculture
Monitoring nitrogen, phosphorous, and potassium for indoor plants and crops. - hackster.io
Canari - An Air Quality Lamp
The Canari lamp project fetches data from a public API to obtain local air quality and transforms it into lighting patterns. - Instructables
Cellular Beehive Monitoring
A cellular-connected beehive system monitors the hive’s internal and external temperature and sends a notification if the hive is moved or gets knocked over. - electromaker
Discord and Slack Connected Smart Plant with Adafruit IO Triggers
Always on the computer with no time to water your plants? Build an internet-enabled planter to send notifications over a Slack or Discord channel when it needs water. - Adafruit Learning System
QMesh - A Synchronized LoRa Voice Network
QMesh is a new voice network protocol project based on the LoRa protocol instead of FM voice. - hackaday.io
E-Ink Newspaper
A wall-mounted e-ink newspaper that fetches the news every morning. - gregraiz
Optimizing a Raspberry Pi for Off-Grid Power Consumption
An experiment detailing power optimization strategies for the Raspberry Pi. - gregraiz
IoT News and More!
Create and continuously update the code on your microcontrollers with Toit
Kasper Lund discusses a new way of building applications for the internet of things using a virtual machine and Toit. - Adafruit Blog
FragAttacks - New WiFi Vulnerabilities
FragAttacks (fragmentation and aggregation attacks) are a collection of new vulnerabilities that affect Wi-Fi devices. The good news is that these design flaws, part of Wi-Fi since 1997, are hard to abuse! - FragAttacks
What is Ultra Wideband?
Ultra wideband radios caught this author’s eye when Apple announced their new AirTag location tags, powered by ultra wideband. Jenny List provides a technical dive into these new radio signals and modules. - HackaDay
Improv WiFi: Open standard for setting up Wi-Fi via Bluetooth LE
Improv is a new initiative funded by Nabu Casa which promises a “free and open standard with ready-made SDKs that offer a great user experience to configure Wi-Fi on devices”. - Adafruit Blog
TinyTuya
A Python module to interface with the popular Tuya WiFi devices. - GitHub
Adafruit IO News
Adafruit IO Stats
Adafruit IO has 399,000+ total users! Here are the interesting stats from the last 30 days:
- Total Feeds: 660,000+ (and counting!).
- There are over 21,000+ feeds online as of the time of writing.
- There is an average of 4,800+ MQTT connections over the last 30 days.
Sign up for Adafruit IO (for free!) by clicking this link. Ready to upgrade? Click here to read more about Adafruit IO+, our subscription-based service. We don’t have investors and we’re not going to sell your data. When you sign up for Adafruit IO+, you’re supporting the same Adafruit Industries whose hardware and software you already know and love! You help make sure we’re not going anywhere by letting us know we’re on the right track.
-
Adafruit IoT Monthly: Toddler Clock, Predictive Weather Station, and more!
IoT Projects
NightBunny Toddler Clock
This bunny night light glows different colors to help Eyal51’s toddler understand different times of the day without reading a clock. - GitHub
IoT Weather Station Predicts Rainfall Intensity
Instant, heavy, rainfalls have effected crop yield in Turkey. kutluhan_aktar built a weather station which logs weather data on Google Sheets and interprets it using a neural network to accurately predict the intensity of the rainfall in their region. - Hackaday.io
Pet Bowl Water Level Sensing
Keep an eye on your pet’s water bowl using the FunHouse development board and Home Assistant. - Adafruit Learning System
Monitoring Baby Chicks
Derral Garrison built a monitoring system for their cute baby chickens. - Adafruit Blog
Telegram-enabled Thermal Printer
Control thermal printers via the Telegram app to print out notes, shopping lists, and more. - Hackaday.io
Mail Slot Detector
Waiting for that very special piece of mail? This mail slot detector will text you when the mail has been delivered. - Adafruit Learning System
IoT 3D Printer Filament Box Humidity Monitor
Increase the shelf life of 3D printer filament by monitoring its storage container. - Adafruit Blog
Soil moisture monitoring in a flower garden
A network of over twenty(!) Bluetooth soil sensors in a garden “to provide a comprehensive picture of just what the water in the dirt is doing”. - Hackaday.io
IoT News and More!
Dale Dougherty on TFW: Your Device Breaks Up With You
Dale Dougherty brings up some very important points, mainly how should we be thinking about end-of-life for our smart devices - MakeZine
AWS Architecture Blog: Exponential Backoff and Jitter
A deep-dive into the solution Amazon Web Services uses to spread out client connections and reduce system load. While Amazon uses this for AWS, the same technique can be used while designing firmware for internet-of-things devices to reduce the server load and increase device battery life. - AWS Blog
Adafruit IO News
Adafruit IO Stats
Adafruit IO has 390,000+ total users! Here are the interesting stats from the last 30 days:
- Total Feeds: 650,000+ (and counting!).
- There are over 22,000+ feeds online as of the time of writing.
- There are an average of 5,000+ MQTT connections over the last 30 days.
Sign up for Adafruit IO (for free!) by clicking this link. Ready to upgrade? Click here to read more about Adafruit IO+, our subscription-based service. We don’t have investors and we’re not going to sell your data. When you sign up for Adafruit IO+, you’re supporting the same Adafruit Industries whose hardware and software you already know and love! You help make sure we’re not going anywhere by letting us know we’re on the right track.
-
Adafruit IoT Monthly: IoT Pool Monitor, Edge AI, and more!
IoT Projects
Pool Temperature Monitor
It’s getting closer to summer in the States and that means cooling off in the pool. Blake built a pool temperature probe which is waterproof and shielded from the elements. Data from the probe is broadcast to Adafruit IO and displayed locally on a MagTag e-Ink IoT display. - hackaday.io
Machine Learning Package Detector
Build a machine learning package detector with Microsoft Lobe that sends you an email notification when a package is left at your door. - Adafruit Learning System
Freeform Weather Sculpture
A freeform circuit sculpture that displays the current weather forecast. - hackaday.io
Basics of Embedded and IoT Development with Python
An introduction to using Python for embedded IoT development. - kalebujordan.dev
FunHouse Motion Detecting Lights with LIFX Bulbs
Control WiFi Light bulbs with the (new!) Adafruit FunHouse WiFi home automation development board. - Adafruit Learning System
A DIY Extensible and Privacy-focused Smart Home Hub
Xasin is building an open source smart home hub to address privacy and interoperability concerns with existing smart home hubs. - hackaday.io
IoT IR Remote
A WiFi infrared remote control for your home entertainment system. - Adafruit Learning System
ESP32 Soil Moisture Sensor Probe
A soil moisture sensor with an ESP32 built-in for processing and networking. - hackaday.io
WiFi Motion Sensor
Motion sensor with email notifications. - hackaday.io
IoT News and More!
A look at the fragmented landscape for IoT Connectivity
An in-depth survey and analysis of the current wireless connectivity protocols. - Twilio Blog
Edge AI – What is it and What can it do for Edge IoT?
An overview of edge machine learning and its applications for IoT systems. - Seeed Studio Blog
Espressif Announces the ESP32-C6: a WiFi 6 + Bluetooth 5 (LE) SoC
Espressif announced a new SoC which contains a RISC-V core and added support for the WiFi 6 standard. - Espressif Blog
NEW Adafruit IoT Hardware: FunHouse WiFi Home Automation Development Board
FunHouse is the newest Adafruit IoT development board designed to make it easy to build home automation projects with little or no soldering. There are built in sensors for light, pressure, humidity and temperature sensors. Three JST PH plugs allow for quick connection of STEMMA boards that use digital or analog I/O, and there’s a STEMMA QT port for any I2C devices. - Adafruit
Adafruit IO News
Sneak Peek of Adafruit.IO Wippersnapper – Analog inputs working!
Wippersnapper is our upcoming no-code IoT interface for Adafruit.IO – it lets you turn any WiFi-capable board into an IoT device without any programming – simply select what devices are connected to which pins on the hardware and it will auto-configure the firmware and even create a IO feed you can then log and/or use to control other devices by triggering events or webhooks. We recently added analog inputs, and wanted to show off how it works with selecting an element (potentiometer) and the attached analog input pin, to getting it in as an MQTT feed…all in just about 1 minute! - Adafruit Blog
Adafruit IO Stats
Adafruit IO has 390,000+ total users! Here are the interesting stats from the last 30 days:
- Total Feeds: 640,000+ (and counting!).
- There are over 21,000+ feeds online as of the time of writing.
- There are an average of 6,000+ MQTT connections over the last 30 days.
Sign up for Adafruit IO (for free!) by clicking this link. Ready to upgrade? Click here to read more about Adafruit IO+, our subscription-based service. We don’t have investors and we’re not going to sell your data. When you sign up for Adafruit IO+, you’re supporting the same Adafruit Industries whose hardware and software you already know and love! You help make sure we’re not going anywhere by letting us know we’re on the right track.
-
Adafruit IoT Monthly: ESP Earrings, RP2040 WiFi, and more!
IoT Projects
Turning an ESP8266 Programmer Into an ESP Earring
You might not look at an ESP8266 programmer and think “wearable Ouija board planchette earring”, but Alex Glow did. Aside from having an Art Nouveau-esque silkscreen, this programming jig is both functional and wearable. - Hackster.io
Showcasing the Contentful blog with E-Ink, CircuitPython and IoT
Inspired by the “Moveable Type” art installation by Mark Hansen and Ben Rubin, Shy Ruparel utilized an Adafruit MagTag to build an e-Ink blog viewer for displaying the latest articles from Contentful’s blog - dev.to
Quickstart IoT - Raspberry Pi Pico RP2040 with WiFi
The $4 Raspberry Pi Pico is quickly becoming a popular development board due its price, clock speed, and available GPIO. Easily add WiFi-connectivity to your RP2040 projects by following this new guide. - Adafruit Learning System
e-Ink COVID Vaccination Tracker
Vaccinations for COVID are well underway in most countries, and what better way to keep track of vaccinations for your country or region than with a battery-powered, refrigerator magnet that’s connected to the internet. - Adafruit Learning System
Shadow Box Internet Clock
An internet-enabled shadow box project that tracks the movement of the sun using NeoPixel. Check out the guide for the complete video, the lights add gorgeous colorful depth to your artwork. - Adafruit Learning System
Connecting LoRa Sensors to Google Home Assistant with Node-RED
Ben built a Node-RED workflow for sending data from LoRa connected temperature nodes to a Google Assistant. - Hardill.me.uk
Remote light switch with Blynk, Node-RED and MQTT
Using an ESP8266, a push-button, and two AA batteries, Mike built a physical switch to replace a voice-controlled switch. They built a new NODE-RED workflow to integrate their previous workflow with the light switch. - whatimadetoday
IoT News and More!
Particle Ethersim, Free Plan, and New Pricing Model
Particle announced a new global SIM card, a free plan for new developers and a revamped pricing model for their IoT platform. - Adafruit Blog
NEW Hardware: Adafruit Metro M7 with AirLift - Featuring NXP iMX RT1011
Get ready for our fastest Metro ever - the NXP iMX RT1011 microcontroller powers this board with a 500 MHz ARM Cortex M7 processor. There’s 4 MB of execute-in-place QSPI for firmware + disk storage and 128KB of SRAM in-chip. This development board also includes an AirLift WiFi Co-processor with TLS/SSL support. - Adafruit
Adafruit IO News
Adafruit IO Stats
Adafruit IO has 370,000+ total users! Here are the interesting stats from the last 30 days:
- Total Feeds: 612,000+ (and counting!).
- There are over 21,000+ feeds online as of time of writing.
- There are an average of 5,000+ MQTT connections over the last 30 days.
Sign up for Adafruit IO (for free!) by clicking this link. Ready to upgrade? Click here to read more about Adafruit IO+, our subscription-based service. We don’t have investors and we’re not going to sell your data. When you sign up for Adafruit IO+, you’re supporting the same Adafruit Industries whose hardware and software you already know and love! You help make sure we’re not going anywhere by letting us know we’re on the right track.
-
Adafruit IoT Monthly: OpenCV Critter Cam, LoraWAN on Raspberry Pi 2040, and more!
IoT Projects
Keep Track of Critter Visitors with Birb Cam
Everett “had no idea how many critters visited (his) balcony planter box until (he) started working from home last March”. To capture these critters before they scurry away, Everett built an IP webcam aided by machine learning and computer vision to detect birds. - EverettsProjects
AIoT Water Meter
A single ESP32-CAM is used in conjunction with a neural network to read an analog water meter. This system snaps a picture of the water meter and uses a convolutional neural network to perform image recognition on the network and determines the reading. The system publishes readings to a graphical interface, also hosted by the same ESP32-CAM. - Github
Raspberry Pi 2040 meets LoRaWAN
Add LoRaWAN support to the Raspberry Pi Foundation’s new RP2040 chip. - LeMaRivaTech
DIY Home Assistant Sensor with CircuitPython
Build and program a sensor for Home Assistant using MQTT and CircuitPython. - Adafruit Learning System
Speaker Snitch spies on your Smart Speaker
Your smart speaker may be spying on you. Spy back by building a speaker snitch, a small box that monitors network traffic and flashes a LED whenever your smart speaker is sending data to the cloud. - Hackster.io
IoT News and More!
Results of 2020 MBed Developer Survey
ARM MBed published the results of their 2020 developer survey. Some interesting IoT findings are:
- BLE and cellular are popular among professionals while WiFi is popular among hobbyists.
- 50% of companies are increasing their BOM cost to protect against loss control over an IoT device
- Non-professional developers feel the largest challenge is setting up a development environment
Read the full survey results here…
Arduino Nano RP2040 Connect, a RP2040-based board with WiFi
The Raspberry Pi Pico’s RP2040 SoC is getting a dedicated board from Arduino - the Arduino Nano RP2040 Connect. This board packs the RP2040 SoC, WiFi, Bluetooth ,and an IMU into a small form factor. - Tom’s Hardware
Hands-on with the RISC-V ESP32-C3
HackADay got their hands on pre-samples of the ESP32-C3 SoC. This new SoC intends to be an ESP8266 replacement with a faster CPU (160MHz RISC-V) and more RAM (400kB). - Tom’s Hardware
Adafruit IO News
What IS Adafruit IO Wippersnapper?
Adafruit IO Wippersnapper is a new way to create robust Internet of Things Projects without writing code. Wippersnapper is in early development and it’s not out yet. BUT, we will be publishing content about Wippersnapper whenever we have exciting new things to show you!
Watch the first demo of Wippersnapper on Youtube »>
Adafruit IO Stats
Adafruit IO has 370,000+ total users! Here are the interesting stats from the last 30 days:
- Total Feeds: 612,000+ (and counting!).
- There are over 21,700+ feeds online as of time of writing.
- There are an average of 5,00+ MQTT connections over the last 30 days.
Sign up for Adafruit IO (for free!) by clicking this link. Ready to upgrade? Click here to read more about Adafruit IO+, our subscription-based service. We don’t have investors and we’re not going to sell your data. When you sign up for Adafruit IO+, you’re supporting the same Adafruit Industries whose hardware and software you already know and love! You help make sure we’re not going anywhere by letting us know we’re on the right track.
-
Adafruit IoT Monthly: Upcycling Smartphones, AI Freezer, and more!
IoT Projects
A Thermostat for your Window
A Raspberry Pi project which integrates with your thermostat to display the perfect time to open your windows. - GitHub
Continuous Integration Test Status Light
Visually display the result of continuous integration tests with this cellular IoT status light. - Hackster
Google Calendar Event Display
Keep an eye on your schedule with this MagTag Google Calendar Event Viewer. This CircuitPython project uses the Google Calendar API to retrieve a list of the latest events from your Google Calendar and displays them on the MagTag’s e-Ink screen. - Adafruit Blog
The Internet of Christmas Trees
Prepare yourself for next years holiday season by building an internet-connected Christmas tree to send alerts when the tree needs watering. This detailed project writeup even dives into creating a parallel plate capacitor for monitoring the water level. - SpuriousEmissions
AI Freezer Monitor
A freezer monitor that uses machine learning to provide alerts if a freezer is about to fail. - Adafruit Learning System
Hoodie of Community Interacts with Tweets
This hoodie responds to emotive tweets by displaying a light show. - Hackster
IoT News and More!
A review of Blues Wireless - Cellular IoT at a Flat Rate
Blues Wireless is a new IoT company that offers a System-on-Module with GPS and Cellular, a cloud platform for managing cellular device fleets, and a flat $49 fee for 10 years of IoT cellular service. - Dev.to
Is the Amazon Echo Flex Mute Button Real?
Amazon’s new Echo Flex includes a button to mute the microphone. While most of us remain suspicious, electronupdate decided to reverse engineer the Echo Flex’s mute button to determine if it does more than turn on a red LED. - electronupdate
Samsung’s Galaxy Upcycling Program repurposes old phones as IoT devices
Samsung introduced a new recycling initiative at CES 2021 to convert your old Galaxy smartphone into an IoT device. - Adafruit Blog
Adafruit IO News
Adafruit IO Stats
Adafruit IO has 359,125 total users! Here are the interesting stats from the last 30 days:
- Total Feeds: 601,201 (and counting!).
- There are over 20,000 feeds online as of time of writing (Nov 23, 2020).
- There are an average of 4,700+ MQTT connections active 24/7.
Sign up for Adafruit IO (for free!) by clicking this link. Ready to upgrade? Click here to read more about Adafruit IO+, our subscription-based service. We don’t have investors and we’re not going to sell your data. When you sign up for Adafruit IO+, you’re supporting the same Adafruit Industries whose hardware and software you already know and love! You help make sure we’re not going anywhere by letting us know we’re on the right track.
-
Adafruit IoT Monthly: Our Favorite IoT Projects from 2020
3,000 Thanks
Thanks to everyone reading this newsletter. We’re excited to have hit over 3,000 subscribers! We started this newsletter in May 2019 to highlight the latest projects and news for Adafruit’s IoT platform, Adafruit IO (io.adafruit.com). Since then, we’ve expanded this newsletter to not only focus on our offerings, but also include the best internet of things projects, news, and hardware from around the internet. Since then, we’ve published 29 issues - Adafruit Blog.
Our Favorite IoT Projects in 2020
We’ve dug into archives and sifted through everything published in 2020. Here are a few of our favorite projects from the 2020 IoT Monthly newsletter.
How to Pull your Own Covid-19 Data
We saw a large amount of IoT projects which track Covid-19 numbers, from the case count to amount of vaccines administered. HackADay published a guide back in April for scraping raw data about COVID19 from multiple data sources. If you’re building a way to monitor the total number of cases in your state or country, this guide provides reputable data sources along with Python code snippets - HackADay.
ISS-Tracking Globe Lamp
A 3D printed globe which uses a servo and laser-pointer to display where on Earth the International Space Station is hovering over - Instructables.
The Internet Monster
A cute monster which repeats what the Internet says. What could possibly go wrong? - Instructables.
Connected Weather Cloud Lamp
This is a fun project that plays with how to visualize information using only light and sound. What better way to have some fun with this than to make an Internet connected cloud that connects to an open source weather API? - Adafruit.
PyPortal Home Office Busy Display
Diana Perkins (@diana_perkins) built a display using a PyPortal to show when someone in their home offices is busy. It’s controlled using a “rails app running on a machine on our local network so we can trigger it even if we already sat down for a meeting” - Twitter.
UnifiedWater
UnifiedWater is an affordable DIY IoT smart water quality monitoring device which allows scientists and authorities to identify polluted bodies of water - Hackaday.io.
Designing a LoRaWAN Monitored Garden
czuvich on the Adafruit Forums demonstrates their Greenclay LoRaWAN Smart Garden project. It is able to monitor and manage an outdoor garden using LoRaWAN with an Arduino programmed microcontroller. It is a complete package which includes a dev kit, garden controller, and mobile app - Adafruit Forums.
Adafruit IO Stats
Adafruit IO has over 367,000 total users! Here are the interesting stats from the last 30 days:
- Total Feeds: 589,324 (and counting!).
- There are over 19,000 feeds online as of time of writing (Dec. 28, 2020).
- There are an average of 4,800+ MQTT connections active 24/7.
Sign up for Adafruit IO (for free!) by clicking this link. Ready to upgrade? Click here to read more about Adafruit IO+, our subscription-based service. We don’t have investors and we’re not going to sell your data. When you sign up for Adafruit IO+, you’re supporting the same Adafruit Industries whose hardware and software you already know and love! You help make sure we’re not going anywhere by letting us know we’re on the right track.
-
Adafruit IoT Monthly: The Ultimate Bird Feeder, Adafruit IO UI Refresh, and more!
IoT Projects
The Ultimate Birdfeeder
An internet-connected bird feeder system with a temperature-controlled bird bath. - HackADay.io
IoT Air Quality Sensor Enclosure
An IoT air quality sensor with a weatherproof enclosure modeled after a silo-home. - Adafruit Learning System
Microsoft Teams Presence LED Panel for Raspberry Pi
When looking at your teammates through little boxes on your screen, it’s nice to be able to know who’s available and who’s not. Here’s a project that will display your Microsoft Teams presence on an LED panel. - Adafruit Blog
Easy IoT Logging Options for the Beginner
HackADay published a list of IoT logging services for absolute beginners. - Hackaday
Integrating The Things Network with Azure IoT Central
A full guide on connecting LoRaWAN devices to the Microsoft Azure IoT service. - Hackster
DIY Google Assistant with the Raspberry Pi BrainCraft HAT
Build your own open-source Google Assistant device - Adafruit Learning System
Blinds Controller with HomeBridge MQTT
A retrofit ESP-powered controller for home-blinds compatible with Apple HomeKit. - Hackster
IoT News and More!
TinyML and IoT for Conservation Efforts
Developing an IoT solution to monitor threatened mammals using machine learning - Hackster
10 Reasons for ripping out a £6k lighting system
Rob Dobson ripped out a home lighting system he installed in 2012 in favor of a new WiFi based system. The post provides a breakdown of converting a large Z-Wave IoT system to WiFi. - Adafruit Blog
New Adafruit IoT Hardware: MagTag - 2.9” Grayscale E-Ink WiFi Display
The Adafruit MagTag combines the new ESP32-S2 wireless module and a 2.9” grayscale E-Ink display to make a low-power IoT display that can show data on its screen even when power is removed! The ESP32-S2 is great because it builds on the years of code and support for the ESP32 and also adds native USB support so you can use this board with Arduino or CircuitPython! You can attach this display to a metallic shelf, fridge, or workbench. - Adafruit Shop
SDRPlay offers free course on “Understanding Radio Communications”
SDRPlay is offering a free 12-hour course for those interested in “understanding radio communications - using SDRs”. If you’re looking to pick up new skills while staying at home due to COVID-19, this is a university-level course “for all students that have basic knowledge of signal theory and signal processing”. - SDRPlay
IoT Unravelled Part 1: It’s a Mess… But Then There’s Home Assistant
Troy Hunt is blogging his experience of “heading down the rabbit hole into a world of soldering, custom firmware and community-driven home automation kits”. This post discusses integration with different IoT hubs, automations, and the “initial layers of complexity” for getting started with Home Assistant - Troy Hunt
Adafruit IO News
Adafruit IO UI Refresh
A refreshed Adafruit IO interface is now live on io.adafruit.com! We’ve been working on refreshing our user interface for Adafruit IO over the past few months. The focus on this update has been on making IO easier to use (larger fonts, less digging into menus) and with more options. You can watch this video tour of the refreshed user interface or visit Adafruit IO right now to get started.
Adafruit IO Stats
Adafruit IO has 359,125 total users! Here are the interesting stats from the last 30 days:
- Total Feeds: 574,381 (and counting!).
- There are over 20,029 feeds online as of time of writing (Nov 23, 2020).
- There are an average of 4,500+ MQTT connections active 24/7.
Sign up for Adafruit IO (for free!) by clicking this link. Ready to upgrade? Click here to read more about Adafruit IO+, our subscription-based service. We don’t have investors and we’re not going to sell your data. When you sign up for Adafruit IO+, you’re supporting the same Adafruit Industries whose hardware and software you already know and love! You help make sure we’re not going anywhere by letting us know we’re on the right track.
-
IO Updates - UI Refresh
User Interface Updates
We’ve been working on refreshing our user interface for Adafruit IO. We’re hoping to have this released shortly, and are in the final stages of testing now.
The focus on this update has been on making IO easier to use (larger fonts, less digging into menus) and with more options.
Light and Dark Mode in Dashboards
We’ll soon have support for both light and dark mode dashboards. You can easily toggle between them. See below for a sneak peek at the new layouts.
Light Mode:
Dark Mode:
Let us know what you think on the Adafruit IO forums or if you have any questions.
-
Adafruit IoT Monthly: CO2 Cuckoo Clock, Wippersnapper, and more!
IoT Projects
CO2 Cuckoo Clock
Andreas Spiess published a video building a unique CO2 sensor design. He presents a case why eCO2 sensors may not always be a good idea for an environmental sensing project and builds a cuckoo clock to detect aerosols. - YouTube
IoT Twitter Listener Party Parrot
Throw a party every time someone sends you a tweet. This project uses the Twitter API v2 to query tweets and displays them as a sprite animation on a RGB LED Matrix. - Adafruit Learning System
Irrigator: Smart Sprinkler Controller
This smart sprinkler controller allows you to setup your own custom sprinkler system using a Raspbery Pi, a 4+ channel relay, and 24V AC Power Supply. If you have an existing sprinkler controller, it’s likely you can swap in this project relatively easily, utilizing the existing power supply - Github
IoT Air Quality Sensor with Adafruit IO
Breathe easy, knowing that you can track and sense the quality of the air (and environment!) around you with an IoT Air Quality Sensor. This sensor measures PM2.5 (particles that are 2.5 microns or smaller in diameter) dust concentrations, temperature and humidity - Adafruit Learning System
WaterAid
WaterAid is an affordable DIY IoT smart water quality monitoring device which allows scientists and authorities to identify polluted bodies of water - Hackaday.io
Smart Ping Pong LED Lamp
This LED lamp is a quick project that can be done within a day. Only a few cheap components are needed to create a nice looking ambient lamp. No programming is needed, the WLED firmware is uploaded to a microcontroller via a simple tool - Youtube
IoT News and More!
Threat modeling your IoT Projects
While building a pollution-monitor, @dcuthbert wrote an excellent twitter thread about threat modeling their IoT sensor - Twitter
TP-Link KL50 Smart Bulb Teardown
Tearing down an inexpensive LED filament WiFi bulb - ElectroBob
NEW IoT Hardware: Adafruit Metro ESP32-S2
The first Adafruit board using the new ESP32-S2 240MHz Tensilica processor is out! This board is perfect for adding low-cost WiFi to your CircuitPython (with Native USB) or Arduino projects.
Check out the ESP32S2 in the Adafruit Shop
NEW IoT Hardware: FeatherS2
The full-featured ESP32-S2 based development board in a Feather format from Unexpected Maker. The FeatherS2 is a power house, fully souped up with 16 MB of Flash memory (for firmware and file storage) and 8 MB of QSPI-based external PSRAM so you can have massive storage buffers.
Check out the FeatherS2 in the Adafruit Shop
Adafruit IO
Adafruit IO Wippersnapper
We’re working on a new way for you to interact with Adafruit IO called Wippersnapper. While Wippersnapper is not public (yet!), we’ll be sharing details, features, development progress and updates every Wednesday on the Adafruit Blog as we work on this new service.
Adafruit IO Stats
Adafruit IO has 353,825 total users! Here are the interesting stats from the last 30 days:
- Total Feeds: 562,833 (and counting!).
- There are over 201,06 feeds online as of time of writing (October 29, 2020).
- There are an average of 7,500+ MQTT connections active 24/7.
Sign up for Adafruit IO (for free!) by clicking this link. Ready to upgrade? Click here to read more about Adafruit IO+, our subscription-based service. We don’t have investors and we’re not going to sell your data. When you sign up for Adafruit IO+, you’re supporting the same Adafruit Industries whose hardware and software you already know and love! You help make sure we’re not going anywhere by letting us know we’re on the right track.
-
Adafruit IoT Monthly: Matrix Portal, Solar Lawn Sprinkler and more!
NEW IoT Hardware: Adafruit Matrix Portal - CircuitPython Powered Internet Display
Folks love Adafruit’s wide selection of RGB matrices and accessories for making custom colorful LED displays… and Adafruit RGB Matrix Shields and FeatherWings can be quickly soldered together to make the wiring much easier.
But what if we made it even easier than that? Like, no solder, no wiring, just instant plug-and-play? Dream no more - with the Adafruit Matrix Portal add-on for RGB Matrices, there has never been an easier way to create powerful internet-connected LED displays.
To celebrate its release - we’ll be highlighting some of our favorite Matrix Portal guides in this newsletter.
Read more about the Adafruit Matrix Portal
IoT Projects
Moon Phase Clock for Adafruit Matrix Portal
The only way to get a correct Moon phase for your time and location is with math and science. Our Matrix Portal Moon phase clock lets you know where things stand right here and now, portraying the Moon’s phase more accurately than a printed calendar, and whether it’s currently in the sky or has set. - Adafruit Learning System
IoT Power Outlet with CircuitPython and Adafruit IO
Control fans, lights, or any appliance using a microcontroller and Adafruit IO - Adafruit Learning System
CircuitPython Support for ESP32-S2
ESP32-S2 boards from Espressif, GravitechG, UnexpectedMaker and Electronicats all running CircuitPython 6.0.0-alpha.3 as CircuitPython 6.0 moves closer to an official release (currently in beta!). - Twitter
Solar Powered IoT Lawn Sprinkler
A DIY WiFi lawn sprinkler powered by the sun. - movingelectrons
RGB Matrix Automatic Youtube ON AIR Sign
Everyone’s streaming, from Zoom to Twitch to YouTube and more. This sign will let people know not to knock on your door when you’re ON AIR! - Adafruit Learning System
Air Quality Sensor with Sensor.Community and Home Assistant
Build an air quality sensor to read your air quality and connect it to the open source air quality sensor map sensor.community. - savjee
IoT News and More!
TensorFlow Lite Micro Support on ESP32
Google’s Tensorflow blog announced TensorFlow Lite Micro support on Espressif’s flagship SoC, the ESP32. - EspressIf
Sensor Community is an Open Environmental Sensor Data Network
Sensor.Community is a new contributor driven global sensor network for Open Environmental Data. Their map currently supports sensors which monitor air quality (PM2.5, PM10) and noise. - Sensor.Community
This is what a Hacked IoT Coffee Machine Looks Like
A researcher at security company Avast reverse engineered a Smarter Coffee Maker v2. While watching it aimlessly execute code to grind beans and drip water is fun, we can’t help but wonder what if this was a different, necessary, internet-connected device. - ArsTechnica
Amazon Details Sidewalk, a new range- extension for Echo and Tile devices
There was not much information available last time this newsletter covered Amazon Sidewalk. Last week at Amazon’s hardware event, they provided some details about the new service. Sidewalk “uses Bluetooth Low Energy (BLE), the 900 MHz spectrum and other frequencies to simplify new device setup, extend the low-bandwidth working range of devices and help devices stay online and up-to-date, even if they are outside the range of home WiFi.” New Echo devices are capable of acting as a Sidewalk Bridge to extend the working range of connected IoT devices - Amazon Developer Blog
Adafruit IO
NEW GUIDE: Adafruit IO Basics: Schedule Triggers
We’ve released a new guide in the Adafruit IO Basics Series for using Adafruit IO’s scheduled triggers. Build an internet-controlled lamp and connect it to Adafruit IO to schedule turning the lamp on or off during the week. The project in this guide may be adapted to control any AC (mains) appliance or device. - Adafruit Learning System
Adafruit IO Stats
Adafruit IO has 348,252 total users! Here are the interesting stats from the last 30 days:
- Total Feeds: 550,390 (and counting!).
- There are over 18,434 feeds online as of time of writing (July 30 2020).
- There are an average of 7,000+ MQTT connections active 24/7.
Sign up for Adafruit IO (for free!) by clicking this link. Ready to upgrade? Click here to read more about Adafruit IO+, our subscription-based service. We don’t have investors and we’re not going to sell your data. When you sign up for Adafruit IO+, you’re supporting the same Adafruit Industries whose hardware and software you already know and love! You help make sure we’re not going anywhere by letting us know we’re on the right track.
-
Adafruit IoT Monthly: Mitigating Climate Change with IoT, LoRaWAN Gardens, and more!
IoT Projects
Evaluating Strategies for Climate Change in Arizona using Adafruit IO
The Arizona Department of Environmental Quality is using Adafruit.io to evaluate “how applying mulch might reduce demand for irrigation”. The experiment demonstrated that a thin layer of mulch can lower soil temperatures by 12 degrees Fahrenheit, thus reducing soil-water evaporation. - Adafruit
Little Bluetooth Media Controller
@ketszim built a small one-off Bluetooth media controller to change the volume, play, or pause a movie. - Twitter
Tracking how long a freezer stays frozen with no power
This summer brought a few blackouts in the U.S. This experiment used a Raspberry Pi and temperature sensor to determine how long your food will stay frozen. - Woodgears
Designing a LoRaWAN Monitored Garden
czuvich on the Adafruit Forums demonstrates their Greenclay LoRaWAN Smart Garden project. It is able to monitor and manage an outdoor garden using LoRaWAN with an Arduino programmed microcontroller. It is a complete package which includes a dev kit, garden controller, and mobile app. - Adafruit Forums
Turn a Rotary Phone Receiver into a World-Wide Radio
This rotary phone maps the the rotary encoder to radiooooo, a website which lets you tune into any radio station int he world. The receiver was also modified to pipe audio from radiooooo to the rotary phone’s handset. - Hackster
Office Bell Ringer with Slack
Alex’s company rings a bell when they sign a customer, release a new feature, or if anything positive happens. But, remote employees are “left out of this experience”. He built a servo which physically rings a bell in the office via a slack command. - Alex Meub
IoT News and More!
Alphabet’s Loon Balloons Cover 11,000 sq. Km of Kenya with Internet
Alphabet’s bet on sending balloons into near-space to connect people in internet-less blank spots has paid off. Their balloons have started lasting longer (from days to over half a year) and now cover 11,000 sq. km of Kenya with internet. - Medium
simdjson: Parsing gigabytes of JSON per second
JSON is everywhere on the internet. The SIMDJSON library uses SIMD instructions and micro-parallel algorithms to parse JSON 2.5x faster than anything else out there. - GitHub
Fitbit Study Suggests Wearables Might Be Able To Detect Covid-19 Before Symptoms Appear
Fitbit and similar wearables can track a wide array of vitals. A new study shows that subtle changes in things like breathing and heart rate could help with earlier detection. - FitBit
An Industrial IoT Platform Built on Battery-Free Sensors
Everactive has developed industrial sensors that run around the clock, require minimal maintenance, and can last over 20 years. The company created the sensors not by redesigning its batteries, but by eliminating them altogether. - MIT
You, Me, and IoT Two Microconference Accepted into 2020 Linux Plumbers Conference
The Linux Plumbers Conference (which just completed) accepted an IoT “microconference” into their conference tracks this year. We’ll hand-select a talk or two for the next issue of this newsletter. - Linux Plumbers Conference
Adafruit IO
Webhook Response Templates for Slack, Discord and More!
We’ve updated Adafruit IO’s webhooks in triggers (both scheduled and reactive) to allow custom response templating. This feature now allows webhooks to properly post to many more endpoints, such as Slack or Discord. We’ve included a couple of basic templates to build from. Read more about all the changes here…
Adafruit IO Stats
Adafruit IO has 338,708 total users! Here are the interesting stats from the last 30 days:
- Total Feeds: 538,877 (and counting!).
- There are over 18,035 feeds online as of time of writing (July 30 2020).
- There are an average of 4,500+ MQTT connections active 24/7.
Sign up for Adafruit IO (for free!) by clicking this link. Ready to upgrade? Click here to read more about Adafruit IO+, our subscription-based service. We don’t have investors and we’re not going to sell your data. When you sign up for Adafruit IO+, you’re supporting the same Adafruit Industries whose hardware and software you already know and love! You help make sure we’re not going anywhere by letting us know we’re on the right track.
-
IO Updates - Trigger Webhook Response Templates
Webhook response templates
We’ve updated webhooks in triggers (both scheduled and reactive) to allow custom response templating. This feature now allows webhooks to properly post to many more endpoints, such as slack or discord. We’ve included a couple of basic templates to build from.
The templates need to be valid json in order to work, and allow a few values to passed in such as
{{feed_id}}
, or{{feed_name}}
.As an example, you could do something like this now:
{ "content": "The value: {{value}} for the feed:{{feed_name}} is too low." }
Get in touch with us on the Adafruit IO forums or on Discord if you have any questions.
-
Adafruit IoT Monthly: BLE Store Capacity Indicator, Aquarium Automation, and more!
IoT Projects
BLE-based Crowd Indicator for Small Stores
Smaller shops may not be able to hire extra employees to enforce or monitor social distancing. This solution by Ian Mercer tracks every Bluetooth Low Energy (BLE) device nearby to figure out when the store is busy. - Hackster
PyPortal Home Office Busy Display
Diana Perkins (@diana_perkins) built a display using a PyPortal to show when someone in their home offices is busy. It’s controlled using a “rails app running on a machine on our local network so we can trigger it even if we already sat down for a meeting” - Twitter
Mesh WiFi Music-Reactive Light System
GlowFly is a WiFi connected, programmable and music reactive light system. When multiple nodes are combined, it is possible to span a mesh of WiFi connected devices which are synchronously reacting to music. - HackaDay
Electronic Security Lock using AWS Serverless
A small security lock you can text, powered by Amazon AWS Serverless. - Amazon
Vision Alert System with Azure IoT Edge and Jetson Nano
Build a vision system using a NVIDIA Jetson Nano with a webcam and the Azure Custom Vision service. This project sends an email alert to your inbox if an image has been identified. - henkboelman
Aquarium Automation with nRF52840
Aquarium automation system using a Feather nRF52840 and four extra FeatherWings. There’s an automatic fish-feeder and Raspbery Pi based fishpi monitors for temperature and lights. Scripts used in this project are open-source and on GitHub -Twitter
This Blog is Now Running on Solar Power
Lou Wrentius’ blog is now running on one solar panel and an old car battery. There’s a solar panel on his balcony “which is connected to a solar charge controller”. Clicking through to their blog, you can see a sidebar which shows the solar panel’s status. This widget runs on the same solar-powered Raspberry Pi which hosts the blog. If the weather is favorable, “the solar panel provides way more power than is required to keep the battery charged and run the Raspberry Pi”. -louwrentius
Dawn and Dusk Porch Lights
WiFi-enabled Wemo switch to turn off a porch-light at dawn and dusk. This switch includes an intelligent scheduler which obtains the location-specific sunset and sunrise times from the internet. - HackaDay
Wirelessly monitor G-Force from high-contact sports
Monitoring G-Force with a device attached to an ice-hockey helmet. Data is logged from the device to Adafruit IO. -Maker.io
Solar Powered Weather Station
Mark Komus built a solar-powered weather station that reports its recorded data to Adafruit IO, our easy-to-use IoT platform for everyone. A BME280 sensor monitors temperature, pressure and humidity. Sparkfun’s weather gauges are mounted at the top of the metal pole. - Adafruit
IoT News and More!
Use intent parsers to program your first voice AI
Programming a voice assistant for open-source home automation projects using the Mycroft voice assistant API. - OpenSource
New “Works with Google” program is Similar to Apple HomeKit
StaceyOnIoT points out that the new “Works with Google” program for smart-home devices is similar to Apple HomeKit, both services rope users into an vendor-specific ecosystem. - StaceyOnIoT
Alexa Connect Kit (ACK) Chipset Released
Amazon detailed a new Espressif-powered chipset which enables “WiFi, Bluetooth LE and all the software needed for Alexa control”. - Amazon
Adafruit IO
Adafruit IO Update: New Trigger Functionality
The Adafruit IO team has released some changes to Adafruit IO, our easy-to-use-internet of things platform. First is an update to Scheduled Triggers. Scheduled triggers now have a much more robust option to scheduling. If you’re familiar with cron scheduling, you’ll be familiar with this new system. You can schedule based on a number of new time and date options.
We’ve also added the ability for reactive triggers to email a value based on the feed that is being acted on, or now you can also update the value of any of your feeds from that trigger. For example, if the ‘humidity’ in your house is > 50%, you could update another, ‘dehumidifier’ feed to set the value to “ON”.
Finally, we’ve made further system changes that should improve the performance of Adafruit IO for all users.
Read more about all the changes here…
Adafruit IO Stats
Adafruit IO has 338,708 total users! Here are the interesting stats from the last 30 days:
- Total Feeds: 529,571 (and counting!).
- There are over 17,000 feeds online as of time of writing (July 30 2020).
- There are an average of 4,000+ MQTT connections active 24/7.
Sign up for Adafruit IO (for free!) by clicking this link. Ready to upgrade? Click here to read more about Adafruit IO+, our subscription-based service. We don’t have investors and we’re not going to sell your data. When you sign up for Adafruit IO+, you’re supporting the same Adafruit Industries whose hardware and software you already know and love! You help make sure we’re not going anywhere by letting us know we’re on the right track.
-
IO Updates - Trigger Webhook Updates
Scheduled Triggers Update
We’ve updated scheduled triggers to support webhooks. You can now choose where to post your data, as well as which feed value is posted.
Reactive Triggers Update
We’ve also updated the webhook functionality on reactive triggers and now you can choose which feed is posted. Previously the only option was to post the value of the feed being reacted upon, but now any feed is available as an option to post the value to your destination.
Get in touch with us on the Adafruit IO forums or on Discord if you have any questions.
-
IO Updates - New Trigger Functionality
Hello IO community! Over the last few weeks we’ve released some changes to Adafruit IO that should be useful to everyone using the platform.
Scheduled Triggers Update
Scheduled triggers now have a much more robust option to scheduling. If you’re familiar with cron scheduling, you’ll be familiar with this new system. You can schedule based on a number of new time and date options. Previously we allowed scheduling based on increments such as 30 minutes, or 1 week. We now allow thing such as “Tuesdays at 9pm” or “At 2:00 PM, only on Friday”, or “Every 4 hours”, or “At 1:00 PM, every 7 days”.
In addition, scheduled triggers will now account for your time zone if you set it in your Adafruit Account profile. The default time zone is UTC.
Also, previously the only action option was to have a value emailed. We’ve now also added the ability for scheduled triggers to update another feed. An example of this would be to update a feed every 30 minutes with a “RESET” value to reset a system. There are many different possibilities!
Reactive Triggers Update
We’ve also added the ability for reactive triggers to email a value based on the feed that is being acted on, or now you can also update the value of any of your feeds from that trigger. For example, if the ‘humidity’ in your house is > 50%, you could update another, ‘dehumidifier’ feed to set the value to “ON”.
We think these updates are going to be quite useful, and are excited to see what you can come up with. This was a very large change in our system, and we anticipate there could be bugs here and there. Please feel free to report any bugs or issues you run across in our forum.
Trigger Changes
We’ve also made a few changes that span both triggers.
Triggers will be automatically disabled if they fail 5 times in a row. A failure could happen for any number of reasons, but we will add a new message to the triggers to let you know why they failed, as well as email you that the trigger has been disabled.
Emails are now limited to IO+ users (scheduled triggers created before 2020/07/14 are grandfathered and will remain active). This is largely because it costs us money to send emails. Reactive Trigger emails were always IO+ only, but we’ve expanded this to scheduled triggers as well (now that scheduled triggers have the ability to publish to feeds, this is free for all users).
Platform Upgrades
We’ve made some further system changes that should improve the performance of IO for all users. It may not be noticeable, but we are continuing to upgrade our backend systems, and improve performance and stability.
Get in touch with us on the Adafruit IO forums or on Discord if you have any questions.
-
Adafruit IO UPDATE: SSL/TLS Certificate Updated
We have updated the Adafruit IO SSL/TLS certificate. If you are having issues connecting, please ensure you have the latest Adafruit IO Arduino library version by navigating to the Arduino Library Manager (from the Arduino IDE, navigate to: Sketch -> Include Library -> Manage Libraries):
The certificate is fingerprinted in that library and you will have issues connecting if that library is out of date. The current version with the latest fingerprint is 3.7.0. There also an example that was updated in the Adafruit MQTT Library, we’ve updated this library too.
If you are using an ATWINC1500 module, you’ll need to update the certificate built into the module. Please follow these instructions on this Learning System Guide for step-by-step instructions…
In the future, we will announce this much further in advance to ensure everyone is aware of the scheduled certificate updates to reduce downtime. The next update will be in approximately 2 years.
If you had any significant downtime or are having issues getting connected again, please reach out to us and we can assist you.
-
Adafruit IoT Monthly: Repurposed Smart Home Displays, Open-Source 5G Networks, and more!
IoT Projects
Microcontroller-based Star Trek TNG operational display
Darian Johnson built a Star Trek: The Next Generation inspired terminal that displays the weather, indoor temperature, volatile organic compound strength, fitness information, and more. This is one of the nicest-looking personal smart-terminals we’ve seen and even features a resistor color-code chart and a current measurement tool. - HackADay
Fermenters Friend – Home Brewing Temperature Monitor
After making a brew, one needs to “let it ferment, trying to control the temperature range from an ideal of around 18-22 C”. They used a Cheeseboard ESP8266 development board to monitor the brew’s temperature as it ferments and display it on a LCD and online. - Adafruit
Vintage Terminal Home Automation Home
Repurposing a ADM-3A terminal as a home automation hub and display. - HackADay
DIY Alexa-Controlled Air Conditioner
Summer is heating up in the United States and this DIY solution allows you to simulate the IR commands of an air conditioner remote control using an ESP8266. The ESP8266 is connected to HTTP/AWS so it can receive and translate Alexa commands to control your air conditioner. - EspressIf
Kindle Home Assistant Interface
Repurpose your kindle as an e-ink display for your Home Assistant setup. -GitHub
Minecraft Friend Notification Sign
This internet-connected sign lights up whenever your friends are online in your favorite Minecraft server. - Youtube
ESP32 Micropython Sensor and Web Server
ESP32-powered MicroPython sensor node also serves temperature data on its own web server. How2Electronics
IoT News and More!
free5GC - an Open-Source 5G Mobile Core Network
The free5GC project is building an open-source 5G mobile core (5GC) network. - Free5GC
ClusterDuck Protocol - LoRa, WiFi, and Bluetooth Mesh Network
The ClusterDuck Protocol is an open source firmware for mesh network internet-of-things devices based on LoRa radio and can include WiFi and Bluetooth compatibility. This is an interesting potential alternative for Particle’s IoT BLE Mesh users. - ClusterDuck
GNUHealth in a Box: Deploying hospital health systems with a Raspberry Pi
GNU Health, a “health and hospital information system” now has an image which can be installed on Raspberry Pi’s in remote areas without internet, nursing homes or laboratories. - GNUHealth
Adafruit IO Stats and more!
Adafruit IO has 332,834 total users! Here are the interesting stats from the last 30 days:
- Total Feeds: 516,432 (and counting!).
- There are over 17,600 feeds online as of time of writing (June 25, 2020).
- There are an average of 4,605 MQTT connections active 24/7.
Sign up for Adafruit IO (for free!) by clicking this link. Ready to upgrade? Click here to read more about Adafruit IO+, our subscription-based service. We don’t have investors and we’re not going to sell your data. When you sign up for Adafruit IO+, you’re supporting the same Adafruit Industries whose hardware and software you already know and love! You help make sure we’re not going anywhere by letting us know we’re on the right track.
-
Adafruit IoT Monthly: Cosmo Clock, Low Powered Widlife Camera, and more!
IoT Projects
Weather Station Planter
A different type of weather station this month - a planter which simulates the real-time weather of a location by changing the colors of the planter. - HackADay
Completely Automated M&M Launcher - Voice Activated Using Alexa
To keep busy during quarantine, Harrison McIntyre built a fully automated M&M candy launcher which is activated using Amazon Alexa. This launcher can perform facial detection using computer vision and launches M&M’s into your mouth. - YouTube
Cosmo Clock
This clock changes color every time a new astronaut enters space. - Instructables
officeAir: A Google Sheets Logger with Raspberry Pi
This project lets you easily log temperature and humidity data via Raspberry Pi and a sensor. It logs data to Google Sheets, collecting the raw data and automatically drawing a nice chart as data coming in. - GitHub
Low-Power Wildlife Trail Camera
DIY motion-activated camera module takes photos of wildlife and stores them on a microSD card. -MarksBench
METAR Temperature Data Display Using ESP8266
An ESP8266 (NodeMCU) requests online METAR data from 9 stations in a cyclical (rotating) manner, and displays their decoded temperatures on 7-segment displays. - YouTube
Laundry Monitor
This project senses the current of your washer and sends a SMS when the wash cycle finishes. This project is different than the usual laundry monitoring project since it’s reliable and does not require disassembling appliances. - HackADay
Smart Pill Dispenser
The Smart Pill Dispenser is a machine that will give your grandparents the pills they need, when the need it and in case they’ll forget - you will get a notification about that! - Instructables
BLE Notification Vibration Bracelet
A wearable bracelet which buzzes when you’ve received notifications from an iOS device using an Adafruit Feather Sense and DRV2605L breakout. - Adafruit Learning System
IoT News and More!
Video inside a Self-Driving Tractor Cab
Have you ever wondered what it’s like to be in the cab of a tractor on a farm? Imagine it’s a steering wheel and a radio? Modern agriculture is a bit more complex and awesome these days. - YouTube
Want a radio service operator license? FCC starts offering radio licensing exams remotely
During the pandemic, the FCC announced that ham radio licensing exams can be administered remotely. -swling
The Services Shakedown: Wink Hardware transitions to a monthly subscription
Wink Labs announced their home automation hub, the Wink Hub, is transitioning to a monthly subscription of $4.99 per month. If someone fails to pay this fee, device unfortunately loses most of its functionality. HackADay writer Elliot Williams discusses the ‘IoT Trap’ and wonders how people can avoid it. - HackaDay
New Hardware: Teensy 4.1
PJRC released the Teensy 4.1 which includes a blazing-fast IMXRT1062-based microcontroller with 10/100Mbit ethernet. - PJRC
How the COVID-19 pandemic is spurring IoT growth while the world’s business slows
Kevin C. Tofel writes about the state of the expanding IoT market ‘as people look for health monitoring systems…and other remotely accessible products’. - StaceyOnIoT
New Hardware: LilyGo T-Watch, ESP32 Watch
LilyGo released their T-Watch, a sub-$30 smart-watch based on the ESP32. LilyGo is supporting Arduino, MicroPython and Scratch programming languages. - Tindie
Espressif Releases Apple HomeKit ADK
Makers can now use the HomeKit ADK for ESP32 to prototype non-commercial smart-home devices. -Espressif
Adafruit IO Stats and more!
Adafruit IO has 328,224 total users! Here are the interesting stats from the last 30 days:
- USERS ACTIVE (30 days): 13,237
- TOTAL FEEDS: 505,852
- FEEDS CREATED (last 30 days): 13,793
- There are about 4,200+ MQTT connections active 24/7.
Sign up for Adafruit IO (for free!) by clicking this link. Ready to upgrade? Click here to read more about Adafruit IO+, our subscription-based service. We don’t have investors and we’re not going to sell your data. When you sign up for Adafruit IO+, you’re supporting the same Adafruit Industries whose hardware and software you already know and love! You help make sure we’re not going anywhere by letting us know we’re on the right track.
-
Adafruit IoT Monthly: Quarantine Clock, Smarter Than your Speaker, and More!
IoT Projects
PyPortal Quarantine Clock
Do you know what day it is? Perhaps you’re finding yourself losing track of time and your routine is suffering. The PyPortal Quarantine Clock has got you covered! It only displays the essential “stay-at-home” information - the current day and a rough estimate of the time. - Adafruit
Smart Video Intercom System
This Raspberry Pi-powered hardware notifies you when guests arrive and lets you talk to them on your phone through internet calls. - Hackster
NerfOrNothing: Instrumenting a NERF Football
Timothy Kanarsky and his team “cut a Nerf football in half, stuck a WiFi-enabled microcontroller and some accelerometers inside, and wrote some inertial-navigation code to track throw distance and spin rate”. - HackaDay.io
Simple Home Alarm System
Need an alarm system for your home? Build one using only two components: an ESP32 and a 433MHz RF receiver. If you want to adapt this project to a different sensor - there’s (lots of different sensor types)[https://www.ebay.de/itm/193291348372] and devices operating on the 433MHz frequency available on the internet. - GitHub
Add Coverage to your IoT Project with a Satellite Modem
Who’s got the best coverage map? Anyone using the Iridium satellite constellation, that’s who. How does whole Earth coverage sound? This guide shows you how to setup and use the Rock Seven RockBLOCK 9603 Iridium Satellite Modem. This hardware is tied to service that is also provided by Rock Seven. - Adafruit
Reverse Engineering a Ceiling Fan Remote
Reverse engineering a ceiling fan remote for home automation. - HackaDay
Wearable Continuous Temperature Monitor
Hands-free temperature monitoring means you can sleep soundly. Data is sent to an Adafruit IO account for long-term storage and visualization. Use Adafruit IO Triggers to be notified by email when the temperature increases past a set threshold. -Adafruit
Connected Weather Cloud Lamp
This is a fun project that plays with how to visualize information using only light and sound. What better way to have some fun with this than to make an Internet connected cloud that connects to an open source weather API? - Adafruit
Apollo Pi Thermal Camera
OldTechNewSpec repurposed a vintage Apollo microwave detector from 1979 as a thermal camera. It’s powered by a Raspberry Pi Zero with an AMG8233 thermal camera breakout, displaying the temperature on a 1.3″ TFT display. - Instructables
IoT News and More!
Behind the scenes of fighting coronavirus using GPUs
Gamers are using their high-performance GPUs to participate in Folding@Home, helping to understand proteins interactions of SARS-CoV-2 virus that causes COVID-19. - HackaDay
Stay Smarter than Your Smart Speaker
Working at home on confidential projects? Your speaker may be spying on you. Kristina Panos outlines “the best practices of confidential work in earshot of these audio-triggered gadgets?”. - HackaDay
83 Billion IoT Connections by 2024
A new study from Juniper Research found that the total number of IoT connections will reach 83 billion by 2024, rising from 35 billion connections in 2020. - Juniper Research
Solid, a New Approach to the Web by Sir Tim Berners-Lee
Solid is a new approach to decentralizing the Internet, led by Sir Tim Berners-Lee. - Solid
Demand for Sharp’s Face Masks Crash Servers and Air Conditioners
Sharp’s online store server went down, taking smart gadgets including air conditioners with it. - The Verge
New ESP32 AI Development Board, ESP32-Korvo
ESP32-Korvo is Espressif’s new AI development board. Equipped with a multi-microphone array, it can achieve high performance, spoken-command recognition and far-field voice wake-up. - EspressIf
Are Insect Brains Better for Neural Computing than Human Brains?
We model existing neural networks based on human brains to replicate human intelligence. Tasks like navigation for driverless cars and drones have researchers wondering if they should focus on insect brains instead. - NetworkWorld
The Advantage of LPWAN Chirp Technology
Chirps are great for low power wide area networks (LPWAN) because they occupy a single dimension. Semtech’s Oliver Seller takes us through what chirps are and why they’re useful for LoRa-based signal modulation. - SemTech
Adafruit IO Stats and more!
Adafruit IO has 323,646 total users! Here are the interesting stats from the last 30 days:
- USERS ACTIVE (30 days): 13,553
- TOTAL FEEDS: 495,048
- FEEDS CREATED (last 30 days): 14,281
- There are about 4,200+ MQTT connections active 24/7.
Sign up for Adafruit IO (for free!) by clicking this link. Ready to upgrade? Click here to read more about Adafruit IO+, our subscription-based service. We don’t have investors and we’re not going to sell your data. When you sign up for Adafruit IO+, you’re supporting the same Adafruit Industries whose hardware and software you already know and love! You help make sure we’re not going anywhere by letting us know we’re on the right track.
-
Adafruit IoT Monthly: Together we’ll make it, Upcycled IoT Display, ESP32-S2 in the Wild and More!
A note from the editor - We’ll make it together
Phil and Ladyada here, we usually do the newsletter each week, this week are diverting all our attention to efforts in NYC and awhile the world to help combat the COVID-19 outbreak. Thank you community for keeping us strong, and thank you Adafruit team for running the newsletter for now.
Adafruit was deemed an essential manufacturing, service and business in NYC by – Executive Order 202.6. We have a blog post with an overview and things are changing quick, stay tuned for updates on everywhere Adafruit is on social media - Read more.
We are Shipping a limited number of orders for health care professionals / urgent needs only. All other orders are being held for now.
Adafruit is a 100% woman-owned, loan-free, VC-free. profitable, USA Manufacturing company. Please see our about page and press page to read about us. Our founder and lead engineer is Limor Fried, a MIT Electrical Engineer.
We have paused some operations in NYC due to COVID-19, we are paying all team members, contractors, and more.
There are no layoffs for 130+ Adafruit team members. Adafruit was deemed an essential service to distribute/make some PPE (Personal Protection Equipment) such as face shields, and manufacturer electronics for essential life-saving/preserving equipment and development which is needed in New York and beyond.
Adafruit Industries located at 150 Varick Street, New York, NY 10013 by Executive Order 202.6, “Essential Business” by New York State: https://esd.ny.gov/guidance-executive-order-2026
Adafruit provides the following services:
Medical equipment/instruments including:
Warehouse/distribution and fulfillmentEssential manufacturing including:
Microelectronics/semi-conductorEssential health care operations including:
Medical supplies and equipment manufacturers and providersWe are maintaining some, but not all, business operations to assist in providing these valuable services to combat the COVID-19 outbreak.
If you are working on COVID-19 related efforts, we are shipping.
IoT Projects
AvoRipe – Check your Avocado’s Ripeness
Eden Bar-Tov built a device to check an avocado’s ripeness twice a day. If an avocado is ripe (AvoRipe checks both color and softness), a push notification will be sent to your phone notifying you that the avocado is ready to eat. - Adafruit
Stay Informed: How to Pull your Own COVID-19 Data
Tom Nardi wrote a guide on hackaday for pulling and scraping raw data about COVID19 from multiple data sources. If you’re building a way to monitor the total number of cases in your state or country, this guide provides reputable data sources along with Python code snippets. -HackaDay
Upcycled Cassette IoT Display
Martin Mander, aka Old Tech. New Spec, gives life to obsolete technologies, usually by sticking a computer in them and connecting them to the internet. In this example of the upcycler’s craft, he’s turned a cassette (an ancient, rubbish way of recording music) into an IoT notification reader. - Adafruit
Space Station Grow Box Replica
m1st3r_c is building a replica of the plant grow-box used on the Internal Space Station for the Natural History Museum of London. - Adafruit
Pushup Counter
Stay fit even if you have to stay inside! Use a proximity sensor to count your push-ups. - Hackster
Ethernet for CircuitPython with Wiznet5K
Wireless is wonderful, but sometimes you want the strong reliability of a wired connection. If your CircuitPython project is going to be part of a permanent installation, you’ll want to add ethernet networking to your project. - Adafruit Learning System
IoT News and More!
Are All Edge Devices “Servers”?
A discussion broke out on Twitter between leading experts in the field of servers, IoT, gateways and single-board computers over the future of “edge computing.” This post is meant to summarize what was talked about for a broader audience because it is relevant to how we, as an industry, think and talk about “The Edge.” - Adafruit
Eye on NPI - ESP32-S2
First off, we are kicking off “EYE on NPI” video series with the Espressif ESP32-S2 SoC. These chips come with a great core, lots of RAM, proven TLS+TCPIP stack, a complete development platform, and lots of code examples. If you’ve used the ESP8266 or ESP32 many elements will be familiar to you! The best new peripheral for this chip is the new USB OTG system. Yes finally native USB comes to ESP! - Adafruit
NEW VIDEO: What is Adafruit IO?
Build IOT projects with Adafruit IO! Control your projects over the internet and create a dashboard to visually see your sensor data - YouTube
Watchy, an ESP32-powered Open Source e-Ink Smartwatch
Squarofumi designed a beautiful open source smartwatch with Arduino and Python Support. This watch has a “200×200 E-ink display, WiFi + BLE (Powered by ESP32), BMA423 Accelerometer, 4 Buttons + Vibration Motor, DS3231 RTC for accurate time keeping, and a 2 Week Battery Life”. Schematics and code are available on GitHub. You can also purchase one for $55. - SquaroFumi
IoT Design Week - Machine Learning and Artificial Intelligence
Ladyada and PT talked about Machine Learning and Artificial Intelligence with Microchip Technology. - YouTube
Espressif ESP32-S2 Sample Boards Shipping
We’re seeing some ESP32-S2 samples appearing in the hands of more developers. We’re looking forward to TinyUSB, and then CircuitPython on this module. - TinyUSB
How Nordic Semiconductor Built ThingyWorld for Embedded World 2020
Nordic Semiconductor built an impressive asset tracking demo for their booth at the Embedded World 2020 conference. Their Thingy:9’s are distributed all over the world and tracked using AWS IoT core. - Nordic DevZone
Adafruit IO Stats and more!
Adafruit IO has 318,457 total users as of March 27, 2020! Here are the interesting stats from the last 30 days:
- USERS ACTIVE (30 days): 16,697
- TOTAL FEEDS: 482,240
- FEEDS CREATED (last 30 days): 21,104
- There are about 4,330+ MQTT connections active 24/7.
Sign up for Adafruit IO (for free!) by clicking this link. Ready to upgrade? Click here to read more about Adafruit IO+, our subscription-based service. We don’t have investors and we’re not going to sell your data. When you sign up for Adafruit IO+, you’re supporting the same Adafruit Industries whose hardware and software you already know and love! You help make sure we’re not going anywhere by letting us know we’re on the right track.
-
Adafruit IoT Monthly: Hack-Proof Garage Door Opener, The Internet of Things is Sending Us Back to the Middle Ages and More!
IoT Projects
How I Made My Heating Smart without Damaging or Replacing Anything
Andy Bradford has been wanting to upgrade their home’s heating system for a some time – but their house is rented. Damaging the house would cause them to lose their security deposit, “so the whole system must do no damage, be made only of removable parts and be installed without modifying any of the existing infrastructure.” - AndyBradford.dev
Temper, a compact temperature sensor based on ESP8266 and SHT30
Temper is a compact, low power temperature (~30-40uA) sensor based on an ESP8266 and SHT30, with a large 13x7 pixel LED display. - GitHub
Adafruit CLUE-based Bike-Mountable Computer
The Adafruit Clue is “the bike-mountable commuter computer [Jose Castillo] has always dreamed of”. - @josecastillo
MicroPython-powered Lightbulb
MicroPython on an ESP8266-based smart-bulb. Instead of a interacting with the bulb using a proprietary app, @goatchurch is running a MQTT client on the ESP8266 and an MQTT broker on their computer. - @goatchurch on Twitter
BLE Cheerlights
Using an AirLift FeatherWing to get the current cheerlights color, then advertising the color over BLE to an ItsyBitsy nRF52840 and a Circuit Playground Bluefruit. CircuitPython code is available on GitHub . - @DavidGlaude
Control Home Appliances with Google Assistant and Adafruit IO
Techmirtz is controlling a 60W (not smart!) bulb using the Google Assistant voice-based command service. Adafruit IO, our free IoT service, has built-in integration with services like IFTTT. - Hackster.io
Building an ESP32-CAM Video Surveillance Robot
konsdor has designed and built a video surveillance robot, powered by the ESP32-CAM microcontroller board. The robot may be controlled by the operator over the internet, as the board has WiFi networking built-in. - Hackster.io
PyPortal Planter with Adafruit IO
Build a smart planter with an Adafruit PyPortal and CircuitPython. Monitor your plants vitals with an Adafruit STEMMA Soil Sensor and plot moisture and temperature data. Use Adafruit IO to create a visual dashboard with gauges of your plants water levels. - Adafruit Learning System
IoT Cloud Enabled Alarm Clock
Teaching a mid-2000’s clock some new tricks. MoritzDornseifer updated a Tivoli Audio radio clock to be set by the internet. They’ve redesigned the clock assembly and updated the hardware to run on a Arduino Nano 33 IoT. The alarm can be set via the snooze button and configured via the Arduino IoT Cloud Dashboard. - Hackster.io
How to Build a Hack-Proof Garage Door Opener
Pete Lewis built a new twist on an IoT garage door opener. He added an ATECC508A crypto co-processor board to provide end-to-end encryption when opening the door to his garage. - IEEE Spectrum
Internet-Connected Conference Badge
Codensolder built a CloudBadge conference badge with the PyBadge, an internet-connected conference badge which communicates with Adafruit IO over MQTT. While the PyBadge doesn’t have built-in WiFi, codensolder attached an AirLift WiFi FeatherWing to the PyBadge’s Feather headers to add WiFi, all coded in CircuitPython. - CloudBadge on GitHub
IoT News and More!
A CEO’s Experience During the nCoV Crisis
Espressif is a company with their main offices in China. The recent nCoV virus outbreak has affected them, but they’ve taken some precautionary measures, such as working from home and having multiple offices outside of China. Espressif’s CEO Teo Swee Ann published two articles about running the company during this outbreak. - Part I: Safety First, and Part II: On the Ground.
The Internet of Things is Sending Us Back to the Middle Ages
Joshua A.T. Fairfield discusses “the new digital serfdom” as we purchase more internet-enabled devices controlled by advertisers and large companies. - The Conversation, Pocket
Arduino IoT Cloud Gets a New Dashboard with Historical Data Import, Greater Customization, and More
Arduino’s IoT Cloud was updated with a shiny new dashboard which can import and display historical data from multiple devices. - Hackster.io
Raspberry Pi 4 v1.2 Fixes USP-C Power Delivery
The Raspberry Pi Foundation has released a new revision of the Raspberry Pi 4 (identified by a c03112 model number) which fixes an identified issue with USB-C power delivery. - CNX-Software
The Things Industries launches a Global Join Server to push secure LoRaWAN provisioning practices
The Things Industries announced the launch of a Global Join Server which allows activation of any LoRa network, anywhere in the world, as long as it uses LoRa standard interfaces. This new ecosystem’s role is to “store root keys, generate session keys, and send them securely to the network and application servers”. This new model replaces the need for manufacturers to generate secure keys. - Things Industries via LinkedIn Pulse
Bluetera II, a full-stack dev board that uses protocol buffers
BlueTerra II is an open-source IoT development board which supports Google’s Protobuf and motion algorithms. This tiny board has “everything. From hardware to firmware to the software running on your mobile device or PC is strictly open-source”. They’re using a Madgwick-based motion fusion algorithm which is also open source, as opposed to other fusion algorithms supported by similar development boards. - CrowdSupply.
Adafruit IO Stats and more!
Adafruit IO has 311,441 total users! Here are the interesting stats from the last 30 days:
- USERS ACTIVE (30 days): 16,831
- TOTAL FEEDS: 458,270
- FEEDS CREATED (last 30 days): 21,985
- There are about 4,200+ MQTT connections active 24/7.
Sign up for Adafruit IO (for free!) by clicking this link. Ready to upgrade? Click here to read more about Adafruit IO+, our subscription-based service. We don’t have investors and we’re not going to sell your data. When you sign up for Adafruit IO+, you’re supporting the same Adafruit Industries whose hardware and software you already know and love! You help make sure we’re not going anywhere by letting us know we’re on the right track.
-
State of IO 02.19.20
adafruit.io has 308,729 total users, however! Here are the most recent stats from the last 30 days which is a pretty good picture!
- USERS ACTIVE (last 30 days): 16,656
- USERS ADDED (last 7 days): 1,989
- FEEDS: 458,270
- FEEDS CREATED (last 7 days): 5,535
In the last 30 days adafruit.io inserted over 789 million records. There are about 18 million background jobs per day and about 4,200+ MQTT connections active 24/7. IFTTT, Adafruit’s week in review: February 10 – February 16
- Service connections: +594, all-time 65,733
- Applet runs: +1,340,267, all-time 201,663,200
- Applets turned on: +1,627, all-time 151,161
-
Adafruit IoT Monthly: Physical Event Notifiers, Particle deprecates Particle Mesh and More!
IoT Projects
All-in-One MQTT Home Automation Remote
serverframework built a WiFi “MQTT remote” with an ESP8266. Pressing a button triggers a function to send a MQTT message to a Home Assistant listener. - serverframework blog
Kinetic Courier, Physical Event Notifier
Something happened? Ring a bell, wave a flag, light some lights! A physical notification platform for IoT events. - hackster.io
Alexa-controlled Adam Savage Pumpkin with IFTTT and Adafruit IO
minihannah built an Alexa-controlled pumpkin which uses a combination of Adafruit IO and IFTTT to trigger lights connected to an Adafruit Feather M0 WiFi. - adafruit blog
Internet Monster
A cute monster that repeats what the internet says. What could possibly go wrong! - instructables
PyPortal MQTT Sensor Node/Control Pad for Home Assistant
Richard Albritton wrote a guide about how to take IoT to the next level with this MQTT powered Super Sensor with an Adafruit PyPortal. - Adafruit Learning System
Physical Test Controller with TreeJS, Socket.io and CircuitPython
@makerschmitz is building a physical controller with a web interface. You can watch it in-action on Twitter.
IoT News and More!
Particle deprecates Particle Mesh, discontinuing Particle Xenon
Particle has announced today that they are discontinuing development of Particle Mesh, their OpenThread-based mesh networking solution, and will no longer be manufacturing their associated Xenon development board.
Particle states they ran into two barriers which kept them from delivering on the promise with Particle Mesh:
- Mesh networking, while a compelling technology, is extremely complex, and trying to make it “just work” with zero configuration for all customers in all environments just wasn’t feasible. As a result, the experience of Particle Mesh doesn’t live up to the standard that we set for ourselves with our other products.
- It turns out that, for most of our customers, 802.15.4 mesh networking seems to not have been the right technology in the first place; most customers would be better off using Bluetooth Low Energy (which we will continue to invest in) or a sub-GHz radio like LoRa (which can be added to Particle through third-party accessories).
See Particle’s full announcement and learn How to use Xenon with CircuitPython.
Testing CircuitPython on Teensy 4.0 – IoT made easy IoTeensy
CircuitPython has landed on the NXP iMX RT1062. We threw together a quick IoT project which uses the AirLift FeatherWing to fetch inspirational quotes from Adafruit’s quote service and displays them on an OLED FeatherWing. - Adafruit Blog
The World’s First LoRa SoC: STM32WL
STMicroelectronics announced the launch of the STM32L, the world’s first integrated LoRa System-on-a-Chip (SoC). This is the first silicon which integrates a microcontroller and a sub-GHz radio, previously two separate modules. - CNX Software
Arduino Portenta H7
Arduino released a new Pro line at CES 2020 with a new flagship board - the Portenta H7. This board contains a STM32H747, Murata 1DX dual WiFi 802.11b/g/n 65 Mbps and Bluetooth 5.1 BR/EDR/LE, Secure Element (NXP SE0502), and a GPU (Chrom-ART graphical hardware Accelerator).
Use-cases for this $99 board include “high-end industrial machinery, labratory equipement, computer vision”, and machine learning. - Arduino.cc
WeMos W600-PICO
WeMos released a new board for $2.10 USD plus shipping. The CPU is a Winner Micro W600 ARM Cortex-M3 WiSoC and the board is pre-loaded with MicroPython. - CNX Software
OTA Device Firmware Updates for NRF52 Processors
Mohammad Afaneh on NovelBits posts about updating the internal firmware on internet of things (IoT) devices via Bluetooth. - novelbits
Pocket-Sized ESP32 with 300uW Display
A pocket-sized ESP32 with a 300uW SHARP Memory LCD. - Hackaday.io
ESP-AHT-10
A minimalist ESP temperature sensor which you can plug into your USB port. Designed with KiCAD, the board files are open source and available on GitHub
Adafruit IoT Updates
All the Internet of Things Episode 6: Digi-Key IoT Studio
Adafruit and Digi-Key have teamed up to present All the Internet of Things – a six-episode series covering everything you could ever want to know about the Internet of Things.
We are very excited to release the final episode, which incorporates all the different subjects discussed in previous episodes, and shows off this incredible resource: Digi-Key IoT Studio.
Unlike most other IoT platforms, Digi-Key IoT Studio is code-less — all sensor interaction and storage is done automatically by the drag-and-drop IDE. You don’t need to install toolchains, code editors or compile any code on your computer! Digi-Key Studio runs in your web browser, handles all aspects of developing an internet of things project, and even compiles your code remotely.
Watch the full video or check out this guide to get started now.
Free Year of Adafruit IO+ with the GitHub Student Developer Pack
Great news for students! Adafruit is part of the GitHub Student Developer Pack!
If you are a student and have joined (details here), all you need to do is log in to your adafruit.com account, click Services, then GitHub, and click connect! The discounts and free adafruit.io plus are waiting for you, it’s that simple!
What is Adafruit IO?
Adafruit.io has over 16,000+ active users in the last 30 days and 930+ Adafruit IO Plus subscribers. Sign up for Adafruit IO (for free!) by clicking this link. Ready to upgrade? Click here to read more about Adafruit IO+, our subscription-based service. We don’t have investors and we’re not going to sell your data. When you sign up for Adafruit IO+, you’re supporting the same Adafruit Industries whose hardware and software you already know and love! You help make sure we’re not going anywhere by letting us know we’re on the right track.
-
Adafruit IoT Monthly: Learning from IoT Projects, Adafruit Joins the LoRa Alliance, Ring Ransoms, and more!
IoT Projects
Face Tracking and Identification with Walle-ng
Anton built a robot inspired by the Pixar Movie Wall-E. If a face is detected (using the OpenCV Facial Recognition Demo), activity is logged and a notification is sent to an Amazon Web Service API Gateway and distributed as an SMS by AWS’s Simple Notification Service. - Hackster.io
Data Logging Zero to Hero with CircuitPython and MQTT
Robin Cole published a tutorial which navigates through the basics of creating a CircuitPython temperature logging device. First, you use the Mu editor to plot your data and verify it’s correct. Then add WiFi Connectivity using a local MQTT broker and CircuitPython’s MiniMQTT module. Finally, add an MQTT sensor to Home Assistant so the data is graphed on a web dashboard. - Hackster.io
ISS-Tracking Globe Lamp
This project uses an Open Notify API notification called ISS Location Now to track the International Space Station. A WeMos D1 grabs and parses the data. Then it tells a servo where to place a laser-pointer on a 3D-printed globe. - Instructables
Disaster-Radio - an off-grid, solar-powered mesh network
disaster.radio is a work-in-progress long-range, low-bandwidth wireless disaster recovery mesh network powered by the sun.
What I Learned Building an Indoor Air Quality Monitor with Adafruit IO
There are lessons to learn from every electronics project. Even a sensor node can quickly become complicated. Andy Bradford wrote up his experience (and provided free, open source code on GitHub) in building a logging platform. - Andy Bradford
PyPortal Voice Controlled Smart Switch and Time Display
We’ve written about this project in a previous IoT Monthly before, but it was only a sneak preview. The PyPortal Voice Controlled Smart Switch and Time Display is now on the Adafruit Learning System as a guide - Adafruit Learning System
Sending Arduino Data to Google Sheets using the Google Cloud Platform
Building an Arduino sketch to send data to Google Sheets using the Google Cloud Platform. - DZone
IoT News and More!
Adafruit joins the LoRa Alliance
Adafruit is thrilled to announce that we have joined the LoRa Alliance! I asked Ladyada why we joined this alliance…
“Humans have done a great job of connecting people in dense populations like cities or buildings – WiFi and Cellular are ubiquitous technologies that connect people, machines and sensors. The future is to connect people wherever they are, and that’s where LoRa has so much promise. We think LoRa and LoRaWAN are the best way to solve last-mile connectivity for Industrial and Agricultural IoT” – Limor “Ladyada” Fried.
Ring Cameras are Ransomed
December 2019 was the month of Ring insecurity. First, videos appeared where hackers spoke to families through their Ring cameras: “We would like to notify you that your account has been terminated by a hacker.” The voice then says, “Pay this 50 bitcoin ransom…”. Ring asserted that their investigation found that the family used an email/password combination which was exposed in an unrelated data breach. @fs0c131y on Twitter did a deep-dive into Ring’s iOS/Android application. They found the application to leak geographic details of cameras through their API, Ring does not require authentication for video/photo alerts and the application does not implement rate-limiting for logging in. It’s likely that hackers are running automatic bots against the login with exposed usernames/passwords from previous breaches.
FBI releases a statement for building a digital defense for the Internet of Things
The FBI has suggested network security measurements for those with IoT devices on their network. In short: change factory settings/passwords, isolate IoT devices to their own network, and update your devices regularly. - FBI
LoRaWAN and Wi-Fi: Made for Each Other
Remi Lorrain wrote that “WiFi and LoRaWAN work well together as an end-to-end solution in IoT applications and more.” - EETimes
Project Connected Home over IP: an Open Standard for Smart Home Devices
Amazon, Apple, Google, Zigbee Alliance and board members form a working group to develop an open standard for smart home devices - Project Connected Home
Ikea’s 2020 Smart Home Lineup is Unveiled
Ikea is planning on barreling into the smart-home area in 2020 with new bulbs, products and even a ZigBee gateway. - TheVerge
DZone’s IoT Predictions for 2020
Dzone published their 2020 IoT predictions, among them are: the edge gets smarter, evolving networks and protocols, AI Smart Homes connected to ISPs, increases in DIY Home Security installations, more hard-lined policies for BYOD, and new flexible electronic materials. - Part 1 and Part 2
The 2019 State of Responsible IoT Report
“With ThingsCon, we have devoted ourselves to working towards a ‘responsible IoT’. But what does that look like in the light of Surveillance Capitalism? With this years ‘responsible IoT Report’ – RioT for short – we wanted to find out.” - ThingsCon
HackADay SuperConference Talk on YouTube: Basic Device Security for Basic Needs
Kerry Sharfglass remarks that “In our IoT-ified world, device security is more important than ever, but not every hardware product needs to be secured like an ATM inside a missile. I will discuss basic design practices and implementation tricks which are easy to incorporate into your product and provide a solid baseline of security against casual adversaries.” - YouTube
Five Reasons to Upgrade to MQTT 5
The latest version of the IoT’s favorite stateless protocol has been out for a while. Here are five reasons to upgrade to it - IoTforAll
Actinus Environmental Sensor FeatherWing Released
Actinius’ Environmental Sensor FeatherWing measures temperature, humidity, pressure, and air quality. The Feather-compatible environmental sensor add-on also includes a Grove connector for use with any I2C-compatible microcontroller. It’s available for purchase from the actinius website and is in-stock at the time of writing.
OpenMV Cam H7 Plus
The OpenMV Cam is a small, low power, microcontroller board which allows you to easily implement applications using machine vision in the real-world. You program the OpenMV Cam in high level Python scripts (courtesy of the MicroPython Operating System) instead of C/C++. It’s currently in-production and will be in stock by March 2020. - OpenMV
Adafruit IoT Updates
New Adafruit IO Feature: Kiosk Mode for Dashboards
Adafruit IO Dashboards have a new “kiosk mode” URL that will launch the dashboard in a “no browsing mode” without any of the surrounding page. This is super-handy if you’re designing an exhibit or would like to use a Raspberry Pi + HDMI Display to monitor your Adafruit IO Feeds. Read our blog post to learn how to enable this feature on your dashboard right now…
New PyPortal Sizes: Meet the PyPortal Pynt and the PyPortal Titano
The PyPortal is our easy-to-use IoT device that allows you to create all the things for the “Internet of Things” in minutes. Adafruit has released the PyPortal Pynt, the little sister to our popular PyPortal - zapped with a shink ray to take the design from a 3.2” diagonal down to 2.4” diagonal screen. We’ve also released the PyPortal Titano, with an ATMEL (Microchip) ATSAMD51J20 plus an Espressif ESP32 Wi-Fi coprocessor with TLS/SSL support built-in. PyPortal Titano has a bigger 3.5″ diagonal 320 x 480 color TFT with resistive touch screen. Compare that to the original PyPortal’s 3.2” 240x320, there are twice the number of pixels! Also, Adafruit has updated the connector to be a reverse-friendly USB C connector.
Build a Mini Smart Home with the Smart Home Kit for Digi-Key IoT Studio
Automate your own adorable, IoT-enabled papier-mâché house. The small size of this build lets one explore wiring, user interaction, and firmware deployment without having to get a ladder out. After building this project, you can re-purpose it for your home or apartment. We’ve specifically selected components and sensors which are common in real-world IoT projects. You can also go further with this project, adding sensors to monitor different rooms in your home. Visit the product page for this kit on the Adafruit Website…
What is Adafruit IO?
Adafruit.io has over 14,000+ active users in the last 30 days and 880+ Adafruit IO Plus subscribers. Sign up for Adafruit IO (for free!) by clicking this link. Ready to upgrade? Click here to read more about Adafruit IO+, our subscription-based service. We don’t have investors and we’re not going to sell your data. When you sign up for Adafruit IO+, you’re supporting the same Adafruit Industries whose hardware and software you already know and love. You help make sure we’re not going anywhere by letting us know we’re on the right track.
-
Adafruit IoT Monthly: Machine Learning 101, PWNing the ESP32, and more!
IoT Projects
Running ML on Particle Hardware, ML 101
Tensorflow Lite now runs on newer Particle devices! Brandon Satrom published a very detailed tutorial about running TFLite on Particle devices. - Particle
Do your chores or else I’ll cut off the internet!
AccidentalRebel is creating a device “that monitors and logs if my kids have done their chores and daily tasks. If not, their devices won’t have access to the internet.”. When their chores for the day are complete, their device will automatically re-connect them to the internet. - Hackaday.io
ESPRing Clock
ESPRing is a NeoPixel ring with an onboard ESP module. The ESP connects to WiFi and fetches the NTP time. - Hackaday.io
AutoHome - Universal Home Automation with Raspberry Pi
rirozizo is building a home automation system powered by a Raspberry Pi “to remotely control any possible home appliances without the use of proprietary hardware and apps”. They’re using the (free) Adafruit IO service as the MQTT broker and for data visualization. - Github
Voice-Controlled PyPortal Smart Switch
Dan the Geek is improving their PyPortal-based Smart Switch. They connected it to Adafruit IO’s IFTTT integration so they can turn a light on or off using voice commands over Alexa or Google Assistant. - Twitter
Evaluating Motion Sensors, Microwave v.s. PIR
Akarush wrote a detailed log of his evaluation for two motion sensors - a RCWL-0516 and a PIR motion sensor. The results? Each sensor has unique advantages and disadvantages. - Hackaday.io
Bluetooth-based Costume Props using Arduino and ESP32
Juan Carlos Jiménez hosted a costume party and integrated their costume with the house decorations. This BLE-powered costume prop is spooky. - JCJC-Dev
RGB Weather Strip
This RGB LED Strip changes color based on the weather forecast outside. - Hackaday
Code-less IoT Projects with Node-RED on Raspberry Pi
Les Pounder posted a tutorial about using the Node-RED development tool…
Node-RED is an awesome tool and anyone, yes anyone can make something with it. All you need is a web browser and a device with Node-RED. Node-RED uses JavaScript syntax, but we do not have to write any code, rather we link nodes together.
Around the Internet - IoT News
PWNing MBEDTLS on ESP32
LimitedResults found vulnerabilities with the ESP32 which allows an attacker to compromise the cryptographic library on the ESP32, MbedTLS. It’s important to note that an adversary will need physical access to the ESP32 module as it’s been compromised using a voltage-glitching attack. While this doesn’t impact hobbyists, it is a an attack on the hardware module (you can not roll out new software to patch it). If you have an ESP32 module in the field, it is potentially vulnerable to this type of attack, given an attacker’s resources and time. It looks like Espressif is following this report. They tweeted after ESP32 was pwned a couple of months ago: “We have upgraded the hardware; stay tuned for ESP32v3 with improved security and performance!”. We are unsure if this impacts the ESP8266 or the upcoming ESP32-S2 module.
Adafruit joins the Zephyr Project
The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind, and we’re thrilled to announced we’ve joined the project. - Adafruit
Mozilla is building a “Web of Things”
Mozilla is building an “open platform for monitoring and controlling devices over the web”.
The idea of the Web of Things is to create a decentralized Internet of Things by giving things URLs on the web to make them linkable and discoverable, and defining a standard data model and APIs to make them interoperable.
Amazon’s long-term plan for Alexa
An interview with Rohit Prasad, Alexa’s head scientist, revealed details about where Amazon wants to head with their powerful voice assistant. - TechnologyReview
Hackable Smart Watch powered by Espruino
Bangle.js is a hackable, open-source smartwatch that can be easily customized. It’s currently crowdfunding on Kickstarter and may fill the space on our wrists from Pebble’s acquisition by Fitbit. The bangle packs more of a punch than a pebble with a nRF52832, 64kB RAM, heart rate monitor, accelerometer, magnetometer and a 350mAh battery. - Kickstarter
Best Buy discontinues Insignia IoT Products
Insignia, Best Buy’s generic hardware brand, has shut down every product which replies on their app (including a freezer). Each time this happens, we think about how many products in our lives rely on “other peoples servers”. Do you have a contingency plan for the IoT devices in your life? - Hackaday
Recognizing AI Snake Oil
AI has been intertwined with IoT (AIOT). But, “Much of what’s being sold as ‘AI’ today is snake oil — it does not and cannot work.”. This paper addresses the important questions of “Why is this happening? How can we recognize flawed AI claims and push back?” - Princeton
Analyzing NB-IoT and LoRaWAN Sensor Battery Life
Low power wide area network (LPWAN) technologies like NB-IoT and LoRaWAN are perfect for your projects requiring small packets, long battery life, and long distances. But how long will the batteries in your IoT project really last? - Semtech Developer Journal
Adafruit IoT Updates
Promotion: 1 Year of Adafruit IO Plus Free with $250 Adafruit Purchase
We’re running a special promotion! As of November 20th, 2019 5:30pm, if you place an order of $250 or more at Adafruit, you’ll receive a 1 year subscription to Adafruit IO+. You’ll receive a minimal yet elegant Adafruit IO+ Subscription Card! This card comes with a code on the back and when typed into your Adafruit IO account, will activate a full year of Adafruit IO+ service for all the IoT projects you can dream up.
Promotion: Google AIY Voice Kit for Black Girls CODE
For a limited time, whenever you buy a Google AIY Voice Full Kit the regular price of $59.95 here, on this page, Google will automatically donate one to Black Girls CODE. Black Girls CODE goal is to empower young women of color ages 7-17 to embrace the current tech marketplace as builders + creators. Check out the bundle on Adafruit’s website.
What is Adafruit.IO?
Adafruit.io has over 14,000+ active users in the last 30 days and 850+ Adafruit IO Plus subscribers. Sign up for Adafruit IO (for free!) by clicking this link. Ready to upgrade? Click here to read more about Adafruit IO+, our subscription-based service. We don’t have investors and we’re not going to sell your data. When you sign up for Adafruit IO+, you’re supporting the same Adafruit Industries whose hardware and software you already know and love. You help make sure we’re not going anywhere by letting us know we’re on the right track.
-
Adafruit IoT Monthly: Helping Harry's Heart, CircuitPython meets AWS IoT and more!
IoT Projects
Helping Harry’s Heart
Adam Taylor built a remote monitoring system to monitor his dog’s respiration rate to help the vet to adjust his heart medication. They used a X4M200 respiration sensor fitted to Harry’s (the dog) harness. Adam used Adafruit IO to send the dog’s heart rate to the internet, privately. “Along with [the] graphical view, I can also see the time stamped data” to share with “the cardiac specialist at Harry’s next appointment. - Hackster.io
CircuitPython BLE Remote Control On/Off Switch
rdagger has “multiple computers around the house, and sometimes they need to be rebooted remotely.”. Instead of manually opening the locked closet and rebooting their NAS, rdagger opted for a different approach. They built a BLE peripheral which “attaches to the front so the server can be turned on remotely from outside the closet”. - Read the guide on the Adafruit Learning System
Hacking the Sonos Ikea Symfonisk into a High-Quality Amplifier
Ikea released a $99 SONOS-compatible speaker, but a plastic enclosure can’t hold a candle to a pair of high-quality wooden speakers. Ben Hobby grabbed some tools and (literally) hacked one apart to connect it to his bookshelf speakers so you don’t have to. - Makezine.
PyPortal IoT Plant Monitor with AWS IoT and CircuitPython
This smart-planter monitors your plant’s vitals on the PyPortal’s screen, logs data to Amazon AWS IoT, and sends an email to your inbox when your plant needs to be watered! Using Amazon AWS IoT with CircuitPython allows you to prototype internet-of-things projects faster than ever before. With CircuitPython, you’re able to instantly provision your device for AWS IoT by dragging and dropping certificates/keys. - Adafruit Learning System
Mini Smart Home with Huzzah, HASSio and Crickit
The Mini Smart Home is a test bed that can let you move one step closer to making a truly smart Smart Home. When finished, you will have a completely independent system that hosts a customizable browser based User Interface, a device management system, usage and data logging, advanced automation tools, and user account security. This is all done with a Smart Home server OS called Home Assistant. - Adafruit Learning System
Around the Internet – IoT News and Links
Tearing Down Quirky’s Egg-Minder
A teardown of the (now defunct) Quirky’s Egg-Minder reveals a well-designed IoT product before the ESP8266 was “a thing” - HackADay
Debugging the ESP32 ESP-IDF with a Segger JLink
Using the ESP32 as a WiFi Coprocessor (like Adafruit AirLift boards running the excellent nina-fw firmware) is becoming more popular. Instead of printf()’ing your way through ESP-IDF and mbed - this post details a method of using the Eclipse IDE and a JLink debugger. - DZone
Amazon’s Quest to put Alexa everywhere
Aside from the usual smart-speaker, Amazon released a bevy of new hardware supporting their Alexa voice assistant earlier this month. This hardware ranges from a wearable wing to Alexa-compatible eyeglasses. But what’s the goal of releasing all this hardware so quickly? - VentureBeat
Why Engineering Teams Are Shutting Down Industrial IoT Projects
Despite the previous accomplishments of their profession, engineering teams are unexpectedly shutting down industrial IoT projects at an alarming rate. But why now? It seems like IoT, as an industry, is evolving daily with new hardware advances. - DZone
MCCI Catena 4618 is a Cortex M0+ LoRaWan + sensors in a Feather footprint
MCCI has released the Catena 4618, a complete single-board IoT device and sensors for LoRaWAN projects.
Based on the Murata CMWX1ZZABZ-078, and designed to be compatible with the MCCI Catena 44xx and 46xx family and the Adafruit Feather family of development boards and accessories, the Catena 4618 is a great platform for LoRaWAN investigation and deployment. It works well with The Things Network, or any LoRaWAN 1.0 or 1.1 network in the 865 to 923 MHz range.
The board is available from the MCCI online store and more information is available on the MCCI website.
NoCAN - a new type of wireless sensor network
Transmitting data over SPI/I2C wires does not work well for long distances, you can transmit longer distances but only when reducing the frequency. The NoCAN platform allows creation of a reliable sensor network with nodes connected through a CAN bus. It includes a dynamic-address-assignment scheme from a node manager when it’s bootstrapped (just like DHCP). - Omzlo
ESP32 and Raspberry Pi Zero W in Space
The APEX experiment brought two ESP32s and a Raspberry Pi Zero into space to evaluate faster embedded computing options for space-flight.
The main board included two ESP32s and a Raspberry Pi Zero W, running resinOS / balenaOS, an operating system designed to run parallel Docker containers and optimized for IoT fleet management.
MQTT Security 101
The internet-of-thing’s favorite low-power protocol, MQTT, doesn’t require any security measures. But it’s 2019 and we should enforce best practices, this article dives into the vulnerabilities, and security measures to take from a broker or client perspective. - Medium
The ESP32MX-E is a robust ESP32 platform
Between an active community, a low price-point, and ongoing development, the ESP32 is an attractive choice for connecting internet-of-things projects to the internet. The the esp32MX-E takes the ESP32 one-step further by adding a STMicroelectronics STM32F030F4 and Ethernet support. This project is coming soon, sign up on the project Crowd Supply page to receive updates.
Scientists tracking eagle’s migration patterns rack up roaming charges
Russian scientists tracking the migration patterns of eagles suddenly ran out of money when they found the eagles were migrating hundreds of miles away to Pakistan and Iran, racking up thousands of dollars of roaming charges. While this is funny, it’s also a scenario one should consider when building mobile IoT projects. - BBC News
Track Ocean Currents with the Maker Buoy Kit
The Maker Buoy Project’s Arduino-based drifting buoy is the “Internet of Things applied to the ocean”. If you’re an oceanographer or marine biologist looking for a robust, open-source, buoy system - look no further than the Maker Buoy’s prebuilt kits. Maker Buoy now offers pre-populated PCBs, complete kits and bare-PCB hardware on their store.
Adafruit IOT Updates
New Adafruit IO Block - Multi-line text block
If you have an Adafruit IO Feed containing a lot of text (tweets, packed data from one sensor, etc.), you can now format and display your feeds on your Adafruit IO dashboard using a multi-line text block. – Visit your Adafruit IO Dashboard to try it out now
SmartiPi Touch 2 - Stand for Raspberry Pi 7” Touchscreen Display
If you’re running a smart-home setup and want to build an inexpensive central monitoring display, the SmartiPi Touch 2 is a well-designed stand for the Raspberry Pi 7” touchscreen display. Run Chromium in kiosk mode with the page set to Home Assistant or your Adafruit IO dashboard and you’ll have a touch-enabled smart-thing display - visit the Product Page here.
Coming Soon - Adafruit Feather STM32F405 Express
The new STM32F405 Feather (video) that Adafruit designed runs CircuitPython at a blistering 168MHz – our fastest CircuitPython board ever! We’ve tried it out with an AirLift Breakout and it’s incredibly quick. This may be the CircuitPython Feather you want powering your IoT project. The Feather SM32F405 Express is not yet available - sign up to be notified when it is put in stock.
What is Adafruit.IO?
Adafruit.io has over 14,000+ active users in the last 30 days and 850+ Adafruit IO Plus subscribers. Sign up for Adafruit IO (for free!) by clicking this link. Ready to upgrade? Click here to read more about Adafruit IO+, our subscription-based service. We don’t have investors and we’re not going to sell your data. When you sign up for Adafruit IO+, you’re supporting the same Adafruit Industries whose hardware and software you already know and love. You help make sure we’re not going anywhere by letting us know we’re on the right track.
-
Adafruit IoT Monthly: The S in IoT is for Security, Amazon announces Sidewalk and more!
Adafruit IoT Updates
Adafruit IO Update: Set icons on your gauge and text blocks!
Settable Icons and decimal controls are now available for your Adafruit IO Gauge and Text elements! - Visit your Adafruit IO Dashboard to try it out now
New IoT Hardware: TinyPICO ESP32 Development Board
The smallest, most feature-rich ESP32 dev board has arrived at Adafruit…
There are quite a few ESP32 boards on the market, but they all require you to compromise on one or more features. Some don’t have on-board battery management, while some do but they don’t have low deep sleep current. Others have great low-power modes, but are large and not breadboard-friendly, and none of them have extra RAM unless you go for a more expensive and larger WROVER-powered board. We just weren’t happy with the status quo - we wanted to have our cake and eat it too! So we designed the smallest un-compromising ESP32 development board in the world, and then went a step further and gave it 4 MB of extra RAM, an on-board RGB LED, and more juice with a 700 mA 3.3 V regulator.
Visit the product page to learn more…
Coming soon: BrainCraft HAT for Raspberry Pi 4
We’ve started to design a BrainCraft HAT for Raspberry Pi and other Linux computers. It has a 240×240 TFT display for inference output, slot for camera connector cable for imaging projects, a 5 way joystick and button for UI input, left and right microphones, stereo headphone, stereo speaker out, three RGB DotStar LEDs, two 3 pin STEMMA connectors on PWM pins so they can drive NeoPixels or servos, and Grove/STEMMA/Qwiic I2C port. This should let people build a wide range of audio/video AI projects while also allowing easy plug-in of sensors and robotics! The BrainCraft has a wide variety of connectivity methods:
Wireless flexibility: WiFi, cellular, Bluetooth LE Works with adafruit.io, of course!
Visit the product page to learn more…
IoT Projects
a Hello World for ESP-NOW
ESP-NOW is “yet another protocol developed by Espressif, which enables multiple devices to communicate with one another without using Wi-Fi”. If you want to try out ESP-NOW right now, Jake Wachlin built an ESP-NOW example with example code on GitHub (you’ll need two ESP32 devices). He also took an extra step and performed latency and reliability testing from his city apartment (a very busy 2.4GHz spectrum).
Smart Outlet with MKR WiFi1010 and Adafruit IO
Smart plug to control a lamp using Google’s voice assistant with an Arduino MKR WiFi 1010 and a 5V relay - Hackster.io
Upgrade the ESP32 Firmware on your AirLift
Adafruit ships a variety of products which use the ESP32 as a WiFi co-processor with a variant of the Arduino nina-fw core. If you want to keep the firmware on your ESP32 WiFi co-processor up-to-date, you’ll need to update the firmware on the ESP32. This guide will teach you how to to turn your board into a USB-to-Serial converter to flash new firmware to your ESP32 – no extra hardware required! - Adafruit Learning System
Live-stream anywhere with an ESP32-CAM
Set up a streaming web server with face recognition and detection in less than five minutes with Arduino IDE (we sell a similar ESP32 camera module here) - via Maker.Pro
Set up Home Assistant with a Raspberry Pi
Create your own secure, smart-home-hub with HASSio, MQTT, Node RED and More!
Home Assistant is an open source operating system for a localized Smart Home Hub. Basically it works like IFTTT or Samsung Smart Things, but without having to send your data out onto the internet. This means that you have total control over your data, limit the amount of internet traffic from your smart devices, and tighten up security.
Read the guide on the Adafruit Learning System…
Fried Desk Lamp Reborn: Rebuilding a device with connectivity
Sean Boyce ran 220 Volts AC through his “fancy Xiaomi Smart Lamp”’s 12VDC transformer. He went about repairing it, but didn’t trust “installing another (potentially data-harvesting) app on [his] phone just to control a lamp] and thus wrote a protocol for the NodeMCU fan controller. - via HackADay
Running TensorFlow Lite Object Recognition on the Raspberry Pi 4
Want to up your robotics game and give it the ability to detect objects? Maybe implement a security camera that can see and identify certain items? Now that the Raspberry Pi is fast enough to do machine learning, adding these features is fairly straightforward. Take this guide a step further and interface image recognition with your favorite cloud IoT service. - via Adafruit Learning System
IoT Anti-Addiction Lockbox
Lock away your vices in an IoT anti-addiction lockbox. Aside from the internet-controlled lock, this box can detect the physical presence of an item using an ultrasonic sensor and a digital scale. - via Instructables
Monitoring 3D Printer Filament Humidity with low power radio
Dr. Scott M. Baker built small, wireless sensor nodes, to verify the storage of vacuum sealed “PrintDry” 3D Filament Storage containers. The sensor nodes transmit data using low-powered SYN115 radio modules, which are received by a Raspberry Pi connected to the internet. - via smbaker.com
Indoor Air Quality Monitor with PyPortal and Particle
Measuring the air quality in a your region can help you understand the world around you,
More than two billion people worldwide continue to depend on solid fuels, including fuels and coal, for their energy needs. Cooking and heating with fuels on open fires or traditional stoves result in high levels of indoor air pollution. Indoor smoke contains a range of health-damaging pollutants, such as small particles and carbon monoxide, and particulate pollution levels maybe 20 times higher than accepted guideline values.
This is a pretty through build - a Particle Argon acts as an environmental monitor, sends data to Particle Cloud, is logged to long-term Google Firebase storage, and displayed locally on a PyPortal. - via electromaker.io
eAgar: Large-scale plant monitoring with LoRa
eAgar is a system for monitoring conditions of agriculture fields. Each sensor device is plug-and-play (just initial device provisioning is required) thanks to using LoRa communication to an outdoor multi-channel LoRa gateway.
With more information from fields, farmers can predict appearance of disease and prevently treat their plants. That will help them to reduce costs, reduce damages on plants, increase quality of crops and increase yields. Using chemical agents on clever way, in smaller quantities, will enable to customers get healthier food.
Read more about this project on Hackaday.io…
Smart Gate - DIY’ing Secure Facility Access
Michael is building a smart security control gate to control who accesses the Institute Univeritaire De La Cote in Cameroon. - via Hackaday.io
Around the Internet - IoT News and Links
The “S” missing from IoT is for Security
Digi-Key and Adafruit have teamed up to present answers to the idiosyncrasies of properly connecting things to the internet or IoT – (AKA Internet of Things). When you see that the “S” is missing from IoT, that is because there is a large amount security missing from modern day internet connected devices. - Watch “All the Internet of Things: The S in IoT is for Security” on Youtube
Amazon Sidewalk: a new 900MHz Protocol
Amazon is taking a plunge into the Low-Power IoT (LPIOT) pool and announced they’re working on a protocol named Amazon Sidewalk. This protocol sits on the 900MHz frequency band and will link IoT devices together. Much like LoRaWAN, it supports secure OTA updates but also geolocation. There’s not a lot of information about this protocol, it won’t be out for a while (at least a year for the SDK) and the first device will be named Fetch is a locator which can clip onto your dog’s collar. - via Amazon DayOne This protocol does have it’s skeptics though - Kyle Wiggers wrote an article on VentureBeat detailing that he feels “Amazon Sidewalk’s success is Anything but Assured” - via VentureBeat
ATECC608 Cryptographic Co-Processor gets a CircuitPython Library
The ATECC608 is the latest crypto-auth chip from Microchip, and it uses I2C to send/receive commands. Once you ‘lock’ the chip with your details, you can use it for ECDH and AES-128 encrypt/decrypt/signing. There’s also hardware support for random number generation, and SHA-256/HMAC hash functions to greatly speed up a slower micro’s cryptography commands.
We’ve updated this guide to include instructions for wiring and using our new Adafruit CircuitPython ATECC library. This library can interface with your ATECC608 breakout and perform AES-128 signing, random number generation, SHA-256 hashing, Certificate Signing Request generation and more!
Follow along with the Adafruit Learning System Guide here…
NEW Book: Learning IoT with Python and Raspberry Pi
A new book on learning IoT using a Raspberry Pi with Python offers a full IoT curriculum for a person or a classroom. Some of the book’s contents include important internet-connected topics such as:
- Control a servo using classes
- Upload data to the cloud
- Learn how to access a database using SQL statements
- Deploy a home monitor system that uses the Raspberry Pi Camera and a PIR sensor circuit. Upload pictures to a web server in the cloud and access the pictures on a web page.
- Control a robot using a multi-threaded application
Pre-order the book on Barnes and Noble’s website…
Comparing the ESP32 to the ESP32-S2
With more ESP32-S2 engineering samples in the wild, maker.pro published an analysis comparing the ESP32 to the new ESP32-S2. Xose Pérez notes that:
With the new ESP32-S2, Espressif is trying to fill a gap between the ESP8266 and the ESP32, both in features and price. The ESP32-S2 is not an ESP32 killer. Instead, it’s more an ESP8266 killer.
RPiAPI: a Lightweight WSGI API for RPi GPIO
Interact with your Raspberry Pi using RPiAPI - a Lightweight API built on top of RPI GPIO - via Hackaday.io
What is Adafruit.IO?
Adafruit.io has over 14,000+ active users in the last 30 days and 830+ Adafruit IO Plus subscribers. Sign up for Adafruit IO (for free!) by clicking this link. Ready to upgrade? Click here to read more about Adafruit IO+, our subscription-based service. We don’t have investors and we’re not going to sell your data. When you sign up for Adafruit IO+, you’re supporting the same Adafruit Industries whose hardware and software you already know and love. You help make sure we’re not going anywhere by letting us know we’re on the right track.
-
Adafruit IO Update: More Useful Shared Feeds in Adafruit IO @adafruitio #IoT
Up until now you’ve been able to share feeds with other Adafruit IO makers, publishing and subscribing from our HTTP and MQTT APIs, but it’s been difficult (i.e., impossible) to actually use them anywhere else on the Adafruit IO site. That has changed!
We have added Adafruit IO shared feeds to feed listings on your main feeds page and on the dashboard block editor so you can now see all of the feeds you have access to when you’re browsing Adafruit IO. That means quick insight into feeds that were shared with you, the level of access you have (read or read and write) at a glance, and their latest values.
Shared feeds are listed at the bottom of your main feeds page.
We’ve also added shared feeds to the dashboard block editor so that you can build hybrid dashboards with feeds from multiple Adafruit IO accounts. Shared feeds get the same instant updates as feeds you own, and if you have read/write access to the shared feeds, you’ll be able to send data to them from dashboards you create.
Shared feeds are listed at the bottom on the “Select Feeds” screen of the block editor.
Please stop by the forums or our channel on the Adafruit Discord server and show us what you’re making or to reach out if you have any questions!
-
Adafruit IoT Monthly: Adafruit IO Updates, RGB Stream Deck Message Panel, and more
Adafruit IOT Updates
Adafruit IO Update: New User Interface!
We’ve updated the Adafruit IO user interface to match recent changes on the Adafruit website and the Adafruit Learning System. Here’s a shortlist of changes:
- New User Interface!
- Reorganized menus
- Quick links to access your data faster
- New footer - the footer from adafruit.com was moved over. The new footer includes links to API documentation, forums, and the support page.
This is a pretty big update to the IO user interface, one that we hope makes it quicker to get around and easier to find what you’re looking for. Please stop by our channel on the Adafruit Discord server and reach out if you have any questions!
Read the full changelog with screenshots!.
New IoT LoRaWAN Hardware: The Things Indoor Gateway!
Meet the affordable 8 Channel LoRa gateway from TTN, The Things Indoor Gateway! Simple name for a straight-to-the point product. It’s the new low cost, indoor multi-channel LoRaWAN gateway designed by The Things Network, so you know it will work perfectly with TTN. Make a free account, plug it in, follow the easy step-by-step installation instructions and you’ve got yourself a LoRaWAN to Internet gateway in under 5 minutes. No setup or usage fees.
Visit the product page to learn more.
New IoT Hardware: M5Stick-C Pico
Jam-packed with a Wi-Fi & Bluetooth powered ESP32, USB interface, Li-Poly battery and charge circuitry, 0.96” color TFT display, various sensors (IR transmitter, microphone, 6-DoF IMU sensor) all integrated inside, buttons, and more! You can plug Grove sensors into one end, or use the 0.1” header sockets on the other, to connect additional sensors or actuators. It’s perfect for making ultra-small IoT projects or wearables.
Visit the product page to learn more…
IoT Projects
Stream Deck controlled RGB Message Panel using Adafruit IO
Easily display status messages with a Stream Deck and an RGB Matrix Panel.
This project uses a custom Stream Deck plugin to communicate directly with the Adafruit IO REST API. It works by posting a specific value to a feed and each button will post a different value to the feed allowing you to easily change messages.
Read the guide on the Adafruit Learning System here.
PyPortal Daily UV Index Display
UV is what gives you vitamin D and a tan… and a sunburn… and, well, skin cancer. It’s a case of a little being ok but too much being pretty bad. Like bacon. You can now check the UV index at a glance on your PyPortal.
Read the guide on the Adafruit Learning System here.
PyPortal IoT Plant Monitor with Google Cloud IoT Core and CircuitPython
Turn your black thumb into a green thumb by building an internet-enabled plant monitoring system by combining Google Cloud IoT Core with CircuitPython.
Read the guide on the Adafruit Learning System here.
Consumers Should Immediately - a live feed of recalled product info on a boot
Named “Consumers Should Immediately…“, it displays a live data feed from The United States Consumer Product Safety Commission (USCPSC) to randomly display thousands of products recalled for reasons such as fire, electrocution, entrapment, choking and a variety of other unintended dangers. - ExtraSleepy.com.
3D Printed LoRA Remote
Via back7.co:
This is meant to be a simple remote control for LoRa-based robotics projects. It runs CircuitPython
Live Train Station Departure Sign for your Desk
Build your own UK train station platform departure display (next train indicator) with live data using a Raspberry Pi Zero, OLED display and 3D printed case - a cool (and practical!) desktop gadget - balena.io
Around the Internet - IoT News & Links
Ludzinc has been building a IoT Garage Door Opener since 2013, and blogged about Easier ESP development (learn from their four years of frustration). It’s an incredibly comprehensive post discussing everything from websockets to selecting proper hardware.
The OpenHAK is an open-source fitness tracker which can count your steps and measure your heart rate. Step counting is done by a Bosch BMI160, and the heart rate sensing is done with a Maxim MAX30101. The whole thing is driven and built around a Simblee BLE radio module.
Officially build an Alexa Gadget with your Raspberry Pi to control a RGB LED - Alexa on GitHub
Pwavrobot is building a dual esp32 feather-format board, just for fun.
Icarus, a new IoT Board with the latest nRF91 integrates GPS and Cellular (LTE-M, MB-IoT) - Actinius
The Next Wave of IoT Bluetooth devices might not have batteries thanks to Bluetooth 5 and Energy Harvesting - EETimes
What is Adafruit IO?
Adafruit.io has over 14,000+ active users in the last 30 days and over 830+ Adafruit IO Plus subscribers. Sign up for Adafruit IO (for free!) by clicking this link.
Ready to upgrade? Click here to read more about Adafruit IO+, our subscription-based service. We don’t have investors and we’re not going to sell your data. When you sign up for Adafruit IO+, you’re supporting the same Adafruit Industries whose hardware and software you already know and love. You help make sure we’re not going anywhere by letting us know we’re on the right track.
-
Adafruit IO Update: New User Interface! @adafruitio #IoT
We have updated the Adafruit IO user interface to take advantage of recent changes to https://www.adafruit.com and https://learn.adafruit.com along with a batch of internal changes that improve the size of initial code downloaded when you visit the site–total script size was reduced by about 15%–and speed up the initial page load when you visit a page on https://io.adafruit.com.
The biggest change you’ll notice is a reorganization of our menus. The old menu from the left hand side of the screen is now split between a new header (top of page) with Adafruit-styled “flyout” menus linking to your pages within the site and a footer (bottom of page) with links to information about Adafruit IO.
The header includes links to other Adafruit sites and to other pages in io.adafruit.com.
Click on a menu heading, like “Profile”, to show links to the rest of your data on Adafruit IO.
Quick links to your data
The new Feeds, Dashboards, and Triggers menus also include quick links to your most recently updated feeds, dashboards, and triggers.
Footer quotes!
Finally, we’ve brought the footer from Adafruit over. It sits at the bottom of every page and is where you can find links to our support page, quick guides, API documentation, and the feedback form.
This is a pretty big update to the IO user interface, one that we hope makes it quicker to get around and easier to find what you’re looking for. Please stop by the forums or our channel on the Adafruit Discord server and reach out if you have any questions!
-
Adafruit IOT Monthly: MQTT Comes to CircuitPython, an Interactive IoT Airplane Sculpture and more!
Adafruit IOT Updates
MQTT comes to CircuitPython!
So, you have a CircuitPython project and want to connect it to the internet? You may want to consider adding MQTT to your project. MQTT is an extremely popular and lightweight protocol which can connect your project to the internet and quickly process network events. We’ve built a robust MQTT module for CircuitPython called CircuitPython MiniMQTT to quickly get you started connecting your projects to the internet and sending data around. Learn all about using MQTT with CircuitPython in on the Adafruit Learning System Guide here!
Adafruit IO CircuitPython Library UPDATE: MQTT!
The Adafruit IO CircuitPython library has been updated with a new IO_MQTT class for accessing Adafruit IO’s MQTT Broker. We’ve included helpful methods for simplifying interactions with Adafruit IO over MQTT. Download the latest version of the Adafruit IO CircuitPython Library in the CircuitPython Bundle here and check out some examples which make use of the new MQTT class here.
New IoT Hardware: 8-Channel LoRa Gateway HAT with LoRa and GPS Antenna
This LoRa HAT from RAK Wireless is capable of multi-channel, multi-node communication, all running in a non-intimidating, hackable Raspberry Pi environment. Unlike our basic LoRa gateway bonnet, this chipset can support all 8 channels, so it can handle multiple clients, on different LoRa channels, without having to do any code tweaks. Visit the product page fo the LoRa Gateway HAT here! Once you have your Internet-to-LoRa gateway set up with this kit, make LoRa nodes using our Feather line for easy deployment of sensor networks that run on battery power. We have guides about setting up LoRaWAN nodes using either Arduino OR CircuitPython on the Adafruit Learning System here.
#ComingSoon IoT Hardware: Circuit Playground Express BlueFruit
We are testing the Circuit Playground Express BlueFruit, check out the coming soon photos. We went to Washington Square Park at night to test how far we could change the colors of the NeoPixels on the CPX Bluefruit and we’re going to need a bigger park to test in maybe 🙂
Watch us test the CPX BlueFruit here!!
IoT Projects
Interactive Airplane Sculpture, beautiful and internet connected
“The Imagination Machine” has been my main focus for a little over 9 months. I’m thrilled to see it in such a grand space. As you may read in the articles, it tracks the ISS using the NASA open API + Adafruit.io + IFTTT. It keeps time using the RTC. It also has some other codes onboard that I’m developing that will use more of NASA’s API (tracking near earth orbit asteroids, etc.) I had always intended for the piece to make a connection from country to country as well. At the moment, I’m currently on an artist residency in Dresden, Germany. It’s ongoing exploration includes allowing my new friends here in Germany to say “Hello” to the sculpture in Ohio from my phone. Using using the Adafruit.io and my phone, they can trigger a special light show that connects two different cultures located an ocean apart - Adafruit Blog
Issue 21 HackSpace magazine: Air quality monitor
The new HackSpace Magazine Issue 20 highlights an air quality monitor build using a Raspberry Pi 4 and air quality sensor. The project is programmed in Python 3 with the Adafruit Adafruit IO data service (free at io.adafruit.com) holding data and providing status - Adafruit Blog
Analog Smart Shelf
Jake P. on HackADay.io is building “A sleek and minimalist wall-mounted shelf with hidden wireless charger and customizable wooden display”. Unlike most smart-assistants, it’s designed to be unobtrusive - HackADay.io
Tweeting with CircuitPython
This guide shows how to use the Twitter API to get tweets from a specific user (but there’s a lot more you can do with it). As a concrete example, it will be used to regularly fetch the the latest tweet from @codewisdom, a feed that tweets quotes from the software industry. We’ll take those tweets and display them on a PyPortal - Adafruit Learning System
Using WoTT to manage your Adafruit IO feeds!
Web of Trusted Things (WoTT) published an guide about using Adafruit IO with their WoTT Secure Agent, an open-source solution designed to manage your credentials (such as your static Adafruit IO username/active key pair) - Web of Trusted Things
Working on an IoT Project? Tell us about it!
Are you working on a project which uses Adafruit IO or Adafruit products?? Add the #adafruitio or #adafruitiot hashtags to your tweets, join our Discord channel (http://adafru.it/discord, #help-with-adafruit-io), or join the SHOW-AND-TELL every Wednesday night at 7:30pm ET on Google+ Hangouts.
Around the Internet - IoT News and Shortlinks
Rick Merritt reports LoRa and NB-IoT could claim 86% of all Low-Power-Wide-Area-Networks (LPWAN) by 20203, that’s not too far away!
The TTGo T-Call is a $15 ESP32 Breakout with an onboard Cellular Modem
Sonoff Homekit is a bridgeless (no Raspberry Pi required!) HomeKit Setup.
Hacking a LOHAS LED Smart Bulb
ludzinc is building an internet-enabled garage door opener.
View the weather report on a PyPortal and log detailed information about it to an Initial State Dashboard.
If you’re new (or slightly experienced) with MQTT - Ably.io took a deep-dive into MQTT’s internals.
FabLabEU built a GPS Mapper to map coverage of The Things Network.
Isaac Wellish built a an internet-connected PyPortal Trivia Time game.
Remotely display the status of a ThingsNetwork node over MQTT with this MQTT Remote Display.
Soothe a six-month old with a remotely-controlled MP3 sound machine.
Monitor your home’s energy with an ESP32 and (semi-safe) CT-sensors.
vikkey321 on GitHub built a Not-so-dumb smoke detector with Google Assistant integration
What is Adafruit IO?
Adafruit.io has over 14,000+ active users in the last 30 days and over 750+ Adafruit IO Plus subscribers. Sign up for Adafruit IO (for free!) by clicking this link. Ready to upgrade? Click here to read more about Adafruit IO+, our subscription-based service. We don’t have investors and we’re not going to sell your data. When you sign up for Adafruit IO+, you’re supporting the same Adafruit Industries whose hardware and software you already know and love. You help make sure we’re not going anywhere by letting us know we’re on the right track.
-
Adafruit IOT Monthly: Mid-Century Modern Weather Station, Raspberry Pi 4 and more!
Adafruit IO Update
Adafruit IO’s Zapier Integration in the Zapier App Directory!
The Adafruit IO Zapier integration is officially listed in the Zapier Application Directory! Have a zap you’d like to connect with Adafruit IO? Head over to the Zapier application directory and search for Adafruit IO! - Read the announcement here!
NEW IoT Hardware: Adafruit AirLift Shield - ESP32 WiFi Co-Processor
Our new AirLift Shield connects your Arduino-compatible project to the Internet! It’s easy to use the Adafruit AirLift breakout with CircuitPython and the Adafruit CircuitPython ESP32SPI module, or Arduino and the WiFiNINA library. If you have a favorite Arduino or Arduino-compatible like the Metro M4 or Metro 328p - installing this shield is a snap.
Ready to add WiFi to your Arduino project? Head over to the product page for the AirLift Shield.
NEW IoT Hardware: Raspberry Pi 4 Model B - 1GB/2GB/4GB RAM
The Raspberry Pi 4 Model B is the newest Raspberry Pi computer made, and the Pi Foundation knows you can always make a good thing better! And what could make the Pi 4 better than the 3? How about a faster processor, USB 3.0 ports, and updated Gigabit Ethernet chip with PoE capability? Good guess - that’s exactly what they did! The Raspberry Pi 4 is the latest product in the Raspberry Pi range, boasting an updated 64-bit quad core processor running at 1.5GHz with built-in metal heatsink, USB 3 ports, dual-band 2.4GHz and 5GHz wireless LAN, faster Gigabit Ethernet, and PoE capability via a separate PoE HAT.
IoT Projects
Mid-Century Modern Weather Gauge
Frustrated that modern indoor weather displays didn’t fit a mid-century aesthetic, Andy Allen retrofit a clock with a custom-face and motorized gauges to display weather pulled from the internet using a Particle Photon. This is an impressive build and an aesthetically pleasing piece of IoT hardware - PowerfulMojo Blog
Using Particle Photon with Adafruit IO
Maker.IO published a new guide and video for using Adafruit IO with the Particle Photon board. This is a detailed guide and uses the latest Adafruit IO Arduino library for Particle. - DigiKey
Connecting an Arduino Uno WiFi Rev2 to Adafruit IO
Do you have an Arduino WiFi Rev2? If so, we have good news! The latest Adafruit IO Arduino library is compatible with the Arduino WiFi Rev2. WoolseyWorkshop’s blog posted an in-depth tutorial about connecting this board to the outside world. - WoolseyWorkshop
Smarter Window Fans
Granpino built a smart-window fan to keep their room cool. It automatically turns on when the outdoor temperature is cooler than the inside temperature. - Hackster.io
ESPBoy brings WiFi to gaming platforms
RomanS’ HackADayPrize 2019 entry is the ESPBoy, an open-source ESP8266-based gaming platform with wireless internet. hackaday.io
Working on an Adafruit IO Project? Tell us about it!
Are you working on a project which uses Adafruit IO? Add the #adafruitio hashtag to your tweets, join our Discord channel (http://adafru.it/discord, #help-with-adafruit-io), or join the SHOW-AND-TELL every Wednesday night at 7:30pm ET on Google+ Hangouts.
Around the Internet - IoT News and Shortlinks
@kiwibryn is using a Raspberry Pi LoRa field gateway as a method of interfacing NetDuino and Arduino devices to Adafruit IO. STEM education with IOT! - Twitter
Max Holiday is sending caliper measurements to a spreadsheet with CircuitPython and a SAM32 developer board. - Twitter
@300lines on twitter is enjoying the many MQTT abstractions provided by the Adafruit IO Arduino library - Twitter
Give your Raspberry Pi the gift of sight with TensorFlow 2.0 and computer vision. Low-cost object detection and classification is possible for around $100 Medium
What is Adafruit IO?
Adafruit.io has over 14,000+ active users in the last 30 days and over 750+ Adafruit IO Plus subscribers. Sign up for Adafruit IO (for free!) by clicking this link. Ready to upgrade? Click here to read more about Adafruit IO+, our subscription-based service. We don’t have investors and we’re not going to sell your data. When you sign up for Adafruit IO+, you’re supporting the same Adafruit Industries whose hardware and software you already know and love. You help make sure we’re not going anywhere by letting us know we’re on the right track.
-
Adafruit IOT Monthly: Azure IoT meets CircuitPython, build an internet-connected wearable love pendant, and more!
Adafruit IO Update
Adafruit IO on Awesome Lists
Adafruit IO has made its way into the Awesome List! Awesome provides lists about all kinds of interesting topics, and Adafruit IO is now a part of to the Awesome master list!
AirLift FeatherWing – ESP32 WiFi Co-Processor
Our new AirLift FeatherWing connects your Feather-based project to the Internet! It’s easy to use the Adafruit AirLift breakout with CircuitPython and the Adafruit CircuitPython ESP32SPI module, or Arduino and the WiFiNINA library. If you have any feather-compatible board, adding a FeatherWing is a snap! Check out the learning system guide for this board to learn more…
M5Stack Basic Core IoT Development Kit - ESP32 Dev Board
The M5Stack Basic Development Kit is a ESP32-based WiFi microcontroller that’s compatible with MicroPython and Arduino. It comes jam-packed with WiFi / Bluetooth capability, running at 240 MHz with the dual-core processor and 4MB of SPI Flash. This kit is perfect for people who want to make advanced ESP32 projects with a display, user interface, speaker, and a couple buttons. It’s super easy to snap in other M5 blocks to add sensors, interfaces or cameras, no soldering required. Sounds like the right board for you? Pick one up from Adafruit!
GUIDE UPDATE: Welcome to Adafruit IO
We’ve updated our Welcome to Adafruit IO Guide to include information about Adafruit’s latest WiFi AirLift hardware and details about connecting your CircuitPython project to Adafruit IO. We’ve also added links to our new, hosted Adafruit IO MQTT and REST API documentation pages. Read the guide on the Adafruit Learning System here…
IoT Projects
Summer is coming, build an AQO (Air Quality Object) to notify you when the air around you is stale. The Air Quality Object changes color depending on air CO2 content. It’s meant to be a beautiful object which also passively displays information about the surroundings. It makes a normally invisible flow visible, so you can open a window when your air is getting stale - GitHub
In a long-distance relationship? Want to share your feelings with a loved one who is not physically close to you? Techiesms on YouTube has a 2-part video series about building an Internet-connected love pendant. The first part covers their motivation behind the project and the second video explains the technical side of the build - Youtube
Where is the International Space Station right now? Well, wherever it is, it won’t be there for long. The ISS is always on the move and doing so very quickly. Build an ISS Tracker using a PyPortal to display the current location of the ISS by following this guide - you’ll learn how to parse an API using a PyPortal. Read the learning guide on the Adafruit Learning System here…
Evaluating IoT cloud platforms can be difficult, and often requires buying separate hardware to connect with each platform. Avilmaru wrote a guide for using the Arduino MKR WiFi 1010 with both the Arduino IOT Cloud and our Adafruit IO service - Arduino Create
Keep forgetting to water your plants? Want to monitor the ambient temperature of your the room your plant is located in from across the world? In this guide, you will build an Internet-enabled plant monitoring display by combining Microsoft’s Azure IoT Hub and CircuitPython! Using Azure with your CircuitPython IoT projects allows you to rapidly prototype (and even mass-prototype) advanced Internet-of-Things devices and connect them to Microsoft Azure services - Read the guide on the Adafruit Learning System.
Working on an Adafruit IO Project? Tell us about it!
Are you working on a project which uses Adafruit IO? Add the #adafruitio hashtag to your tweets, join our Discord channel (http://adafru.it/discord, #help-with-adafruit-io), or join the SHOW-AND-TELL every Wednesday night at 7:30pm ET on Google+ Hangouts.
Around the Internet - IoT News and Shortlinks
Espressif announced a new ESP32! It’s an ESP32-S2 with USB support and 40 GPIOs along with capacitive touch IOs and peripheral support. It does drop a core, running a Xtensa single-core 32-bit LX7 microcontroller instead of a dual-core LX6 like the ESP32. - Espressif Blog
Improving the safety of the food you eat with IoT - EETimes
Reverse engineering a not-so-secure IoT Device - MCUOneEclipse The IoT cult classic
Little Printer is back with a new app, webhooks, open-source software and more! - nordprojects
Azure IoT CircuitPython module released; do more advanced projects with CircuitPython - GitHub Bill Schweber wonders Whatever Happened to the Hardware On-Off switches? - EETimes
What is Adafruit.IO?
Want to make your project talk to the Internet? Connect your existing project to the Internet to log, stream, and interact with the data it produces? What about all this Internet-of-Things (IoT) stuff?
Adafruit IO is a platform designed (by us!) to display, respond, and interact with your project’s data. We also keep your data private (data feeds are private by default) and secure (we will never sell or give this data away to another company) for you. It’s the internet of things - for everyone! Adafruit.io has over 14,000+ active users in the last 30 days and over 750+ Adafruit IO Plus subscribers. Sign up for Adafruit IO (for free!) by clicking this link.
Ready to upgrade? Click here to read more about Adafruit IO+, our subscription-based service. We don’t have investors and we’re not going to sell your data. When you sign up for Adafruit IO+, you’re supporting the same Adafruit Industries whose hardware and software you already know and love. You help make sure we’re not going anywhere by letting us know we’re on the right track.
-
Adafruit IO on Awesome Lists, a curated list of awesome Adafruit IO guides, hardware, guides, videos, libraries, frameworks, and resources. #AdafruitIO #Awesome @AdafruitIO
The newest list in Awesome List is the Adafruit IO Awesome List! Awesome provides lists about all kinds of interesting topics, and Adafruit IO is now a part of to the Awesome master list!
What is the Adafruit IO Awesome list?
A curated list of awesome Adafruit IO guides, hardware, guides, videos, libraries, frameworks, and resources.
You can find the Adafruit IO Awesome List here on the Adafruit GitHub repository here.
-
Adafruit IOT Monthly - May 2019
AIO Update: Features, Stats, and More!
IO Stats
Adafruit.io has over 15,000+ active users in the last 30 days and over 700+ Adafruit IO Plus subscribers. Sign up for Adafruit IO (for free!) by clicking this link.
Ready to upgrade? Click here to read more about Adafruit IO+, our subscription-based service. We don’t have investors and we’re not going to sell your data. When you sign up for Adafruit IO+, you’re supporting the same Adafruit Industries whose hardware and software you already know and love. You help make sure we’re not going anywhere by letting us know we’re on the right track.
Adafruit IO on Reddit
Adafruit IO now has a dedicated subreddit! Subscribe over at /r/AdafruitIO to add the latest Adafruit IO news to your Reddit Front Page.
Awesome Adafruit IO
Awesome Adafruit IO is a curated list of awesome Adafruit IO guides, videos, libraries, frameworks, software and resources. Inspired by the Awesome lists. It will be updated by the team & community - we’re looking for contributors!
Stop by and check it out awesome-circuitpython and keep reading!
Adafruit IO Plus Plan Upgrades Are Here!
One of the most consistent requests we’ve had since we launched IO Plus (IO+) was for a way to raise the IO+ account limits even further.
Library Update: Adafruit IO Arduino
If you have a shiny new piece of Adafruit WiFi AirLift hardware and want to use it with Arduino - you’re in luck! The Adafruit IO Arduino library has been updated to v3.1.0, including an update for using AirLift boards (such as the PyPortal or Metro M4 WiFi Lite) or breakouts.
Grab the new release from the Arduino Library Manager or download it from the Adafruit GitHub.
New IOT Hardware from Adafruit
Adafruit’s new WiFi boards have arrived. Both of these boards come with AirLift - our witty name for the ESP32 co-processor - and are compatible with both Arduino and CircuitPython. All AirLift boards can also connect to Adafruit IO.
Adafruit AirLift – ESP32 WiFi Co-Processor Breakout Board
Give your plain ol’ microcontroller project a lift with the Adafruit AirLift - a breakout board that lets you use the powerful ESP32 as a WiFi co-processor. You probably have your favorite microcontroller (like the ATmega328 or ATSAMD51), awesome peripherals and lots of libraries. But it doesn’t have WiFi built in! So lets give that chip a best friend, the ESP32. This chip can handle all the heavy lifting of connecting to a WiFi network and transferring data from a site, even if it’s using the latest TLS/SSL encryption (it has the needed root certificates pre-burned in). This breakout includes a crypto chip, too!
Want to pick one up? Visit the Adafruit Store!
Adafruit Metro M4 Express AirLift (WiFi) - Lite
Give your next project a lift with AirLift - our witty name for the ESP32 co-processor that graces this Metro M4. You already know about the Adafruit Metro M4 featuring the Microchip ATSAMD51, with it’s 120MHz Cortex M4 with floating point support. With a train-load of FLASH and RAM, your code will be fast and roomy. And what better way to improve it than to add wireless? Now cooked in directly on board, you get a certified WiFi module that can handle all your TLS and socket needs, it even has root certificates pre-loaded. Since this is a lite version of the AirLift module, it has a 8MB flash and no crpyto chip.
Want to pick one up? Visit the Adafruit Store!
Powered by Adafruit IO: Projects from the Community
Low Cost Internet Enabled Voltage and Current Logger
Smart HDMI Switcher with Adafruit IO and IFTT
Adafruit IO Raspberry Pi Cloud Camera Tutorial
Mini IOT Display with PushBullet Notifications
Working on an Adafruit IO Project? Tell us about it!
Are you working on a project which uses Adafruit IO? Add the #adafruitio hashtag to your tweets, join our Discord channel (http://adafru.it/discord, #help-with-adafruit-io), or join the SHOW-AND-TELL every Wednesday night at 7:30pm ET on Google+ Hangouts.
New Adafruit Learning System Guides
Have you heard about making, cosplay and electronics, but don’t know where to start? Visit the Adafruit Learning System for over 1700 tutorials for electronics projects, ideas and techniques! We’ve selected a few of our favorite internet-of-things-based guides from the learning system:
ePaper FeatherWing Quote Display
Build this quote display using the Adafruit HUZZAH32 (ESP32) Feather and ePaper FeatherWing. Add a LiPo battery and you have a portable quote display.
Data Logging IOT Weight Scale
How many grams of coffee did I add to my pour-over? Is the bag of cat food empty? Did I remember to water the plant? What’s the weight of these screws in my workshop? To answer these questions (and more), you’re going to build an internet-enabled scale to track weight data over a period of time.
PyPortal Tides Viewer
Surfs up! Or is it? This guide will show how you can use an Adafruit PyPortal smart display to easily fetch tide information from the Internet and display it.
PyPortal Philips Hue Controller
In this Learn Guide, you’ll be building a touchscreen lighting controller with an Adafruit PyPortal to control a light, or groups of lights, connected to a Philips Hue bridge.
PyPortal Weather Station
Harness the power of nature with your PyPortal by building an internet-connected Weather Station!
Adafruit IO Basics: AirLift
If you want to the best way of bringing your project online - combine Adafruit IO and AirLift! Our ESP32-based AirLift boards and breakouts are the newest way to connect your project to Adafruit IO, our internet-of-things service for everyone!
Multi-Sensor IoT Environmental Sensor Box With CircuitPython
This guide will walk you through making an environmental monitoring device with GPS, Temperature, Humidity, Barometric Pressure, and Air Quality sensors, all updating to the cloud. Once build, this project takes readings occasionally and sends them to Adafruit IO, stamped with time and location. All that is required is an AC outlet and a WiFi network.
Around the Internet
- Top LoRA add-on boards and SBCs (our RFM9x LoRa Bonnet is included!)
- TinyML - IOT Machine Learning for Microprocessors
- When you move: what to do with your smart devices
- Building an army of ESP32 Air Quality Sensors
- Brooklyn 5G Summit Wrap-up - Industries, Standards, and Machine Learning
- “What wireless standard should be used with my project?” - a comprehensive overview of selecting an IOT standard for your project, factoring in selection criteria such as range, content, data range, and translation of 3 dimensional space to radio space.
- Particle IOT @ Adafruit, a video Interview with Zach Supalla & Ladyada
- Brewing Eisbock Beer with Raspberry Pi and Windows IOT
- ESP RFID - An Open Source Access Control system framework using a cheap MFRC522, PN532 RFID, RDM6300 readers or Wiegand RFID readers and Espressif’s ESP8266 Microcontroller. Perfect if you’re managing a lab or maker space.
- FindyBot3000: An organizer for all your tiny electronics parts and boards with voice control.
- IOT Remote Light Switch
- Build Plant Observatory Using Azure IOT and Node.js
-
Adafruit IO Plus Plan Upgrades Are Here!
One of the most consistent requests we’ve had since we launched IO Plus (IO+) was for a way to raise the IO+ account limits even further. We’re happy to announce that with an Adafruit IO+ subscription, you can now add data rate and storage time limit upgrades!
The single biggest thing we do to make sure that Adafruit IO is available for as many people as possible 24 hours a day, 365 days a year is rate limiting the messages that pass through the system. For IO Free accounts, the rate limit is 30 messages per minute, or about 1 every 2 seconds. For IO+, we double the available data rate to 60 messages per minute, or about 1 per second. That’s double the data rate for everyone using IO+, but still a hard cap on usage.
The new IO+ subscription upgrades are:
- Data Rate can be boosted in 10 points per minute increments for $2 per month or $24 per year.
- Data Storage can be boosted in 30 day increments for $5 per month or $60 per year.
So if you want to double your data rate again from 60 to 120, that would be 6x Data Rate Boost @ $12 per month or $144 per year. If you wanted to double your data storage length from 60 days to 120 days that would be 2x Data Storage Boost @ $10 per month or $120 per year.
You can upgrade or cancel upgrades at any point during your subscription billing cycle, but you will have to pay the full amount for the remaining time on your billing cycle when you activate an upgrade. For example, if you’re subscribed on the IO+ monthly plan and add a 10x Data Rate Boost ($20 per month) halfway through your billing cycle, you’ll be charged about $10 for the time remaining in the current cycle and $30 ($10 for IO+ plus $20 for 10x Data Rate Boost) on your next monthly bill.
You can start the process by clicking “Change your IO+ plan” on your account billing page.
The prorated amounts are calculated when you add a subscription upgrade and you’ll have a chance to preview your new monthly bill before activating it.
This is our first experiment with a new kind of subscription upgrade for IO+, please stop by the forums or our channel on the Adafruit Discord server and reach out if you have any questions!
-
Adafruit IoT Monthly - April 2019
Welcome to the Adafruit IoT Monthly for the month of April. This newsletter (in blog form) highlights projects and updates about Adafruit IO – our Internet-of-Things Service for makers, news, stories, and advances in the world of IoT.
Adafruit IO News: Features, Stats, and Updates
IO News highlights what’s new on Adafruit IO, our internet-of-things service for makers.
IO Stats
Adafruit.io has over 15,760+ active users in the last 30 days and over 500+ Adafruit IO Plus subscribers. Sign up for Adafruit IO (for free!) by clicking this link. Ready to upgrade? Click here to read more about Adafruit IO+, our subscription-based service. We don’t have investors and we’re not going to sell your data. When you sign up for Adafruit IO+ you’re supporting the same Adafruit Industries whose hardware and software you already know and love. You help make sure we’re not going anywhere by letting us know we’re on the right track.
Sneak Peek: New Adafruit IO API Docs!
https://www.youtube.com/watch?v=DZOPQXRH9RI&feature=youtu.be
While our current API documentation works, we’ve been brainstorming ideas to make it better and easier-to-use. Here’s a small list of the features we’re planning on adding: * Easy to Contribute to: While our pre-existing API is public on GitHub, it is not the easiest to contribute to (the v2 HTTP API sits at just over 4000 lines of JSON). The new documentation will be easier to contribute to - it’s all in everyone’s favorite formatting syntax - Markdown! * You can access Adafruit IO’s API over either MQTT or HTTP - we’re adding dedicated documentation pages for both the MQTT and the HTTP APIs. * Writing some code and not sure how to get the last known data value of your feed? Don’t want to read through lines of example code - just need the code? We’ll be including code-snippets for CuRL, Arduino CPP, Python, CircuitPython, and Ruby.
Adafruit IO’s Zapier Integration is now in Early Access!
The Adafruit IO Zapier integration is now a public Zapier integration (currently in early-access)! While we’ve made a lot of Adafruit IO projects which use Zapier, people would need to enter a special “invite” URL as we did not have enough people actively using the service and Adafruit IO together. As of today, the “invite” URL is replaced by an official Zapier integrations URL and landing page - https://zapier.com/apps/adafruit-io/integrations.
All The Internet of Things Episode 4, Adafruit IO
https://www.youtube.com/watch?v=yRqazWCtSgI Want to learn more about Adafruit IO? We’ve released an episode of All The Internet of Things episode featuring Adafruit IO.
Hello, and welcome to episode 4 of Adafruit and Digi-Key’s “All the Internet of Things”! A six-part series that covers everything you need to know about IoT. In the previous episode, we discussed services –services are what you use to route events to and from your IoT devices, coordinate real-time communication between multiple devices, and record, process and visualize the data that your “things” are producing. We also talked about some large cloud services such as Amazon AWS IoT, Google Cloud IoT, and Microsoft Azure IoT Suite. You might find that although these services provide robust security and sophisticated deployment tools, getting started with using their comprehensive technology is intimidating. If only there were some IoT service that proved easy to understand and implement…maybe with high quality documentation with examples, learning guides, and community support…and, maybe just maybe, an IoT service that provided opens source solutions with a low to no-cost point of entry… Well, on today’s episode, we’re happy to do a formal introduction to just that – our very own Adafruit IO!
We have an interactive learn guide here with accompanying clips and text from the video!
Powered by Adafruit IO: Projects from the Community
Each month, we select our favorite projects from around the internet which use Adafruit IO. Here are some of our favorites:
Monitor Your Garage Door with #FeatherHuzzah #AdafruitIO and a Pi Zero W
There are lots of garage door monitor projects on hackster.io and other Maker sites. Many are single-purpose solutions. I wanted a project that would be extensible, to build on the skills learned for future IOT projects. In fact, I already had a project in mind, a general notification platform called the Kinetic Courier. That project could include a garage door monitor as an example notification trigger. Also, I wanted a platform that was well-documented and well-supported. Adafruit’s cloud service for Makers, adafruit.io, fit the requirements. In addition, I was motivated by personal need. My nice neighbors had, once too often, called late at night to remind me the garage door was open 😉
IOT Office Door Sign using PyPortal
Blood Glucose on a PyPortal
Google Assistant Based Home Appliance Control using ESP32 and Adafruit IO
If you have a home appliance which you want control over the internet and don’t want to shell out the cost of a smart-plug – this tutorial may be the right choice. Using an ESP32 module, a relay module and Adafruit IO – you can control any AC home appliance over the internet. This tutorial walks you through the process of wiring the ESP32, setting up Adafruit IO, and creating a dashboard. But, instead of flipping a digital switch – what about controlling the lights using your voice? The guide also walks through the process of connecting to Google Assistant using IFTTT (a supported Adafruit IO Integration) and sending voice commands to the light switch.
Adafruit IO-Powered PowerPoint Slide Controller
James Bulpin “was looking for a really simple solution to bounce messages via the cloud without all the complexity of a full IoT hub solution” and discovered Adafruit IO. He quickly built a mobile PowerPoint slide controller. If you’re not counting his phone’s web browser displaying an Adafruit IO dashboard, it uses no extra electronics. Instead, he’s running a .NET MQTT client on the same computer to send events to Microsoft Powerpoint. To send data to his computer, he built a drag-and-drop dashboard on Adafruit IO to interact with MQTT feeds.
Meeting forecast? Glance at this CircuitPython-Powered PyPortal!
Ronhiltz got his PyPortal up and running – but what to display on the 3.2″ 320 x 240 color TFT internet-connected display? Ron converted a picture of his office into a BMP, created a feed on Adafruit IO, and is using a PyPortal to show how their office is meeting forecast. Great work! With the PyPortal and the CircuitPython Adafruit IO library – it’s never been easier or quicker to create an Internet-connected project!
Sending Data to the Cloud – ESP8266 Arduino Tutorial, Part 3
Alexander has been writing a large ESP8266 tutorial series on HackADay.io about the versatile ESP8266. In the third installation of his guide, he walks through the process of sending data from sensors connected to an ESP to an REST API – Adafruit IO.
Read more… Are you working on a project which uses Adafruit IO and want to show it off? Add the #adafruitio hashtag to your tweets, join our Discord channel (http://adafru.it/discord, #help-with-adafruit-io), or join the SHOW-AND-TELL every Wednesday night at 7:30pm ET on Google+ Hangouts.
New Adafruit Learning System Guides
Have you heard about making, cosplay and electronics, but don’t know where to start? Visit the Adafruit Learning System for over 1500 tutorials for electronics projects, ideas and techniques! We’ve selected a few of our favorite internet-of-things-based guides from the learning system:
IoT Motion and Temperature Logger with the Analog Devices ADXL343 + ADT7410 Sensor FeatherWing and Adafruit IO
If you’re looking to for a way to monitor and send precise motion and temperature data to the cloud, check out this new guide. Analog Devices, known for their reliable and well-documented sensor chips – has a high precision and high resolution temperature sensor – the ADT710 – and a triple-axis accelerometer – the ADT7410. We made a FeatherWing to make these sensors easier to use together. Even better? We can easily bring the FeatherWing online using a Feather ESP8266 HUZZAH and Adafruit IO.
PyPortal Email Display with Zapier and Adafruit IO
Want to write a message to your PyPortal’s display? Perhaps you’d like to easily add and change text on your PyPortal’s display to use it as a smart sticky-note, or have people email it directly! Using Zapier, you will set up a Zap to receive email via a custom Zapier email address at zapiermail.com and forward it to an Adafruit IO Feed. With some CircuitPython Code, your PyPortal will be obtaining the current value of an Adafruit IO Feed and updating the display with the email sender address and the subject line.
NEW GUIDE: PyPortal Bitcoin Display
Keep up to date on the current value of Bitcoin or your total wallet value with the PyPortal Bitcoin Display! The simple version of this project will display the current value of Bitcoin in one of three currencies — USD, Euros, or GBP. The slightly more complex version uses a text transform to present the total value of your Bitcoin wallet based upon the current Bitcoin value and number of coins owned. All made in CircuitPython running on the PyPortal accessing the Coindesk API wirelessly!
Read more… Join us in the forum or on Discord in the help-with-adafruit-io channel with questions, comments, or suggestions. We’d love to hear from you!
-
Adafruit IO Sneak Peek: New Adafruit IO API Docs! #API #HTTP #MQTT @adafruitio
[](https://www.youtube.com/watch?v=DZOPQXRH9RI&feature=youtu.be)
The Adafruit IO team is in the middle of building out a shiny new API documentation website. While updating a website for documentation doesn’t sound exciting - we have a feeling you’ll like what’s coming soon. While our current API documentation is functional, we’ve been brainstorming ideas to make it better and easier-to-use.
Here’s a small list of the features we’re planning on adding: * Easy to Contribute to: While our pre-existing API is public on GitHub, it is not the easiest to contribute to (the v2 HTTP API sits at just over 4000 lines of JSON). The new documentation will be easier to contribute to - it’s all in everyone’s favorite formatting syntax - Markdown! * You can access Adafruit IO’s API over either MQTT or HTTP - we’re adding dedicated documentation pages for both the MQTT and the HTTP APIs. * Writing some code and not sure how to get the last known data value of your feed? Don’t want to read through lines of example code - just need the code? We’ll be including code-snippets for CuRL, Arduino CPP, Python, CircuitPython, and Ruby.
Are you excited for the next version of the Adafruit IO API Documentation? Have features or suggestions to propose? Post up on the forum topic for this here or leave a comment below!
Join us in the forum or on Discord in the adafruit-io channel with questions, comments, or suggestions. We’d love to hear from you!
-
Adafruit IO Update: New Line Chart and Gauge Rendering
Hello Adafruit IO community!
In order to reduce the amount of Javascript we send to your browser every time you visit Adafruit IO and in order to fix an annoying memory leak bug, we’ve replaced the rendering engines for the gauge and line charts you see on your Adafruit IO dashboards and feed pages. They’re low-level updates to the Adafruit IO website you all use. For the most part the changes should be invisible, but we wanted to at least mention it in case they take you by surprise.
The question you may have, then, is why fix what isn’t (obviously) broken? I’m glad you asked! We made this update for two big reasons and one small one.
First, we’ve known for a loooong time that we have a big memory leak problem with line charts. If you’ve tried to keep a dashboard open with a line chart for more than a day, you might have noticed that you eventually came back to a frozen browser tab. If you’re unlucky, you might’ve found a crashed browser. :( Even after long hours of debugging in multiple browsers, tracing live code, and rewriting parts of the chart rendering pipeline, it’s still not clear where the problem was. It could’ve been the library we were using–an SVG based renderer–or code we wrote on top of it, but we were pushing some part of the system beyond what it could handle. By replacing the old SVG based system with a canvas based charting library we eliminate the type of memory leak we were encountering. The bonus with choosing a charting library with more options for chart types is that we’ll soon be able to introduce those to you on the dashboards. Look for that in the next few months.
Second, our old gauges and line charts used a lot of code behind the scenes–the immensely powerful d3 library–to do just a little bit of work. We have intentionally kept our charts simple and clean, visually, but we included ~200 extra KB of uncompressed javascript code to do it. By replacing the gauge with a much smaller, hand built canvas-based plugin and line charts with a simpler library (even though it’s still powerful), we cut that code out of the bundle we have to ship to your browser. We’re sending 800KB+ of compressed/gziped, too much in our opinion, but we’re working on it :D
Small changes that hopefully produce benefits long into the future.
Let us know if our updates aren’t working for you or are otherwise affecting your quality of life. Join us in the forum or on Discord in the adafruit-io channel with questions, comments, or suggestions. We’d love to hear from you!
-
Adafruit IO New Feature: Interactive Dashboard Guide @adafruitio #IoT
If you’ve logged into our internet of things service - Adafruit IO - recently, you may have noticed a new question mark icon on your dashboards.
Click this button to launch an interactive dashboard guide.
You’ll add a block
Connect a feed
Edit the block
Make the dashboard look just right, and then save your work once everything looks the way you want it to
To get started, click the blue question mark icon on an existing Adafruit IO dashboard.
Don’t have an Adafruit IO account? You can link your Adafruit IO username - and signing up is free.
-
Adafruit IO Internals: Pagination
Attempting to access the data points on your Adafruit IO feed and only receiving 1000 data points back? kevinljxljx on the Adafruit IO Forum was running into the same issue:
I am trying to use the data from adafruit.io with my project, but no matter what I try, adafruit.io only gives 1000 data points to my javascript program. ( I am using XMLHttpRequest). I tried to set limit to 2000 but without luck. ( I have 1200 or so data points under my feed). Is the maximum data points I can get is 1000? or am I missing something?
Adafruit IO’s API only returns 1000 data points at a time. To get the rest of the data (if your feed is over 1000 data points), you’ll need to “paginate” the data.
What does this mean?
When you perform a data query, the results are always sorted newest-to-oldest and include *x-pagination-** headers. For example:
X-Pagination-Limit: 1000 X-Pagination-Total: 84548 X-Pagination-Start: 2019-02-11T22:52:18.103+0000 X-Pagination-End: 2019-02-12T16:03:00.694+0000 X-Pagination-Count: 1000
Limit (
X-Pagination-Limit
) is either the requested limit or 1000, whichever is less; Total (X-Pagination-Total
) is the total number of data points in the feed. Note, this value may be up to 5 minutes behind real time.Start (
X-Pagination-Start
) is the timestamp on the oldest value; End (X-Pagination-End
) is the timestamp on the newest value; and Count (X-Pagination-Count
) is the number of data points in the current request.Whenever Limit and Count are both 1000 and Total is more than 1000, that’s evidence that more data is available.
You can get the next 1000 data points by using the
X-Pagination-Start
value OR thecreated_at
value of the oldest data point in the API response as the end_time parameter in your next request to the data API.When visualized on a timeline, the concept of pagination looks like this:
Note that long running, frequently updated feeds could have more than a hundred “pages” of data. If you make requests without a delay in between, you could hit a rate limit. To avoid this, watch for 429 HTTP error responses and handle them in code by adding a 30 second timeout between requests.
Regarding the data storage and feed history, storage size in this instance is the per-data point value size limit.
With history on, meaning we preserve every data point, each data point value can be at most 1KB. With history off, meaning we only preserve the most recent data point, each value can be at most 100KB.
Post originally written by AdamB on the Adafruit IO Forum, read the entire thread here…
-
Adafruit IO Update: Quick Help
Need help getting started with Adafruit IO? Not sure what feeds are? Need a place to ask questions, but there are too many links on the internet? The Adafruit IO Team has added a new help menu directly into Adafruit IO with mini-guides designed to help you through any questions you could have about Adafruit IO, such as… How do I get started with Python? Follow the new Getting Started with Adafruit IO Python mini-guide…
or “What is metadata, and how does it relate to my Adafruit IO Project?”
Still have more questions? Having an issue with your code? We’ve also added links to our Discord Chatroom and the Adafruit IO Forum to the Quick Help menu - no googling necessary!
To check it out, log into Adafruit IO (if you don’t have an account, create one - it’s free!) and click the Get Help button on the sidebar.
Want to see anything else added to the Quick Help box? Let us know in the comments below!
-
adafruit.io – ” super easy, just works, no fuss, super fast to get a device online…” @hackaday @adafruit #iot #cloud
Hackaday posted up about a beta for a new cloud service, which at this time requires Arduino-only hardware: MKR1000 or MKR WiFi 1010. There’s a “passionate” debate in the comments about this direction, & the MKR1000 is “non-commercial” etc… more choices, the better, it’s a great time to make things and do IoT projects… Anyway, we saw a really nice mini-review of our adafruit.io service that can be used with any device…
“I gave adafruit IO a try recently – super easy, just works, no fuss, super fast to get a device online, compatible with generic devices, open standards and protocols such as MQTT, working example code – nothing locked-in or proprietary.” - Luke.
That’s why we made adafruit.io - We play nice with any device. The internet of things for everyone. The easiest way to stream, log, and interact with your data. We have, and will always have, a free version which can be used by any hardware, and we have a plus version for folks who want to run a biz and more on it, also - any hardware. In the last 30 days there are 12,459 makers, hackers, artists, and engineers, making something on adafruit.io - try it out today!
Tons of guides to get you started with the Internet of Things - learn.adafruit.com
Adafruit IO ToS: No spam, no mining your personal data, easy to read and understand terms of service/use, etc.
Want to export the Data from your account ASAP? It’s your data.
An Internet of Things Bill of Rights - Adafruit.
Adafruit’s blog of all the projects, resources, and community projects, tagged with #adafruitio & the adafruit.io changelog’ blog’
Join us on Discord for the adafruit.io channel!
Built from the ground up to be easy to use. We do the hard work so you can focus on the fun stuff. Powerful API The same API that drives our user interface is available to you. We provide documentation so you can build a library in your favorite language to talk to IO, or use one of ours. It’s Your Data The data you store with IO is yours to manage and control. You can download it all anytime and we will never sell or give it away to another company. We feel strongly enough about this that we put it in our IoT Bill of Rights. Beautiful Dashboards Data won’t help you make better decisions or understand the world you’re living in unless you can see it. Charts, graphs, gauges, logging, and more are availble from anywhere in our carefully designed web-based dashboards. Private & Secure We won’t share your account information with anyone without your permission and everything you store on Adafruit IO is private by default, whether you’re a paying customer or not. Documentation We’ve written a lot more about Adafruit IO than just our web API. Teaching is at the heart of Adafruit, and our Learning Systemhas all the projects and guides you need to get started or to level up! Triggers Keep yourself and your systems up to date by automatically responding to changes. Triggers monitor your data to notify you when your temperature sensor gets too hot or when your DIY security system goes offline. Hardware We have been building Internet of Things devices and kits since long before Adafruit IO ever existed. Start your project with the right equipment or pick up the one last thing you need to finish. We’ve got hardware for all types of makers. Amazing Community We Love Makers! Join us on the forums, on our Discord chat server, stop by the weekly Show and Tell live stream to share your project, and subscribe to our YouTube channel to see what we’re up to.
-
Adafruit IoT Monthly - February 2019
Welcome to the Adafruit IOT Monthly for the cold month of February (anyone out there making an internet-enabled hot-cocoa machine?). This newsletter (in blog form) highlights projects and updates about Adafruit IO – our Internet-of-Things Service for makers, news, stories, and advances in the world of IoT.
Adafruit IO News: Features and Updates
IO News highlights what’s new on Adafruit IO, our internet-of-things service for makers. There’s been some new updates to the platform since we’ve blogged an IoT Monthly.
New Feature: Feed Webhooks
For Adafruit IO, webhooks are unique URLs that you can use to send data to your feeds from anywhere on the internet, without having to share you IO API secret keys. They’re kind of like one-off API endpoints that you can manage separately from your security credentials and feed privacy. There have long been requests for “shared write access” to feeds, which can be done using the feed sharing feature already built into IO, but that requires everyone sending data to have an Adafruit IO account and use their credentials to send data. That, unfortunately, limits you from, for example, creating a simple web form to publish data directly to a feed.
Read more about this feature on the Adafruit IO Development Blog
Library Update: Adafruit IO Python
We’ve renamed the Python library for Adafruit IO to reflect the naming scheme for our other library - Adafruit IO Arduino. So, IO Client Python is now known as Adafruit IO Python. The IO Team has recently added a few services to Adafruit IO - Dark Sky for weather forecasting and a random data service to create random colors, words, numbers. Until now, you haven’t been able to use these services with the Adafruit IO Python library.
Powered by Adafruit IO: Projects from the Community
Each month, we select our favorite projects from around the internet which use Adafruit IO. Here are some of our favorites:
How to Automate your Home with Adafruit IO
https://www.youtube.com/watch?v=JHmK6N-dhvM MakerIO published a new video on home automation using Adafruit IO. For the sake of simplicity, Robin uses two Huzzah boards to create a ping-pong application between the two of them. One board houses a button, which changes the state of the other board’s LED based on the first button. This simple example can be applied to home automation – one board could be used to control the lights in your home, the garage door, or anything wired up to a relay.
Are you working on a project which uses Adafruit IO and want to show it off? Add the #adafruitio hashtag to your tweets, join our Discord channel (http://adafru.it/discord), or join the SHOW-AND-TELL every Wednesday night at 7:30pm ET on Google+ Hangouts.
New Adafruit Learning System Guides
Have you heard about making, cosplay and electronics, but don’t know where to start? Visit the Adafruit Learning System for over 1500 tutorials for electronics projects, ideas and techniques! We’ve selected two, internet-of-things-based guides from the learning system:
LoRa/LoRaWAN Weather Logging Network
Want to build your own network? This new guide uses the Adafruit LoRa radio bonnet with OLED and two Feathers with BME280 sensors to build a Weather Monitoring Network.
Adding a WiFi Co-Processor to CircuitPython
This guide will show you how to connect your CircuitPython board to the Internet by using an ESP8266 or ESP32 as the ‘Wireless modem’ – we’ll even show you how to upload the required AT command firmware to the chip, all from your CircuitPython board
See this guide today - there’s even an example for posting to Adafruit IO!
#IOTuesday: IOT News and Projects from around the ‘net
We publish the latest and most interesting IoT news and projects from around the `net every Tuesday. Here’s some of our favorite recent stories.
The SweRV RISC-V Core from Western Digital
Western Digital announced at the RISC-V Summit three new open-source innovations designed to support Western Digital’s internal RISC-V development efforts and those of the growing RISC-V ecosystem. In his keynote address, Western Digital’s Chief Technology Officer Martin Fink unveiled plans to release a new open source RISC-V core, an open standard initiative for cache coherent memory over a network and an open source RISC-V instruction set simulator.
TWIST is DIY Tweeting Weather Station
Ever wanted to monitor your city’s Current Weather Conditions, Carbon Footprint, Noise and Pollution levels? Do you want be a Climate Change Crusader or set-up your own Tweeting Weather Station and share your local weather conditions with the world? Meet Tweeting Weather IoT Station aka TWIST – a DIY, Open-Source Environmental Monitoring and Meteorological Data Acquisition Platform.
IoT Camera Mover
In making videos for my projects I have often wanted to get a smooth shot of a part, such as a pan of an Arduino Nano. I have seen about 3 projects where people made devices that could pan a camera, but they were either not internet-connected or they were very expensive. So I set out to improve them.
The Internet of Unprofitable Things (never hardcode what you don’t own into an IoT device)
Andy posts on The Ongoing Struggle a story that anyone developing an electronic product but especially an Internet of Things (IoT) product should heed. The subtitle is the NTPmare shortly after Christmas.
How to control a device with a Kronaby smartwatch with IFTTT
Via Mike Diamond on What I Made Today, a look at a special breed of watch that incorporates the characteristics of a regular watch (digital or analog), with select functions of the Smart Watch.
The hybrid smartwatch that caught my attention was the small Swedish company, Kronaby. They specialize in beautifully-designed analog (hybrid) smart watches that radiate prestige, while quietly synchronizing with your phone. They offer multiple functions – applied through their simple, easy-to-use and equally well-designed app. This post is for general interest, but may be most useful to the Kronaby owner who wants to know what their IFTTT function is, and how to use it with their watch.
Let us know how you’re using IO or IO+ on the forums or in our Discord chat room.
-
New Feature! Feed Webhooks
New Feature: Feed Webhooks
What’s a webhook? According to Wikipedia:
A webhook in web development is a method of augmenting or altering the behaviour of a web page, or web application, with custom callbacks. These callbacks may be maintained, modified, and managed by third-party users and developers who may not necessarily be affiliated with the originating website or application.
For Adafruit IO, webhooks are unique URLs that you can use to send data to your feeds from anywhere on the internet, without having to share you IO API secret keys. They’re kind of like one-off API endpoints that you can manage separately from your security credentials and feed privacy.
There have long been requests for “shared write access” to feeds, which can be done using the feed sharing feature already built into IO, but that requires everyone sending data to have an Adafruit IO account and use their credentials to send data. That, unfortunately, limits you from, for example, creating a simple web form to publish data directly to a feed.
There are a few use cases we’ve come up with so far, but we hope to be surprised with what the community can come up with. Here’s two things you can try.
One-off IFTTT Applets
First, other web services that can publish to Webhook URLs like IFTTT’s maker webhooks can be used to directly send data to a feed without entering Adafruit credentials or signing into your Adafruit IO account through IFTTT.
We already support IFTTT directly, but we can’t support every service that exists on the web. We can work with any service that knows how to send webhook-style requests, though :D
Public write-only connections to IO feeds
Second, webhook URLs can be used directly in simple HTML forms, to create a deploy-anywhere application that sends data directly to your feed. For example:
<form target="_blank" action="https://io.adafruit.com/api/v2/webhooks/feed/dQTc61soU5S4tMv8jSuSjY9uSqVz" method="post"> <label> Make a choice: <select name="value"> <option value="YES" selected>Yes</option> <option value="NO">No</option> </select> </label> <button type="submit">Save my vote!</button> </form>
And the actual form in action:
After clicking “Save my vote!” you should see a standard Adafruit IO data record on a new tab, which means your vote was recorded. If you see a “request failed - Throttle error” message instead, that’s because this particular webhook URL’s data rate limit of 3 events per minute has already been reached.
By setting a very low data rate for the webhook, I can share the URL publicly without risking my account, unlike sharing my Adafruit IO Keys. Even better, if the webhook ends up flooded with data, I can just delete it from my account to shut off the stream. And because webhook URLs are write-only, I don’t need to make the feed public.
Publicly controllable Christmas light displays? Crowd-sourced weather monitoring system? GitHub -> Discord -> Adafruit IO cross-posting webhook circle of fun? Let us know what you come up with. Join us in the forum or on Discord in the adafruit-io channel with questions, comments, or suggestions!
-
New Feature: External Service Integrations
Adafruit IO knows the weather!
Or, more accurately, Dark Sky knows the weather and now Adafruit IO knows how to pass it on.
But wait, there’s more!
Adafruit IO ❤️’s Services
We’re excited to introduce you to Adafruit IO’s new “External Service Integration” feature. Also known as “Service Integrations”, also known as “Services”. You can find a link to the new Services page in the navigation sidebar.
The first thing you may notice if you’ve used If This Then That (IFTTT) with Adafruit IO is that we moved that service over to the new Services page.
We’ve also started building out a Zapier integration–currently in private beta–so if you prefer Zapier to IFTTT or you’d just like to keep your options open, you’ll find that on the services homepage also.
But the star of the show is the new Dark Sky-powered weather service.
Weather Data in Adafruit IO
We have wanted to add weather data to Adafruit IO for a long time, and even made an attempt more than two years ago. The biggest issues we faced are that: 1) free weather data services are inconsistent or have very low API limits and 2) even paid weather services often don’t include interesting weather data.
With Dark Sky, we were able to overcome the second problem, but the first still puts some limits on the service we’re able to offer. This means that at launch the weather service is also our first IO Plus exclusive feature.
When you create a new weather location, you have direct access to Dark Sky’s Developer API data through Adafruit IO with some minor limits. Specifically, we’re passing sending a subset of all available forecast data (~4KB of JSON) instead of all available forecast data (~30KB of JSON), and limiting MQTT subscriptions to just one type of data at a time. For example: just the current weather, 5 minute forecast, or 1 day forecast rather than all current and forecasted data with every update.
The Weather API is available via HTTP GET requests or MQTT subscriptions from any authenticated device. IO Plus subscribers can find full documentation for the weather service on the weather service home page.
This is just the first iteration of the Weather API and we’re very interested in hearing your feedback. If you’re an Adafruit IO Plus subscriber, give it a try and let us know what you think.
Random Data Service
Also available now, and to all Adafruit IO accounts, is our brand new Random Data Service! We’ve picked a few types of data (randomly, ha!) to generate and built the system in a way that allows separate Adafruit IO accounts to receive the same data based on the seed value used.
Once every minute, MQTT subscribers get a brand new, hand-crafted (kind of), guaranteed random value. You could build a pair of one time password devices, a color-cycling sculpture, a nonsense Tweeting robot, a dice roller / coin flipper / choose your own adventure pilot…? We don’t know! We just built the thing and hoping that you’ll find an interesting use for it.
We wrote a Ruby library to go along with it for generating word and color values and we’re 100% open to pull requests (celebrate Hacktoberfest with us!) or feature requests if you have an idea for new kinds of data that can be randomly generated.
We’re Just Getting Started
We’re going to be spending a lot of our time in the coming year connecting new services directly to Adafruit IO and improving our existing Triggers system. Keep checking back and please feel encouraged to get in touch with us on the Adafruit IO forum with any questions, concerns, or bug reports.
-
Dashboard Updates: Indicator and Icon Blocks, Drag-and-Drop Images
We’re excited to tell you about two new blocks we’ve added to Adafruit IO dashboards this week to help you build richer interfaces. Icons and Indicators, two features that have been requested a lot in the last few years.
Icon
Icon blocks take a feed value and display the appropriate icon, when the feed value is a string selected from the collection shown here.
You can use Icon blocks as live changeable visual displays by sending different values to the feed, as in the example above, or as permanent labels to improve the display of your data. Drop a text block next to an icon block on your dashboard and drop some icons into the text block to see how they look.
Indicator
Indicator blocks let you pick an
ON
color and anOFF
color and then describe which state the Indicator block should be in based on conditions you set. The block compares the selected feed’s current value to the given conditions and chooses a color accordingly.You can use one condition or as many as you like. Conditions, by default, use Javascript’s
parseFloat
function to attempt to convert the feed’s current value and the condition values to a number for comparison. If either value, the feed or the string, can’t be converted to a number (isNaN(f_value) === true
), then the condition is compared string-to-string.For example, I could create an indicator for a temperature sensor that stays in the
ON
state as long as the value is between 70 and 78.In Javascript, those conditions would be evaluated like this:
function compare(feed_value) { return feed_value >= 70 && feed_value <= 78; }
Or I could create an indicator that turns on whenever my feed matches a particular value.
In this case, the code equivalent would be:
function compare(feed_value) { return feed_value === "ALPHA" || feed_value === "BETA" || feed_value === "GAMMA" || feed_value === "BONANZA"; }
We don’t do any checking on your conditions to make sure they’re logically consistent. The conditions editor will happily let you enter impossible conditions (for example
< 2 and > 2
or= 1 and = 0
), so make sure to do your own testing before creating the block.You may notice in the block editor screenshot above that we’ve given you access the “Test Value” that’s used in the block preview. That should help in testing your conditional logic to make sure the indicator turns on and off at the times you are expecting. Set your conditions and play with the value to see when they trigger. No data is sent to IO when you change the test value, so it’s safe to play with settings on any block.
BONUS! Drag and drop for image blocks
It’s now possible to drag and drop images onto any Image dashboard block to automatically publish the properly formatted Base64 image data string to your feed.
There are some important things to keep in mind when using this feature. Normal feeds are limited to 1KB of data, or about 1024 bytes, for publishing. Turning off feed history from the feed settings page allows publishing up to 100KB, or 102400 bytes, of data. Image conversion from binary to Base64 happens inside the browser, with no image pre-compression, and more importantly, conversion from binary to Base64 expands the size of the image data.
You’ll have to do your own testing to figure out what an appropriate image size and format (png, gif, or bmp) for you are. For example, the .png image used for testing below has an on disk size of 68089 bytes, but a Base64 value of 90788 bytes, an expansion factor of about 150%, which is really close to the limit.
test image
test publishing in block editor
One funny artifact of the drag and drop feature is that IO doesn’t actually care if you’re using the block to publish image data. Any file that can be converted into Base64 (which is any file) can be dropped onto an image block and sent to MQTT subscribers.
Let us know what you’re making!
Join us in the Adafruit IO forum or on Discord in the adafruit-io channel with questions, comments, or suggestions. We love seeing what you all come up with when we add new features to Adafruit IO!
-
New Feature Launch: Feed Sharing
New Feature Launch: Feed Sharing!
You’ve always been able to make your feeds completely public or completely private. Private feeds are hidden from the outside world, no other user can see them and no one browsing Adafruit IO can stumble across them. Public feeds are available as a read-only data source to anyone in the world. Until now, though, there hasn’t been a way to receive data from other Adafruit IO users in your feeds and no way to share your data with just one person.
Feed sharing introduces the ability to share a particular feed with a particular user as a read-only or read-write feed. This means you can keep a feed “private” as far as the whole world is concerned, but allow another Adafruit IO account to send data to it and read data from it.
There are a few new features we had to add to Adafruit IO to make sharing directly with other users possible. Here’s a quick guide to sharing and how to find your way around the new parts of Adafruit IO.
Sharing a feed
Step 1 is to invite another account to share your feed. You can do that from any existing feed page using the new “Sharing” form.
When you invite an account, the person you invite will receive a brief notification email and see the invitation on their shares page. If you share to an email address and they haven’t signed up yet, the person you shared with will have the chance to create a new Adafruit IO account.
If you share with an existing Adafruit IO user via the email address on their Adafruit account or their Adafruit IO username, they’ll be able to review and approve your invitation immediately. After you’ve shared, the user you’re sharing with will get an email:
And a link to the sharing invitation review page:
The sharing page
This is the hub for all your sharing information. Right now you’ll see listings for feeds you are sharing with other Adafruit IO users, and feeds other Adafruit IO users are sharing with you. If you’re blocking any users from inviting you to share with you, you’ll see those accounts listed on this page too.
As we add sharing features to Adafruit IO, this will be where they show up first.
Sharing feed writes
Since you’re able to share feeds as read/write data streams with other registered Adafruit IO users, data rate limiting has to come into the picture. For this new feature, all data rate usage comes from the publishing user. That means when you share your feed with another user and they publish data to it, your data rate usage will remain unchanged while theirs will be affected.
Related MQTT changes
In order to support in-browser MQTT subscriptions to other users’ shared, non-public feeds, we’ve made changes to the output of our
*/json
MQTT topics. Because these topics aren’t used in any of our libraries and aren’t highlighted in our guides, this change will have very little impact on existing MQTT subscribers. Less than 0.4% of MQTT subscriptions will be affected.Before, the output of a subscription to
test_username/feeds/feed-a/json
looked like this:{ "username": "test_username", "owner": { "id": 1, "username": "test_username" }, "id": 4, "name": "Feed B", "description": null, "history": true, "unit_type": null, "unit_symbol": null, "last_value": "-23.908", "visibility": "private", "license": null, "created_at": "2018-05-21T20:52:17Z", "updated_at": "2018-07-26T18:38:00Z", "status_notify": false, "status_timeout": 60, "enabled": true, "key": "feed-b", "groups": [ { "id": 1, "key": "default", "name": "Default", "user_id": 1 } ] }
That’s the same JSON record you would get if you used the HTTP API to retrieve
/api/v2/test_username/feeds/feed-b
, which is helpful if you want information about the feed, but kind of unhelpful if you actually want the new feed data record that prompted the MQTT message.After the launch of feed sharing, the same MQTT subscription output looks like this:
{ "last_value": "-23.908", "updated_at": "2018-07-26 18:38:00 UTC", "key": "feed-b", "data": { "created_at": "2018-07-26T18:38:00.560Z", "value": "-23.908", "location": [ 39.4194156246497, -76.69504058954743, null ], "id": "0DY1QDB7K3VN8YDCYCAD538Z5Q" } }
Because of the always-on nature of the MQTT API and the difficulty of changing topics all at once on client devices, we include the legacy
last_value
field in the new JSON output. If you have a client using*/json
MQTT topic subscriptions, you should update fromjson.last_value
tojson.data.value
to access your feed’s data. After a few months of this new MQTT JSON output format, we will deprecate thelast_value
field and remove it from the MQTT API.Social web services and your safety and security
Because Adafruit IO is an open web service, we don’t review every single feed sharing invitation before it’s sent. In order to prevent repetitive unwelcome sharing invitations from anyone, we will always give you the ability to: ignore individual invites, block a user from being able to invite you to share, or unsubscribe from all sharing invitation emails.
When you ignore an invite, it will be cleared from your sharing page and the user who invited you won’t be able to invite you to that feed again, but they will be able to invite you to share any other feed they own.
When you block a user, they will no longer be able to share any feeds with you at all. Users will never be explicitly informed that you have blocked them, but they may be able to infer it if they can’t share anything with you. Sharing blocks are permanent until and unless you remove them.
Choosing to unsubscribe from sharing invitation emails will keep your inbox clean, so you’ll have to visit your sharing page to see if you have any new sharing invitations.
Adding a social layer to Adafruit IO has always been part of our plan, but we’ll never make your shares public. If you keep every feed and do all your sharing through direct user-to-user feed sharing, your public Adafruit IO page will still exist but remain empty. We believe that your information should be private by default.
While we do not require moderator approval for social activity on Adafruit IO, we do monitor use of the platform. If we believe a feature is being abused for any reason, we continue to reserve the right to disable the feature or limit your use of Adafruit IO. We care about building the best Internet of Things platform for makers and part of that is making sure that it continues to be a safe space for everyone who uses it.
Guides are coming!
We’ll be adding more information to the Adafruit IO welcome guide with most of this information and we’re always checking the Adafruit IO forums, so if you have any questions about feed sharing please stop by and ask.
This is the first iteration of a pretty new feature for us and we’re excited to see how people use it! Join us in the forum or on Discord in the adafruit-io channel with questions, comments, or suggestions.
-
IO Updates - Python Client and Arduino Client
Hello Adafruit IO Community,
We have a lot to talk about this week. We’ve been focusing development on our Arduino and Python Adafruit IO client libaries in the last couple of weeks and we’re ready to share information about them.
Adafruit IO Python Library
We’ve officialy released version 2.0.0 of the Adafruit IO Python Client Library. This is a major update which not only adds a lot of under-the-hood enhancements, but also a bunch of new requested features. We’re going to support versions =>2.0.0 of this library going forwards. We’ve also switched this library over to Python 3, support for Python 2 has officially been dropped.
Notable Features
-
API-V2 Support: Adafruit IO Python now uses the Adafruit IO REST API v2
-
Location Support: Sending Adafruit IO Feeds locational values is now possible from this library (
lat
/lon
/ele
). Usage example for this feature,location.py
, added in examples/basics. (#48) -
MQTT Security: The MQTT Client now establishes a secure connection with Adafruit IO by default. (#45)
-
You can unset this by defining a
secure=false
boolean in the client initialization:client = MQTTClient(username, key, secure=False)
-
Time Topic Subscriptions:** Want to get the current time, date, or year? We added support for time/seconds, time/milliseconds and time/ISO-8601 topic subscriptions. Usage example for this feature,
time_topics.py
added in examples/basics. (#54)
-
-
MQTT Error Handling: We added a few verbose error checks for when the
mqtt_client.py
encounters an error. This means error messages will be easier to understand, and your programs will be easier to troubleshoot as a result. (#44) -
New Documentation: We gave the documentation previously on the readme some t.l.c and a facelift. Documentation for this project is available on ReadTheDocs.
-
Examples: New examples have been added to /examples/basics, including some usage examples for Adafruit CircuitPython with the Raspberry Pi (more on this soon!)
Breaking Changes
-
Python 2 support has been discontinued. We are only supporting Python Version >=3.6.
-
Adafruit IO REST API v1 support has been discontinued. We are only supporting the API v2.
-
MQTT
on_message
method no longer requires theretain
flag.
We actively maintain, develop and improve this library with the support of the community. If you’d like to see an ehancement or feature to this libary, let us know by filing an issue on the GitHub repository for the IO Python Client.
Adafruit IO Arduino Library
We’ve also been working on the Adafruit IO Arduino Library.
Features and Notes
-
ESP32 Compatability: We’ve added compatabilty for the Feather HUZZAH32 (and other ESP32-based-boards) to this library.
-
New Documentation: Just like the Python library, the Arduino Library now has a dedicated documentation page on ReadTheDocs
-
Time Topic Subscriptions: Don’t have any available pins to use a RTC? Just poll the Adafruit IO Server’s time feeds instead.
- Adafruit_IO_Arduino client library updated to support three types of time helpers:
time/seconds
,time/milliseconds
, andtime/ISO-8601
. - Example for subscribing to all three of the feed subscriptions added to
examples/adafruitio_17_time_subscribe/adafruitio_17_time_subscribe.ino
- Adafruit_IO_Arduino client library updated to support three types of time helpers:
Get in touch with us on the Adafruit IO forums or ping @adam.io or @brentru on the Adafruit Discord, #adafruit-io channel if you have any questions.
-
-
IO Updates - Dashboard Improvements and New Ruby Client
Hello IO community!
In IO news this week: a few updates to IO dashboards and a final development push to bring our Ruby IO client library up to date with version 2 of the Adafruit IO API.
Dashboard Updates
We’ve made two changes to line charts on IO dashboards in the last couple weeks, one that will be visible and one behind the scenes.
First, we’ve replaced the fixed legend in all line charts with one that follows your mouse cursor while you’re hovering over the chart. We think it’s a better way to show the value and location on the timeline of the data point or points you’re focusing on, and we also happen to like the style :D. You can see the new “hover legend” on all your dashboard charts now.
The second, less visible change involves memory usage on long-lived IO dashboards. We’ve known for a while that we have a problem with dashboards + line charts + browsers crashing after a few hours of live streaming data, and it stinks.
The cause is a memory leak and we haven’t solved it 100%, but we’ve improved the situation. We’re continuing to research performance and memory usage issues with dashboards. It’s difficult to balance user friendliness, beautiful interactive web interfaces, responsive soft-real time data rendering, and long lived pages. We’re going to keep improving and we hope you’ll keep joining us on the journey.
Ruby IO Library
We’ve officially released version 2.0.0 of the Adafruit io-client-ruby library. This version has been a long time coming and is the first client library we’ve released supports all the major endpoints for version 2 of our HTTP API. The library now also includes support for MQTT connections.
We’re continuing work on our other libraries–including Arduino, Python, Javascript, and Go–and we welcome community contributions. All our client libraries are open source and available freely for use in your projects.
Get in touch with us on the Adafruit IO forums or ping @adam.io on Discord if you have any questions.
-
IO Updates - Yearly Billing and MQTT get
Hello IO community! Over the last few weeks we’ve released some changes to Adafruit IO that should be useful to everyone using the platform.
IO+ Yearly Billing
We’ve added the option to pay for IO+ on an annual basis at a reduced rate of $99 per year. So instead of paying $10 each month–$120 total for a year of service–you can pay $99 once and get the same year of IO+ features.
If you’re already an IO+ subscriber (thanks for your support!) and you want to switch, you can change to yearly billing on your profile page when you’re logged in to Adafruit IO. We’ve also added an Adafruit IO+ 1 Year Subscription Pass to the Adafruit shop, so you can buy one for yourself and gift a subscription to a friend!
MQTT /get and the case of the missing retain flag
MQTT is a tremendously useful protocol for building small connected devices and is relatively simple to understand and implement (if implementing networking protocols is your thing). Unfortunately, a few features of the Adafruit IO platform make it difficult for us to support the entire MQTT 3.1+ protocol specification in our broker. I’m going to talk briefly about one particular feature: the publish
retain
flag.In the MQTT protocol, setting the
retain
flag on a published message asks the MQTT broker (server) to store that message. Then any new clients which connect and subscribe to that topic will immediately receive the retained message. Retain makes writing basic MQTT-only Internet of Things clients easier, without it, a client that connects and subscribes to a feed topic has to wait until a new value is published on the feed to know what state it should be in. In the case of slowly updated feeds, there could be hours between updates which means a device that disconnects and reconnects (for example, due to power cycling or sleeping) might lose the current value for a long time between updates.Among other factors, our scale, our mix of MQTT & HTTP APIs, the speed at which we’re taking in new data, and the fact that we’re already storing almost every message that is sent mean that a “simple” feature like
retain
becomes difficult to support without making MQTT service performance worse for everyone.Since we don’t actually store data in the broker but at a lower level and can’t support
PUBLISH retain
directly, we’re proposing a different solution for the retaining problem: the/get
topic modifier.The way it works is that for any given Adafruit IO MQTT feed topic (groups coming soon), subscribe to the feed topic, then add
/get
to the topic and publish anything to that new topic (our Arduino library uses the null character:'\0'
) . IO will immediately publish, just for that client, the most recent value received on the feed.For example, if I have a Feather HUZZAH subscribed to a counter feed:
abachman/f/counter
, and I want to get the latest value when I connect, I could publish toabachman/f/counter/get
and immediately receive a message onabachman/f/counter
with the last value that feed received.The feature is live on Adafruit IO and in version 2.7.3 of the Adafruit IO Arduino library which was released today. If you’re already using the library, you can add
/get
support to your project in one line of code.// ... from the adafruitio_01_subscribe example sketch AdafruitIO_Feed *counter = io.feed("counter"); void setup() { // 1. start IO connection io.connect(); // 2. prepare MQTT subscription with handler function counter->onMessage(handleMessage); // 3. wait for successful connection while(io.mqttStatus() < AIO_CONNECTED) { delay(500); } // 4. send /get message, requesting last value counter->get(); // ask Adafruit IO to resend the last value } // ....
You can see the
get()
function in action in the example sketches in the updated Adafruit IO Arduino library.Platform Upgrades
Early in the afternoon of April 18, we swapped out about 60% of the servers that are running IO and deployed an upgrade one of the primary software frameworks IO is built on (Ruby on Rails). Because framework upgrades are part of the boring, behind the scenes parts of software development and maintenance, you shouldn’t notice any change to IO except that data is processed about 4% faster on average. :D
No data in transit was lost, but there was a period of about 5 minutes of delayed MQTT data processing. A few early bugs were caught and fixed, so there may be some devices that were sending data successfully that failed for a brief time.
Get in touch with us on the Adafruit IO forums or ping @adam.io on Discord if you have any questions.
-
State of IO 03.21.18
Here are the stats for the past week:
* 97.8 million inserts of logged data in the last 7 days * 37,663 online feeds (140,620 feeds total)
We’re responding to issues you may run into on our Adafruit IO Forum. Please post any issues with as much detail as you can. It definitely helps us out when fixing the bugs.
Also, if you’re still using version 1 of our API, you may want to upgrade to the latest version 2. It has more features, and is generally better designed and easier to use than our previous API. The default for our docs is V2 now as well.
-
IO New Features - Feedback Forms and Public Pages
Hello everyone and happy Friday! It’s been a busy few weeks and there are a couple new features at Adafruit IO we’d like to mention.
First off, we’ve added a new feedback form directly into Adafruit IO, so you can inform us quickly about any trouble with the site or ask any questions about the Adafruit IO+ plan without having to go through the forums. We included a few options for feedback and while we will do our best to address any issues with the site or our client libraries quickly and directly via email, we aren’t able to respond to every feedback request. If you’re having trouble with your personal code or hardware projects, the Adafruit IO forum is still the best place to go for help.
You can find a link to the Feedback form at the bottom of the left hand sidebar on most pages.
Second, and something I’m personally excited about, we’re introducing public pages for every user. You can see mine here. There are a few pieces of Adafruit IO you can make visible to the public as read-only data. Right now that’s Dashboards and Feeds. With the public pages, we now have a one-stop location for listing everything you have shared so you can see what’s public and you can share the link with anyone who might be interested.
Our intention isn’t to make Adafruit IO yet-another-social-media platform, but we firmly believe that things can turn out better when we work together, so we try to make that easier when we can. Stop by the forums or our Discord chat server and talk about what you’re working on!
-
December 2017 Throttle Updates
December 2017 Throttle Updates
MQTT Group Publish Data Rate Correction
Hello IO friends!
We’ve found and corrected a problem with our data rate tracking system that was allowing MQTT group publish events to be counted as a single event for the purpose of data rate monitoring instead of tracking each feed as a separate event. This means publishing to a group with five feed values was counted as 1 data point, even though we were storing 5 data points.
The correction updates our MQTT broker to count a group message with 5 feeds as 5 data points against your accounts total available data rate.
Free Plan Changes in 2018
Speaking of IO+, IO Free, and permitted data rates: starting in January 2018 we will begin lowering the current allowed IO Free data rate from 60 points-per-minute to the advertised 30 points-per-minute. For the vast majority of people using Adafruit IO Free accounts, this shouldn’t be a problem, but we’ll be making the change gradually to avoid disabling a vast swathe of devices all at once.
Each week we’ll be dropping the data rate by 5 points-per minute until it’s down to 30. That’s plenty of useable bandwidth and storage for any of the Adafruit IO projects on the Adafruit Learning System.
Why so many data rate changes?
Our ultimate goal with data rate monitoring and limiting is to make sure we provide a good balance of data storage and response speed across the entire Adafruit IO platform for every user whether they have a free account or an IO+ account.
While IO+ has a higher data rate and more data storage, every message should still move through IO from publish to IO back out to subscribers at the same speed. By our measurements that speed is around 35ms on average for a round-trip from a device to IO and back out to a device. The way we keep that speed steady and available for everyone is making sure no account is able to take an unfair amount of it.
When we make changes like this that can feel restrictive, it’s to make sure resources are shared fairly. The good news is that over a longer amount of time, improving the efficiency of Adafruit IO means we’ll be able to give more away. So, some pain now for more good stuff in the future. If or when we can find a way to double the amount of data we can process at the same cost-per-user we’re at right now, we’re probably going double the data rate for everyone!
Just for comparison and since I was curious about the numbers, Adafruit IO Free provides a steady 30-data-points-per-second data rate which over 30 days comes out to 1296000 messages possible: 30 messages-per-minute * 60 minutes-in-an-hour * 24 hours-in-a-day * 30 days. To use a lower-level Internet of Things service provider as an example, in this case Amazon, you can achieve a much higher data rate (up to 100 messages-per-second per-client, 9000 per-second per-account), but for the same amount of data we provide for free you’d pay about $5 a month at their $5 per million messages price (retrieved December 2017). Your dashboards would also be way less pretty, but that’s another story :D
Stop by the Adafruit IO forum or the adafruit-io room on our Discord server if you have any questions or comments. We’d love to hear what you’re making with Adafruit IO!
-
Groups, Feeds, and Proper MQTT Topics
Groups, Feeds, and Proper MQTT Topics
We’re deploying a fix to a subtle bug in our MQTT subscription topics today and wanted to write a quick post describing the problem and the fix for people who might currently be using workarounds. MQTT subscription behavior is going to change slightly (for the better) in a way that may break existing systems.
Publishing to “composite” feed keys through our HTTP or MQTT APIs has worked since we introduced that feature with API version 2–that’s anything in the form of
group.feed
.You can see an example of those keys here:
But, due to the way our internal MQTT message routing system worked, subscribing to a composite key hasn’t worked until today. Publishing to a feed at
username/feeds/group_key.feed_key
only sent data to subscribers that used topics that looked likeusername/feeds/feed_key
. From this point in time forwards, however, data published tousername/feeds/group_key.feed_key
will always only be sent to subscribers tousername/feeds/group_key.feed_key
.We are considering this a bug fix, but it introduces some subtle effects for people who add feeds to multiple groups. Here are the three things you need to keep in mind with Adafruit IO and MQTT. The
MQTT Feed Subscription Data Routing
First and most critically, MQTT subscriptions to
username/feeds/feed_key
for all feeds that are not in your default group will stop working. Some users found that using the bare feed key worked for MQTT subscriptions, but it’s a workaround and not something we want to continue supporting now that we have a fix for it.Second, subscriptions to feeds that belong to multiple groups will only produce data that is published over MQTT to that group + feed combination. However, all data sent to that feed will still be shown on that feed on the Adafruit IO feed page and any dashboard blocks that use the feed, regardless of the group or groups it belongs to. A practical example of that would be a feed belonging to two groups.
For example, in the case of a group named “Signal” belonging to the “Garage” and “Office” groups, I would end up with something that looks like this on my feeds page:
“Signal” is a single Feed object, but shared between two different groups. If publish to one of those feed keys:
PUBLISH abachman/feeds/garage.signal "1"
Then only MQTT subscribers to
abachman/feeds/garage.signal
will see the value “1” come through. If I publish to both feed keys:PUBLISH abachman/feeds/garage.signal "1" PUBLISH abachman/feeds/office.signal "2" PUBLISH abachman/feeds/garage.signal "3" PUBLISH abachman/feeds/office.signal "4" ...
Then the
abachman/feeds/garage.signal
subscription will only see:SUBSCRIBE abachman/feeds/garage.signal >>> "1" >>> "3" ...
Likewise, group subscriptions will only see the messages published to that feed in the context of that group. So if instead of
abachman/feeds/garage.signal
I subscribed toabachman/groups/garage
I would see:SUBSCRIBE abachman/groups/garage >>> {"feeds":{"signal":"1"}} >>> {"feeds":{"signal":"3"}} ...
Over MQTT, feed subscriptions in the context of a given group will only produce messages that were published to that group + feed.
HTTP Feed Data Requests
Finally, all HTTP data queries for a given feed, regardless of the group context (
group.feed
key), will produce all data published to that feed. In the case of the example above, that means HTTP GET requests to/api/v2/abachman/feeds/garage.signal
and/api/v2/abachman/feeds/office.signal
will both produce the same data.$ export KEY='860b36ff6537fa01e9ee755be3ae18d4fake' $ export API_URL='https://io.adafruit.com/api/v2' $ curl -H "X-AIO-Key: $KEY" $API_URL/abachman/feeds/garage.signal/data.csv?limit=4 id,value,feed_id,feed_key,created_at,location,lat,lon,ele,created_epoch,expiration 0DQAZP2V6NZ37PA1662SG30R7G,4,30,garage.signal,2017-11-01 21:43:11 UTC,,,,,1509572591,2017-12-01T21:43:11Z 0DQAZP1ADTNFJ990QGSZ6HG9F4,3,30,garage.signal,2017-11-01 21:43:06 UTC,,,,,1509572586,2017-12-01T21:43:06Z 0DQAZNZSJJR9ZP5NSS1R6YV56Q,2,30,garage.signal,2017-11-01 21:43:01 UTC,,,,,1509572581,2017-12-01T21:43:01Z 0DQAZNY8VC0FS8KMA9TZWBV77Z,1,30,garage.signal,2017-11-01 21:42:56 UTC,,,,,1509572576,2017-12-01T21:42:56Z $ curl -H "X-AIO-Key: $KEY" $API_URL/abachman/feeds/office.signal/data.csv?limit=4 id,value,feed_id,feed_key,created_at,location,lat,lon,ele,created_epoch,expiration 0DQAZP2V6NZ37PA1662SG30R7G,4,30,office.signal,2017-11-01 21:43:11 UTC,,,,,1509572591,2017-12-01T21:43:11Z 0DQAZP1ADTNFJ990QGSZ6HG9F4,3,30,office.signal,2017-11-01 21:43:06 UTC,,,,,1509572586,2017-12-01T21:43:06Z 0DQAZNZSJJR9ZP5NSS1R6YV56Q,2,30,office.signal,2017-11-01 21:43:01 UTC,,,,,1509572581,2017-12-01T21:43:01Z 0DQAZNY8VC0FS8KMA9TZWBV77Z,1,30,office.signal,2017-11-01 21:42:56 UTC,,,,,1509572576,2017-12-01T21:42:56Z
This is because although the feed belongs to two different groups, it’s still the same underlying Feed record.
Receiving ALL Messages
If you need to see all data published to a specific Feed, you can use the raw feed
id
value. You can find the corresponding MQTT topic on the “Feed Information” form associated with the Feed you want to track.Alternatively, every user account has a global data feed at the MQTT topic
:username/dashboard/stream/create
where:username
is your account username. This topic produces a data record for every new data point stored:SUBSCRIBE abachman/dashboard/stream/create >>> { "id": "0DQBM1EPCDA0J6Z89CE1YC26D1", "value": "5", "feed_id": 30, "feed_key": "garage.signal", "created_at": "2017-11-02T16:41:32Z", "location": null, "lat": null, "lon": null, "ele": null, "created_epoch": 1509640892, "expiration": "2017-12-02T16:41:32Z" }
With Feeds + Groups, we’ve created a powerful tool for flexibly routing and storing messages over MQTT. A single feed can be used multiple ways by adding it to different groups, which can be helpful if you’re still using a feed-limited plan like IO Basic. IO Plus gives you an unlimited number of feeds, so reuse is less critical, but we expect the flexibility described to be useful in certain cases or else we wouldn’t have built it :D
I’ve published a short GitHub Gist that includes code demonstrating the topic described in this post, you can find that here: https://gist.github.com/abachman/a04694748ad887d5aa7e644e3292fa81.
Thank you for for joining us as we continue to extend and improve Adafruit IO. As always, stop by the Adafruit IO forum or our Discord server in the #adafruit-io room to share any questions or comments, especially when it comes to details of our MQTT support. We’d love to hear about what you’re building!
-
New MQTT topic for tracking connections
NEW FEATURE: Tracking MQTT Client Connections
New feature!
We’ve added a new MQTT topic at
:username/clients
(where:username
is replaced with your username) and a section on the IO Monitor page to track live MQTT client connections. We aren’t doing anything fancy with the data (yet!), so it’s “stateless” / streaming only for now.What you’ll see if you subscribe to the topic is a JSON object with the connection
status
, time of event (at
), and an object containing information about theclient
. At this moment it’s only the client’s self-reported MQTTid
. For example:// on connection {"status":"connected","at":"2017-10-24T16:08:38.552Z","client":{"id":"io-mqtt-39dc5a71"}} // on disconnectiohn {"status":"disconnected","at":"2017-10-24T16:08:40.691Z","client":{"id":"io-mqtt-39dc5a71"}}
We use that bit of data on your IO monitor page to show when clients are connecting and disconnecting in real time.
Using the /clients topic
We’re not yet storing detailed client connection state, we’re just reporting on it live. So how is this useful? The first and easiest way to use the topic is just to track clients as they connect and disconnect and catch funny business before you get throttled. The feed only shows authenticated client connections, so you won’t see failed attempts, but you will be able to track any hardware, software, or browser sessions as they connect and disconnect.
Since the only piece of identifying information that’s sent along with connection updates is the
id
, we can use that to record which specific clients is doing the [dis]connecting. Most MQTT clients generate a random identifier if one is not specified. So, by setting a custom client ID, we can pass some information through the system to see which device is acting up.For example, on my home environmental monitor, which is running on an Arduino MKR1000, I can use the Adafruit MQTT Library to manually specify the MQTT client ID I use. Using the
Adafruit_MQTT_Client
constructor that takes aclientid
argument, my code looks like this:Which shows up on my monitor page with the custom
clientid
value!Choosing a client ID value
Now, not just any client ID will do, there are a few guidelines:
- Stick with printable bytes, anything else won’t be helpful for tracking.
- Only the first 32 bytes of your clientid will be displayed, so keep the IDs at or under 32 bytes in length. The MQTT v3.1 spec requires that we allow at least 23, but lets us handle more. Internally IO can use more than 32 bytes to track clients, but only the first 32 will be published on the /clients topic.
- Make sure it’s unique! Only one client with the given ID can be present on the network at a time. A good pattern for creating a client ID might be: your username + a device name + something random. Then you’ll know whether it’s the lamp controller or the weather station that keeps dropping its connection.
This is just a step towards a more complete device tracking / monitoring system, but gives a lot more insight into what’s happening on your IO account. Let us know how you’re using IO or IO+ on the forums or in our Discord chat room
-
LIVE NOW - IO Plus! The Adafruit IO Subscription Plan
IO Plus, The Adafruit IO Subscription Plan
LIVE NOW We announced it was coming, and now it’s finally here. You can sign up for IO+ from your profile page and check out more details, and screenshots from our previous announcement!
Thank you to all of the beta testers that have been providing feedback to us while we built out a system that you hopefully find easy, useful and fun to use.
-
State of IO 10.13.17
Here are the stats for the past week:
* 82.1 million inserts of logged data in the last 7 days * 30,816 online feeds (105,563 feeds total)
We’re responding to issues you may run into on our Adafruit IO Forum. Please post any issues with as much detail as you can. It definitely helps us out when fixing the bugs.
Also, if you’re still using version 1 of our API, you may want to upgrade to the latest version 2. It has more features, and is generally better designed and easier to use than our previous API. The default for our docs is V2 now as well.
-
COMING SOON - IO Plus! The Adafruit IO Subscription Plan
IO Plus, The Adafruit IO Subscription Plan
COMING SOON After a long time in beta testing mode, IO is getting a subscription plan, IO Plus! It’s been in our minds since we started this project a few years ago and “How can I get more feeds?” has been the most frequent and persistent question from people using and interested in IO, which is GREAT! The good news is that we finally have an answer for you. Say hello to IO+!
Here is what’s coming (we have not decided on a date yet!):
- For a flat $10 per month, you can subscribe to IO+ and get unlimited feeds, unlimited dashboards, and two months of data storage.
- We will always continue to provide a free plan, but for new subscribers, the free plan will be limited to 5 feeds and everyone on the free plan will be limited to 30 new data points per minute.
- As a thank you to everyone who’s been with us this far, we’re giving away three months of IO+ free when you subscribe1. You won’t pay anything unless you keep your subscription after the third month. Additionally, if you have more than 5 feeds when we move to the new account limits, you can keep the extras2.
- No more “Beta” ;)
It’s always been our goal with Adafruit IO to make the best designed Internet of Things platform for makers of all ages and skill levels. We want it to work well with the connected devices and kits we sell and we built it with an open API to make sure it can work with any device that can speak HTTP or MQTT. Additionally, as a business, we need a way to make the service self-sustaining financially, without making it inaccessible to the makers we are trying to serve.
IO+ will provide more functionality at a single flat rate to the people who need it while our continuing free plan will let anyone build a project on IO, whether it’s their first time working with the Internet of Things or their hundredth.
We will keep standing up for everything we’ve said before in our Internet of Things Bill of Rights, whether you’re using IO+ or IO Free. Our platform is built on open technologies and you control your clients and devices. You own your data and you will always be able to decide what is public and what is private. We want to keep building a system that is easier to use for good and harder to use maliciously. We hope you’ll join us!
So that’s the big news, IO+ is coming in the beginning of October. If all goes as planned, it will be available Monday, October 2. Please stop by the IO Forum or our Discord chat server to ask questions or communicate with us. We’d love to hear from you.
Other changes
We’ll also be launching some changes to the IO interface to clean up navigation and make sure you know what’s up with your plan. Since those changes will go live with the IO+ launch, here are some screenshots to give you a preview:
An updated landing page. Way more information and an attractive new design.
We’ve cleaned up the site navigation and made it easier to tell when you’re looking at Adafruit IO and not www.adafruit.com.
All Feeds and Groups are now on a single page. This should make it easier to see how Groups and Feeds are related, and also easier to manage them.
A new account profile page. This one is going to see more work in the coming months, but for now it’s the one-stop screen to see which plan you’re running and to get access to your account settings.
The account download feature has been rebuilt to be more robust and reliable. (this feature has already launched)
There will, of course, be design tweaks as we get closer to launch and we’re always working on the site, so small things will continue to get better.
That’s all … for now!
We’re still hard at work on IO and there’s lots more to come. If you’re already using Adafruit IO, thank you for continuing on this journey with us, and if you haven’t yet signed up, now is a great time :D
1: The “IO Beta Thank You” coupon is for any user who has had an account since before September 1, 2017 and will be applied automatically at checkout.
2: If you keep your free account after IO+ launches, we’re not going to delete your feeds, but you won’t be able to create new feeds if you already have more than 5, the IO Free plan limit. If you choose to subscribe to IO+ and then cancel, however, your feeds will be dropped back down to 5 after your subscription ends but you will have plenty of time to download all your data before that happens.
We’ll continue to clarify details as we get closer to launching and if you have any questions please stop by the forums and get in touch.
Just remember this is coming soon, we have not set a date yet 🙂
-
State of IO 08.10.17
Here are the stats for the past week:
* 81.4 million inserts of logged data in the last 7 days * 31,742 users * 27,295 online feeds (94,065 feeds total)
We’re responding to issues you may run into on our Adafruit IO Forum. Please post any issues with as much detail as you can. It definitely helps us out when fixing the bugs.
Also, if you’re still using version 1 of our API, you may want to upgrade to the latest version 2. It has more features, and is generally better designed and easier to use than our previous API. The default for our docs is V2 now as well.
-
State of IO 07.19.17
Here are the stats for the past week:
* 78.9 million inserts of logged data in the last 7 days * 30,780 users * 26300 online feeds (90,680 feeds total)
Since the last state of io post we’ve updated our Adafruit IO Arduino client library. We’ve added a few new features to dashboards, such as customizing buttons with colors, unified throttling with our new throttle, and many fixes behind the scenes as well as issues reported on our forums (thanks!).
We’re also responding to issues you may run into on our Adafruit IO Forum. Please post any issues with as much detail as you can. It definitely helps us out when fixing the bugs.
Also, if you’re still using version 1 of our API, you may want to upgrade to the latest version 2. It has more features, and is generally better designed and easier to use than our previous API. The default for our docs is V2 now as well.
-
Important Client Library Update
Note: The library has now been updated to 2.6.0 with this required change.
There is an important update to the Adafruit IO Arduino client library that will be released tomorrow. We will perform this update as a coordinated update with the SSL certificates for io.adafruit.com. The client library contains an SSL fingerprint that checks the validity of the connection.
You will need to download the library update, and then compile/upload to your devices once the update is released tomorrow. We will update this post once the update has been pushed.
-
State of IO 07.07.17
Here are the stats for the past week:
* 76.4 million inserts of logged data in the last 7 days * 30,188 users * 25607 online feeds (88,417 feeds total)
The biggest new feature is a new download system for your data. It’s a more robust way to download your data and doesn’t make you wait for it to complete, along with a few other neat features. If you want to try it out, visit your feed or settings page to download your data.
We’ve also updated our throttling algorithm. Please see this post for more details.
Another update that we can talk about is that we are that we’re currently working on our Ruby and Python client libraries. Porting them to the api v2, and adding new features. If you want to play with alpha/beta code, feel free to check those out in their respective repository and api-v2 branches.
We’re continuing to work on a few major new features, but we aren’t quite ready to talk about them yet.
We’re also responding to issues you may run into on our Adafruit IO Forum. Please post any issues with as much detail as you can. It definitely helps us out when fixing the bugs.
Also, if you’re still using version 1 of our API, you may want to upgrade to the latest version 2. It has more features, and is generally better designed and easier to use than our previous API. The default for our docs is V2 now as well.
-
Changes to Throttling in Adafruit IO
We’re changing throttling in Adafruit IO for the better. We’re moving from a fixed-window, long period throttle rate that can lock out clients for up to 15 minutes in some cases to a rolling-window, short period throttle rate that can reset sooner when clients are well behaved.
In the past, hitting our authentication or data limits could result in a lock on your account for up to 15 minutes. If you’ve ever seen the red bar at the top of your browser window while you’re working on an IoT project, that was most likely a throttle. The short explanation for that is that we were using a fixed-window throttling algorithm that resulted in message bursting when we made the window of time too small. The best solution we had at the time was to make the window longer, which resulted in the 15 minute lock-outs mentioned above.
With our new system, very similar to the one described here, once you’re throttled on authentication or sending data, stopping sending will be guaranteed to reset your throttle in less than 1 minute. The tradeoff is that continuing to send messages at a greater-than-limit rate will cause you to remain throttled forever. Where the old system would let you back in for authentication after 15 minutes, the new system could lock you out forever if you have a large enough collection of misbehaving devices you’re unable to stop.
To avoid being throttled, make sure you set delays on all reconnection attempts of at least 10 seconds and make sure you’re sending at most 1 message per second across all your devices and browser sessions. For example, our Arduino library delays for 60,000 milliseconds between reconnection attempts after it’s been throttled. Client libraries will let you post data as fast as you’d like, so it’s a good idea to keep a subscription to the MQTT
$username/throttle
topic open somewhere you can see it while you’re writing code.Some additional benefits of the new system going forward:
- We can now manage throttling across the MQTT and HTTP APIs.
- We now have a few additional variables we can tweak to make the experience of building an IoT device or application nicer. For example, we can set minimum distances between messages and scale the rate/window to smaller slices (10 messages / 10 seconds rather than 60 / 60). We’ll be keeping an eye on throttling once we’ve deployed the new system.
- Refactoring our throttle logic lets us customize throttle rates across accounts, which will support Adafruit IO paid subscriptions in the future.
It’s tricky to be brief, but we put a lot of thought into changes like this and we like to share. :D
Please speak up on the forums with any questions or thoughts. We’d love to hear how you’re using IO!
-
State of IO 06.15.17
Here are the stats for the past week:
* 84.7 million inserts of logged data in the last 7 days * 29,181 users * 24,509 online feeds (84,764 feeds total)
Since our last State of IO post, we’ve been mostly heads down on new features that aren’t quite ready yet for production. We’ve also made some major performance improvements to our backend that has helped with general system stability.
We’re also responding to issues you may run into on our Adafruit IO Forum. Please post any issues with as much detail as you can. It definitely helps us out when fixing the bugs.
Also, if you’re still using version 1 of our API, you may want to upgrade to the latest version 2. It has more features, and is generally better designed and easier to use than our previous API. The default for our docs is V2 now as well.
-
State of IO 05.16.17
Here are the stats for the past week:
* 80.2 million inserts of logged data in the last 7 days * 27,729 users * 23,248 online feeds (79,685 feeds total)
-
State of IO 04.25.17
Here are the stats for the past week:
* 81.4 million inserts of logged data in the last 7 days * 26,662 users * 22,161 online feeds (75,819 feeds total) * ~132 inserts per second via MQTT * ~10 inserts per second via REST API
-
State of IO 04.05.17
Here are the stats for the past week:
* 75.8 million inserts of logged data in the last 7 days * 25,738 users * 21,038 online feeds (72,237 feeds total) * ~120 inserts per second via MQTT * ~10 inserts per second via REST API
-
State of IO 03.22.17
Here are the stats for the past week:
* 60.7 million inserts of logged data in the last 7 days * 24,942 users * 19,888 online feeds (68,525 feeds total) * ~95 inserts per second via MQTT * ~12 inserts per second via REST API
This past week we’ve been focusing on mostly behind the scenes functionality as we prepare to migrate data to a new backend. Most of our focus right now is on maintaining a high uptime. New features are in the works as well.
We’re also responding to issues you may run into on our Adafruit IO Forum. Please post any issues with as much detail as you can. It definitely helps us out when fixing the bugs.
Also, if you’re still using version 1 of our API, you may want to upgrade to the latest version 2. It has more features, and is generally better designed and easier to use than our previous API. The default for our docs is V2 now as well.
-
State of IO 02.21.17
Here are the stats for the past week:
* 63.5 million inserts of logged data in the last 7 days * 23,365 users * 18,096 online feeds (63,209 feeds total) * ~100 inserts per second via MQTT * ~15 inserts per second via REST API
This past week we’ve increased the size of at least one server, and made a fairly major database migration that is the first step towards long-term stability and speed. We have more changes in the pipeline, and will make announcements here and on the forums when they are ready to go.
We’re also responding to issues you may run into on our Adafruit IO Forum. Please post any issues with as much detail as you can. It definitely helps us out when fixing the bugs.
Also, if you’re still using version 1 of our API, you may want to upgrade to the latest version 2. It has more features, and is generally better designed and easier to use than our previous API. The default for our docs is V2 now as well.
-
User Submitted Tutorial - Guide for using Adafruit IO with Raspberry Pi and IFTTT
A user on a reddit post has put together a great guide on general connectivity with IO from a Raspberry Pi and IFTTT. They cover the end-to-end setup from signing up for IO, IFTTT and example sketches.
I’ll describe the basic steps for sending data from the RPi to Adafruit.io and then getting IFTTT to take an action based on it, but you can go in the other direction too: have IFTTT post information to Adafruit.io then have the RPi take some action based on that.
We also have a guide that explains how to setup a door sensor that triggers through IFTTT as well.
If you would like your Adafruit IO tutorial to be featured, share it with us via Twitter (@adafruit) or Instagram (@adafruit) by using the hashtag #adafruitio.
-
State of IO 01.18.17
Here are the stats for the past week:
* 70.2 million inserts of logged data in the last 7 days * 21,682 users * 16,420 online feeds (57,551 feeds total) * ~110 inserts per second via MQTT * ~12 inserts per second via REST API
-
Adafruit IO User Interface Update
We’ve deployed an all-new Adafruit IO user interface that should be faster, more responsive and streamlined than our previous UI. Beyond being faster and generally nicer to look at, another benefit of this change is it’s going to allow us to develop new features and fix existing bugs much more quickly than before. The high level changelog of the new features is below.
This should only impact the front-end browser UI. There should be no impact to your device connectivity or API/MQTT calls.
The UI is now directly using our API V2. It’s recommended that you also utilize the API V2 going forward. We’re working on updating our documentation and tutorials to indicate this as well. Also, if you’re using one of the many compatible devices, we highly recommend using our new client library that significantly simplifies and wraps the boilerplate needed to get a project going: https://github.com/adafruit/Adafruit_IO_Arduino
IO Changelog (high level):
- Updated design across the site
- Faster, more responsive and streamlined than before
- New charting features
- New Dashboard layout engine
- More granular permissions (in API V2) for your data
- New Activity page which should be more useful than before
- New functional sidebar in feeds page
- New dashboard block creation experience
- Bug fixes and performance optimizations
-
State of IO 01.10.17
Here are the stats for the past week:
* 70.0 million inserts of logged data in the last 7 days * 21,259 users * 16,063 online feeds (56,401 feeds total) * ~110 inserts per second via MQTT * ~12 inserts per second via REST API
-
State of IO 12.14.16
Here are the stats for the past week:
* 65.3 million inserts of logged data in the last 7 days * 19,940 users * 15,004 online feeds (52,527 feeds total) * ~100 inserts per second via MQTT * ~12 inserts per second via REST API
-
Quick Tip: Adding a Power Switch to your Feather
Here’s a quick tip from @ladyada that will show you how you can use the EN (enable) pin to control the power on your Adafruit Feather with a SPDT slide switch.
Here is how to connect the switch to your Feather:
- Feather GND -> Center pin on the switch
- Feather EN -> One of the outer pins on the switch
You can now turn your Feather off by flipping the switch to the side that is connected to the EN pin.
For more info about the EN (enable) pin, check out this guide.
-
User Submitted Tutorial - Magnetic Door Spy
Faraday Robotech shared their updated version of the IoT Door Detector Tutorial. Check out their new and improved version of the tutorial here: Wi-Fi Magnetic Door Spy Tutorial
If you would like your Adafruit IO tutorial to be featured, share it with us via Twitter (@adafruit) or Instagram (@adafruit) by using the hashtag #adafruitio.
-
State of IO 12.06.16
Here are the stats for the past week:
* 63.6 million inserts of logged data in the last 7 days * 19,537 users * 14,583 online feeds (51,303 feeds total) * ~100 inserts per second via MQTT * ~10 inserts per second via REST API
-
Loading Data from Adafruit IO into Pandas
If you are logging sensor data to Adafruit IO, you may have a need to do a deeper examination of your data. One popular option is the pandas data analysis library for Python.
Here is a description from the pandas website:
pandas is an open source, BSD-licensed library providing high-performance, easy-to-use data structures and data analysis tools for the Python programming language.
Let’s take a quick look at how to load data into pandas from a public Adafruit IO feed.
Setup
You will need Python 3.5 installed, and you will also need to install pip if it wasn’t included with your Python install.
Once Python and pip are installed, you can install pandas by running:
$ pip install pandas
For this example, we will be pointing pandas at a public Adafruit IO feed. If your feed is currently private, you will need to make it public.
Importing Feed Data
To get started, you will need to open up a new Python file in your favorite editor, and start by importing pandas:
import pandas as pd
Next, we need to pull in feed data via the
read_json
method. ReplaceUSERNAME
andFEED_KEY
with your Adafruit IO username, and the key of the feed you wish to load.feed_data = pd.read_json('https://io.adafruit.com/api/v2/USERNAME/feeds/FEED_KEY/data')
If you are not sure where to find your feed’s key, you can find it below the feed name.
Date Conversion
Next, we will convert the
created_at
column from a string todatetime
, and set it as the index for the data frame:feed_data['created_at'] = pd.to_datetime(feed_data['created_at'], infer_datetime_format=True) feed_data = feed_data.set_index('created_at')
Plot Values on a Chart
Now that the data has a valid date column, we can load the feed values into a time series, and plot the values:
values = pd.Series(feed_data['value']) values.plot()
Another simple example is to resample the data into daily averages, and plot them on a bar chart:
daily = values.resample('1d').mean() daily.plot(kind='barh')
You can do a wide range of useful operations with Time Series, and you should refer to the documentation for more details.
-
State of IO 11.23.16
Here are the stats for the past week:
* 56.1 million inserts of logged data in the last 7 days * 18,941 users * 14,043 online feeds (49,321 feeds total) * ~90 inserts per second via MQTT * ~10 inserts per second via REST API
-
State of IO 11.07.16
Here are the stats for the past week:
* 54.7 million inserts of logged data in the last 7 days * 18,147 users * 13,309 online feeds (46,968 feeds total) * ~77 inserts per second via MQTT * ~10 inserts per second via REST API
-
State of IO 10.05.16
Here are the stats for the past week:
* 48.2 million inserts of logged data in the last 7 days * 16,798 users * 12,383 online feeds (42,857 feeds total) * ~75 inserts per second via MQTT * ~10 inserts per second via REST API
-
SSH Config Includes
OpenSSH version 7.3 introduced a very handy
Include
feature, which is great for people who have to manage connection info for multiple servers. This makes it easy for us to generate updated SSH configs via AWS CLI for the multiple EC2 instances that serve Adafruit IO.Here is how you can use
Include
to pull in separate SSH config files from your main~/.ssh/config
. First, you will need to install OpenSSH version 7.3 or higher. If you are using Linux, you will need to install version 7.3+ via your package manager (yum
,apt-get
, etc), or build it from source.On OS X, you can do this via homebrew:
$ brew install homebrew/dupes/openssh
Confirm that you are now running 7.3 or higher by running
ssh -V
:$ ssh -V OpenSSH_7.3p1, OpenSSL 1.0.2j 26 Sep 2016
Now you can create a new child config file in
~/.ssh
using a text editor. For example, we can create an example child config at~/.ssh/pi_config
and add configuration info just as we would in the main SSH config file:Host pi-1 HostName 10.0.0.10 User pi IdentityFile ~/.ssh/pi_cluster Host pi-2 HostName 10.0.0.11 User pi IdentityFile ~/.ssh/pi_cluster Host pi-3 HostName 10.0.0.12 User pi IdentityFile ~/.ssh/pi_cluster
From your main
~/.ssh/config
, add the following line at the top:Include ~/.ssh/pi_config
You should now be able to connect to your servers as you normally would:
$ ssh pi-1
That’s it! Check out this OpenSSH feature request if you would like more info.
-
State of IO 09.20.16
Here are the stats for the past week:
* 45.3 million inserts of logged data in the last 7 days * 16,227 users * 11,985 online feeds (41,024 feeds total) * ~75 inserts per second via MQTT * ~10 inserts per second via REST API
-
Exporting Data from Adafruit IO
Here’s a quick tip to help you export one of your Adafruit IO feeds as CSV, Excel, JSON, or XML. First, you will need to navigate to io.adafruit.com/feeds. Once your feed list has loaded, select the feed you wish to export:
Then, click the download button below the chart:
A modal will pop up and allow you to download your feed as CSV, Excel, JSON, or XML:
If you would like to download all a copy of all of your Adafruit IO data, you can do this by navigating to io.adafruit.com/settings, and clicking the
Download All Data
button. This button will currently only allow you to download your data in JSON format.Was this tip helpful? Please visit our IO forum to ask questions or share your thoughts.
-
State of IO 09.06.16
Here are the stats for the past week:
* 44.40 million inserts of logged data in the last 7 days * 15,671 users * 11,503 online feeds (39,364 feeds total) * ~70 inserts per second via MQTT * ~10 inserts per second via REST API
-
Hardware Testing with Jenkins & TAP
At Adafruit, when we push or merge changes to one of our hundreds of Arduino libraries on GitHub, we have to ask ourselves “Does this change work?”. In a lot of cases, the best answer we can give, even after extensive manual testing, is “Maybe?”. For Adafruit IO, it is important that we are able to easily answer “Yes.” to that question. A large portion of Adafruit IO users could be impacted by a bug in a library such as the Adafruit IO Arduino Library, and we want to make sure our client code is reliable.
The hard truth is that there aren’t enough hours in the day to test each change to every library on all of the supported platforms, so most of the time we have to settle with testing one or two platforms manually, and hoping for the best on the rest of the supported platforms.
What do we mean by platform? In this case, we are talking about the multiple microcontrollers that are supported in the Arduino IDE via the Arduino 1.6.x Third Party Hardware Specification. Arduino Uno, ESP8266, Feather M0 (ATSAMD21), and the Feather WICED (STM32F205) are all good examples different platforms that require separate testing.
First Attempt: Build Verification using Travis CI
We had previously attempted automated build checking using Travis CI, and that method works great for checking if sketches build on multiple platforms.
As you may have guessed, this leaves us with a huge blind spot. A passing build does not mean the code will do what you expect it to do.
Second Attempt: Manual Compatibility Testing
Our next attempt involved building a ‘compatibility matrix’ web app that allowed for easy logging of the results of manual tests on supported platforms. The app pushes test results to a GitHub repo as JSON (in case we need to access it programatically). It also automatically adds/updates a compatibility table in the README of the target library.
Here’s an example of the README output:
This method is very effective for answering “Does this change work?”, but it is very impractical to manually test the daily changes to libraries on every supported platform.
Latest Attempt: Running Tests on Hardware
Our latest approach to this problem uses Jenkins CI running on an AWS EC2 instance, and small fleet of local Raspberry Pi test nodes. Each node uploads and runs unit & integration tests on hardware attached to USB ports.
Each Raspberry Pi can support multiple platforms, and each platform can be targeted by the test. The tests themselves output results using the TAP protocol over a serial connection, and the Raspberry Pi sends the results back to Jenkins so we are aware when builds fail.
Here’s a visual overview of how it works:
Test status can be monitored in real time from anywhere, and we are able to view the raw console output from the test nodes when needed.
TAP results are also parsed and attached to each build:
We will be sharing the details of this in a tutorial soon, but if you would like to take a look at our early experiments with Jenkins, head to jenkins.adafruit.com or check out our Jenkins Pipeline Library on GitHub.
-
State of IO 08.23.16
Here are the stats for the past week:
* 37.3 million inserts of logged data in the last 7 days * 15,121 users * 11,080 online feeds (37,600 feeds total)
-
Adafruit IO Arduino v2.0 Beta Release
We have been working hard on a new version of the Adafruit IO Arduino Library. We are releasing it in ‘beta’ form today for existing IO users to try, and we will be adding new tutorials and updating existing tutorials with usage examples very soon.
Device Independence
v2.0.0
of the library provides a simple device independent interface for interacting with Adafruit IO. This allows you to switch beween WiFi (ESP8266, M0 WINC1500, & WICED), Cellular (32u4 FONA), and Ethernet (Ethernet FeatherWing) with only a two line change in your sketch. No changes are required to the sketch to switch between any of the supported Feather WiFi boards.The included examples focus on specific concepts without extra boilerplate related to setting up the specific WiFi, cell, or ethernet hardware being used. This will allow you to prototype your sketch on WiFi hardware, and easily move to cellular or ethernet with a very small change to your config file.
Location
The library makes it simple to publish GPS location info with your data. For example, if you wanted to publish your location with your current speed, you would send it like this:
car->save(speed, lat, lon, ele);
You could then use the map block on io.adafruit.com to display your location info. The included
adafruitio_04_location
example demonstrates how to send and receive location info.Type Conversion
The library adds type conversion helpers for both publishing and receiving data. You can publish any data type to the
save(value)
method of your feed, and you can use helpers liketoInt()
,toBool()
, &toFloat()
to easily convert received messages to the appropriate data type. The includedadafruitio_05_type_conversion
example demonstrates converting to and from all available types.Updating to v2.0.0
The README for the library has more info about required dependencies, and you should check there to make sure you have all of the requirements for the hardware you are using. Make sure you install
v2.0.0
or higher of the Adafruit IO Arduino Library, andv0.16.0
of the Adafruit MQTT Library using the Arduino IDE’s Library Manager. -
State of IO 08.10.16
Here are the stats for the past week:
* 37.6 million inserts of logged data in the last 7 days * 14,701 users * 10,713 online feeds (36,320 feeds total) * ~60 inserts per second via MQTT * ~10 inserts per second via REST API
-
State of IO 07.19.16
Here are the stats for the past week:
* 37.3 million inserts of logged data in the last 7 days * 13,840 users * 10,138 online feeds (33,776 feeds total) * ~60 inserts per second via MQTT * ~10 inserts per second via REST API
To help with the increased load, we have added an additional sidekiq server to help process jobs, and it has helped with ensuring that messages from users are processed as soon as they arrive. The image below shows how adding the new server has helped smooth out job processing over the last day.
This week Adafruit IO passed the 10,000 online feeds milestone!
We have some exciting new things coming soon, and we are always looking for feedback about Adafruit IO. Please post any questions, feature requests, or show off your project in the Adafruit IO forum.
-
Naming Feeds
There’s an old joke that in computer science, there are only two hard problems: cache invalidation, naming things, and off-by-one errors.
It’s taken us a bit of time to get a handle on how we give things inside Adafruit IO names, but we’re making progress. Today we deployed an update to the way Feeds are identified within Adafruit IO that may have short-term negative effects, but should, in the long run, make the whole MQTT / HTTP API easier to understand, anticipate, and use.
I’d like to talk briefly about how we identify Feeds in Adafruit IO and how the rules we’ve set up will effect your code. You can also find this guide at https://learn.adafruit.com/naming-things-in-adafruit-io.
The Two Feed Identifiers
Feeds have two properties that we regularly interact with when we’re talking to the Adafruit IO API: Name and Key.
Name
The Name is the user provided name for this Feed. It should be a “human readable” descriptive term that helps you find your Feed in the web-based user interface and keep track of which code is talking to what feed.
The rules for Feed names are:
- A Feed Name MUST include at least one ASCII letter.
- A Name MAY include any upper or lower case ASCII letters, numbers, spaces, dashes, or underscores (“ “, “-“, or “_”, respectively).
- A new Feed Name MAY NOT be the same as an existing Feed’s Key if the Feeds are in the same group. By default, all newly created Feeds are part of the Group whose name matches your username.
- Names are case-sensitive. This means “Blender” and “BLENDER” are treated as two different Names.
Names are helpful because they let us associate a human friendly word with our data. We see names when we browse io.adafruit.com on the web and when we get Feed records from the HTTP API. We use names when subscribing or publishing to a Feed with the MQTT API.
Some examples of valid, possibly useful names are:
Temperature
door one
99 Red Balloons
books_I_would_like_to_read_before_2022
Key
The Key is a system-generated, URL-safe identifier based on the given Feed Name that can be used in API requests to refer to a particular Feed. Keys are generated based on the Name given when the Feed is created and follows strict rules. The rules for Feed keys are simple:
- A Feed Key MAY ONLY contain lower case ASCII letters, numbers, and the dash character (“-“).
- Two Feeds in the same Group may not have the same Key.
These rules in combination with the default Group all Feeds are added to means means a new Feed cannot be created if it will use a duplicate Key and a Feed’s Name cannot be modified if the new Name will produce a Key that conflicts with another Feed in any of the Feed’s Groups.
The rules Adafruit IO uses to generate Keys from Names are roughly:
- Remove formatting. This step requires a lot of discrete operations, but boils down to transliterating Unicode to ASCII and replacing any non-URL safe characters with “-“.
- Collapse whitespace and replace with “-“.
- Collapse all instances of “-“ into a single “-“ and remove them from the beginning and end of the string.
- Make the whole thing lowercase.
It’s also important to note that when you change a Feed’s Name the Key will also update. We keep Keys in sync with Names whenever a Feed is updated.
Keys are handy because they let us use a human friendly URL when communicating with the AIO API. For example,
https://io.adafruit.com/abachman/feeds/beta-test
andabachman/f/beta-test
are nicer and easier to remember thanhttps://io.adafruit.com/abachman/feeds/588995
orabachman/f/588995
.Aside: Naming things in MQTT
MQTT has its own rules for naming things and in MQTT the things we’re concerned with are called “topics”. If you read Todd’s recent post on MQTT in Adafruit IO, you know we are like an MQTT broker, but we’ve got some extra guidelines. Anyhow, here are the official rules: (you don’t need to memorize these, we handle it for you. They’re just included here for illustration)
- All Topic Names and Topic Filters MUST be at least one character long
- Topic Names and Topic Filters are case sensitive
- Topic Names and Topic Filters can include the space character
- A leading or trailing ‘/’ creates a distinct Topic Name or Topic Filter
- A Topic Name or Topic Filter consisting only of the ‘/’ character is valid
- Topic Names and Topic Filters MUST NOT include the null character (Unicode U+0000)
- Topic Names and Topic Filters are UTF-8 encoded strings, they MUST NOT encode to more than 65535 bytes
Retrieved from the MQTT Version 3.1.1 OASIS Standard, July 8, 2016.
The full MQTT topic used to describe a Feed in Adafruit IO is in the form:
username/feeds/identifier
whereusername
should be replaced with the username of the account that owns the Feed andidentifier
should be replaced with the Name or Key that uniquely identifies the Feed you’re talking about.So, MQTT considers the whole topic
test_username/feeds/identifier
when validating names but for the purposes of describing Feeds, we’re only considering theidentifier
portion.Naming and Accessing Feeds From the io.adafruit.com MQTT API
Naming a Feed on the fly and then referring to it reliably can be tricky. Here are the rules we’re using right now to generate new Feeds and provide continuing access to them from the MQTT interface. For the purposes of demonstration, we’ll be using the example code provided here, but any MQTT publisher or subscriber code should work the same.
1. Listening
Start an MQTT subscription to topic in the form
username/f/identifier
, for the purpose of the following examples I’ll be using,test_username/f/Test Mode
. A Feed with the name “Test Mode” doesn’t exist yet, but that’s okay with the MQTT API. The subscription will remain active and start receiving whenever you start publishing to a Feed whose Name or Key matches the givenidentifier
value exactly.NOTE: no new Feeds are created in this step.
$ AIO_FEED_NAME='Test Mode' ruby adafruit-errors-sub.rb CONNECT TO mqtts://test_username:12345@io.adafruit.com SUB test_username/f/Test Mode
We’ll also start an MQTT subscriber listening to
test_username/errors
. This will let us see when there are problems with publishing or subscribing to Feeds.$ ruby adafruit-errors-sub.rb CONNECT TO mqtts://test_username:12345@io.adafruit.com
2. Initial MQTT publish / creating a new Feed
To create the Feed in Adafruit IO and to start populating it with data, we’ll need to publish and MQTT message to the appropriate topic. In this case, we’re subscribing to a Feed named “Test Mode”, so we’ll need to publish on a Feed with the same name.
Using the example script provided, we’ll publish a simple MQTT message with the topic
test_username/f/Test Mode
:$ AIO_FEED_NAME='Test Mode' ruby adafruit-pub.rb CONNECT TO mqtts://test_username:12345@io.adafruit.com PUBLISHING TO test_username/f/Test Mode PUB 2609815 to test_username/f/Test Mode at 2016-07-11 12:53:23 -0400
If this is your first time publishing to the Feed, the subscriber that’s listing to
test_username/f/Test Mode
should receive its first message:[test_username/f/Test Mode 2016-07-11 12:53:23 -0400] 2609815
This first is a Feed created message and the second is the actual data received message.
3. Tweaking Names: Publish to a Feed by name with capitalization changed
Once the Feed has been established, publishing to any named Feed whose Key is the same as an existing Feed will add Data to the existing Feeds stream.
PUB 3124870 to test_username/f/test mode at 2016-07-11 12:39:34 -0400
And the original Feed subscriber, which is still watching
test_username/f/Test Mode
, receives:[test_username/f/Test Mode 2016-07-11 12:39:34 -0400] 3124870
4. Tweaking Names: Publish to a Feed by key
Once the Feed has been established, publishing to an existing Feed’s Key will add Data to the existing Feeds stream.
PUB 1181702 to test_username/f/test-mode at 2016-07-11 12:42:28 -0400
The Feed subscriber, still watching
test_username/f/Test Mode
, receives:[test_username/f/Test Mode 2016-07-11 12:42:28 -0400] 1181702
5. Valid name variations for publishing
When publishing, the method Adafruit IO uses internally to convert a given topic in the form
username/feeds/identifier
to a specific, existing Feed works like this:- Find the Feed belonging to
username
whose Key is exactly the same asidentifier
. - If no Feed is found, convert the given
identifier
using the Name-to-Key translation (described above) and find the Feed belonging tousername
whose Key is exactly the same as the converted value. - If no Feed is found, find the Feed belonging to
username
whose Name is exactly the same asidentifier
.
Thanks to the Name-to-Key conversion rules, the following topics will all publish to the original Feed created in step 2 and be received by the subscriber at
test_username/f/Test Mode
:test_username/f/Test_Mode
test_username/f/Test-Mode
test_username/f/Test Mode
test_username/f/ Test Mode
test_username/f/Test Mode
test_username/f/Test -Mode
test_username/f/ Test - Mode
And so on, including any variation of modified capitalization.
Some variations that include symbols will be converted to URL-safe Keys when looking up the requested Feed:
test_username/f/Test(Mode
test_username/f/Test\[Mode
test_username/f/Test{Mode
test_username/f/test modé
test_username/f/test' mode
6. Valid name variations for subscribing
Subscriptions, on the other hand, must use an exact Name or Key. So, for the given examples, the only topics that will produce the Feed we care about are:
test_username/f/Test Mode
test_username/f/test-mode
Naming and Accessing Feeds From the io.adafruit.com HTTP API
The HTTP API follows the same Feed identifying and Name-to-Key conversion rules as the MQTT API because under the hood they’re talking to the same backend. This means if you’re using the Ruby IO client library, the following will produce publications to the same feed as the MQTT examples given above.
require 'rubygems' require 'adafruit/io' client = Adafruit::IO::Client.new(key: ENV['AIO_KEY']) [ 'Test Mode', 'test mode', 'test-mode', '44' ].each do |feed_ident| client.feeds(feed_ident).data.send_data(feed_ident) end
Potential Problems With Naming
It really stinks to get taken by surprise in a negative way when working with code. Reducing surprise of the unpleasant sort and increasing predictability and stability are the primary motivating factors for the subtle changes this guide introduces.
Publishing to an invalid name
While the Name-to-Key converter keeps things feeling pretty loose and improvisational in terms of referring to Feeds once they exist, if your initial publish is to a Feed that can’t be found it will be rejected if it doesn’t match the rules for valid Feed names.
In the case of our MQTT example, a publish that looks like this:
PUB 2948554 to test_username/f/Test Modes[ at 2016-07-11 15:42:31 -0400
would trigger a message on the error feed that looks like this:
[test_username/errors 2016-07-11 15:42:31 -0400] "Validation failed: Name may contain only letters, digits, underscores, spaces, or dashes"
If the Feed named “Test Modes” already existed, then the publish would work fine, but because it doesn’t Adafruit IO tries to create a Feed with the given identifier, “Test Modes[” as a Name. Since “Test Modes[” is an invalid name, Adafruit IO rejects it :(
Publishing to the wrong identifier
If you set up your MQTT subscription first, it’s important to note that no feed will be created, so the Name-to-Key rules laid out above won’t have the effect you may have anticipated. This happens when the Feed you eventually publish to doesn’t end up with the Key or Name your subscriber has requested. The end result is a subscriber that’s silent while your device is merrily publishing away. Maddening! This is a common error of subscription and publishing when trying to juggle the different identifiers that point to a given Feed.
The safest way to avoid this situation is to make sure that your subscribing topic and your publishing topic are exactly the same. If you want to switch to a different identifier–for example, using a Key instead of a Name–copy the value directly from Adafruit IO. When in doubt, use the Name value.
The Feed we’re publishing to in the MQTT examples above has the following identifiers:
key: test-mode name: "Test Mode"
The Name-to-Key translator is how all the “valid name variations” shown above for publishing work, but they only after the Feed already exists. The only way to create this Feed from the MQTT interface is to publish to
test_username/f/Test Mode
.Keeping a browser open to your Feeds page while setting up or programming your Adafruit IO devices is recommended.
Modifying a name or key
Remember, changing a Feed’s name will automatically update its Key. This is a change to existing behavior and will require modifications to any systems you’re running that refer to Feeds by Key, but it prevents more confusing situations from occurring.
Here’s a non-hypothetical scenario that illustrates the trouble when we don’t keep Keys and Names in sync:
- I make a new Feed and call it, “Light Switch” (IoT light switch, low risk). In JSON, the Feed looks like:
{ "name": "Light Switch", "key": "light-switch" }
- I have a Feather Huzzah controlling a relay, acting as a subscriber listening to
username/f/light-switch
and a publisher sending data tousername/f/Light Switch
. Things talk, everything is great with the world. - I move the hardware over to a new spot and rename the Feed, “Blender Toggle” (IoT blender, high risk). In a non-sync world, the Feed’s new Name is “Blender Toggle” and it’s Key is still “light-switch. The Feed is now:
{ "name": "Blender Toggle", "key": "light-switch" }
- My subscriber is still listening to
username/f/light-switch
, so it still gets all the Feed’s messages. - I build a new remote control and have it publish to
username/f/Blender Toggle
and it works, because there is a Feed with that exact name. Everything just keeps working, which is okay for now. - Later on, I decide I’d like to build another remote control light switch, so I put together an Arduino MKR1000 publishing to
username/f/Light Switch
. - My new light switch controlling, MKR1000-powered, motion sensor publishes a message to
username/f/Light Switch
and my blender turns on! What the heck! Hope you’re wearing Kevlar gloves!
The MQTT Feed routing rules described above mean that a message received on the topic
username/f/Light Switch
gets routed to the Feed whose Key matcheslight-switch
, which already exists. And controls the blender. Which should not turn on unexpectedly when the room gets dark :PThis is why we keep all Feed Keys updated to match to their respective Feed Names. In Adafruit IO, renaming the Feed to “Blender Toggle” changes the Key to “blender-toggle”.
Old Feed:
{ "name": "Light Switch", "key": "light-switch" }
Change Name to “Blender Toggle” and the Feed now looks like:
{ "name": "Blender Toggle", "key": "blender-toggle" }
My existing subscriber would immediately stop working because none of the messages sent to
username/f/Blender Toggle
(new Name) will get routed to the subscriber listening tousername/f/light-switch
(old Key). This doesn’t mean the subscriber breaks or shuts down, only that it stops getting messages for now. This is my chance to realize something is wrong and debug my system.Here’s the tricky bit, if I go in and make a new Feed and name it “Light Switch”, it’ll get the Key “light-switch”. If I didn’t update my subscriber when it stopped working, that means it’s still listening to
username/f/light-switch
. When I start posting to my new Feed atusername/f/Light Switch
, the old subscriber atusername/f/light-switch
will start getting messages again.The best defense against confusion is to refer to the Adafruit IO web interface to double check what the Feed you’re working with has for Name and Key values. And, when you make changes in Adafruit IO always make sure the cooperating systems are updated, especially when dealing with control systems that interact with the world.
Summary
If you got this far, I hope it’s clear that this is an area of Adafruit IO we’ve put a particular amount of thought into. Our intention continues to be building a clear, simple, powerful platform for connecting the things you build and we think this refinement supports that intention.
Please join us at the Adafruit IO forum and share your thoughts, projects, questions, or requests. We’d love to talk to you about what we’re building!
-
Running Code at Intervals Using Adafruit IO
We introduced time utilities to Adafruit IO about a month ago, but we haven’t provided any examples of how to use the feature. To correct this oversight, we added an example to
v0.14.2
of the Adafruit MQTT Arduino Library. This example was a response to a feature request from @phlemoine in the io-issues GitHub repo:I am looking for a way to trigger at a specific time in the day… how can I set up the time the trigger starts ? Same for a 12 hours or even 4 hours …
Here is the relevant code that allows code to be run at 4 hour intervals (midnight, 4am, 8am, etc):
Adafruit_MQTT_Subscribe timefeed = Adafruit_MQTT_Subscribe(&mqtt, "time/seconds"); // set timezone offset from UTC int timeZone = -4; // UTC - 4 eastern daylight time (nyc) int interval = 4; // trigger every X hours int hour = 0; // current hour void timecallback(uint32_t current) { // stash previous hour int previous = hour; // adjust to local time zone current += (timeZone * 60 * 60); // calculate current hour hour = (current / 60 / 60) % 24; // only trigger on interval if((hour != previous) && (hour % interval) == 0) { Serial.println("Run your code here"); } }
The full example can be found in the Adafruit_MQTT Arduino Library on GitHub. You will need to install or update the Adafruit MQTT Library to version
0.14.2
in the Arduino Library Manager, and open theadafruitio_time_esp8266
example to get started.Are these examples helpful? Please visit our IO forum and share your thoughts.
-
Callbacks Added to the Adafruit MQTT Library for Arduino
v0.14.1
of the Adafruit MQTT Library for Arduino introduces subscription callbacks. This change will allow users to organize their code into separate blocks by attaching callbacks to feed and group subscriptions. Here’s a simplified example of what the change looks like:setup() { // add the rest of setup code here // register callback for feed onoffbutton.setCallback(onoffcallback); } loop() { // Ensure the connection to the MQTT server is alive (this will make the first // connection and automatically reconnect when disconnected). // See the MQTT_connect function in the full example for more info. MQTT_connect(); // wait 10 seconds for subscription messages // since we have no other tasks in this example. mqtt.processPackets(10000); // keep the connection alive mqtt.ping(); } void onoffcallback(char *data, uint16_t len) { Serial.print("Hey we're in a onoff callback, the button value is: "); Serial.println(data); }
In the example above, you can see that we added the call to
mqtt.processPackets(10000);
. This tells the library to wait 10 seconds (10000ms) for incoming packets before moving on to the next task, and it will block all other code execution. If your sketch is only waiting for subscription messages, then 10 seconds might be a good timeout, but if your sketch handles other tasks, you may want to reduce the timeout to 1 second (1000ms).The full example with multiple feed subscriptions can be found in the Adafruit_MQTT Arduino Library on GitHub. You will need to install or update the Adafruit MQTT Library to version
0.14.1
in the Arduino Library Manager, and open themqtt_esp8266_callback
example to get started.Are these examples helpful? Please visit our IO forum and share your thoughts.
-
MQTT Error Reporting
Unlike HTTP, the MQTT protocol does not provide a standard way of reporting errors to connected clients. This poses a problem for Adafruit IO, because there are multiple reasons why sending data to Adafruit IO might fail.
Here are a few common examples:
- Publishing data to an invalid topic
- Publishing data to an unauthorized topic
- Publishing data too fast (rate limit)
- Exceeding the number of feeds for your account (10 currently)
- Sending too large of a payload
Adafruit IO is not a standard MQTT broker. Normally MQTT brokers will rebroadcast published data to any authorized subscribed client as soon as the data is received, so errors are rarely encountered.
The standard MQTT pub/sub workflow looks something like this:
Adafruit IO’s message flow is a bit more complicated, and looks something like this:
In the simplified example above, you can see that there are multiple steps that need to be completed before data is rebroadcasted to subscribed clients. If any of these steps fail, data will not make it back to subscribed clients. The reasons for failure are often unclear to users, so we added two special MQTT topics that will help inform users of any issues related to publishing data.
The first topic you can subscribe to is the error topic for your user. This topic will receive any errors related to data validation and database saves. The topic path looks like this:
{username}/errors
For example, if your username was
ladyada
, you would subscribe to the following topic using your favorite MQTT client:ladyada/errors
The second topic you can subscribe to is the throttle topic for your user. This topic contains any messages related to rate limits on your account. You might see these if you are publishing too fast. The topic path looks like this:
{username}/throttle
Again, if your username was
ladyada
, you would subscribe to the following topic:ladyada/throttle
If you are using the Adafruit MQTT Library, you can define the throttle and error subscriptions at the top of your sketch like this:
/*************************** Error Reporting *********************************/ const char ERRORS[] PROGMEM = AIO_USERNAME "/errors"; Adafruit_MQTT_Subscribe errors = Adafruit_MQTT_Subscribe(&mqtt, ERRORS); const char THROTTLE[] PROGMEM = AIO_USERNAME "/throttle"; Adafruit_MQTT_Subscribe throttle = Adafruit_MQTT_Subscribe(&mqtt, THROTTLE);
Then, subscribe to the topics at the bottom of the
setup
function:void setup() { // ...network connection setup code here // MQTT subscriptions for throttle & error messages mqtt.subscribe(&throttle); mqtt.subscribe(&errors); }
Finally, inside of the main
loop
, print any errors to the serial monitor:void loop() { // Ensure the connection to the MQTT server is alive (this will make the first // connection and automatically reconnect when disconnected). See the MQTT_connect // function definition further below. MQTT_connect(); // this is our 'wait for incoming subscription packets' busy subloop // try to spend your time here Adafruit_MQTT_Subscribe *subscription; while ((subscription = mqtt.readSubscription(5000))) { if(subscription == &errors) { Serial.print(F("ERROR: ")); Serial.println((char *)errors.lastread); } else if(subscription == &throttle) { Serial.print(F("THROTTLED: ")); Serial.println((char *)throttle.lastread); } } mqtt.ping(); }
You can see the full example for the ESP8266 in the Adafruit_MQTT Arduino Library on GitHub. Install or update the Adafruit MQTT Library to version
0.13.3
in the Arduino Library Manager, and open theadafruitio_errors_esp8266
example to get started.Are these examples helpful? Please visit our IO forum and share your thoughts.
-
IoT Security: Connecting Your ESP8266 to Adafruit IO with SSL/TLS
The ESP8266 based Adafruit HUZZAH breakout and the Adafruit Feather HUZZAH are both popular options to use with Adafruit IO. Because ESP8266 SSL/TLS support is fairly new, most of our Adafruit IO examples use the insecure MQTT port 1883.
Why is this a problem? The MQTT protocol is an insecure protocol on it’s own. All data (including username & password) are sent in the clear, so SSL/TLS is required to protect any sensitive information.
What are SSL & TLS? Transport Layer Security (TLS) and its predecessor, Secure Sockets Layer (SSL), are cryptographic protocols that you use whenever you browse the internet. Have you ever noticed the lock symbol 🔒 in your browser’s URL bar? That lock symbol represents a secure connection between your browser & a web site over SSL/TLS. We use those same protocols to secure traffic between your ESP8266 and Adafruit IO.
We have added an example to the Adafruit_MQTT Arduino Library that you can use to secure communication between your ESP8266 and Adafruit IO. Install or update the Adafruit MQTT Library to version
0.13.2
in the Arduino Library Manager, and open theadafruitio_secure_esp8266
example to get started.The main changes to the standard ESP8266 example are that
WiFiClientSecure
is used in place ofWiFiClient
, and port8883
is used instead of MQTT port1883
. The sketch also checks the fingerprint for theio.adafruit.com
certificate using theverifyFingerprint
function.A simplified summary of the changes can be seen below:
#define AIO_SERVER "io.adafruit.com" #define AIO_SERVERPORT 8883 // 8883 for MQTTS // WiFiFlientSecure for SSL/TLS support WiFiClientSecure client; // io.adafruit.com SHA1 fingerprint const char* fingerprint = "26 96 1C 2A 51 07 FD 15 80 96 93 AE F7 32 CE B9 0D 01 55 C4"; void verifyFingerprint() { const char* host = AIO_SERVER; Serial.print("Connecting to "); Serial.println(host); if (! client.connect(host, AIO_SERVERPORT)) { Serial.println("Connection failed. Halting execution."); while(1); } if (client.verify(fingerprint, host)) { Serial.println("Connection secure."); } else { Serial.println("Connection insecure! Halting execution."); while(1); } }
-
From the Forums: Two Buttons & Two LEDs
User
smcculley
posted a useful example in the IO Forum:I have had some requests from people to share my code to talk to Adafruit IO using MQTT and being able to trigger two LED’s.
Note that I am using the latest AdafruitIO MQTT code from GitHub, as it has the latest fixes available: https://github.com/adafruit/Adafruit_MQTT_Library
In Adafruit IO, I created two feeds, called ledone and ledtwo, and added them to a group called leds. I then created a dashboard with two toggle switches, and tied them to the feeds (one to each, obviously) using the default ON and OFF button text.
Check out the post for more details. Thanks for sharing!
-
Extending the MQTT Protocol
Last month we deployed a change to Adafruit IO’s MQTT broker that allowed us to rate limit connection attempts. Although we don’t like to throttle or ban users, the change was necessary to protect Adafruit IO from abuse, and ensure the overall health of the service.
This presented a problem: How do we inform users when they have been throttled or banned? Ideally the MQTT protocol would allow for us to inform the user using a standard response, but currently the connection acknowledgement packet (
CONNACK
) has a limited set of response codes.The MQTT v3.1.1 protocol has the following values defined for the
CONNACK
packet response code:Value
Return Code Response
Description
0
0x00 Connection Accepted
Connection accepted
1
0x01 Connection Refused, unacceptable protocol version
The Server does not support the level of the MQTT protocol requested by the Client
2
0x02 Connection Refused, identifier rejected
The Client identifier is correct UTF-8 but not allowed by the Server
3
0x03 Connection Refused, Server unavailable
The Network Connection has been made but the MQTT service is unavailable
4
0x04 Connection Refused, bad user name or password
The data in the user name or password is malformed
5
0x05 Connection Refused, not authorized
The Client is not authorized to connect
6-255
Reserved for future use
The current set of codes didn’t allow us to clearly communicate the reason for disconnects to our users. We have extended the list of codes in the
CONNACK
packet to include connection throttle (0x06) and ban (0x07).Value
Return Code Response
Description
6
0x06 Connection Refused, throttled
Client has exceeded connection rate limit. Please try again later.
7
0x07 Connection Refused, banned
The client has been banned by the server administrator.
We have submitted these two new codes to the OASIS MQTT Technical Committee for comment, and we are adding support to our MQTT client libraries. If you would like to comment on these changes, please visit our IO forum and share your thoughts.
-
Using MQTT Last Will with Adafruit IO
MQTT’s last will feature allows you to ask the Adafruit IO servers to publish a message to a feed or group on your behalf. This is helpful if you would like to track when your device unexpectedly disconnects due to issues like network or power outages.
Here are some helpful tips from the IO forum that might help you if you are looking to use MQTT’s last will feature with Adafruit IO:
- The last will topic must match the normal IO MQTT topic format for feeds or group publishes.
- Last will is only published by the MQTT broker if the client fails to disconnect cleanly by sending the MQTT disconnect packet.
- Last will is only published by the MQTT broker if the the keep alive timeout expires, and the last will is not sent if your device reconnects within the timeout window. The Adafruit MQTT Library for Arduino has a default keep alive timeout of 5 minutes.
Here’s an example of setting a last will message using the Adafruit MQTT Library for Arduino:
// always set the last will message before calling connect. // if the device unexpectedly disconnects, the 'disconnect' // feed will receive the 'water monitor disconnected' message. mqtt.will("your_username_here/feeds/disconnect", "water monitor disconnected"); mqtt.connect();
-
State of IO 6.14.16
We’re continuing forward with refactoring our UI so that we can get to a point where it’s easier and quicker to build out new features. The front-end is also going to use the same API V2 that will be the future default API. As another reminder, it would be a good idea to explicitly set ‘/api/v1’ in your paths until you’re ready to upgrade to the ‘/api/v2’.
Stability of the entire system has been an ongoing project for us. We’re getting there, and continue to add more monitoring and fixes to reduce any future downtime.
Also, we’re updating our client libraries with new features and bug fixes. If you haven’t tried out the Go client library, now is a good time! If you have any suggestions for our libraries, please let us know in the forums.
Here are the stats for the past week:
* 35.6 million inserts of logged data in the last 7 days * 12578 users * 8,900 online feeds (29554 feeds total)
-
Postmortem 06.07.16
Issue
We had a brief outage this morning due to a disk space issue on our Sidekiq EC2 instance. One set of log files grew to almost 20GB, which is strange because they are setup to be rotated using
logrotate
. The files should have been limited to 700MB max. According tologrotate
status, it last ran on 6-1-16, when it should run daily viacron
.Fix
logrotate
is now setup to run hourly, and we are going have monit monitor disk space on all of our EC2 instances so we can catch this issue in the future. -
New Client Library in Go
We are pleased to announce the release of a new officially supported client library for the Adafruit IO API! We now have an client library for Go. This client meets a few goals for us, and hopefully provides a useful hook into Adafruit IO for curious and interested web developers.
It’s my (Adam) first project with the IO team, and so is a good starting place for exploring both the external API and the internal systems that drive it. It’s also a good chance for me to introduce my teammates to Go which is a very pleasant language to write web-connected code in. I’m a Rubyist by trade but exploring Go for lower level and Machine-to-Machine web services. I like it.
More client libraries means broader coverage of the Adafruit IO API. As web developers, we aren’t often forced to think of the systems we build from the outside in. By making a public API and building the client libraries for it, we have a chance to see what works and doesn’t work. That’s both from a design perspective–is this API “friendly”?–and from a very practical perspective. For example, I committed two bug fixes to Adafruit IO’s core codebase while building
io-client-go
, huge success! Today, this library covers version 1 of the Adafruit IO API, but we’re hard at work on version 2.More client libraries means more open doors for new developers. Adafruit IO’s primary goal is to be the easiest way to get your Internet of Things project online. That involves a big team of people at Adafruit working at every part of the stack: engineers building new hardware and writing new firmware, makers coming up with new projects and spending a lot of time on clearly communicating what they’re doing, web developers inventing new ways of building an accessible Internet of Things platform, and, MOST IMPORTANTLY, an awesome crowd of people who can think of things to do with the tools we build that we cannot think of ourselves.
This library isn’t the ending place for anyone’s project, but it could be the starting place for all kinds of interesting work. We don’t know! That’s the point! Here, take this, we made it for you, enjoy! :D
This isn’t the first client library we’ve built and it won’t be the last. If Go isn’t your style yet, make sure to check out similar tools in Python, Javascript, and Ruby. And when you’re using the things we’ve built in the Things you’re building, feel free to talk to us and tell us what’s good, what’s bad, or what you’d like to see. Leave a note in the bug tracker, on the forum, or in the respective client library’s GitHub repository.
And please, show us what you’re making! We would LOVE to see it almost as much as (I hope) you loved to build it. Also, speaking as a new member of the Adafruit team, I have never met a group of people more genuinely committed to supporting people at every level of experience than here at Adafruit.
As always, Adafruit’s open source work is supported by the clever, creative folks who shop at Adafruit and by the community that contributes in code to any of our open source projects.
-
MQTT Time Utilities
We will be deploying a new feature to our MQTT broker tomorrow morning. We will start broadcasting the current time in two formats at
time/ISO-8601
andtime/seconds
at one second intervals. This should allow users to easily keep track of the current time from devices without real time clocks.Here are a couple examples of the payloads:
ISO-8601:
topic: time/ISO-8601 payload: 2016-06-01T21:34:12.629Z
Seconds since Unix epoch:
topic: time/seconds payload: 1464816851
-
MQTT Connection Throttle
We did some profiling of our node MQTT workers using the
--prof
flag today, and we found that our workers were spending an excessive amount of time handling MQTT connection authorization. It turns out that a few users were hammering our servers with failed auth attempts, so we decided to implement a rate limit for MQTT connection attempts.The new connection rate limit allows for 50 connection attempts in a 15 minute window, and attempts past the limit will be rejected for the remainder of the window. If you would like to comment on this change, please visit our IO forum.
-
Please welcome Adam to the Adafruit team!
Hello all you lovely makers! I am very excited to introduce myself: my name is Adam Bachman, I am here to write code and chew bubblegum, and I am all out of bubblegum! As of May 23, 2016, I am the newest member of the Adafruit team and will mainly be working with Justin, Todd, Tyler, and the rest of the incredibly talented folks making Adafruit IO the best it can be.
I’ve been a resident of Baltimore City, making my way through the world as a software developer for the last 10 years. By day building software for Fortune 500’s, startups, bootstrapped artist-loving theater makers, and a few in between. On my own time I’ve been an Adafruit customer since 2007, started a hackerspace in 2009, and I’m super into Processing and creative code in general.
You can follow me on Github or Twitter if you like, though I can’t promise to be half as interesting as the people at the middle of this incredible enterprise :D
ENOUGH ABOUT ME! I look forward to connecting with anyone crossing boundaries from software to hardware and back again. Artists, makers, hobbyists, professionals, first-timers, long-timers, indie, corporate, all of you, everyone, cats, maybe not so much dogs, whatever! I am psyched to get started, let’s make amazing things!
-
AIO Keys Backend Updates
We’ve made some more backend changes to how the AIO Keys are generated and maintained. If you run into any authentication or strange AIO Key issues please let us know as soon as possible in the IO forum or Issues Tracker.
Most of the changes were security enhancements, but we’re laying the groundwork for more features specifically related to the AIO Keys, including added administration functionality.
-
Multicolumn Index Order in Postgres
We started to notice some speed issues yesterday with certain queries in one of the largest tables (~50 million rows) in our PostgresSQL database, and we wanted to share some of the results of the investigation.
During our tests today, we noticed that the slow queries ordered by
id DESC
were running in about 5 seconds, and queries that were ordered bycreated_at DESC
were running in 0.1 milliseconds. Multicolumn indexes were present for both queries to use, andEXPLAIN ANALYZE
showed that the queries hitting those indexes with an index scan.This led to the obvious question:
wtf?
After some investigation, we found that the order of columns in the index were reversed. One had the columns defined as
(feed_id, created_at DESC)
and the other had the columns defined as(id DESC, feed_id)
. After looking at the PostgresSQL docs for multicolumn indexes, the issue was clear.It turns out that you need to define your indexes with a constraint (
feed_id
) first, so that you are only scanning a portion of the index. By definingid
first, the full index was scanned, which resulted in very slow queries. We switched the order of the columns in the index to(feed_id, id DESC)
and the queries are now running in the ~0.1 ms range, so you should notice that things are now much more responsive.Please check out the relevant docs in the PostgresSQL 9.5 manual if you would like more info about multicolumn indexes.
-
State of IO 05.01.16
We are considering a change to the way IO handles the
retain
flag on MQTT publish packets. The retain flag is used to allow the MQTT broker to retain the sent value, and will tell the server to pass it to any new subscribers as soon as they connect. We found that this feature was a little hard for people to understand at first, so we decided to force the retain flag to true for users by default. This change ensured that users always got the current state of their IO feeds as soon as they connected, without having to send a HTTP request to the REST API for the current value.The decision to force the retention of values caused issues with some users, because they lost the option to decide which values were cached. We are planning to revert this change, and give people the option to cache the values using the retain flag.
In addition to this change, we are thinking of extending the meaning of the retain flag, and also allowing users to decide which values are logged to the database. So for example, if you wanted to push out temperature values every second to your connected devices, but only wanted to log the temperature value every minute, you could do so by only setting the retain flag to true for the values you wish to log. This should allow for greater flexibility when logging, and will result in increased speed for feeds that are focused on realtime interaction. We welcome your feedback in the IO forum.
If you would like to read more about the MQTT retain flag, please check out this article on HiveMQ’s blog.
Here are the stats for the past week:
* 29.03 million inserts of logged data in the last 7 days * 10,969 users * 8,675 online feeds (24,277 feeds total)
-
REST API v2 Deployment on April 21st
On Thursday, April 21st we will be deploying Version 2 of our API. This version is quite different from our existing API V1.
IMPORTANT: Your code or sketches will need to be updated if you are using the REST API.
From now until Thursday, you will want to update your code or sketches to change ‘/api/…’ to ‘/api/v1/’ so that you continue using v1 of the API until you are ready to upgrade to the latest version.
Here are some of the highlights (not including bug fixes):
NEW
- New permission system that will allow for sharing read and write access to your feeds, groups, & dashboards with other users.
- New AWS inspired HTTP request signing to help avoid exposing the user’s AIO key over insecure connections.
- Dashboards, blocks, & triggers will be able to be modified via the REST API.
CHANGES
- Username will be a required component of the URL.
- You will no longer be able to access feeds & groups via numeric ID. Feed key & group keys will be used as the unique identifier in API v2.
- Feeds will be able to be added to many groups, and the feed’s data will be namespaced to the group the data is pushed to. You will also be able to access all of the feed’s data by accessing the feed directly.
-
Trigger Emails Temporarily Disabled
We’re temporarily disabling the email triggers until we can make them more robust in a near future update. In the meantime, the alternative would be to use our IFTTT channel, which can do pretty much the same thing as our internal trigger emails.
We want to build a much more robust system. As is, there are some weaknesses in our current design that can trigger emails to be sent far too often, or without a way for them to reset after the trigger threshold has been hit.
If you have any suggestions on what you’d like to have implemented with this feature, please let us know at the our IO forum.
-
State of IO 4.17.16
This week we will be deploying two major changes to IO. We will be deploying v2 of the REST API, and we will be moving our MQTT services from mosca to aedes. This should allow us to squeeze even more performance out of our MQTT workers, and will also allow us to support MQTT QoS 2.
Here are the stats for the past week:
* 28.69 million inserts of logged data in the last 7 days * 10,512 users * 8,077 online feeds (22,695 feeds total)
-
State of IO 4.10.16
Here are the stats for the past week:
* 30.21 million inserts of logged data in the last 7 days * 10,086 users * 7,766 online feeds (21,498 feeds total) * ~50 inserts per second via MQTT * ~5 inserts per second via REST API
After some load testing, it seems that our current server configuration is able to handle more traffic. Our current theory is that the inserts per second aren’t rising evenly with the increased online feed count because users are using IO for real-time interaction, and not data logging. Inserts per second only seem to rise with heavy and persistent data logging projects.
We have been testing the new Feather LoRa Radios with IO, and they seem to be a fantastic pair. We were able to send messages to IO through a LoRa gateway from 1.27 miles away in the rolling hills of central Maryland using a small wire antenna.
Pretty impressive for not having line of sight to the gateway!
-
State of IO 4.3.16
We added support for AWS v4 inspired request signing to IO’s v2 REST API this week. This change should allow devices that don’t support TLS/SSL to communicate with Adafruit IO without sending their AIO Key in the clear. Because the requests are signed using a HMAC, users also will be able to ensure that their requests were not manipulated by things like man-in-the-middle attacks. This change will also reduce the risk of replay attacks by including a timestamp in the signature, so the request will only be valid within a 15 minute window.
We are considering requiring signed requests for any API v2 requests that don’t use a TLS/SSL connection. If you think this is a bad idea, please let us know in the forums. We will be updating the Adafruit IO client libraries this week to support the new request signatures.
Here are the stats for the past week:
* 27.4 million inserts of logged data in the last 7 days * 9,744 users * 7,537 online feeds (20,474 feeds total) * ~50 inserts per second via MQTT * ~5 inserts per second via REST API
Inserts per second seem to be holding steady, despite the increase in online feeds. We are going to add another queue worker and monitor the inserts per second to see if that fixes the bottleneck.
-
State of IO 3.25.16
We have been working on finishing up v2 of the REST API this past week, and you can read more about that here.
We are also in the process of finishing up transitioning our frontend javascript to React from jQuery and Backbone. When combined with API v2, this change should increase performance, and also will make development easier and faster. We will post more about this change in the next few days.
Here are the stats for the past week:
* 25,951,672 inserts of logged data in the last 7 days * 9,296 users * 6,949 online feeds (19,084 feeds total) * ~50 inserts per second via MQTT * ~5 inserts per second via REST API
-
REST API v2 Development
We are currently in the process of developing version 2.0 of the Adafruit IO REST API, which should address a large portion of user requests. The current version of the REST API (v1.0) will still be available at
io.adafruit.com/api/v1/
.Here are some of the highlights (not including bug fixes):
NEW
- New permission system that will allow for sharing read and write access to your feeds, groups, & dashboards with other users.
- New AWS inspired HTTP request signing to help avoid exposing the user’s AIO key over insecure connections.
- Dashboards, blocks, & triggers will be able to be modified via the REST API.
CHANGES
- Username will be a required component of the URL.
- You will no longer be able to access feeds & groups via numeric ID. Feed key & group keys will be used as the unique identifier in API v2.
- Feeds will be able to be added to many groups, and the feed’s data will be namespaced to the group the data is pushed to. You will also be able to access all of the feed’s data by accessing the feed directly.
-
AIO Key Length Changes
We had a request in the forums to reduce the length of the AIO Key to 32 characters, and we decided to use UUID v4 (with the dashes stripped) to generate keys. Version 4 UUIDs are randomly generated, so they should work well as AIO Keys:
…after generating 1 billion UUIDs every second for the next 100 years, the probability of creating just one duplicate would be about 50%.
-
Testing Cassandra Reads
We have been writing user’s feed data to both Cassandra 3.3 and PostgreSQL 9.5 for the past couple weeks as the first step in transitioning fully to Cassandra as the primary data store for feed data. We will still be using Postgres as our primary database for relational data, but it should be much easier to scale Cassandra horizontally as the large amount of logged data increases.
Here’s the current write performance data from Cassandra’s
nodetool tablestats
:Write Count: 59051081 Write Latency: 0.012758596713919598 ms.
That’s a little over 59 million writes in the past ~17 days, with the load on a
m4.large
barely ever passing0.05
.load average: 0.01, 0.01, 0.05
Today, we have also started testing read performance in production. For now users are still receiving their data from Postgres, but we are also hitting Cassandra to see if our configuration can handle production loads. We’ll post an update once we have more info about how reads are performing.
Here’s some early info after the deploy:
Read Count: 314 Read Latency: 0.6644044585987261 ms.
-
Sending Commands to Multiple EC2 Instances Using dsh
We moved Adafruit IO’s node.js services to a group of
t2.nano
EC2 instances, and I wanted to document mydsh
setup. I used it reguarly a couple years ago for managing the backend workers when working on other services, but I had forgot how it was configured. It came in really handy when I needed to quickly check or kick anything on the servers.First, you will need to install
dsh
usingbrew
,apt-get
,yum
, etc:$ brew install dsh
You will need to make a couple config directories for your user:
$ mkdir -p ~/.dsh/group
Create a new
dsh.conf
file using your favorite text editor:$ vim ~/.dsh/dsh.conf
Paste the following config into
~/.dsh/dsh.conf
, and save the file:showmachinenames = 1 remoteshell = ssh
Now, you can create a
dsh
group for the set of servers you would like to send commands to. Create a new file calledexample
in the~/.dsh/group
folder using your favorite text editor:$ vim ~/.dsh/group/example
Enter the host names for your servers, and save the file:
example-1.adafruit.com example-2.adafruit.com example-3.adafruit.com example-4.adafruit.com
Now you can send commands (like
uptime
) to all servers in the group using the following command:$ dsh -g example -w 'uptime' example-1.adafruit.com: 14:17:44 up 17:15, 0 users, load average: 0.08, 0.03, 0.05 example-2.adafruit.com: 14:17:43 up 16:36, 0 users, load average: 0.00, 0.01, 0.05 example-3.adafruit.com: 14:17:45 up 16:41, 0 users, load average: 0.00, 0.01, 0.05 example-4.adafruit.com: 14:17:45 up 16:41, 0 users, load average: 0.00, 0.01, 0.05
Using
-w
will send the command to each server in the order they appear in the group config, and will wait for a response before continuing. If you want to send the commands concurrently to all servers in the list, use the-c
option to send the command:$ dsh -g example -c 'uptime' example-1.adafruit.com: 14:22:42 up 17:20, 0 users, load average: 0.00, 0.01, 0.05 example-3.adafruit.com: 14:22:42 up 16:46, 0 users, load average: 0.00, 0.01, 0.05 example-2.adafruit.com: 14:22:41 up 16:41, 0 users, load average: 0.00, 0.01, 0.05 example-4.adafruit.com: 14:22:42 up 16:46, 0 users, load average: 0.10, 0.05, 0.05
You can get an interactive shell for all servers in the group by using the
-c
and-i
commands together. Use CTRL-D to exit the session:$ dsh -g -c -i
-
State of IO 3.18.16
Adafruit IO has been growing steadily, and we decided to add a changelog so it’s easier for users to see what we are up to. We will be posting here reguarly whenever we add or update features, and we will also be posting stats so you have more information about the growth of IO.
We have moved IO to a handful of Amazon EC2 instances, and we are finding it much easier to deal with increased load. The individual services are now split out into separate instances, which will allow us to scale horizontally.
Here’s a screenshot of what it looks like when we are monitoring the state of the new EC2 instances:
We have added IO to the Adafruit Status Page, which will allow you to check and see if any of IO’s components are currently down. You can also follow @adafruitstatus if you would like to be notified of outages.
Here are the stats for the past week:
* 24,290,428 inserts in the last 7 days * 8,997 users * ~6,700 online feeds (~18,200 feeds total) * ~50 inserts per second via MQTT * ~5 inserts per second via REST API
« Newer
Older »