RemoteWeather is a professional weather monitoring system that collects data from your weather station, stores it for historical analysis, and shares it through multiple channels including a beautiful live website, weather services, and amateur radio networks.
RemoteWeather supports the following weather stations: * Campbell Scientific stations with dataloggers (CR series) * Davis Instruments VantagePro, VantagePro2, and Vue * AirGradient air quality monitors * Ambient Weather customized stations * Snow gauge monitoring systems * Generic stations via gRPC receiver
Download RemoteWeather
bash
wget https://github.com/chrissnell/remoteweather/releases/latest/download/remoteweather-linux-amd64
chmod +x remoteweather-linux-amd64
First Run - Bootstrap Configuration
When you run RemoteWeather for the first time, it automatically creates a configuration database:
bash
./remoteweather-linux-amd64
The system will:
- Create a SQLite configuration database at ~/.config/remoteweather/config.db
- Generate a secure access token for the management interface
- Start the management API on http://localhost:8081
Important: Save the access token displayed during bootstrap - you'll need it to configure the system!
Open your web browser and go to: http://localhost:8081
Enter the access token from the bootstrap process when prompted.
In the management interface: - Click "Weather Stations" → "Add Station" - Select your station type (Davis, Campbell Scientific, etc.) - Enter connection details (serial port, IP address, etc.) - Test the connection to verify it's working
Configure TimescaleDB Storage
Click "Storage Backends" → "Add Storage"
localhost (or your database server)5432weatherThe system will automatically create the necessary tables
Enable Services (Optional)
Add any weather services you want to use: - Web Interface: Enable the REST server controller for the live weather website - Weather Underground: Add your station ID and API key - PWS Weather: Add your station ID and password - APRS/CWOP: Add your callsign (ham radio) or CWOP ID
Once configured, RemoteWeather will automatically start collecting and sharing weather data.
For continuous operation, set up RemoteWeather as a system service:
# Create systemd service file
sudo nano /etc/systemd/system/remoteweather.service
# Add the following content:
[Unit]
Description=RemoteWeather Service
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/remoteweather
Restart=always
User=weather
[Install]
WantedBy=multi-user.target
# Enable and start the service
sudo systemctl enable remoteweather
sudo systemctl start remoteweather
http://your-server:8080 (or configured port)http://your-server:8081RemoteWeather includes these controllers for different purposes:
# If running directly
./remoteweather -v # Verbose output
# If running as systemd service
sudo journalctl -u remoteweather -f
Ensure correct serial port or IP address in configuration
"Database connection failed"
sudo systemctl status postgresqlEnsure database exists and user has permissions
"Management API not accessible"
For easier deployment, RemoteWeather is available as a Docker image:
# Pull the latest image
docker pull chrissnell/remoteweather:latest
# Run with bootstrap (first time)
docker run -it --rm \
-v remoteweather-config:/root/.config/remoteweather \
-p 8080:8080 \
-p 8081:8081 \
chrissnell/remoteweather:latest
# Save the access token shown during bootstrap!
# For production, use docker-compose:
docker-compose up -d
Example docker-compose.yml:
version: '3'
services:
remoteweather:
image: chrissnell/remoteweather:latest
ports:
- "8080:8080" # Weather website
- "8081:8081" # Management API
volumes:
- remoteweather-config:/root/.config/remoteweather
- /dev/ttyUSB0:/dev/ttyUSB0 # For serial weather stations
devices:
- /dev/ttyUSB0:/dev/ttyUSB0
restart: unless-stopped
timescaledb:
image: timescale/timescaledb:latest-pg14
environment:
POSTGRES_PASSWORD: weatherpass
POSTGRES_DB: weather
volumes:
- timescale-data:/var/lib/postgresql/data
restart: unless-stopped
volumes:
remoteweather-config:
timescale-data:
RemoteWeather provides a gRPC interface for building custom applications:
Example client: grpc-weather-bar for Linux desktop
You can export your weather data directly from TimescaleDB:
-- Connect to database
psql -U weather -d weather
-- Export last 30 days as CSV
\COPY (SELECT * FROM readings WHERE time > NOW() - INTERVAL '30 days')
TO '/tmp/weather_export.csv' CSV HEADER;
RemoteWeather is open source software. See LICENSE file for details.
$ claude mcp add remoteweather \
-- python -m otcore.mcp_server <graph>