Skip to main content

Another Raspberry Pi Weatherstation

Project description

snweatherstation

Another weather station for Raspberry Pi, logging temperature, humidity and pressure in a database table or to a file. If configured, also foracast data from https://openweathermap.org/ are logged in the database.

A web application is available to visualize measured data together with historical and forecast data.

Getting started

Step Action
1. Install snweatherstation ([sudo] pip install snweatherstation)
2. Connect the chosen sensor to the Raspberry Pi GPIO pins (see Supported Sensor Types)
3. Create a new MariaDB database or select an available one (see MariaDB below)
4. Create table for weather data (see Database Schema Setup)
5. If forecast data are intended, create also the database tables for forecast data
6. Stage and configure the configuration file (see Configuration)
7. Do a test run (see Usage)
8. Set up Weatherstation service (see Configure Weatherstation Service)

Usage

usage: weatherstation.py [-h] [-t] [-s] [-l] [-L] [-F] [-f FILE] [-v]
                         [-c CONFIG]

    This program periodically reads environment sensor data
    and stores these either in the database and/or in a file and/or just prints measured values.

    If not otherwise specified on the command line, a configuration file
       weatherstation.json
    will be searched under $HOME/.config or under /etc.

    This configuration file specifies the database connection and other runtime parameters.


optional arguments:
  -h, --help            show this help message and exit
  -t, --test            Test run - single cycle - no wait
  -s, --service         Run as service - special logging
  -l, --log             Shallow (module) logging
  -L, --Log             Deep logging
  -F, --Full            Full logging
  -f FILE, --file FILE  Logging configuration from specified JSON dictionary file
  -v, --verbose         Verbose - log INFO level
  -c CONFIG, --config CONFIG
                        Path to config file to be used

Configuration

Configuration for weatherstation needs to be provided in a specific configuration file. By default, a configuration file "weatherstation.json" is searched under $HOME/.config or under /etc.

For testing in a development environment, primarily the location ../tests/data is searched for a configuration file.

Alternatively, the path to the configuration file can be specified on the command line.

Inclusion of weatherforecast data

weatherstation can record foracast data for the geographic position of the weather station in order to be visualized together with measured data. Currently, only the service from https://openweathermap.org/ is supported. In order to be able to request data from this site, it is necessary to create an account (which is free) and to generate an API key. The service is free for a limited number of requests (60) per second, which will never be exceeded by weatherstation.

Structure of JSON Configuration File

The following is an example of a configuration file:

{
    "sensorType": "DHT22",
    "raspiPin": "PIN13",
    "measurementInterval": 900,
    "dbOut": true,
    "fileOut": false,
    "includeForecast": true,
    "dbConnection":
    {
        "host": "localhost", 
        "port": 3307, 
        "database": "weather", 
        "table": "weatherdata",
        "user": "testuser", 
        "password": "$[TestUser-1]@?"
    },
    "fileName": "weatherData.txt",
    "forecast":
    {
        "source":
        {
            "url": "https://api.openweathermap.org/data/2.5/onecall",
            "payload":
            {
                "lat"   : "54.188055",
                "lon"   : "7.869444",
                "units" : "metric",
                "lang"  : "de",
                "appid" : "xxxxx"
            }
        },
        "height": 226,
        "forecastDbOut": true,
        "forecastFileOut": false,
        "forecastTables":
        {
            "hourlyForecast": "weatherforecast",
            "dailyForecast" : "dailyforecast",
            "alertsForecast": "alerts"
        },
        "forecastFile": "forecastData.txt"
    }
}

Parameters

Parameter Description Mandatory
sensorType Type of the environment sensor (see supported sensor types, below) Yes
raspiPin Raspberry Pi GPIO pin in BOARD notation used for data signal, if required See SesorType
measurementInterval Measurement interval in seconds. Yes
dbOut Specifies whether measured values shall be stored in the database (true, false) Yes
fileOut Specifies whether measured values shall be written to the specified file (true, false) Yes
includeForecast Specifies whether forecast data shall be tracked (true, false) Yes
dbConnection Database connection parameters For dbOut=true
- host Host name or IP address of database server Yes
- port Port for MariaDB service Yes
- database Name of the database where data shall be stored Yes
- table Name of database table where data shall be stored Yes
- user Database user Yes
- password Password for database user Yes
fileName Path to file to which data shall be written (optional) For fileOut=true
forecast Parameters for forecast For includeForecast=true
- source Parameters for forecast source Yes
-- url URL of forecast service provider (currently only https://openweathermap.org/) No
-- payload Service call parameters Yes
--- lat Geographical coordinates of the location of the weatherstation (latitude) Yes
--- lon Geographical coordinates of the location of the weatherstation (longitude) Yes
--- units Units in which to return data ('metric' or 'imperial') No
--- lang valid language code for language specific data (default: 'de') No
--- appid Your unique API key (https://openweathermap.org/ account page under "API key" tab) Yes
-- height Height of weatherstation above sea level (for barometric formula) Yes
-- forecastDbOut If foracast data shall be stored in the database (true, false) Yes
-- forecastFileOut If forecast data shall be written to file (true, false) Yes
-- forecastTables Table names for forecast data For forecastDbOut=true
--- hourlyForecast Table name for hourly forecast Yes
--- dailyForecast Table name for daily forecast Yes
--- alertsForecast Table name for alerts Yes
-- forecastFile Path to file for forecast data. File output is JSON as received from weather service For forecastFileOut=true

Supported Sensor Types

See also https://github.com/signag/snraspi-lib/blob/main/docs/EnvironmentSensors.md

SensorType Description Measured Data Raspi bus raspiPin
DHT11 DHT11 temperature, humidity 1-Wire 1-Wire pin
DHT22 DHT22 temperature, humidity 1-Wire 1-Wire pin
BME280_I2C BME280 temperature, humidity, pressure I2C --
BMP280_SPI BME280 temperature, humidity, pressure SPI Chip Select

MariaDB

weatherstation stores weather data in a MariaDB database (see https://mariadb.org/).

MariaDB is available on Linux and Windows platforms. A MariaDB server is also provided as plugin on most of the popular NAS systems. For weatherstation, you may use any of your available MariaDB servers, as long as it is visible to your Raspberry Pi.

Alternatively, you may also install a MariaDB server on your Raspberry Pi.

NOTE MariaDB Client and connectors are installed together with weatherstation.

Setup MariaDB Server on Raspberry Pi

INFO Skip this step if you will be using an existing MariaDB server

Installation

sudo apt install mariadb-server php-mysql
sudo apt install phpmyadmin

Service configuration

For automatic start:

sudo systemctl enable mariadb

For manual start:

sudo systemctl disable mariadb

sudo systemctl start mariadb
sudo systemctl stop mariadb

Database Schema Setup

weatherstation requires a database table with a specific structure. For forecast data, two additional tables are required.

An SQL script template is available under ./data: createDBtable.sql in the installation folder.

The table names can be adjusted in the script and configured in the weatherstation config file so that different tables can be used to distinguish different physical weather stations in the same database.

Run this SQL script against the database to create the required database table(s).

Configure Weatherstation Service

To continuously log weather data, weatherstation should be run as service.

See https://www.raspberrypi.org/documentation/linux/usage/systemd.md

A service configuration file template can be found under ./data in the installation folder.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

snweatherstation-1.2.1.tar.gz (20.9 kB view details)

Uploaded Source

Built Distribution

snweatherstation-1.2.1-py3-none-any.whl (16.9 kB view details)

Uploaded Python 3

File details

Details for the file snweatherstation-1.2.1.tar.gz.

File metadata

  • Download URL: snweatherstation-1.2.1.tar.gz
  • Upload date:
  • Size: 20.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.1 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.7.3

File hashes

Hashes for snweatherstation-1.2.1.tar.gz
Algorithm Hash digest
SHA256 5f502786aab44d9cf4a3850a8251b6a97a7816d1d91bd1d1cd0afeba815318a0
MD5 b98568c4b8f4083db6016e1f6ddfb663
BLAKE2b-256 575ae3b9d3115cb3c785c40c6de2f3551d8044e9a8a60255fab23e40fe4f95d9

See more details on using hashes here.

File details

Details for the file snweatherstation-1.2.1-py3-none-any.whl.

File metadata

  • Download URL: snweatherstation-1.2.1-py3-none-any.whl
  • Upload date:
  • Size: 16.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.1 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.7.3

File hashes

Hashes for snweatherstation-1.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 12ad3102786ff873864229e4ed5ecaf2845fd18f2394818d02f92ca9f91b541f
MD5 15099eb344981031486b6527be4731d0
BLAKE2b-256 195e2defb62fccc4531b508586a1ac9a45f7ac8f108b129e45845b6bf4e07bc1

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page