# itsaSNAP Daily Weather Forecast Board

## Overview

![](https://cdn-learn.adafruit.com/assets/assets/000/132/351/medium800/leds_IMG_6734.png?1726493573)

You can build a wonderful weather display using an Adafruit Matrix Portal S3 and a 64x32 RGB LED Matrix. Using CircuitPython, you can create a display that shows the current temperature and weather conditions using custom BMP graphics. The weather displayed is the same as your iPhone's weather so you don't need a separate (paid/subscription) weather service and no matter where you live, it will have the exact weather for your location.

The project uses Adafruit IO to store weather data, itsaSNAP to send weather data to Adafruit IO from your iOS device, and Apple shortcuts to automate itsaSNAP functions.&nbsp;

Warning: You'll need to use the Matrix Portal S3 for this project to work, will will not work with the Matrix Portal M4!

### itsaSNAP for iOS

itsaSNAP is a simple iOS app designed for exploring [Adafruit IO](https://io.adafruit.com/). It allows you to send data to your&nbsp;[Adafruit IO feeds](https://learn.adafruit.com/adafruit-io-basics-feeds). You can also link it to control or monitor your internet-connected projects. This lets you control and check Adafruit devices from your phone, anywhere.&nbsp;

It also allows us use of Apple's Shortcuts app to create a code-free automation from your iOS device.

![leds_IMG_3934490EC5EB-1.jpeg](https://cdn-learn.adafruit.com/assets/assets/000/132/348/medium640/leds_IMG_3934490EC5EB-1.jpeg?1726493123)

Primary: This project works with Apple devices. There is no Android app at this time.

## Parts

The following products and parts are required to complete this project:

### Adafruit Matrix Portal S3 CircuitPython Powered Internet Display

[Adafruit Matrix Portal S3 CircuitPython Powered Internet Display](https://www.adafruit.com/product/5778)
Folks love our [wide selection of RGB matrices](https://www.adafruit.com/category/327) and accessories&nbsp;for making custom colorful LED displays... and our RGB Matrix Shields and FeatherWings can be quickly soldered together to make the wiring much easier. But what if we made it...

In Stock
[Buy Now](https://www.adafruit.com/product/5778)
[Related Guides to the Product](https://learn.adafruit.com/products/5778/guides)
![Video of Adafruit Matrix Portal S3 linked up to a matrix displaying the "Adafruit Matrix Portal" in white letters and red, green and blue circles jumping around. ](https://cdn-shop.adafruit.com/product-videos/640x480/5778-06.jpg)

### 64x32 RGB LED Matrix - 3mm pitch

[64x32 RGB LED Matrix - 3mm pitch](https://www.adafruit.com/product/2279)
Bring a little bit of Times Square into your home with this sweet 64 x 32 square RGB LED matrix panel. These panels are normally used to make video walls, here in New York we see them on the sides of busses and bus stops, to display animations or short video clips. We thought they looked...

Out of Stock
[Buy Now](https://www.adafruit.com/product/2279)
[Related Guides to the Product](https://learn.adafruit.com/products/2279/guides)
![Two white hands hold out an assembled and powered on 64x32 RGB LED Matrix Panel - 3mm pitch. The matrix displays "Adafruit Industries LED MATRIX! 32x64 *RGB*"](https://cdn-shop.adafruit.com/640x480/2279-00.jpg)

### Vertical Wall Power Supply with USB C - 5V 3A Output and Switch

[Vertical Wall Power Supply with USB C - 5V 3A Output and Switch](https://www.adafruit.com/product/5801)
We love the Raspberry Pi 4 and 5, with their fancy new USB Type C power connectors. Now we have an even&nbsp;_better_&nbsp;power supply that can be used with either Pi 4 or even a Pi 5 with 5V output, 3A of current to handle builds with accessories and displays. The vertical-style plug...

In Stock
[Buy Now](https://www.adafruit.com/product/5801)
[Related Guides to the Product](https://learn.adafruit.com/products/5801/guides)
![5V 3A Switching Power Supply with USB C](https://cdn-shop.adafruit.com/640x480/5801-02.jpg)

### USB Type A to Type C Cable - approx 1 meter / 3 ft long

[USB Type A to Type C Cable - approx 1 meter / 3 ft long](https://www.adafruit.com/product/4474)
As technology changes and adapts, so does Adafruit. This&nbsp;&nbsp; **USB Type A to Type C** cable will help you with the transition to USB C, even if you're still totin' around a USB Type A hub, computer or laptop.

USB C is the latest industry-standard connector for...

In Stock
[Buy Now](https://www.adafruit.com/product/4474)
[Related Guides to the Product](https://learn.adafruit.com/products/4474/guides)
![Angled shot of a coiled black, USB-C to USB-A cable.](https://cdn-shop.adafruit.com/640x480/4474-02.jpg)

Optional:

### Adafruit IO+ Subscription Pass – One Year

[Adafruit IO+ Subscription Pass – One Year](https://www.adafruit.com/product/3792)
The all-in-one Internet of Things service from Adafruit you know and love is now _even better_ with IO+. The 'plus' stands for MORE STUFF! More feeds, dashboards, storage, speed. Power up your [Adafruit IO](https://io.adafruit.com/) with the $99 pass for 1 year of the...

In Stock
[Buy Now](https://www.adafruit.com/product/3792)
[Related Guides to the Product](https://learn.adafruit.com/products/3792/guides)
![Text image that reads "IO+"](https://cdn-shop.adafruit.com/640x480/3792-01.jpg)

# itsaSNAP Daily Weather Forecast Board

## Get Started with Adafruit IO

Adafruit IO is integrated with&nbsp;your&nbsp;[adafruit.com account](https://accounts.adafruit.com/)&nbsp;so you don't need to create yet another online account! You need an Adafruit account to use Adafruit IO because to make sure the data you upload is available to only you (unless you decide to publish your data).

## I have an Adafruit.com Account already

**If you already have an Adafruit account, then you already have access to Adafruit IO**. It doesn't matter how you signed up, your account will make all three available.

To access Adafruit IO, simply visit [https://io.adafruit.com](https://io.adafruit.com) to start streaming, logging, and interacting with your data.

## Create an Adafruit Account (for Adafruit IO)

An Adafruit account makes Adafruit content and services available to you in one place. Your account provides access to the [Adafruit shop](https://www.adafruit.com/), the [Adafruit Learning System](https://learn.adafruit.com/), and [Adafruit IO](https://io.adafruit.com/). This means only one account, one username, and one password are necessary to engage with the content and services that Adafruit offers.

If you do not have an Adafruit account, signing up for a new Adafruit account only takes a couple of steps.

Begin by visiting [https://accounts.adafruit.com](https://accounts.adafruit.com).

**Click the Sign Up button** under the "Need An Adafruit Account?" title, below the Sign In section.

![](https://cdn-learn.adafruit.com/assets/assets/000/132/335/medium800/leds_adafruit_io_Create_account_sign_in_up_page.png?1726484777)

This will take you to the **Sign Up** page.

 **Fill in the requested information,** and **click the Create Account button.**

![](https://cdn-learn.adafruit.com/assets/assets/000/132/361/medium800/leds_Screenshot_2024-09-16_at_1.50.59%E2%80%AFPM.png?1726509169)

For example, **to begin working with Adafruit IO, click the IO link** between the **Forum** and **LIVE**! Links.&nbsp;

That's all there is to creating a new Adafruit account and navigating to Adafruit IO.

# itsaSNAP Daily Weather Forecast Board

## Create an Adafruit IO Feed

Adafruit IO's main feature is creating feeds to write or read data in a centralized place. In this project, you will create an Adafruit IO feed to send and read weather data to.

In a web browser, navigate to [io.adafruit.com/feeds](https://io.adafruit.com/feeds) and **click "+ New Feed"** &nbsp;

![](https://cdn-learn.adafruit.com/assets/assets/000/132/336/medium800/leds_Screenshot_2024-09-16_at_7.18.03%E2%80%AFAM.png?1726485548)

Give your new feed a name. The description is optional. Click&nbsp; **Create** to create the new feed.

![](https://cdn-learn.adafruit.com/assets/assets/000/132/337/medium800/leds_Screenshot_2024-09-16_at_7.20.28%E2%80%AFAM.png?1726485831)

Under **My Feeds** , you should see the&nbsp; **weather\_feed** you created. Take note of your feed key, which is located here; you will need it later.

![](https://cdn-learn.adafruit.com/assets/assets/000/132/338/medium800/leds_Screenshot_2024-09-16_at_7.25.53%E2%80%AFAM.png?1726486112)

# itsaSNAP Daily Weather Forecast Board

## Download the ItsaSnap by Adafruit App

This section will guide you through downloading and installing the ItsaSnap by Adafruit app.

## Download and Install ItsaSnap

To install and download ItsaSnap for your iOS device,

1. **Open the App Store**.
2. **Tap** on the **"Search" icon** at the bottom of the screen.
3. **Type "ItsaSnap by Adafruit" or "ItsaSnap"** in the search bar and **tap "Search".**
4. Locate the **ItsaSnap**** &nbsp;app** in the search results and tap on it

![](https://cdn-learn.adafruit.com/assets/assets/000/130/658/medium800/adafruit_io_IMG_5711-ezgif.com-resize-2.jpg?1718123186)

&nbsp; &nbsp; 5. **Tap** the **"Get" button** to download and install the app on your device.&nbsp;

You may be prompted to enter your Apple ID password or use Face ID/Touch ID to confirm the installation

![](https://cdn-learn.adafruit.com/assets/assets/000/130/659/medium800/adafruit_io_IMG_5711-ezgif.com-resize-crop.jpg?1718123294)

After you have downloaded and installed ItsaSnap, open the app.

![](https://cdn-learn.adafruit.com/assets/assets/000/130/637/medium800/adafruit_io_adaSnap5-ezgif.com-resize.png?1718070937)

You will need to enter your&nbsp; **Adafruit username** and **Adafruit IO Key** (which is _different_ from your Adafruit account password).

Your Adafruit IO key is a long string of letters and numbers. To make it easier to add to the app, we've also included a QR code scanner that allows you to easily copy the Adafruit IO Key from the Adafruit IO website to the app.

![](https://cdn-learn.adafruit.com/assets/assets/000/130/660/medium800/adafruit_io_qrbuttonscan.png?1718123519)

On the ItaSnap app, the QR code scanner is located below the Adafruit IO Key and above the login button. To access it, press the ' **Scan QR code for IO Key**' button. This will open the QR code scanner.

![](https://cdn-learn.adafruit.com/assets/assets/000/130/662/medium800/adafruit_io_IMG_5702-ezgif.com-crop.png?1718123632)

To find the QR code for your Adafruit IO account, [navigate go to the overview page](https://io.adafruit.com/overview). Once there, click the yellow button with a key in the center (it's next to the "New Device" button) to reveal your Adafruit IO Key.&nbsp;

![](https://cdn-learn.adafruit.com/assets/assets/000/130/640/medium800/adafruit_io_Screenshot_2024-06-10_at_9.42.20%E2%80%AFPM.png?1718072559)

After clicking it, a window with your information will appear. Then, find the QR code and scan it, and log in.

![](https://cdn-learn.adafruit.com/assets/assets/000/130/653/medium800/adafruit_io_Pasted_Image_6_11_24__11_55_AM.png?1718121312)

# itsaSNAP Daily Weather Forecast Board

## Install CircuitPython

[CircuitPython](https://github.com/adafruit/circuitpython) is a derivative of [MicroPython](https://micropython.org) designed to simplify experimentation and education on low-cost microcontrollers. It makes it easier than ever to get prototyping by requiring no upfront desktop software downloads. Simply copy and edit files on the **CIRCUITPY** drive to iterate.

## Set up CircuitPython Quick Start!

Follow this quick step-by-step for super-fast Python power :)

Info: 

[Download the latest version of CircuitPython for this board via circuitpython.org](https://circuitpython.org/board/adafruit_matrixportal_s3/)
## Further Information

For more detailed info on installing CircuitPython, check out [Installing CircuitPython](https://learn.adafruit.com/welcome-to-circuitpython/installing-circuitpython).

 **Click the link above and download the latest UF2 file.**

Download and save it to your desktop (or wherever is handy).

![led_matrices_Save_to_Desktop.png](https://cdn-learn.adafruit.com/assets/assets/000/095/075/medium640/led_matrices_Save_to_Desktop.png?1601050695)

Plug your MatrixPortal S3 into your computer using a known-good USB cable.

**A lot of people end up using charge-only USB cables and it is very frustrating! So make sure you have a USB cable you know is good for data sync.**

Click the **Reset** button (indicated by the green arrow) on your board. When you see the NeoPixel RGB LED (indicated by the magenta arrow) turn purple, press it again. At that point, the NeoPixel should turn green. If it turns red, check the USB cable, try another USB port, etc.

If double-clicking doesn't work the first time, try again. Sometimes it can take a few tries to get the rhythm right!

![led_matrices_Buttons.jpg](https://cdn-learn.adafruit.com/assets/assets/000/126/017/medium640/led_matrices_Buttons.jpg?1699492993)

You will see a new disk drive appear called **MATRXS3BOOT**.

Drag the **adafruit\_circuitpython\_etc.uf2** file over to **MATRXS3BOOT****.**

![led_matrices_matrix.png](https://cdn-learn.adafruit.com/assets/assets/000/126/018/medium640/led_matrices_matrix.png?1699493436)

The LED will flash. Then, the **MATRXS3BOOT** &nbsp;drive will disappear and a new disk drive called **CIRCUITPY** will appear.

That's it, you're done! :)

![led_matrices_CircuitPy.png](https://cdn-learn.adafruit.com/assets/assets/000/122/618/medium640/led_matrices_CircuitPy.png?1689369656)

# itsaSNAP Daily Weather Forecast Board

## Setting Up Your Credentials

To make network inquiriess using your MatrixPortal, you'll need to provide your WiFi and Adafruit IO credentials in a **settings.toml** file.

Plug your Matrix Portal S3 into your computer via a known good data + power USB cable. Your board should show up as a thumb drive in your File Explorer / Finder (depending on your operating system) named **CIRCUITPY**.

Create a file with the name&nbsp; **settings.toml** &nbsp;in the root directory of the&nbsp; **CIRCUITPY** &nbsp;drive.

Add the following below:

The file should contain the keys&nbsp;`CIRCUITPY_WIFI_SSID`, &nbsp;`CIRCUITPY_WIFI_PASSWORD`, `CIRCUITPY_WEB_API_PASSWORD`,&nbsp;`AIO_USERNAME`, and `AIO_KEY`.&nbsp;

Once these are defined, CircuitPython will automatically connect to the network and start the webserver used for the workflow.

The web server is on port 80 unless overridden by&nbsp;`CIRCUITPY_WEB_API_PORT`. It also enables MDNS.

Here is an example&nbsp; **settings.toml** :

```auto
# To auto-connect to WiFi
CIRCUITPY_WIFI_SSID="YOUR-WIFI-NETWORK-NAME"
CIRCUITPY_WIFI_PASSWORD="YOUR-WIFI-NETWORK-PASSWORD"

# For Adafruit IO
AIO_USERNAME="YOUR-USERNAME"
AIO_KEY="YOUR-AO-KEY"

# To enable modifying files from the web. Change this too!
# Leave the User field blank in the browser.
CIRCUITPY_WEB_API_PASSWORD="passw0rd"

CIRCUITPY_WEB_API_PORT=80
```

# itsaSNAP Daily Weather Forecast Board

## Code with CircuitPython

Once you've finished setting up your Matrix Portal S3 with CircuitPython and have connected to the Internet, you can download the Project Bundle to access the code and necessary libraries.

To do this, click the **&nbsp;Download Project Bundle** &nbsp;button in the window below. It will download to your computer as a zipped folder.

https://github.com/adafruit/Adafruit_Learning_System_Guides/blob/main/Matrix_Portal/Matrix_Portal_S3_itsaSNAP_Daily_Forecast_Display/code.py

## Upload the Code and Libraries

After downloading the Project Bundle, plug your **Matrix Portal S3** into the computer's USB port with a known good USB data + power cable. You should see a new flash drive appear in the computer's File Explorer or Finder (depending on your operating system) called&nbsp; **CIRCUITPY**. Unzip the folder and copy the following items to the&nbsp; **CIRCUITPY** &nbsp;drive.

- **lib** &nbsp;folder
- **Images** folder
- **code.py**

The&nbsp; **CIRCUITPY** &nbsp;drive should look like this after copying the&nbsp; **lib** &nbsp;folder, **images** folder,&nbsp;and the&nbsp; **code.py** &nbsp;file.

![](https://cdn-learn.adafruit.com/assets/assets/000/132/362/medium800/leds_Matrix_Portal_S3_itsaSNAP_Daily_Forecast_Display.png?1726516651)

### Get the Latest Data

`get_last_data` retrieves the most recent data from an Adafruit IO feed. If successful, it returns a value or None if there's an error or no data available.

```auto
def get_last_data(feed_key):
    try:
        data = matrixportal.get_io_data(feed_key)
        if data:
            return data[0]["value"]
    except (KeyError, IndexError) as e:
        print(f"Error fetching data from feed {feed_key}: {e}")
    return None
```

### Daytime Checker

This function determines if it's daytime based on the given hour. It considers daytime to be between 5:00 AM and 5:59 PM, but you can update it to fit your needs.&nbsp;

```auto
def is_daytime(hour):
    return 5 &lt;= hour &lt; 18  # True if between 5:00 AM and 5:59 PM
```

### Clean Weather Condition

This function simplifies the weather condition descriptions for the display since there is limited space. It also adjusts conditions based on whether it's day or night, such as changing "Sunny" to "Clear" at night.

```auto
def clean_condition(condition, is_day):
    condition = condition.replace("Mostly ", "").replace("Partly ", "")
    condition_mapping = {
        "Cloudy": "Cldy",  # Added shortened version of Cloudy
        "Drizzle or light rain": "Rainy",
        "Heavy rain": "Rainy",
        "Isolated thunderstorms": "TStorms",
        "Sun showers": "Rainy",
        "Scattered thunderstorms": "TStorms",
        "Strong storms": "TStorms",
        "Light snow": "Snow",
        "Heavy snow": "Snow",
    }
    if condition == "Sunny" and not is_day:
        return "Clear"
    return condition_mapping.get(condition, condition)
```

### Parse Weather Data

This function extracts the hour, temperature, and weather conditions from the weather data string found in Adafruit IO. It also handles time conversion and splits the data into usable components.

```auto
def parse_weather_data(data):
    try:
        _, weather_info = data.split(" at ")
        time_str, weather_data = weather_info.split(" ", 1)
        hour = int(time_str.split(":")[0])
        if "PM" in time_str and hour != 12:
            hour += 12
        elif "AM" in time_str and hour == 12:
            hour = 0
        temperature, condition = weather_data.split(" and ")
        return hour, temperature, condition
    except ValueError as e:
        print(f"Error parsing weather data: {e}")
        return None, None, None
```

### Update Display

Gets the latest weather data, processes it, and updates the LED matrix display. It sets the temperature, weather condition text, and selects the weather icon to display.

```auto
def update_display():
    weather_data = get_last_data(WEATHER_FEED)
    if weather_data:
        hour, temperature, condition = parse_weather_data(weather_data)
        if hour is not None and temperature is not None and condition is not None:
            is_day = is_daytime(hour)
            current_condition = clean_condition(condition, is_day)

            matrixportal.set_text(temperature, 0)
            matrixportal.set_text(current_condition, 1)

            # Determine which image to show based on condition and time
            if current_condition == "Sunny" and is_day:
                image_key = "images/sunny.bmp"
            elif current_condition == "Clear" or (current_condition == "Sunny" and not is_day):
                image_key = "images/moon.bmp"
            else:
                image_key = WEATHER_IMAGES.get(current_condition, "images/sunny.bmp")

            try:
                matrixportal.set_background(image_key)
            except OSError as e:
                print(f"Error loading image for {current_condition}: {e}")
        else:
            print(f"Failed to parse weather data: {weather_data}")
            matrixportal.set_text("Error", 0)
            matrixportal.set_text("", 1)
    else:
        print("Failed to retrieve data from feed")
        matrixportal.set_text("No Data", 0)
        matrixportal.set_text("", 1)
```

### The Main Loop

The Main loop runs the program, checking if it's time to update the display. It calls&nbsp;`update_display()` every 30 minutes to refresh the weather information.

```auto
current_time = time.monotonic()
    if current_time - last_update &gt; UPDATE_DELAY:
        update_display()
        last_update = current_time

    time.sleep(1)  # Sleep for 1 second
```

# itsaSNAP Daily Weather Forecast Board

## LED Matrix Diffuser

## LED Diffusion Acrylic

You can add an [LED diffusion acrylic faceplate](https://www.adafruit.com/product/4594) to the your LED matrix display. (Pictured here with the [ON AIR project](https://learn.adafruit.com/rgb-matrix-automatic-youtube-on-air-sign))

This can help protect the LEDs as well as enhance the look of the sign both indoors and out by reducing glare and specular highlights of the plastic matrix grid.

![led_matrices_onairbuild-3367.jpg](https://cdn-learn.adafruit.com/assets/assets/000/093/987/medium640/led_matrices_onairbuild-3367.jpg?1597088161)

## Measure and Cut the Plastic

You can use the sign to measure and mark cut lines on the paper backing of the acrylic sheet.

Then, use a tablesaw or bandsaw with a fine toothed blade and a guide or sled to make the cuts.

Note: it is possible to score and snap acrylic, but it can be very tricky to get an even snap without proper clamping.

![led_matrices_onairbuild-3343.jpg](https://cdn-learn.adafruit.com/assets/assets/000/093/988/medium640/led_matrices_onairbuild-3343.jpg?1597088278)

![led_matrices_onairbuild-3346.jpg](https://cdn-learn.adafruit.com/assets/assets/000/093/989/medium640/led_matrices_onairbuild-3346.jpg?1597088290)

![led_matrices_onairbuild-3347.jpg](https://cdn-learn.adafruit.com/assets/assets/000/093/991/medium640/led_matrices_onairbuild-3347.jpg?1597089259)

![led_matrices_onairbuild-3349.jpg](https://cdn-learn.adafruit.com/assets/assets/000/093/992/medium640/led_matrices_onairbuild-3349.jpg?1597089270)

![](https://cdn-learn.adafruit.com/assets/assets/000/093/998/medium800/led_matrices_onairbuild-3352.jpg?1597089308)

Peel away the paper backing from both sides and set the acrylic onto your matrix display with the matte finished side facing out.

![led_matrices_onairbuild-3355.jpg](https://cdn-learn.adafruit.com/assets/assets/000/093/999/medium640/led_matrices_onairbuild-3355.jpg?1597089331)

## Uglu Dashes

The best method we've found for adhering acrylic to the matrix display is to use [Uglu Dashes clear adhesive rectangles from Pro Tapes](https://www.protapes.com/products/uglu-600-dashes-sheets). They are incredibly strong (although can be removed if necessary), easy to apply, and are invisible once attached.

Use one at each corner and one each at the halfway point of the long edges, then press the acrylic and matrix panel together for about 20 seconds.

![adafruit_io_weathermx-2-3.jpg](https://cdn-learn.adafruit.com/assets/assets/000/094/842/medium640/adafruit_io_weathermx-2-3.jpg?1600463849)

![adafruit_io_weathermx-2.jpg](https://cdn-learn.adafruit.com/assets/assets/000/094/843/medium640/adafruit_io_weathermx-2.jpg?1600463856)

![adafruit_io_weathermx-2-2.jpg](https://cdn-learn.adafruit.com/assets/assets/000/094/844/medium640/adafruit_io_weathermx-2-2.jpg?1600463866)

Here you can see the impact of using the diffusion acrylic. (Pictured here with the ON AIR sign project)

![](https://cdn-learn.adafruit.com/assets/assets/000/094/006/medium800thumb/led_matrices_diffusionOnAir.jpg?1597089757)

## Stand

A very simple and attractive way to display your matrix is with the adjustable [bent-wire stand](https://www.adafruit.com/product/1679).

![led_matrices_onairbuild-3418.jpg](https://cdn-learn.adafruit.com/assets/assets/000/094/032/medium640/led_matrices_onairbuild-3418.jpg?1597094067)

![led_matrices_onairbuild-3419.jpg](https://cdn-learn.adafruit.com/assets/assets/000/094/033/medium640/led_matrices_onairbuild-3419.jpg?1597094085)

![led_matrices_onairbuild-3421.jpg](https://cdn-learn.adafruit.com/assets/assets/000/094/034/medium640/led_matrices_onairbuild-3421.jpg?1597094097)

![led_matrices_onairbuild-3422.jpg](https://cdn-learn.adafruit.com/assets/assets/000/094/035/medium640/led_matrices_onairbuild-3422.jpg?1597094107)

![](https://cdn-learn.adafruit.com/assets/assets/000/095/378/medium800/adafruit_io_led_matrices_onairbuild-3383.jpg?1602006263)

Alternately, you can use a frame, [3D printed brackets](https://learn.adafruit.com/led-protest-sign/build-the-sign#step-3065326), tape, glue, or even large binder clips to secure the acrylic to the sign and then mount it on on a wall, shelf, or display cabinet.

[These mini-magnet feet](https://www.adafruit.com/product/4631) can be used to stick the sign to a ferrous surface.

# itsaSNAP Daily Weather Forecast Board

## Creating the "itsaSNAP Weather Grabber" shortcut

![](https://cdn-learn.adafruit.com/assets/assets/000/132/303/medium800/leds_IMG_3934490EC5EB-1.jpeg?1726245942)

Info: Apple Shortcuts are only available in the latest version of itsaSNAP on the Apple app store by Adafruit.

itsaSNAP includes several actions for the Apple Shortcuts App, allowing you to integrate Adafruit IO functionality. This project focuses on sending current location weather data from your iPhone to an Adafruit IO feed.&nbsp;

This step will demonstrate how to use itsaSNAP with Apple Shortcuts to send a value to an Adafruit IO feed when the shortcut is ran.&nbsp;

Open Apple Shortcuts on your iPhone or iPad.&nbsp;To create a new shortcut, tap the "+" button.

![](https://cdn-learn.adafruit.com/assets/assets/000/132/328/medium800/leds_adafruit_io_IMG_113918C25A84-1.jpeg?1726447701)

#### Add an action

Tap "Add Action". Then, search for _Current Weather_.

![](https://cdn-learn.adafruit.com/assets/assets/000/132/329/medium800/leds_adafruit_io_IMG_2B2F6B139226-1.jpeg?1726447815)

Select the "Location" action, _"Get Current Weather"_

![](https://cdn-learn.adafruit.com/assets/assets/000/132/330/medium800/leds_IMG_CAED75C8980C-1.jpeg?1726448028)

![](https://cdn-learn.adafruit.com/assets/assets/000/132/334/medium800/leds_IMG_BF10AF646636-1.jpeg?1726458331)

Tap on the keyboard bar. Then, search for _itsaSNAP_ and select _Send Value_.

![](https://cdn-learn.adafruit.com/assets/assets/000/132/331/medium800/leds_IMG_BFC7DE7FDCF0-1.jpeg?1726448469)

Additionally, I suggest changing the shortcut's name to something unique like "itsaSNAP Forecast Grabber."&nbsp;

#### Configure Action

Add your **feed key** and the value you want to send to your Feed here.&nbsp;Tap the&nbsp; **Value field** &nbsp;and&nbsp;select **Current Date** and **Weather Condition** from the keyboard bar (the keyboard bar is&nbsp; **scrollable** ).

![](https://cdn-learn.adafruit.com/assets/assets/000/132/339/medium800/leds_IMG_B81E966DE51E-1.jpeg?1726487047)

![](https://cdn-learn.adafruit.com/assets/assets/000/132/332/medium800/leds_IMG_C68F9CB376ED-1.jpeg?1726457919)

Now that your shortcut is assembled, try giving it a test run. Press the Play button at the bottom of the screen.&nbsp;

![](https://cdn-learn.adafruit.com/assets/assets/000/132/341/medium800/leds_IMG_D19EA1F0477E-1.jpeg?1726490700)

If all works well, you should see this message prompt, notifying you that your current weather data and time have been sent to your Adafruit IO Weather Feed.

![](https://cdn-learn.adafruit.com/assets/assets/000/132/342/medium800/leds_IMG_A5142ACEDB51-1.jpeg?1726490868)

# itsaSNAP Daily Weather Forecast Board

## Setting up Apple Shortcuts Automation

To create a new automation, go to the automation screen and tap the "+" button.&nbsp;

![](https://cdn-learn.adafruit.com/assets/assets/000/132/352/medium800/leds_adafruit_products_adafruit_io_IMG_6177.jpg?1726494022)

Here you can select which types of triggers can initiate an action. For now, we'll use "Time of Day" to set a time to schedule a time to run our Apple Shortcut.&nbsp;

**Select "Time of Day"** as the trigger for the automation.

![](https://cdn-learn.adafruit.com/assets/assets/000/132/353/medium800/leds_IMG_4A80D5629A73-1.jpeg?1726494345)

Add the time of day here. I prefer to send this update at sunrise, have it repeat daily, and run immediately (you will be notified whenever the shortcut task is attempted).

Once you're all set - tap&nbsp;_Done_.

![](https://cdn-learn.adafruit.com/assets/assets/000/132/354/medium800/leds_IMG_3DF70AAB1D64-1.jpeg?1726494508)

In the My Shortcuts row, select the shortcut action you made earlier.

![](https://cdn-learn.adafruit.com/assets/assets/000/132/355/medium800/leds_IMG_D5595E963154-1.jpeg?1726494884)

Upon selecting your Apple shortcut, your automation will be set. Be sure to set your automation for any time you want. I've set my shortcuts to run multiple times of the day.

![](https://cdn-learn.adafruit.com/assets/assets/000/132/358/medium800/leds_IMG_9F7C54FF1481-1.jpeg?1726496120)

# itsaSNAP Daily Weather Forecast Board

## Use

## Check the Weather on your Matrix Portal&nbsp;

Plug the Matrix Portal S3 into USB-C power. The display should change, reflecting the current temperature and condition from the Weather feed.

If no value has been posted to this feed yet, your Matrix Portal screen will display "Error".

There are multiple graphics that represent the conditions that might occur. There is a graphic for cloudy, sunny, rainy, or snowy days and a graphic for thunderstorms.

![](https://cdn-learn.adafruit.com/assets/assets/000/132/363/medium800/leds_IMG_6773.png?1726517376)

The Matrix Portal will attempt to fetch weather data every thirty minutes. You can change it to the frequency you see fit.

Once you have followed these steps, you will have your own automated weather display!


## Featured Products

### Adafruit Matrix Portal S3 CircuitPython Powered Internet Display

[Adafruit Matrix Portal S3 CircuitPython Powered Internet Display](https://www.adafruit.com/product/5778)
Folks love our [wide selection of RGB matrices](https://www.adafruit.com/category/327) and accessories&nbsp;for making custom colorful LED displays... and our RGB Matrix Shields and FeatherWings can be quickly soldered together to make the wiring much easier. But what if we made it...

In Stock
[Buy Now](https://www.adafruit.com/product/5778)
[Related Guides to the Product](https://learn.adafruit.com/products/5778/guides)
### 64x32 RGB LED Matrix - 3mm pitch

[64x32 RGB LED Matrix - 3mm pitch](https://www.adafruit.com/product/2279)
Bring a little bit of Times Square into your home with this sweet 64 x 32 square RGB LED matrix panel. These panels are normally used to make video walls, here in New York we see them on the sides of busses and bus stops, to display animations or short video clips. We thought they looked...

Out of Stock
[Buy Now](https://www.adafruit.com/product/2279)
[Related Guides to the Product](https://learn.adafruit.com/products/2279/guides)
### Vertical Wall Power Supply with USB C - 5V 3A Output and Switch

[Vertical Wall Power Supply with USB C - 5V 3A Output and Switch](https://www.adafruit.com/product/5801)
We love the Raspberry Pi 4 and 5, with their fancy new USB Type C power connectors. Now we have an even&nbsp;_better_&nbsp;power supply that can be used with either Pi 4 or even a Pi 5 with 5V output, 3A of current to handle builds with accessories and displays. The vertical-style plug...

In Stock
[Buy Now](https://www.adafruit.com/product/5801)
[Related Guides to the Product](https://learn.adafruit.com/products/5801/guides)
### USB Type A to Type C Cable - approx 1 meter / 3 ft long

[USB Type A to Type C Cable - approx 1 meter / 3 ft long](https://www.adafruit.com/product/4474)
As technology changes and adapts, so does Adafruit. This&nbsp;&nbsp; **USB Type A to Type C** cable will help you with the transition to USB C, even if you're still totin' around a USB Type A hub, computer or laptop.

USB C is the latest industry-standard connector for...

In Stock
[Buy Now](https://www.adafruit.com/product/4474)
[Related Guides to the Product](https://learn.adafruit.com/products/4474/guides)
### Adafruit IO+ Subscription Pass – One Year

[Adafruit IO+ Subscription Pass – One Year](https://www.adafruit.com/product/3792)
The all-in-one Internet of Things service from Adafruit you know and love is now _even better_ with IO+. The 'plus' stands for MORE STUFF! More feeds, dashboards, storage, speed. Power up your [Adafruit IO](https://io.adafruit.com/) with the $99 pass for 1 year of the...

In Stock
[Buy Now](https://www.adafruit.com/product/3792)
[Related Guides to the Product](https://learn.adafruit.com/products/3792/guides)

## Related Guides

- [Adafruit MatrixPortal S3](https://learn.adafruit.com/adafruit-matrixportal-s3.md)
- [Adafruit MatrixPortal M4](https://learn.adafruit.com/adafruit-matrixportal-m4.md)
- [Adafruit RGB Matrix + Real Time Clock HAT for Raspberry Pi](https://learn.adafruit.com/adafruit-rgb-matrix-plus-real-time-clock-hat-for-raspberry-pi.md)
- [Raspberry Pi LED Matrix Display](https://learn.adafruit.com/raspberry-pi-led-matrix-display.md)
- [Using ItsaSNAP for HomeKit PIR Motion Detection](https://learn.adafruit.com/itsasnap-homekit-pir-motion-detection.md)
- [Stream Deck controlled RGB Message Panel using Adafruit IO](https://learn.adafruit.com/stream-deck-controlled-rgb-message-panel-using-adafruit-io.md)
- [How to use Blockly for Actions on Adafruit IO](https://learn.adafruit.com/how-to-use-blockly-for-actions-on-adafruit-io.md)
- [DIY IoT Doorbell Camera with MEMENTO](https://learn.adafruit.com/diy-iot-doorbell-camera-with-memento.md)
- [itsaSNAP Apple Health Status Board](https://learn.adafruit.com/itssnap-apple-fitness-status-board.md)
- [CircuitPython OctoPrint Controller and Monitor](https://learn.adafruit.com/circuitpython-octoprint-controller-and-monitor.md)
- [Matrix Portal Stained Glass with WLED](https://learn.adafruit.com/matrix-portal-stained-glass-with-wled.md)
- [Adafruit IO Basics: Dashboards](https://learn.adafruit.com/adafruit-io-basics-dashboards.md)
- [Adafruit IO Basics: Analog Input](https://learn.adafruit.com/adafruit-io-basics-analog-input.md)
- [Memento Photo Capture with itsaSNAP](https://learn.adafruit.com/memento-photo-capture-with-itsasnap.md)
- [No-Code Rain Sensing Smart Desktop Umbrella Stand](https://learn.adafruit.com/no-code-rain-sensing-smart-desktop-umbrella-stand.md)
