Weather Station for Raspberry Pi and Small LCDs
(Raspberry Pi と小型液晶向けのウェザーステーション)
Notice: DarkSky has announced the suspension of new registrations for its APIs and a close at the end of 2021. Accordingly, this repository has been modified to use the OpenWeather API. DarkSky version is saved in "Dark_Sky_API_Version" branch, so please refer to it if you need.
注意: DarkSky は API の新規登録を停止し、2021 年末で停止することを発表しました。それに伴いこのリポジトリは OpenWeather API を利用するよう変更しています。DarkSky 版は"Dark_Sky_API_Version"ブランチに保存してありますので、必要であれば参照してください。
fig: 480x320 en
fig: 240x320 en
- Modularized display parts
(表示パーツはモジュール化してあるので、カスタマイズが可能です) - Heat Index color / UV Index color support
(Heat Index/UV Index で表示色を変更します) - Custom module support
(カスタムモジュールを作成して組み込むことができます)
External modules - i18n (internationalization) support
(ロケールの変更や表示文字列の翻訳が可能です)
I18n
sudo apt-get update -y && sudo apt-get upgrade -y
sudo apt-get install rng-tools gettext -y
sudo apt-get install python3-pygame python3-pillow -y
git clone https://github.com/miyaichi/WeatherPi.git
cd WeatherPi
cp example.240x320.config.json config.json
or
cp example.480x320.config.json config.json
Name | Default | Description | |
---|---|---|---|
openweather_appid | required | OpenWeather API Key | |
google_api_key | optional | Google Geocoding API key | |
address | optional | The address of a location. latitude and longitude can be omitted if google_api_key and address are specified. |
|
latitude longitude |
required | The latitude and longitude of a location (in decimal degrees). Positive is east, negative is west. | |
locale | required | en_US.UTF-8 | Locale. Specify the display language of time and weather information. |
units | required | metric | Unit of weather information. (imperial: Fahrenheit, metric: Celsius) |
SDL_FBDEV | required | /dev/fb1 | Frame buffer device to use in the linux fbcon driver, instead of /dev/fb0. |
display | required | Display size. [Width, Height] | |
fonts.name | required | Sans | Font name. |
fonts.size | required | {"large": 30, "medium": 22, "small": 14} | Font size list. (Style name and point) |
- for language-support, units, latitude and longitude please refer to -> OpenWeather API Docs
cd
cd WeatherPi
sudo cp WeatherPi_Service.sh /etc/init.d/WeatherPi
sudo chmod +x /etc/init.d/WeatherPi
sudo chmod +x WeatherPi.py
sudo systemctl enable WeatherPi
- this is useful if you like to run your python scripts on boot and with sudo support in python
sudo chown -v root:root /usr/bin/python3
sudo chmod -v u+s /usr/bin/python3
- this should start your wanted python version just by typing
python
in the terminal - helps if you have projects in python2 and python3 and don't want to hassle with the python version in your service scripts
update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
update-alternatives --install /usr/bin/python python /usr/bin/python3.5 2
- if you use DHT11, DHT22 and AM2302 sensor, install Adafruit_DHT
sudo pip3 install Adafruit_DHT
- if you use DigistampTemper, install pyusb
sudo pip3 install pyusb
- if you use WeatherForcustGraph, install matplotlib
sudo pip3 install matplotlib
./WeatherPi.py [--debug]
By default, the OpenWeather icon is resized to display, but you can change it to any icon you like.
To change the icons, place the following 18 icons in the icons folder:
(デフォルトでは OpenWeather のアイコンを表示しますが、icons フォルダに以下の 18 個のファイルを用意すれば、変更することができます。)
- 01d.pnng, 01n.png, 02d.pnng, 02n.png, 03d.pnng, 03n.png, 04d.pnng, 04n.png, 09d.pnng, 09n.png, 10d.pnng, 10n.png, 11d.pnng, 11n.png, 13d.pnng, 13n.png, 50d.pnng, 50n.png,
You can change the display language of dates and information.
(日付と情報の表示言語を変更することができます。)
fig 480x320 ja
fig 240x320 ja
Install the font for your locale. I recommend Google Fonts and Google NotoFonts.
(ロケールにあったフォントをインストールします。日本語であれば、"Noto Sans CJK JP"をインストールして、等幅フォント"Noto Sans CJK JP"を設定することを勧めます。)
- init message.po file
cd locale
cp -Rp en <your language>
- edit messages.po (msgstr section).
msgfmt <your language>/LC_MESSAGES/messages.po -o <your language>/LC_MESSAGES/messages.po
All modules require the following configuration:
"modules": [
{
"module": "<Module Name>",
"config": {
"rect": [<x>, <y>, <width>, <height>]
}
}
Name | Description | Options | Size |
---|---|---|---|
Alerts | Any severe weather alerts pertinent | None | 240x15 - 480x15 |
Clock | Current Time | None | 140x60 |
Location | Current location | 140x15 | |
Weather | Current Weather | icon_size (default 100) | 240x100 - 480x100 |
WeatherForecast | Weather Forecast | forecast_days icon_size (default 50) |
240x80 - 480x80 |
SunriseSuset | Sunrise, Sunset time | icon_size (default 40) | 80x80 |
MoonPhase | Moon Phase | icon_size (default 50) | 80x80 |
Wind | Wind direction, speed | icon_size (default 30) | 80x80 |
Name | Description | Options | Size |
---|---|---|---|
DHT | Adafruit temperature/humidity sensor | pin: pin number correction_value: (調整値) |
60x60 - 70x120 |
DigistampTemper | DigisparkTemper (usb temperature/humidity sensor) | correction_value: (調整値) | 60x60 - 70x120 |
IrMagitianT | Temperature sensor on the infrared remote control system "irMagician-T" | correction_value: (調整値) | 60x35 - 70x60 |
JMAAlerts | JMA weather alerts (気象庁の注意報、警報、特別警報を表示) |
prefecture: (都道府県) city: (市区町村) |
240x15 - 480x15 |
NatureRemo | Temperature and humidity sensor on Nature Remo/Remo mini | token: (access tokens to access Nature API) name: (device name) |
100x60 |
PIR | PIR(Passive Infrared Ray)Motion Sensor | pin: pin number power_save_delay: delay (in seconds) before the monitor will be turned off. |
None |
SelfUpdate | Update and restart if there is a newer version on GitHub | check_interval (default 86400 # once a day) | - |
TEMPer | TEMPerHUM/TEMPer thermometer & hygrometer | correction_value: (調整値) | 60x60 - 70x120 |
WeatherForcustGraph | Plots weather condition data for the next 48 hours. | conditions: Weather conditions to display. Available weather conditions is following: temperature, apparentTemperature, dewPoint, humidity, pressure, windSpeed, uvIndex, ozone |
The size you want |
Temperature and humidity sensors and weather forecast data can be displayed in a graph. (温湿度センサーや気象予想データをグラフで表示することができます。)
-
Temperature and humidity sensor modules (DHT, DigisparkTemper, IrMagitianT, NatureRemo, TEMPer) Each module holds the last 6 hours of sensor data and can display it graphically. To plot the graph, define the graph drawing area with "graph_rect" parameter in the module config. (各モジュールは過去6時間分のセンサーデータを保持して、それをグラフで表示することができます。グラフを表示するには、モジュールの config に"graph_rect"パラメータでグラフの描画領域を定義します。)
example config:
{ "module": "<Module name>", "config": { "rect": [x, y, width, height], ... "graph_rect": [x, y, width, height] } }
-
WeatherGorcustGraph module It can graphically displays the weather data for the next 48 hours or 7 days provided by OpenWeather. To plot the graph, define up to two weather condition names with the conditions parameter in the module's config. (OpenWeather が提供する今後 48 時間または 7 日間の天気データをグラフィカルに表示できます。グラフを表示するには、モジュールの config に conditions パラメータで気象条件名を最大2つまで定義します。)
example config:
{ "module": "WeatherForcustGraph", "config": { "rect": [x, y, width, height], "block": "hourly", "conditions": ["temperature", "humidity"] } }
-
Abailable block and conditions are following: (有効な block と condition は以下の通りです) hourly: temperature, apparentTemperature, dewPoint, humidity, pressure, windSpeed, uvIndex, ozone daily: precipIntensity, precipIntensityMax, precipProbability, temperatureHigh, temperatureLow, apparentTemperatureHigh, apparentTemperatureLow, dewPoint, humidity, pressure, windSpeed, windGust, cloudCover, uvIndex, uvIndexTime, visibility, ozone, temperatureMin, temperatureMax, apparentTemperatureMin, "apparentTemperatureMax
Refer: OpenWeather API Docs
-
- WeatherPi_TFT His wonderful software is the beginning of my project
- adafruit for hardware and tutorials
- OpenWeather weather api and documentation
- 気象庁防災情報 XML フォーマット
- Google Fonts
- Google NotoFonts