Awesome
remoteweather
remoteweather is a service that pulls live weather data from your weather station hardware, stores it in a time-series database, and shares it over a variety of mediums. It supports popular weather services, gRPC, APRS/CWOP/AX.25 (both RF and APRS-IS routing), along with an attractive and responsive live-streaming Web interface for desktops, tablets, and smartphones.
Features
- Powers a dynamically-generated live weather website with live charts and live-updating readings.
- Stores historical data in TimescaleDB for graphing and analysis, and rapid delivery of data for charting.
- Sends live weather data to PWS Weather, Weather Underground, and others (API keys required)
- Sends data to APRS/CWOP via APRS-IS. Ham radio license or CWOP station registration required.
- Streams live data over gRPC. Roll your own client or try my Linux client.
- Supports Campbell Scientific Inc. and Davis Weather Instruments stations. Stations are implemented as a Go interface so developers can add other implementations.
Quick Start
You will need a few things to use remoteweather:
-
A Campbell Scientific Inc station and datalogger, or a Davis Instruments VantagePro or VantagePro 2 weather station. This should also work with the Davis Instruments Vue but I haven't tested.
-
A way to connect your station to a Linux server. There are several options for this:
- For Campbell Scientific, you can use a RF407 device (900MHz), direct serial, or ethernet
- For Davis Instruments, you will need a WeatherLink (or clone) serial/USB cable to connect your VantagePro console to your server.
- A Davis Instruments Wireless Weather Envoy is also a good option for Davis stations. This device has a 900MHz reciever that decodes the transmissions from the VantagePro station and makes them available over TCP/IP.
- One or more of the following:
- TimescaleDB, if you want to store data over time and power a live website like the one I have at suncrestweather.com.
- A PWS Weather API account for sending live data to PWS.
- A Weather Underground API account for sending live data to WU. The base account level is free and is sufficient.
- A ham radio license if you want to send live data to APRS-IS
- A CWOP ID if you want to send live data to CWOP
- grpc-weather-bar, if you want to display live weather on your Linux desktop
Installation
The easiest and recommended way to use remoteweather is to use the ready-made Docker image, chrissnell/remoteweather/v4.0
. This image makes use of gosu
to drop root privileges to nobody:nobody
. I have included an example Docker Compose file and systemd unit file to get you started.
To use Dockerized remoteweather, follow these steps:
-
Drop the systemd unit file
remoteweather.service
wherever you keep your aftermarket unit files. On my Ubuntu server, that's/etc/systemd/user/
. -
Create a directory for the remoteweather configuration and compose files. I recommend
/etc/remoteweather
. If you call it something different, be sure to edit theremoteweather.service
anddocker-compose.yml
files to reflect your path. Most folks won't have to edit these. -
Copy the
config.yaml
and thedocker-compose.yml
files from this GitHub repo into your/etc/remoteweather
directory. -
Start
remoteweather.service
by running this as root:systemctl start remoteweather.service
-
Have a look at remoteweather logs to make sure everything is working correctly:
journalctl -u remoteweather -f
-
Make sure that
remoteweather.service
starts at boot time by runningsystemctl enable /etc/remoteweather/user/remoteweather.service
gRPC Support
remoteweather includes a built-in gRPC server that can serve up a stream of live weather readings to compatible clients. I have written an example client, grpc-weather-bar, that reads live weather from remoteweather over the network and display it within Polybar, a desktop stats bar for Linux.
If you would like to build your own client, have a look at the protobuf spec.