Skip to content

iachievedit/weatherfxlite

Repository files navigation

WeatherFXLite

What is it?

The Bushnell WeatherFX is, in my opinion, one of the best "weather gadgets" on the market. Well, was on the market. Several years ago Bushnell announced the end-of-life for the venerable device, but many, including mine, continued to work well into 2022. Unfortunately it appears the last forecast areas are beginning to go dark.

It started one day where it was perpetually 80 degrees with rain and a thunderstorm (and humid!). Then the zero degree days started, and now the high is forecasted to be --. Those days are the worst. Okay, maybe not the worst.

Either way, I was mildly griefstricken when it dawned on me that the end had come to my faithful weather forecast companion. So, being the engineer and tinkerer that I am I set about to "replace" the WeatherFX with a Raspberry Pi and HyperPixel display. WeatherFXLite is the result for the time being.

For what it's worth, I'm not the only one traumatized by the demise of the WeatherFX. On jillcataldo.com there are over 400 comments and counting of those who are mourning their beloved WeatherFX.

2022-10-08 Update

Around September 7, 2022, individuals across the country began reporting their WeatherFX units had come back to life. Indeed, mine did as well. Occasionally the clock will be behind an hour and the current temperature will be wildly incorrect, so I think we'll keep working on this project!

Hardware

If you're only interested in running the application on your desktop there's no additional hardware required. WeatherFXLite is not designed to work with your own sensors and requires no special hardware other than something with an Internet connection.

Now, if you're interested in a makeshift replica of the original WeatherFX, you can invest in:

The end result of your efforts will be something much more appealing!

NB: This is a work in progress, hopefully by the time folks in the wild see this I'll have added the current conditions icon and temperature forecasts for the day.

2022-09-25 Update

Additional icons and tightening up the display!

Configure and Build

Configuration

WeatherFXLite uses the REST API for Apple's WeatherKit. To use WeatherKit and build this project you'll need an Apple Developer Account. See our tutorial for details on obtaining a private and public key. For what it's worth, I started developing WeatherFXLite with the free version of OpenWeatherMap REST API 2.5 but the current conditions for my area (North Texas) were frequently incorrect. Rather than paying for yet another service (like AccuWeather), I went with utilizing the WeatherKit credits (500,000 API calls per month) in my Apple Developer account.

Once you have your key and Apple Developer account information, create config.h:

// WeatherKit
// LATLNG is LAT/LNG for your location
#define LATLNG "32.7767/-96.7970" // Dallas, TX

// Your Apple Developer Information
#define APPLE_DEVELOPER_TEAM_ID "5367BG94QP"
#define WEATHERKIT_KEY_ID "S3J684C78A"
#define WEATHERKIT_APP_ID "5367BG94QP.it.iachieved.weatherfx"
#define WEATHERKIT_APP "it.iachieved.weatherfx"

NOTE: Your Apple Developer team ID, key ID, etc. will be unique for you. The values should not be copy/pasted blindly!

Now, for the WeatherKit keys, in config.h define WEATHERKIT_PUBKEY and WEATHERKIT_PRIVKEY as C++ raw strings:

#define WEATHERKIT_PUBKEY R"(-----BEGIN PUBLIC KEY-----
-----END PUBLIC KEY-----)"

#define WEATHERKIT_PRIVKEY R"(-----BEGIN PRIVATE KEY-----
-----END PRIVATE KEY-----)"

macOS

To build on macOS:

brew install qt5
brew install openssl

You may need to update your PATH:

export PATH="/opt/homebrew/opt/qt@5/bin:$PATH"

Then:

OPENSSL_PREFIX=`brew --prefix openssl`;
qmake INCLUDEPATH+="$OPENSSL_PREFIX/include" \
      LIBS+="-L$OPENSSL_PREFIX/lib -lcrypto"
make

To run the application from the command line:

% build/weatherfxLite.app/Contents/MacOS/weatherfxLite

Debian/Ubuntu Linux

To build on Debian/Ubuntu Linux, and preferably the Raspberry Pi with an appropriate external display:

sudo apt-get install qtbase5-dev libssl-dev clang

Yes, we installed the clang compiler. Here's why.

Then:

qmake QMAKE_CXX="clang++" QMAKE_LINK="clang++" \
      INCLUDEPATH+="/usr/include/openssl" \
      LIBS+="-L/usr/lib/openssl -lcrypto"
make

The default Raspberry Pi OS has all manner of screensaver/energy saver mechanisms running, so let's turn all that off.

xset s off
xset s noblank
xset -dpms

build.sh

build.sh aims to streamline and autodetect what platform you're on. It's not quite finished.

Raspberry Pi Imager

If you are just starting out with a blank SD card for your Raspberry Pi, we recommend the official Raspberry Pi Imager.

For Pi 4s, use the 64-bit Raspberry Pi OS. For Pi 3s, use the 32-bit Raspberry Pi OS.

Legal

This code is licensed under GPLv3. Why? Because we are using the open source license of Qt.

Additional dependencies and their licenses:

Releases

No releases published

Packages

No packages published

Languages