Library for the Pimoroni Weather HAT
Project description
Weather HAT Python Library & Examples
Pre-requisites
This library requires Python ≥3.6 so we'd recommend using it with Raspberry Pi OS Buster or later.
You must enable:
- i2c:
sudo raspi-config nonint do_i2c 0
- spi:
sudo raspi-config nonint do_spi 0
You can optionally run sudo raspi-config
or the graphical Raspberry Pi Configuration UI to enable interfaces.
Installing
Stable library from PyPi:
- Just run
pip3 install weatherhat
In some cases you may need to use sudo
or install pip with: sudo apt install python3-pip
Latest/development library from GitHub:
git clone https://github.com/pimoroni/weatherhat-python
cd weatherhat-python
./install.sh --unstable
Some of the examples use additional libraries. You can install them with:
pip3 install fonts font-manrope pyyaml adafruit-io numpy
You may also need to install libatlas-base-dev
sudo apt-get install libatlas-base-dev
Using The Library
Import the weatherhat
module and create an instance of the WeatherHAT
class.
import weatherhat
sensor = weatherhat.WeatherHAT()
Weather HAT updates the sensors when you call update(interval=5)
.
Temperature, pressure, humidity, light and wind direction are updated continuously.
Rain and Wind measurements are measured over an interval
period. Weather HAT will count ticks of the rain gauge and (half) rotations of the anemometer, calculate rain/wind every interval
seconds and reset the counts for the next pass.
For example the following code will update rain/wind speed every 5 seconds, and all other readings will be updated on demand:
import time
import weatherhat
sensor = weatherhat.WeatherHAT()
while True:
sensor.update(interval=5.0)
time.sleep(1.0)
Averaging Readings
The Weather HAT library supplies set of "history" classes intended to save readings over a period of time and provide access to things like minimum, maximum and average values with unit conversions.
For example WindSpeedHistory
allows you to store wind readings and retrieve them in mp/h or km/h, in addition to determining the "gust" (maximum wind speed) in a given period of time:
import time
import weatherhat
from weatherhat.history import WindSpeedHistory
sensor = weatherhat.WeatherHAT()
wind_speed_history = WindSpeedHistory()
while True:
sensor.update(interval=5.0)
if sensor.updated_wind_rain:
wind_speed_history.append(sensor.wind_speed)
print(f"Average wind speed: {wind_speed_history.average_mph()}mph")
print(f"Wind gust: {wind_speed_history.gust_mph()}mph")
time.sleep(1.0)
Quick Reference
Temperature
Temperature readings are given as degrees celsius and are measured from the Weather HAT's onboard BME280.
Device Temperature
sensor.device_temperature
Device temperature in degrees celsius.
This is the temperature read directly from the BME280 onboard Weather HAT. It's not compensated and tends to read slightly higher than ambient due to heat from the Pi.
Compensated (Air) Temperature
sensor.temperature
Temperature in degrees celsius.
This is the temperature once an offset has been applied. This offset is fixed, and taken from sensor.temperature_offset
.
Pressure
sensor.pressure
Pressure in hectopascals.
Humidity
sensor.humidity
Humidity in %.
Relative Humidity
sensor.relative_humidity
Relative humidity in %.
Relative humidity is the water content of the air compensated for temperature, since warmer air can hold more water.
It's expressed as a percentage from 0 (no moisture) to 100 (fully saturated).
Dew Point
sensor.dewpoint
Dew point in degrees celsius.
Dew point is the temperature at which water - at the current humidity - will condense out of the air.
Light / Lux
sensor.lux
Light is given in lux.
Lux ranges from 0 (complete darkness) to 64,000 (full brightness).
Wind
Both wind and rain are updated on an interval, rather than on-demand.
To see if an update()
call has resulted in new wind/rain measurements, check:
sensor.updated_wind_rain
Wind Direction
sensor.wind_direction
Wind direction in degrees.
Wind direction is measured using a potentiometer and uses an analog reading internally. This is converted to degrees for convenience, and will snap to the nearest 45-degree increment with 0 degrees indicating North.
Wind Speed
sensor.wind_speed
Wind speed in meters per second.
Weather HAT counts every half rotation and converts this to cm/s using the anemometer circumference and factor.
It's updated depending on the update interval requested.
Rain
sensor.rain
Rain amount in millimeters per second.
Weather HAT counts every "tick" of the rain gauge (roughly .28mm) over the given update internal and converts this into mm/sec.
Total Rain
sensor.rain_total
Total rain amount in millimeters for the current update period.
0.0.2
- Values will now always be float
- Fixed backlight pin
- Fixed latest/average mph
0.0.1
- Initial Release
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file weatherhat-0.0.2.tar.gz
.
File metadata
- Download URL: weatherhat-0.0.2.tar.gz
- Upload date:
- Size: 27.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.0 CPython/3.10.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c6031555e6d3286d6deed4be0ff6c1dad32dbe8b258c7e9be470cbc9c608e2ea |
|
MD5 | 849fe116afd24a0b411c34405cbe7c21 |
|
BLAKE2b-256 | 1769b91d9e08c34519313b803555a7b707321497b381af9819f8ec29d76192b8 |
File details
Details for the file weatherhat-0.0.2-py3-none-any.whl
.
File metadata
- Download URL: weatherhat-0.0.2-py3-none-any.whl
- Upload date:
- Size: 11.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.0 CPython/3.10.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | febcf24b1105f0bd314a7c464a7d1e43c90077fbe3e65fa436c74efc380f280f |
|
MD5 | 56a03c7980d6e834cf4a5844a58fcede |
|
BLAKE2b-256 | f93916bc9f7b739a76cd58d49981481662342fbf32072ab84a06354243163f55 |