chore: Remove outdated documentation files and update references

- Deleted COMMANDS.md, DOCKER.md, WEB_VIEWER.md, and other related documentation files to streamline the project structure.
- Updated README.md and other documentation references to point to the new locations of the command and Docker instructions.
- Added optional dependencies for documentation generation in pyproject.toml.
This commit is contained in:
agessaman
2026-02-07 20:10:09 -08:00
parent 5edf09f28f
commit d15c58994e
20 changed files with 382 additions and 145 deletions
+28
View File
@@ -0,0 +1,28 @@
# Build and deploy Material for MkDocs to GitHub Pages
name: Deploy docs
on:
push:
branches:
- main
workflow_dispatch:
permissions:
contents: write
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.x"
- name: Install MkDocs and Material
run: pip install mkdocs-material
- name: Deploy to GitHub Pages
run: mkdocs gh-deploy --force
+2 -2
View File
@@ -119,7 +119,7 @@ For containerized deployment using Docker:
docker-compose logs -f
```
See [DOCKER.md](DOCKER.md) for detailed Docker deployment instructions, including serial port access, web viewer configuration, and troubleshooting.
See [DOCKER.md](docs/DOCKER.md) for detailed Docker deployment instructions, including serial port access, web viewer configuration, and troubleshooting.
## NixOS
Use the Nix flake via flake.nix
@@ -220,7 +220,7 @@ python meshcore_bot.py
### Available Commands
For a comprehensive list of all available commands with examples and detailed explanations, see [COMMANDS.md](COMMANDS.md).
For a comprehensive list of all available commands with examples and detailed explanations, see [COMMANDS.md](docs/COMMANDS.md).
Quick reference:
- **Basic:** `test`, `ping`, `help`, `hello`, `cmd`
+71 -71
View File
@@ -11,7 +11,7 @@ This document provides a comprehensive list of all available commands in the Mes
- [Entertainment Commands](#entertainment-commands)
- [Sports Commands](#sports-commands)
- [MeshCore Utility Commands](#meshcore-utility-commands)
- [Management Commands](#management-commands)
- [Admin Commands](#admin-commands)
---
@@ -663,9 +663,77 @@ mt
---
## Management Commands
## Command Syntax
**Note:** Management commands are only available via Direct Message (DM) and may require ACL permissions.
### Prefix
Commands can be used with or without the `!` prefix:
- `test` or `!test` - Both work
- `wx 98101` or `!wx 98101` - Both work
### Direct Messages
Some commands work in both public channels and direct messages, while admin commands typically require direct messages for security.
### Rate Limiting
The bot implements rate limiting to prevent spam. If you send commands too quickly, you may receive a rate limit message. Wait a few seconds before trying again.
### Case Sensitivity
Most commands are case-insensitive:
- `TEST` and `test` work the same
- `WX 98101` and `wx 98101` work the same
### Getting Help
Use the `help` command to get more information:
- `help` - List all commands
- `help <command>` - Get detailed help for a specific command
---
## Additional Notes
### Location Requirements
Some commands use location data:
- **`sun` and `moon`** - Use the bot's configured default location (`bot_latitude` and `bot_longitude` in config.ini), not the user's location from their advert
- **`solar`** - Does not require location (provides global solar conditions)
- **`solarforecast`** - Requires a location parameter (location name, repeater name, coordinates, or zipcode)
- **`wx`** - Requires a zipcode parameter
- **`gwx`** - Requires a location parameter
- **`aqi`** - Requires a location parameter
### API Keys
Some commands require API keys to be configured in `config.ini`:
- `satpass` - Requires `n2yo_api_key`
- `aqi` - Requires `airnow_api_key` (optional, uses fallback if not configured)
### Weather Data
- `wx` uses NOAA API (US locations only)
- `gwx` uses Open-Meteo API (global locations)
- Both provide current conditions and forecasts
### Command Categories
Commands are organized into categories for easier discovery:
- **Basic** - Essential commands for testing and help
- **Information** - Weather, astronomy, and data queries
- **Emergency** - Emergency and safety information
- **Gaming** - Fun commands for games and random numbers
- **Entertainment** - Jokes and humorous responses
- **Sports** - Sports scores and information
- **MeshCore Utility** - Network-specific utilities
- **Admin** - Administrative commands (DM only)
---
## Admin Commands
**Note:** Admin commands are only available via Direct Message (DM) and may require ACL permissions.
### `repeater` or `repeaters` or `rp`
@@ -792,73 +860,5 @@ feed test https://example.com/feed.xml
---
## Command Syntax
### Prefix
Commands can be used with or without the `!` prefix:
- `test` or `!test` - Both work
- `wx 98101` or `!wx 98101` - Both work
### Direct Messages
Some commands work in both public channels and direct messages, while management commands typically require direct messages for security.
### Rate Limiting
The bot implements rate limiting to prevent spam. If you send commands too quickly, you may receive a rate limit message. Wait a few seconds before trying again.
### Case Sensitivity
Most commands are case-insensitive:
- `TEST` and `test` work the same
- `WX 98101` and `wx 98101` work the same
### Getting Help
Use the `help` command to get more information:
- `help` - List all commands
- `help <command>` - Get detailed help for a specific command
---
## Additional Notes
### Location Requirements
Some commands use location data:
- **`sun` and `moon`** - Use the bot's configured default location (`bot_latitude` and `bot_longitude` in config.ini), not the user's location from their advert
- **`solar`** - Does not require location (provides global solar conditions)
- **`solarforecast`** - Requires a location parameter (location name, repeater name, coordinates, or zipcode)
- **`wx`** - Requires a zipcode parameter
- **`gwx`** - Requires a location parameter
- **`aqi`** - Requires a location parameter
### API Keys
Some commands require API keys to be configured in `config.ini`:
- `satpass` - Requires `n2yo_api_key`
- `aqi` - Requires `airnow_api_key` (optional, uses fallback if not configured)
### Weather Data
- `wx` uses NOAA API (US locations only)
- `gwx` uses Open-Meteo API (global locations)
- Both provide current conditions and forecasts
### Command Categories
Commands are organized into categories for easier discovery:
- **Basic** - Essential commands for testing and help
- **Information** - Weather, astronomy, and data queries
- **Emergency** - Emergency and safety information
- **Gaming** - Fun commands for games and random numbers
- **Entertainment** - Jokes and humorous responses
- **Sports** - Sports scores and information
- **MeshCore Utility** - Network-specific utilities
- **Management** - Administrative commands (DM only)
---
For more information about configuring the bot, see the main [README.md](README.md) file.
-5
View File
@@ -1,8 +1,3 @@
---
layout: default
title: Discord Bridge Service
---
# Discord Bridge Service
The Discord Bridge service posts MeshCore channel messages to Discord channels via webhooks. This is a **one-way, read-only bridge** - messages only flow from MeshCore to Discord.
+1 -1
View File
@@ -470,4 +470,4 @@ docker-compose up -d
- [Docker Documentation](https://docs.docker.com/)
- [Docker Compose Documentation](https://docs.docker.com/compose/)
- [Main README](README.md) for general bot configuration
- [Main README](https://github.com/agessaman/meshcore-bot/blob/main/README.md) for general bot configuration
-5
View File
@@ -1,8 +1,3 @@
---
layout: default
title: Feed Management
---
# Feed Management
The Feed Management system allows the bot to subscribe to RSS feeds and REST APIs, automatically polling for new content and posting updates to specified mesh channels.
-5
View File
@@ -1,8 +1,3 @@
---
layout: default
title: Map Uploader Service
---
# Map Uploader Service
Uploads node advertisements to [map.meshcore.dev](https://map.meshcore.dev) for network visualization.
-5
View File
@@ -1,8 +1,3 @@
---
layout: default
title: Packet Capture Service
---
# Packet Capture Service
Captures packets from the MeshCore network and publishes them to MQTT brokers.
-5
View File
@@ -1,8 +1,3 @@
---
layout: default
title: Path Command Configuration
---
# Path Command Configuration Guide
This document explains all configuration parameters for the Path Command, which decodes hex path data to identify repeaters in message routing paths.
-5
View File
@@ -1,8 +1,3 @@
---
layout: default
title: Repeater Management Commands
---
# Repeater Management DM Commands
This document provides comprehensive documentation for all repeater management commands available via direct message (DM) to the bot.
-5
View File
@@ -1,8 +1,3 @@
---
layout: default
title: Weather Service
---
# Weather Service
Provides scheduled weather forecasts, weather alerts, and lightning detection.
-17
View File
@@ -1,17 +0,0 @@
# GitHub Pages / Jekyll config for meshcore-bot documentation
title: meshcore-bot Documentation
description: Documentation for the MeshCore bot and its services
theme: jekyll-theme-cayman
markdown: kramdown
# Set to your repo URL (used for "Project overview" links on index)
repository_url: https://github.com/agessaman/meshcore-bot
repository_branch: main
# Apply default layout to all docs under docs/
defaults:
- scope:
path: ""
type: pages
values:
layout: default
+63
View File
@@ -0,0 +1,63 @@
# Configuration
The bot is configured via `config.ini` in the project root (or the path given with `--config`). This page describes how configuration is organized and where to find command-specific options.
## config.ini structure
- **Sections** are named in square brackets, e.g. `[Bot]`, `[Connection]`, `[Path_Command]`.
- **Options** are `key = value` (or `key=value`). Comments start with `#` or `;`.
- **Paths** can be relative (to the directory containing the config file) or absolute. For Docker, use absolute paths under `/data/` (see [Docker deployment](DOCKER.md)).
The main sections include:
| Section | Purpose |
|--------|---------|
| `[Bot]` | Bot name, database path, response toggles, command prefix |
| `[Connection]` | Serial, BLE, or TCP connection to the MeshCore device |
| `[Channels]` | Channels to monitor, DM behavior |
| `[Admin_ACL]` | Admin public keys and admin-only commands |
| `[Keywords]` | Keyword → response pairs |
| `[Weather]` | Units and settings shared by `wx` / `gwx` and Weather Service |
| `[Logging]` | Log file path and level |
## Command and feature sections
Many commands and features have their own section. Options there control whether the command is enabled and how it behaves.
### Enabling and disabling commands
- **`enabled`** Common option to turn a command or plugin on or off. Example:
```ini
[Aurora_Command]
enabled = true
```
- Commands without an `enabled` key are typically always available (subject to [Admin_ACL](https://github.com/agessaman/meshcore-bot/blob/main/README.md) for admin-only commands).
### Command-specific sections
Examples of sections that configure specific commands or features:
- **`[Path_Command]`** Path decoding and repeater selection. See [Path Command](PATH_COMMAND_CONFIG.md) for all options.
- **`[Prefix_Command]`** Prefix lookup, prefix best, range limits.
- **`[Weather]`** Used by the `wx` / `gwx` commands and the Weather Service plugin (see [Weather Service](WEATHER_SERVICE.md)).
- **`[Airplanes_Command]`** Aircraft/ADS-B command (API URL, radius, limits).
- **`[Aurora_Command]`** Aurora command (default coordinates).
- **`[Alert_Command]`** Emergency alerts (agency IDs, etc.).
- **`[Sports_Command]`** Sports scores (teams, leagues).
- **`[Joke_Command]`**, **`[DadJoke_Command]`** Joke sources and options.
Full reference: see `config.ini.example` in the repository for every section and option, with inline comments.
## Path Command configuration
The Path command has many options (presets, proximity, graph validation, etc.). All are documented in:
**[Path Command](PATH_COMMAND_CONFIG.md)** Presets, geographic and graph settings, and tuning.
## Service plugin configuration
Service plugins (Discord Bridge, Packet Capture, Map Uploader, Weather Service) each have their own section and are documented under [Service Plugins](service-plugins.md).
## Reloading configuration
Some configuration can be reloaded without restarting the bot using the **`reload`** command (admin only). Radio/connection settings are not changed by reload; restart the bot for those.
+23
View File
@@ -0,0 +1,23 @@
# FAQ
Frequently asked questions about meshcore-bot.
## Installation and upgrades
### Will using `--upgrade` on the install script move over the settings file as well as upgrade the bot?
No. The install script **never overwrites** an existing `config.ini` in the installation directory. Whether you run it with or without `--upgrade`, your current `config.ini` is left as-is. So your settings are preserved when you upgrade.
With `--upgrade`, the script also updates the service definition (systemd unit or launchd plist) and reloads the service so the new code and any changed paths take effect.
### If I don't use `--upgrade`, is the bot still upgraded after `git pull` and running the install script?
**Partially.** The script still copies repo files into the install directory and only overwrites when the source file is newer (and it never overwrites `config.ini`). So the **installed code** is upgraded.
Without `--upgrade`, the script does *not* update the service file (systemd/launchd) and does *not* reload the service. So:
- New bot code is on disk.
- The running service may still be using the old code until you restart it (e.g. `sudo systemctl restart meshcore-bot` or equivalent).
- Any changes to the service definition (paths, user, etc.) in the script are not applied.
**Recommendation:** Use `./install-service.sh --upgrade` after `git pull` when you want to upgrade; that updates files, dependencies, and the service, and reloads the service, while keeping your `config.ini` intact.
+82
View File
@@ -0,0 +1,82 @@
# Getting Started
Get meshcore-bot running on your machine in a few minutes.
## Requirements
- **Python 3.7+**
- **MeshCore-compatible device** (Heltec V3, RAK Wireless, etc.)
- **Connection**: USB cable, BLE, or TCP/IP to the device
## Quick start (development)
1. **Clone and install**
```bash
git clone https://github.com/agessaman/meshcore-bot.git
cd meshcore-bot
pip install -r requirements.txt
```
2. **Configure**
Copy an example config and edit with your connection and bot settings:
- **Full config** (all commands and options):
```bash
cp config.ini.example config.ini
```
- **Minimal config** (core commands only: ping, test, path, prefix, multitest):
```bash
cp config.ini.minimal-example config.ini
```
Edit `config.ini`: set at least `[Connection]` (serial/BLE/TCP) and `[Bot]` (e.g. `bot_name`).
3. **Run**
```bash
python3 meshcore_bot.py
```
## Production deployment
### Systemd service
Run the bot as a system service on Linux:
```bash
sudo ./install-service.sh
sudo nano /opt/meshcore-bot/config.ini # configure
sudo systemctl start meshcore-bot
sudo systemctl status meshcore-bot
```
See [SERVICE-INSTALLATION.md](https://github.com/agessaman/meshcore-bot/blob/main/SERVICE-INSTALLATION.md) for full steps.
### Docker
Run in a container with Docker Compose:
```bash
mkdir -p data/{config,databases,logs,backups}
cp config.ini.example data/config/config.ini
# Edit data/config/config.ini and set paths to /data/... (see [Docker](DOCKER.md))
docker compose up -d --build
```
See [Docker deployment](DOCKER.md) for paths, serial access, and troubleshooting.
### NixOS
Use the flake:
```nix
meshcore-bot.url = "github:agessaman/meshcore-bot/";
```
## Next steps
- **[Command Reference](COMMANDS.md)** — Full command reference (wx, aqi, sun, path, prefix, etc.)
- **[README](https://github.com/agessaman/meshcore-bot/blob/main/README.md)** — Features, keywords, configuration overview
- **Guides** (sidebar) — Path command, repeater commands, feeds, weather service, Discord bridge, map uploader, packet capture
+29 -19
View File
@@ -1,29 +1,39 @@
---
layout: default
title: meshcore-bot Documentation
---
# meshcore-bot Documentation
Documentation for the MeshCore bot: setup, configuration, commands, and services.
**New to the project?** Start with [Getting Started](getting-started.md).
## Project overview
- [README]({{ site.repository_url }}/blob/{{ site.repository_branch }}/README.md) Getting started, installation, quick start
- [COMMANDS.md]({{ site.repository_url }}/blob/{{ site.repository_branch }}/COMMANDS.md) Full command reference
- [DOCKER.md]({{ site.repository_url }}/blob/{{ site.repository_branch }}/DOCKER.md) Docker deployment
- [SERVICE-INSTALLATION.md]({{ site.repository_url }}/blob/{{ site.repository_branch }}/SERVICE-INSTALLATION.md) Systemd service setup
- [WEB_VIEWER.md]({{ site.repository_url }}/blob/{{ site.repository_branch }}/WEB_VIEWER.md) Web viewer module
- [README](https://github.com/agessaman/meshcore-bot/blob/main/README.md) Getting started, installation, quick start
- [Command Reference](COMMANDS.md) Full command reference
- [Docker deployment](DOCKER.md) Docker deployment
- [SERVICE-INSTALLATION.md](https://github.com/agessaman/meshcore-bot/blob/main/SERVICE-INSTALLATION.md) Systemd service setup
- [Web Viewer](WEB_VIEWER.md) Web viewer module
## Guides (this site)
## Configuration
| Document | Description |
|----------|-------------|
| [Path Command Configuration](PATH_COMMAND_CONFIG.html) | Path command presets and options |
| [Repeater Commands](REPEATER_COMMANDS.html) | Repeater management DM commands |
| [Feed Management](FEEDS.html) | RSS/REST feeds and posting to channels |
| [Weather Service](WEATHER_SERVICE.html) | Scheduled weather and alerts |
| [Discord Bridge](DISCORD_BRIDGE.html) | One-way bridge to Discord |
| [Map Uploader](MAP_UPLOADER.html) | Uploading to map.meshcore.dev |
| [Packet Capture](PACKET_CAPTURE.html) | Packet capture and MQTT |
| [Documentation site setup](DOCS_SITE.html) | How to enable and configure this GitHub Pages site |
| [Configuration](configuration.md) | config.ini structure and command options |
| [Path Command](PATH_COMMAND_CONFIG.md) | Path command presets and tuning |
## Guides
| Document | Description |
|----------|-------------|
| [Repeater Commands](REPEATER_COMMANDS.md) | Repeater management DM commands |
| [Feed Management](FEEDS.md) | RSS/REST feeds and posting to channels |
| [Web Viewer](WEB_VIEWER.md) | Web-based data viewer and API |
| [Documentation site setup](DOCS_SITE.md) | How to build and deploy this site |
## Service Plugins
| Document | Description |
|----------|-------------|
| [Service Plugins overview](service-plugins.md) | Enable and configure background services |
| [Discord Bridge](DISCORD_BRIDGE.md) | One-way bridge to Discord |
| [Packet Capture](PACKET_CAPTURE.md) | Packet capture and MQTT |
| [Map Uploader](MAP_UPLOADER.md) | Uploading to map.meshcore.dev |
| [Weather Service](WEATHER_SERVICE.md) | Scheduled weather and alerts |
+18
View File
@@ -0,0 +1,18 @@
# Service Plugins
Service plugins extend the bot with background services that run alongside the main message loop. Each can be enabled or disabled in `config.ini`.
| Plugin | Description |
|--------|-------------|
| [Discord Bridge](DISCORD_BRIDGE.md) | One-way webhook bridge to post mesh messages to Discord channels |
| [Packet Capture](PACKET_CAPTURE.md) | Capture packets from the mesh and publish them to MQTT brokers |
| [Map Uploader](MAP_UPLOADER.md) | Upload node advertisements to [map.meshcore.dev](https://map.meshcore.dev) for network visualization |
| [Weather Service](WEATHER_SERVICE.md) | Scheduled weather forecasts, weather alerts, and lightning detection |
## Enabling a plugin
1. Add or edit the plugin's section in `config.ini` (see each plugin's doc for options).
2. Set `enabled = true` for that plugin.
3. Restart the bot.
Some plugins require additional configuration (API keys, webhook URLs, etc.) before they will run successfully.
+62
View File
@@ -0,0 +1,62 @@
# Material for MkDocs - meshcore-bot documentation
site_name: Meshcore Bot Documentation
site_description: Documentation for the MeshCore bot and its services
site_url: https://agessaman.github.io/meshcore-bot/
repo_name: meshcore-bot
repo_url: https://github.com/agessaman/meshcore-bot
edit_uri: edit/main/docs/
theme:
name: material
language: en
palette:
- scheme: default
primary: indigo
accent: cyan
toggle:
icon: material/brightness-7
name: Switch to dark mode
- scheme: slate
primary: indigo
accent: cyan
toggle:
icon: material/brightness-4
name: Switch to light mode
features:
- navigation.instant
- navigation.tracking
- navigation.tabs
- navigation.sections
- toc.integrate
- content.code.copy
plugins:
- search
markdown_extensions:
- pymdownx.superfences
- pymdownx.highlight:
anchor_linenums: true
- pymdownx.tabbed:
alternate_style: true
- tables
- attr_list
- md_in_html
nav:
- Home: index.md
- Getting Started: getting-started.md
- FAQ: faq.md
- Command Reference: COMMANDS.md
- Configuration:
- Overview: configuration.md
- Path Command: PATH_COMMAND_CONFIG.md
- Web Viewer: WEB_VIEWER.md
- Service Plugins:
- Overview: service-plugins.md
- Discord Bridge: DISCORD_BRIDGE.md
- Packet Capture: PACKET_CAPTURE.md
- Map Uploader: MAP_UPLOADER.md
- Weather Service: WEATHER_SERVICE.md
- Feed Management: FEEDS.md
+3
View File
@@ -37,6 +37,9 @@ dependencies = [
"pynacl>=1.5.0",
]
[project.optional-dependencies]
docs = ["mkdocs-material>=9.0.0"]
[project.scripts]
meshcore-bot = "meshcore_bot:main"
meshcore-viewer = "modules.web_viewer.app:main"