Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/chrissnell/gopherwx
A weather server supporting Campbell Scientific and Davis Instruments stations with lots of data-sharing options
https://github.com/chrissnell/gopherwx
Last synced: 3 months ago
JSON representation
A weather server supporting Campbell Scientific and Davis Instruments stations with lots of data-sharing options
- Host: GitHub
- URL: https://github.com/chrissnell/gopherwx
- Owner: chrissnell
- Created: 2015-09-21T05:12:41.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2024-02-02T19:14:33.000Z (9 months ago)
- Last Synced: 2024-06-19T01:45:47.596Z (5 months ago)
- Language: Go
- Homepage:
- Size: 7.35 MB
- Stars: 24
- Watchers: 3
- Forks: 5
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome-influxdb - gopherwx - a service that pulls live weather data from a Davis Instruments Vantage Pro2 station and stores it in InfluxDB (Collecting data into InfluxDB / Projects)
README
# 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](https://suncrestweather.com) 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](https://grpc.io). Roll your own client or [try my Linux client](https://github.com/chrissnell/grpc-weather-bar).
* 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](http://www.davisnet.com/product/wireless-vantage-pro2-with-standard-radiation-shield/) 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](http://www.davisnet.com/product/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.3. One or more of the following:
* [TimescaleDB](https://github.com/timescale/timescaledb), if you want to store data over time and power a live website like the one I have at [suncrestweather.com](https://suncrestweather.com).
* A [PWS Weather API account](https://www.pwsweather.com) for sending live data to PWS.
* A [Weather Underground API account](https://www.wunderground.com/api) 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](http://wxqa.com/) ID if you want to send live data to CWOP
* [grpc-weather-bar](https://github.com/chrissnell/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](https://github.com/chrissnell/remoteweather/blob/master/example/docker-compose.yml) and [systemd unit file](https://github.com/chrissnell/remoteweather/blob/master/example/remoteweather.service) 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](https://github.com/chrissnell/grpc-weather-bar), that reads live weather from remoteweather over the network and display it within [Polybar](https://github.com/jaagr/polybar), a desktop stats bar for Linux.
If you would like to build your own client, have a look at the [protobuf spec](https://github.com/chrissnell/remoteweather/blob/master/protobuf/grpcweather.proto).