Skip to content

chrissnell/remoteweather

Repository files navigation

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:

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

  2. 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.
  1. One or more of the following:

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:

  1. Drop the systemd unit file remoteweather.service wherever you keep your aftermarket unit files. On my Ubuntu server, that's /etc/systemd/user/.

  2. Create a directory for the remoteweather configuration and compose files. I recommend /etc/remoteweather. If you call it something different, be sure to edit the remoteweather.service and docker-compose.yml files to reflect your path. Most folks won't have to edit these.

  3. Copy the config.yaml and the docker-compose.yml files from this GitHub repo into your /etc/remoteweather directory.

  4. Start remoteweather.service by running this as root: systemctl start remoteweather.service

  5. Have a look at remoteweather logs to make sure everything is working correctly: journalctl -u remoteweather -f

  6. Make sure that remoteweather.service starts at boot time by running systemctl 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.

About

A weather server supporting Campbell Scientific and Davis Instruments stations with lots of data-sharing options

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages