A Raspberry Pi Weather Radio

This library adapts the Raspberry Pi SAME decoder board to user-level functionality so that you can focus on your application. It has error handling! It has unit tests! It has events! Callbacks!

See the Presentation slides.

Build status

build status Coverage Status

Features

Make one!

Here's what you need to do to turn this repository into something that works for you.

Parts list

You need a few parts:

Installation steps

  1. Install Raspbian on the SD card.
  2. Put all the parts together. They only fit one way.
  3. Hook it up to a TV and set up WiFi if you wish. Get it so you can SSH in.
  4. Optionally set up Dataplicity so you can log in from anywhere
  5. Log in as pi and clone this repo.
  6. Set up dependencies:
sudo apt-get update
sudo apt-get install git python-dev python-smbus i2c-tools python-rpi.gpio python3-rpi.gpio libxml2-dev libxslt1-dev python-shapely
# Follow instructions to install i2c kernel support:
#   https://learn.adafruit.com/adafruits-raspberry-pi-lesson-4-gpio-setup/configuring-i2c
git clone https://github.com/nioinnovation/Adafruit_Python_GPIO.git
(cd Adafruit_Python_GPIO; sudo python3 setup.py install)
# now CD to where you cloned this project
sudo ./setup.py test
  1. Running the radio is simple:
    python3 -m RPiNWR.demo --transmitter WXL58

You can specify the transmitter or not, but if you do and the transmitter is listed in nwr_data.py, error correction is more robust.

See demo.py and its tests for information about command line options.

At the moment, this radio implementation lets you subscribe to events and observe status of the radio over time. Further development will add functionality and bring the demo code up to a more practical implementation.

Where is the internet message stuff and tornado-only alerting?

It's on the dev branch. It's fresh, really fresh. So you're encouraged to help with development and testing or just to try it out, but the examples there aren't fully baked yet or else they'd be on the master branch! As of October 24, 2016, It's pretty close, so stay tuned.

Helping

Check out the issues in WaffleIO: Stories in Ready

Please submit your log files as issues! Messages and RSSI reports are especially useful at the moment.

Also, see the next section...

Developing

Have a look at # TODO items in the code and the issues to see what needs to be done. Pull requests and issues are most welcome!

Adding an Si4707 in a new environment (not RPi, or not the AIWI board) is straightforward. Just create a new context that provides the same functionality as AIWIBoardContext.py for your environment. Name that context when you start the radio, and you're up and running. Please consider contributing your context via a pull request.

License

GNU GPL v. 3 - see the LICENSE file for details