• Adafruit IoT Monthly: Detecting Water Pollution, Smart Girder, and more!

    IoT Projects

    Smart Girder - a Structural Information Display

    smartgirder

    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

    tiresdr

    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

    pothole

    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

    waterpollution

    A budget-friendly device for collecting water resources in the field and forecasting pollution levels using TinyML. - Adafruit Blog

    LoRa Mesh Network of Birdhouses

    lorabirdhouse

    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

    raspiwaterleak

    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

    wippersnappertempsensor

    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

    insteon

    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

    desiredstate

    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

    happybird

    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

    boatsafe

    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

    remotetemp

    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

    lws

    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

    airquality

    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

    solar

    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

    magicmirror

    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

    wippersnapper

    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

    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

    update-banner

    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.

    Reactive Action UI Showing Limits

    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

    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

    weatherbot

    An internet-connected weather machine that displays the current forecast using a miniature diorama - hackaday

    ML Weather Station Predicts Future Air Quality

    ml-weather

    A DIY weather station that uses machine learning to predict future air quality readings. - hackaday

    Home Applications Prototype

    everdayexperiments

    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

    pocketcloud

    A Raspberry Pi Zero W is turned into a portable off-grid NAS storage solution. - instructables

    Wireless MIDI with nRF24L01

    henhouse

    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

    offgrid

    “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

    tshwatch

    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

    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

    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

    update-banner

    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

    update-banner

    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.

    Divider and Battery Block

    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

    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

    moodtracker

    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

    covidwerkstatt

    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

    hottub

    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

    birthdayplus

    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

    matteresp

    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

    samsung

    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

    nowi

    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

    sidewalk

    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

    lorawanhad

    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

    silabs

    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

    ada2022

    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,

    Brent R.

    p.s.: If you have any feedback or want to submit your project to this newsletter, send an email to iotnews@adafruit.com.

    Projects

    birbcam

    We’ve posted a good number of IoT projects which combine Machine Learning with the capabilities of the internet….

    grafana-flow

    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.

    Stories and News

    I’ve enjoyed reading and learning about…

  • Adafruit IoT Monthly: Coffee Routine, IoT Cat, ESP32-S2 Feather, and more!

    IoT Projects

    Automating a Morning Coffee Routine

    coffee-automation

    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

    wifi-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

    iot-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

    smart-flowerpot

    Sasa details their experience integrating a watering system into a scratch-built home automation system. - HackADay

    Extracting Data from a Smart Scale

    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

    lock-key

    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

    robot-cat-class

    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

    zephyr-best-practices

    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

    production-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”

    esp32-h2

    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

    atomic

    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

    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

    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

    esp32-s3-devkit

    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

    grafana-flow

    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

    turtle

    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

    plantweight

    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

    iotalarmclock

    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

    watertracker

    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

    miffy

    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

    nabaztag

    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

    satellite

    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

    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

    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

    thingy91

    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

    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

    smart-doorbell

    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

    batteryci

    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

    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

    congo

    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

    horses

    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

    silabs

    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

    amber

    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

    eu

    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

    stressmonitor

    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

    threemeters

    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

    macropad

    Using a USB keypad to control IoT smart-things over a local home network. - Adafruit

    Pet Food Monitor with Computer Vision

    petfood-monitor

    Determining the level of a cat’s food bowl using computer vision. - projects-raspberry

    Hacking the Things Network Indoor Gateway

    hacking-ttig

    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

    smart-farm

    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

    parkit

    A device that can monitor Galvanic Skin Response, Microphone and Gyroscope data, and send it to AWS cloud. - Hackster

    The 603-200 Watch

    603watch

    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

    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?

    wildfire

    An investigation into IoT solutions for monitoring wildfires in the Western United States. - EETimes

    evcharger

    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

    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

    eonair

    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

    micropythongarden

    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

    mlspeedtrap

    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

    homekitfence

    A DIY solar-powered fence door monitoring device. The door’s state is monitored with Apple HomeKit. - movingelectrons

    Ikea VINDRIKTNING meets MQTT

    ikea

    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

    firemesh

    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

    iotbeginners

    A free, open-source, 12 weeks/24 lesson IoT curriculum designed for beginners by the Azure IoT team. - GitHub

    Light Gestures by Timi Oyedeji

    lightgestures

    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?

    echodot

    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

    avnettrends

    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

    toit

    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

    wipper

    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

    fertilizerproject

    Monitoring nitrogen, phosphorous, and potassium for indoor plants and crops. - hackster.io

    Canari - An Air Quality Lamp

    canari

    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

    internetofbees

    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

    slackplant

    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

    QMesh is a new voice network protocol project based on the LoRa protocol instead of FM voice. - hackaday.io

    E-Ink Newspaper

    einknewspaper

    A wall-mounted e-ink newspaper that fetches the news every morning. - gregraiz

    Optimizing a Raspberry Pi for Off-Grid Power Consumption

    pipower

    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

    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

    fragattack

    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?

    ultrawideband

    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

    improvwifi

    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

    tinytuya

    A Python module to interface with the popular Tuya WiFi devices. - GitHub

    Adafruit IO News

    Adafruit IO Stats

    aio_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

    nightbunny

    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

    weatherrainfall

    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

    petbowl

    Keep an eye on your pet’s water bowl using the FunHouse development board and Home Assistant. - Adafruit Learning System

    Monitoring Baby Chicks

    babychicks

    Derral Garrison built a monitoring system for their cute baby chickens. - Adafruit Blog

    Telegram-enabled Thermal Printer

    telegramprinter

    Control thermal printers via the Telegram app to print out notes, shopping lists, and more. - Hackaday.io

    Mail Slot Detector

    mailslot

    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

    filamentbox

    Increase the shelf life of 3D printer filament by monitoring its storage container. - Adafruit Blog

    Soil moisture monitoring in a flower garden

    flowergarden

    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

    tfwdevice

    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

    backoffjitter 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

    aio_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

    pool-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

    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

    weather-sculpture

    A freeform circuit sculpture that displays the current weather forecast. - hackaday.io

    Basics of Embedded and IoT Development with Python

    embedded-python

    An introduction to using Python for embedded IoT development. - kalebujordan.dev

    FunHouse Motion Detecting Lights with LIFX Bulbs

    funhouse-lifx

    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

    smart-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

    iot-remote

    A WiFi infrared remote control for your home entertainment system. - Adafruit Learning System

    ESP32 Soil Moisture Sensor Probe

    soil-probe

    A soil moisture sensor with an ESP32 built-in for processing and networking. - hackaday.io

    WiFi Motion Sensor

    wifi-motion

    Motion sensor with email notifications. - hackaday.io

    IoT News and More!

    A look at the fragmented landscape for IoT Connectivity

    twilio

    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?

    edge-ai

    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

    esp32-c6

    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

    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-screenshot

    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

    aio_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

    esp-earings

    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

    contentful

    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

    rp2040wifi

    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

    magtagvax

    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

    shadowbox

    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

    nodelora

    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

    blynk

    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

    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

    m7metro

    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

    aio_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

    birbcam

    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

    watermeter

    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

    rp2040lorawan

    Add LoRaWAN support to the Raspberry Pi Foundation’s new RP2040 chip. - LeMaRivaTech

    DIY Home Assistant Sensor with CircuitPython

    homeassistant

    Build and program a sensor for Home Assistant using MQTT and CircuitPython. - Adafruit Learning System

    Speaker Snitch spies on your Smart Speaker

    speakersnitch

    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

    2020-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

    nano-2040

    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

    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?

    wippersnapper-1

    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

    aio_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

    windowsense

    A Raspberry Pi project which integrates with your thermostat to display the perfect time to open your windows. - GitHub

    Continuous Integration Test Status Light

    cistatus

    Visually display the result of continuous integration tests with this cellular IoT status light. - Hackster

    Google Calendar Event Display

    magtagcal

    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

    treesensor

    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

    freezermonitor

    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

    twitterhoodie

    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

    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?

    echo-flex

    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

    galaxy-upcycle

    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

    aio_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

    3kthanks

    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

    c19track

    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

    globelamp

    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

    monster

    A cute monster which repeats what the Internet says. What could possibly go wrong? - Instructables.

    Connected Weather Cloud Lamp

    cloudlamp

    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

    pyportalbusydisplay

    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

    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

    lorawangarden

    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

    aio_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

    birdfeeder

    An internet-connected bird feeder system with a temperature-controlled bird bath. - HackADay.io

    IoT Air Quality Sensor Enclosure

    silo

    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

    msteamsled

    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

    iotlogging

    HackADay published a list of IoT logging services for absolute beginners. - Hackaday

    Integrating The Things Network with Azure IoT Central

    azurettn

    A full guide on connecting LoRaWAN devices to the Microsoft Azure IoT service. - Hackster

    DIY Google Assistant with the Raspberry Pi BrainCraft HAT

    googleassistant

    Build your own open-source Google Assistant device - Adafruit Learning System

    Blinds Controller with HomeBridge MQTT

    blindscontroller

    A retrofit ESP-powered controller for home-blinds compatible with Apple HomeKit. - Hackster

    IoT News and More!

    TinyML and IoT for Conservation Efforts

    tinyml

    Developing an IoT solution to monitor threatened mammals using machine learning - Hackster

    10 Reasons for ripping out a £6k lighting system

    zwaverip

    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

    magtag

    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

    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

    hatroy

    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

    iorefresh

    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

    aio_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

    update-banner

    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.

    feed-page

    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: light-mode-dashboard

    Dark Mode: dark-mode-dashboard


    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

    co2clock

    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

    twitteriot

    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

    irrigator

    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

    aqi

    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

    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

    pingpong

    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

    threatmodel

    While building a pollution-monitor, @dcuthbert wrote an excellent twitter thread about threat modeling their IoT sensor - Twitter

    tplink

    Tearing down an inexpensive LED filament WiFi bulb - ElectroBob

    NEW IoT Hardware: Adafruit Metro ESP32-S2

    feathers2

    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

    metros2

    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

    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

    aio_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

    matrix-portal-header

    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

    moon-phase-clock

    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

    iot-power-outlet

    Control fans, lights, or any appliance using a microcontroller and Adafruit IO - Adafruit Learning System

    CircuitPython Support for ESP32-S2

    esp32-s2-boards

    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

    solar-sprinkler

    A DIY WiFi lawn sprinkler powered by the sun. - movingelectrons

    RGB Matrix Automatic Youtube ON AIR Sign

    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

    air-quality-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

    tensorflow-lite-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

    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

    hacked-iot-coffee-machine

    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

    amazon-sidewalk

    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

    io-basics-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

    AIO-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

    climatefeather

    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

    mediacontroller

    @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

    freezer

    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

    lorawangarden

    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

    rotaryphone

    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

    bell

    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

    loon

    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

    simdjson

    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

    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

    mitsensors

    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

    linuxconf

    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!

    io-triggers

    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

    aio_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

    update-banner

    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."
    
    }
    

    trigger-ui


    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

    SmallStoreWarningBLE

    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

    PyPortalHomeOffice

    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

    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

    ServerlessLockbox

    A small security lock you can text, powered by Amazon AWS Serverless. - Amazon

    Vision Alert System with Azure IoT Edge and Jetson Nano

    VisionAzureJetson

    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

    FishTank

    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

    Solarblog

    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

    PorchLight

    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

    GForceHelmet

    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

    SolarWeatherStation

    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

    intentparserapi

    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

    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

    staceyoniot

    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

    AIO Trigger Update

    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

    AIO 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

    update-banner

    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.

    trigger-ui


    Get in touch with us on the Adafruit IO forums or on Discord if you have any questions.

  • IO Updates - New Trigger Functionality

    update-banner

    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!

    trigger-ui

    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

    update-banner

    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):

    update-banner

    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

    TNG

    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

    FermenterFriend

    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

    VintageSmartTerminal

    Repurposing a ADM-3A terminal as a home automation hub and display. - HackADay

    DIY Alexa-Controlled Air Conditioner

    AlexaAC

    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

    KindleHomeDisplay

    Repurpose your kindle as an e-ink display for your Home Assistant setup. -GitHub

    Minecraft Friend Notification Sign

    MinecraftDisplay

    This internet-connected sign lights up whenever your friends are online in your favorite Minecraft server. - Youtube

    ESP32 Micropython Sensor and Web Server

    ESP32Server

    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

    free5gc

    The free5GC project is building an open-source 5G mobile core (5GC) network. - Free5GC

    ClusterDuck Protocol - LoRa, WiFi, and Bluetooth Mesh Network

    clusterduck

    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

    GNUHealth

    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!

    AIO Stats

    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

    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

    M&M Launcher

    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

    cosmo clock

    This clock changes color every time a new astronaut enters space. - Instructables

    officeAir: A Google Sheets Logger with Raspberry Pi

    officeAir Logger

    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

    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

    Metar Display

    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

    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

    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

    BLE 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

    modern 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

    folding

    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

    service shakedown

    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

    teensy4.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

    iot-growth

    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

    smart watch esp32

    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

    homekit esp32

    Makers can now use the HomeKit ADK for ESP32 to prototype non-commercial smart-home devices. -Espressif

    Adafruit IO Stats and more!

    AIO Stats

    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

    QuarClock

    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

    Intercom

    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

    NERFFootball 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

    AlarmSystem

    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

    Rockblock

    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

    remote

    Reverse engineering a ceiling fan remote for home automation. - HackaDay

    Wearable Continuous Temperature Monitor

    Wearabletherm

    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

    weatherlamp

    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

    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

    folding

    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

    smartspeaker

    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

    smartspeaker

    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

    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

    Sharp’s online store server went down, taking smart gadgets including air conditioners with it. - The Verge

    New ESP32 AI Development Board, ESP32-Korvo

    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?

    insectbrains

    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

    lpwan

    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!

    AIO Stats

    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

    COVID19

    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.

    COVID19

    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 fulfillment

    Essential manufacturing including:
    Microelectronics/semi-conductor

    Essential health care operations including:
    Medical supplies and equipment manufacturers and providers

    We 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

    avoripe

    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

    covid19api

    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

    cassette

    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

    space station

    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

    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

    ethernet

    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”?

    edge devices tweet

    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

    Eye on NPI

    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?

    adafruit io video

    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

    watchy

    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

    iot design week video

    Ladyada and PT talked about Machine Learning and Artificial Intelligence with Microchip Technology. - YouTube

    Espressif ESP32-S2 Sample Boards Shipping

    TinyUSB S2

    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 Thingy

    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!

    AIO Stats

    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

    Smart Heating

    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

    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

    Clue Bike

    The Adafruit Clue is “the bike-mountable commuter computer [Jose Castillo] has always dreamed of”. - @josecastillo

    MicroPython-powered Lightbulb

    UPy Bulb

    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

    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

    AIO Google Assistant

    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

    ESP32-CAM 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

    Pet Planter

    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

    IoT Cloud 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

    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

    Cloud 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 CEO

    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

    IoT 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

    IoT Cloud Arduino

    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

    Pi 4 Rev 1.2

    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

    TTN Global Join Server

    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

    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!

    AIO Stats

    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

    Iostats

    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

    MQTT 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

    Kinetic Courier

    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

    Alexa Pumpkin

    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

    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

    PyPortal MQTT

    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

    MQTT Web Controller

    @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 CEO Note

    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

    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

    LoRa 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 H7 Pro

    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 W600

    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

    NRF52 OTA Firmware

    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

    Pocket ESP32

    A pocket-sized ESP32 with a 300uW SHARP Memory LCD. - Hackaday.io

    ESP-AHT-10

    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

    All the IoT Digi-Key

    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

    GitHub Education 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

    OpenCV Robot

    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

    CircuitPython 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

    Globe

    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 Flowchart

    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

    AQ Monitor

    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

    PyPortal Smart Switch

    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

    Arduino Google IoT

    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 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.

    Read the full blog post here…

    Ring Cameras are Ransomed

    Ring Camera

    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

    FBI Press Release

    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

    WiFi and LoRaWAN

    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

    Project Connected Home

    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 Smart Home App

    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 IoT 2020 Stock Photo

    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

    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

    HackADay Talk Screenshot from Youtube

    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

    MQTT 5 Spec Screenshot

    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

    Sensor Featherwing

    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

    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

    Kiosk Mode

    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

    PyPortal Family Picture

    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

    DigiKey Home Kit

    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.

    Read more on Mozilla IoT…

    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

    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.

    Read more on HackADay…

    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.

    new header with links to Adafruit sites and to sections of Adafruit IO

    The header includes links to other Adafruit sites and to other pages in io.adafruit.com.

     

    Profile menu "flyout" showing with links to other pages

    Click on a menu heading, like “Profile”, to show links to the rest of your data on Adafruit IO.

    The new Feeds, Dashboards, and Triggers menus also include quick links to your most recently updated feeds, dashboards, and triggers.

    Feeds menu "flyout" with links to recently updated feeds

    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.

    the new old footer, now with links to IO pages and a random quote

    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.

    FabGL - Advanced graphics for the ESP32 (VGA, PS/2, keyboard/mouse, sound engine, game engine, ANSI/VT terminal)

    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.

    Check out our learning guide for schematics, files, and how to get started using AirLift within minutes.

    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.

    Head over to the product page to pick one up - note that there are three versions of this with different amounts of RAM.

    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

  • Adafruit IOT Monthly - May 2019

    AIO Update: Features, Stats, and More!

    aio-update

    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!

    io-plus-plan

    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!

    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

    airlift-esp32

    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

    airlift-m4

    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

    voltage-current

    Darian Johnson “needed a low cost way to measure current requirements and battery drain over time” for one of his wearable projects. He also had a “TON of Adafruit Feathers and FeatherWings, so [he] decided to use components [he] already had, plus an Adafruit INA219 FeatherWing to build a voltage and current logger which logs to SD card and Adafruit IO

    Smart HDMI Switcher with Adafruit IO and IFTT

    hdmi-switch

    Scriptmonkey_ on twitter did a bit of hacking this past Easter weekend connecting their HDMI switcher to the internet. To avoid the remotes piling up on their coffee table, or getting up from their couch, they used an ESP8266 connected to an Amazon Alexa over If-This-Then-That to voice-control their TV’s inputs.

    Adafruit IO Raspberry Pi Cloud Camera Tutorial

    Interested in sending different types of data to Adafruit IO? IOTDesignPro published a very detailed tutorial for streaming the camera’s images (as data) from a Raspberry Pi using MJPG-streamer over the internet to an Adafruit IO Dashboard.

    Mini IOT Display with PushBullet Notifications

    iot-display-mini

    Labsud built a Mini Connected Display to show messages received from an Adafruit IO Feed using a EspressIf WeMos D1 Mini and a ST7789 TFT display. They also set up IFTTT to display notifications from their smartphone to their display with Adafruit IO’s IFTTT integration.

    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

    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.

    Read the guide here…

    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.

    Read the guide here…

    PyPortal Tides Viewer

    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.

    Read the guide here…

    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.

    Read the guide here…

    PyPortal Weather Station

    weather-station

    Harness the power of nature with your PyPortal by building an internet-connected Weather Station!

    Read the guide here…

    Adafruit IO Basics: AirLift

    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!

    Read the guide here…

    Multi-Sensor IoT Environmental Sensor Box With CircuitPython

    iot-box

    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.

    Read the guide here…

    Around the Internet

  • 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.

    Change your IO+ plan link highlighted

    Account changes form

    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.

    Preview account changes

    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.

    Read more…

    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.

    Read more…

    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 😉

    Read more…

    IOT Office Door Sign using PyPortal

    Mike Renfro designed a custom office door sign using the PyPortal to display his current status and the status of his university’s high-performance-computing clusters

    Blood Glucose on a PyPortal

    Scott Hanselman is displaying his blood glucose levels in real-time from a nightscout software 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.

    Read more…

    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.

    Read more…

    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!

    Read more…

    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.

    Read more…

    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.

    Read more…

    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

    [![youtube still](/blog/images/2019-03-28-yt-still.png)](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.

    New gauge and line charts on an Adafruit IO dashboard

    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 the created_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: api-pagination.png

    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

    Adafruit 2019 1369

    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!

    Adafruit 2019 1367

    Tons of guides to get you started with the Internet of Things - learn.adafruit.com

    Adafruit 2019 1368 Adafruit IO ToS: No spam, no mining your personal data, easy to read and understand terms of service/use, etc.

    2016-09-12-Settings

    Want to export the Data from your account ASAP? It’s your data.

    940 Lrg-1 An Internet of Things Bill of Rights - Adafruit.

    Adafruit 2019 1370

    Adafruit’s blog of all the projects, resources, and community projects, tagged with #adafruitio & the adafruit.io changelog’ blog’

    Adafruit 10000 Discord Hero

    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

    https://cdn-learn.adafruit.com/assets/assets/000/057/153/original/adafruit_io_iopython.png?1530802073

    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.

    The latest version of Adafruit IO Python (2.1) includes updated API and MQTT clients for using Adafruit IO’s random data and weather services.

    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.

    Read more..

    Adding a WiFi Co-Processor to CircuitPython

    Adding a WiFi Co-Processor to CircuitPython Adafruit

    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

    swerv-core

    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.

    Read more on Business Wire

    TWIST is DIY Tweeting Weather Station

    twist-image

    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.

    Read more

    IoT Camera Mover

    enter image description here

    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.

    Read more

    The Internet of Unprofitable Things (never hardcode what you don’t own into an IoT device)

    epic-iot-fail

    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.

    Read more..

    How to control a device with a Kronaby smartwatch with IFTTT

    How to control a device with a Kronaby smart watch

    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.

    Read more…

    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.

    IFTTT applet that makes a web request

    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.

    service link in the IO 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.

    External Service Integrations home 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.

    click to download video

    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 an OFF 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.

    indicator block settings with conditions highlighted

    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.

    indicator condition in given range

    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.

    indicator condition in set

    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.

    sample image for upload test image

    image upload testing in block editor 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.

    Sharing link in the sidebar on a full-browser feed page

    Sharing form on a full-browser feed page

    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.

    new user sharing invite email

    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:

    existing user sharing invite email

    And a link to the sharing invitation review page:

    reviewing a sharing invitation from another user

    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.

    sharing review page

    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.

    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 from json.last_value to json.data.value to access your feed’s data. After a few months of this new MQTT JSON output format, we will deprecate the last_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

    PythonIOLogo

    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 the retain 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

    ArduinoIOLib

    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, and time/ISO-8601.
      • Example for subscribing to all three of the feed subscriptions added to examples/adafruitio_17_time_subscribe/adafruitio_17_time_subscribe.ino

    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.

    Line chart with hover legend displayed

    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!

    Profile page with billing cycle change highlighted

    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 to abachman/f/counter/get and immediately receive a message on abachman/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.

    Screenshot of feedback form in Firefox

    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.

    Screenshot of public pages Firefox

    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:

    2017-10-31

    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 like username/feeds/feed_key. From this point in time forwards, however, data published to username/feeds/group_key.feed_key will always only be sent to subscribers to username/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:

    2017-10-31

    “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 to abachman/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 the client. At this moment it’s only the client’s self-reported MQTT id. 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.

    IO Monitor with /clients feed

    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 a clientid argument, my code looks like this:

    Adafruit MQTT Client with custom clientid

    Which shows up on my monitor page with the custom clientid value!

    IO monitor with custom clientid

    Choosing a client ID value

    Now, not just any client ID will do, there are a few guidelines:

    1. Stick with printable bytes, anything else won’t be helpful for tracking.
    2. 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.
    3. 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

  • 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+!

    Say hello to IO+

    Here is what’s coming (we have not decided on a date yet!):

    1. For a flat $10 per month, you can subscribe to IO+ and get unlimited feeds, unlimited dashboards, and two months of data storage.
    2. 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.
    3. 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.
    4. 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:

    New landing page

    An updated landing page. Way more information and an attractive new design.

    New site navigation

    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.

    New feeds page

    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.

    New user profile page

    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.

    Updated account data download

    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.

    Power 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

  • 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

    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.

    Public Feed

    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. Replace USERNAME and FEED_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.

    Feed Key

    Date Conversion

    Next, we will convert the created_at column from a string to datetime, 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()
    

    Pandas Line

    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')
    

    Pandas Bar

    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:

    Feed Select

    Then, click the download button below the chart:

    Download Feed

    A modal will pop up and allow you to download your feed as CSV, Excel, JSON, or XML:

    Feed Format

    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.

    Download All

    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

    Jenkins CI

    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.

    Travis CI

    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.

    Compatibility Matrix

    Here’s an example of the README output:

    Compatibility README Example

    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.

    Hardware

    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:

    Jenkins Workflow

    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.

    Jenkins Stage View

    TAP results are also parsed and attached to each build:

    Jenkins TAP View

    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 like toInt(), toBool(), & toFloat() to easily convert received messages to the appropriate data type. The included adafruitio_05_type_conversion example demonstrates converting to and from all available types.

    Updating to v2.0.0

    IO Library

    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, and v0.16.0 of the Adafruit MQTT Library using the Arduino IDE’s Library Manager.

    MQTT Library

  • 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.

    MQTT Graph

    This week Adafruit IO passed the 10,000 online feeds milestone!

    10k Online Feeds

    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:

    1. 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 “-“.
    2. Collapse whitespace and replace with “-“.
    3. Collapse all instances of “-“ into a single “-“ and remove them from the beginning and end of the string.
    4. 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 and abachman/f/beta-test are nicer and easier to remember than https://io.adafruit.com/abachman/feeds/588995 or abachman/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 where username should be replaced with the username of the account that owns the Feed and identifier 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 the identifier 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 given identifier 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:

    1. Find the Feed belonging to username whose Key is exactly the same as identifier.
    2. If no Feed is found, convert the given identifier using the Name-to-Key translation (described above) and find the Feed belonging to username whose Key is exactly the same as the converted value.
    3. If no Feed is found, find the Feed belonging to username whose Name is exactly the same as identifier.

    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 to username/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 matches light-switch, which already exists. And controls the blender. Which should not turn on unexpectedly when the room gets dark :P

    This 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 to username/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 at username/f/Light Switch, the old subscriber at username/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 the adafruitio_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 the mqtt_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:

    standard mqtt flow

    Adafruit IO’s message flow is a bit more complicated, and looks something like this:

    adafruit io mqtt flow

    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 the adafruitio_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 the adafruitio_secure_esp8266 example to get started.

    example

    The main changes to the standard ESP8266 example are that WiFiClientSecure is used in place of WiFiClient, and port 8883 is used instead of MQTT port 1883. The sketch also checks the fingerprint for the io.adafruit.com certificate using the verifyFingerprint 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 to logrotate status, it last ran on 6-1-16, when it should run daily via cron.

    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.

    Current status:
  • 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 and time/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 by created_at DESC were running in 0.1 milliseconds. Multicolumn indexes were present for both queries to use, and EXPLAIN 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 defining id 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.

    LoRa IO

    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.

    LoRa IO

    Pretty impressive for not having line of sight to the gateway!

    LoRa Mesurement

  • 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 passing 0.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 my dsh 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 using brew, 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 called example 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:

    IO on EC2

    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.

    Adafruit Status Page

    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