134 lines
3.1 KiB
Markdown
134 lines
3.1 KiB
Markdown
# Meshcore Dashboard (USB-based)
|
|
|
|
A complete, self-contained Node.js web application for monitoring and managing a Meshcore client device via USB. Features real-time message tracking, GPS location mapping, and automatic data retention with secure authentication.
|
|
|
|

|
|

|
|
|
|
## Features
|
|
|
|
- **Real-time USB Serial Integration** - Automatically connects to Meshcore USB serial device and stores all messages
|
|
- **Interactive Map View** - View GPS locations of all nodes on an interactive Leaflet map
|
|
- **Message Management** - View message history and send messages to the mesh network
|
|
- **Node Monitoring** - Track all nodes with detailed metadata including battery levels, signal strength, and telemetry
|
|
- **Secure Authentication** - Username/password login with session management
|
|
- **Automatic Data Purging** - Configurable cron job to automatically clean old data
|
|
- **Modern UI** - Responsive, modern web interface with dark theme support
|
|
- **SQLite Database** - All data stored locally in a SQLite database
|
|
- **Comprehensive Logging** - Winston-based logging for debugging and monitoring
|
|
|
|
## Prerequisites
|
|
|
|
- Node.js 16.x or higher
|
|
- npm or yarn
|
|
- Access to a Meshcore device via USB-Serial
|
|
|
|
## Installation
|
|
|
|
1. **Clone or navigate to the project directory:**
|
|
|
|
```bash
|
|
cd meshcore-usb-dashboard
|
|
```
|
|
|
|
2. **Install dependencies:**
|
|
|
|
```bash
|
|
npm install
|
|
```
|
|
|
|
3. **Configure environment variables:**
|
|
|
|
Copy the example environment file and edit it:
|
|
|
|
```bash
|
|
cp .env.example .env
|
|
```
|
|
|
|
Edit `.env` with your settings, especially the name of your serial port (i.e. COM10)
|
|
|
|
4. **Create your first user:**
|
|
|
|
```bash
|
|
npm run create-user
|
|
```
|
|
|
|
Follow the prompts to create a username and password.
|
|
|
|
5. **Start the application:**
|
|
|
|
```bash
|
|
npm start
|
|
```
|
|
|
|
For development with auto-reload:
|
|
|
|
```bash
|
|
npm run dev
|
|
```
|
|
|
|
6. **Access the dashboard:**
|
|
|
|
Open your browser and navigate to:
|
|
```
|
|
http://localhost:3000
|
|
```
|
|
|
|
Login with the username and password you created.
|
|
|
|
### Data Retention
|
|
|
|
Configure automatic data purging:
|
|
|
|
- **DATA_RETENTION_DAYS**: Number of days to keep data (default: 30)
|
|
- **PURGE_CRON_SCHEDULE**: Cron schedule for purging (default: 0 2 * * * = daily at 2 AM)
|
|
|
|
You can also manually purge data from the Settings tab in the web interface.
|
|
|
|
## Database
|
|
|
|
The application uses SQLite.
|
|
|
|
Database file location: `data/meshtastic.db`
|
|
|
|
## Logging
|
|
|
|
Logs are stored in the `logs/` directory:
|
|
|
|
- `combined.log` - All log messages
|
|
- `error.log` - Error messages only
|
|
|
|
Log level can be configured with `LOG_LEVEL` in `.env` (debug, info, warn, error).
|
|
|
|
## Contributing
|
|
|
|
Contributions are welcome!
|
|
|
|
## Security Considerations
|
|
|
|
- Change default `SESSION_SECRET` in production
|
|
- Use HTTPS in production (configure reverse proxy)
|
|
- Regularly update dependencies
|
|
- Use strong passwords for user accounts
|
|
- Enable firewall rules to restrict access
|
|
|
|
## License
|
|
|
|
MIT License
|
|
|
|
## Support
|
|
|
|
For issues and feature requests, please open an issue on the project repository.
|
|
|
|
## Acknowledgments
|
|
|
|
- Meshcore project
|
|
- OpenStreetMap for map tiles
|
|
- All contributors and testers
|
|
|
|
---
|
|
|
|
**Version**: 1.0.0
|
|
**Author**: zyphlar
|
|
**Last Updated**: 2026
|