Giter Site home page Giter Site logo

remoteweather's Introduction

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.

remoteweather's People

Contributors

chrissnell avatar fsegouin avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

remoteweather's Issues

Compile for ARM

Hi, I'm trying to compile the gopherwx executable to rebuild a docker image for armhf (raspberry pi 4) and I'm not sure as to what arguments I should use?

I tried using go build but it fails with the version of the influxdb client not being able to be downloaded anymore. I tried updating manually to influxdb-client-go but then there's an error, which makes me think the code isn't compatible with the latest version of the influxdb client anymore.

Thanks for your help!

gopherwx_1 | standard_init_linux.go:190: exec user process caused "exec format error"

Hi,

I am trying to use what looks to be a really promising piece of software on a RPI 3.
I followed the README.md but, after starting the service and running journalctl -u gopherwx -f this is what I got:

apr 29 01:44:35 rpi systemd[1]: gopherwx.service: Service hold-off time over, scheduling restart. apr 29 01:44:35 rpi systemd[1]: Stopped Dockerized Gopherwx. apr 29 01:44:35 rpi systemd[1]: Starting Dockerized Gopherwx... apr 29 01:44:49 rpi docker-compose[19599]: Going to remove gopherwx_gopherwx_1 apr 29 01:44:49 rpi docker-compose[19599]: Are you sure? [yN] apr 29 01:44:55 rpi docker-compose[19610]: Pulling gopherwx (chrissnell/gopherwx:latest)... apr 29 01:44:57 rpi docker-compose[19610]: latest: Pulling from chrissnell/gopherwx apr 29 01:44:57 rpi docker-compose[19610]: Digest: sha256:61e6c0af703c3ea3e219b524f528805d0d832add921ffb93149f51301e2fa411 apr 29 01:44:57 rpi docker-compose[19610]: Status: Image is up to date for chrissnell/gopherwx:latest apr 29 01:44:57 rpi systemd[1]: Started Dockerized Gopherwx. apr 29 01:45:04 rpi docker-compose[19622]: Recreating gopherwx_gopherwx_1 ... apr 29 01:45:06 rpi docker-compose[19622]: [85B blob data] apr 29 01:45:06 rpi docker-compose[19622]: gopherwx_1 | standard_init_linux.go:190: exec user process caused "exec format error" apr 29 01:45:06 rpi docker-compose[19622]: gopherwx_gopherwx_1 exited with code 1 apr 29 01:45:06 rpi docker-compose[19622]:
Do you have any suggestion?

Thank you in advance.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.