AkitaEngineering/Akita-WeatherBot
A weather bot with alerts and forecasts for Canadian Meshtastic users, licensed under the GPLv3. Designed to run on a Raspberry Pi or any computer with a connected Meshtastic device.
Akita WeatherBot
A weather bot with alerts and forecasts for Canadian Meshtastic users, licensed under the GPLv3. Designed to run on a Raspberry Pi or any computer with a connected Meshtastic device.
Our Mission
- To provide accurate Canadian weather forecasts via the mesh.
- To provide ECCC Public Weather Alerts anywhere, including locations that don't receive Weatheradio Canada broadcasts.
- To allow simple customization to better suit your deployment.
- To be lightweight, efficient, and open-source.
Features
- Utilizes Environment and Climate Change Canada (ECCC), the official source for Canadian weather data and alerts.
- Automatically broadcasts new, severe weather alerts to the mesh network.
- Weather Forecasts: A selection of multi-day and hourly forecasts available on demand.
- Network Diagnostics: Get details on your connection to the bot.
- Auto-Reboot: Optional daily reboot function to improve node stability.
- Configurable single-message or multi-message replies to suit network traffic.
Bot Interaction
Direct Message (DM) your bot's node with any of the following commands:
?: Receive a menu of all available weather commands.hourly: 24-hour hourly forecast with temp, POP, and conditions. (Multi-message)5day: 5-day detailed forecast. (Multi-message)7day: 7-day forecast in emoji form. (Multi-message)4day: 4-day simple forecast in emoji form. (Single message)2day: Today and tomorrow's detailed forecast. (Single message)rain: Chance of precipitation every hour for the next 24 hours. (Single message)temp: Predicted temperature every hour for the next 24 hours. (Single message)alert-status: Runs a check on the ECCC alert system.test: Bot will return a simple acknowledgement.tst-detail: Returns an acknowledgement with connection details (RSSI, SNR).advertise: Bot sends its menu on the public channel.
Screenshot
Requirements
- Python 3.11 or above
- Access to a Meshtastic device
- Serial Drivers for your Meshtastic device
- An internet connection for the bot
Installation
Clone this repository:
git clone https://github.com/AkitaEngineering/Akita-WeatherBot.gitNavigate into the folder:
cd Akita-WeatherBotSetup and activate a virtual environment (examples):
Create the venv
python -m venv .venvActivate - Linux / macOS
source .venv/bin/activateActivate - Windows PowerShell
. .\.venv\Scripts\Activate.ps1Activate - Windows cmd.exe
. .\.venv\Scripts\activate.batInstall the required dependencies:
pip install -r requirements.txtConnect your Meshtastic device to your computer via USB.
Crucially, edit the settings_canada.yaml file to configure your location.
How to Run
Run the bot using the appropriate port or host option for your Meshtastic device.
Linux / macOS (example):
python akitabot.py --port /dev/ttyUSB0Windows (example, PowerShell):
python akitabot.py --port COM7Using TCP (if your node is on your network):
python akitabot.py --host meshtastic.localConfiguration (settings_canada.yaml)
This file is the heart of your bot's configuration.
ECCC_LOCATION_CODE: The site code for your specific forecast location.ALERT_PROVINCE_CODE: The two-letter code for your province (e.g., ON, BC, QC).MYNODES: A list of Node IDs (e.g.,['!c4b787a0', '!a1b2c3d4']) that are allowed to use the bot when theFIREWALLis enabled.USER_AGENT_APP/USER_AGENT_EMAIL: Highly recommended you set these to unique values. This identifies your bot to ECCC and is good practice.
How to get your ECCC_LOCATION_CODE:
- Go to https://weather.gc.ca/.
- Search for your city or town (e.g., "Welland").
- On the city's forecast page, look at the URL. It will be something like:
.../city/pages/on-81_metric_e.html - Now, construct a new URL to find the official site code:
https://dd.weather.gc.ca/citypage_weather/xml/ON/(replaceONwith your province code). - Browse this directory for the file corresponding to your city. For Welland, it is
s0000670_e.xml. - Your
ECCC_LOCATION_CODEis the part before_e.xml, so for Welland, it iss0000670.
Enter this into the settings file.
License
This project is distributed under the GNU General Public License v3.0. See the LICENSE file for the full text.
Documentation
Extended docs and quickstart instructions are available in the docs/ folder:
docs/QUICKSTART.md— minimal setup and run steps for local testing.docs/EXAMPLES.md— example commands and sample outputs.docs/TROUBLESHOOTING.md— common issues and fixes.
Refer to the Deployment Guide - Akita WeatherBot for systemd-based production deployments on Linux.
Start here: docs/index.md for a single place to find the quickstart, examples, and troubleshooting.

