Skip to content

FelixvdDonk/QMeshcoreApp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

QMeshCoreApp

⚠️ WARNING: WORK IN PROGRESS ⚠️

This project is in early development and is NOT stable. Expect bugs, breaking changes, incomplete features, and missing documentation. Use at your own risk!

The API and protocol implementation may change without notice. Do not use in production environments.

A Qt6/QML desktop companion application for MeshCore devices. Connect to your MeshCore radio via Bluetooth Low Energy (BLE) or USB Serial to manage contacts, send messages, view the mesh network on a map, and monitor radio traffic.

Qt License Platform

Features

  • BLE & Serial Connection - Connect to MeshCore devices via Bluetooth LE or USB serial
  • Contact Management - View, add, and manage mesh network contacts
  • Messaging - Send and receive direct messages and channel messages
  • Map View - Visualize mesh nodes on an interactive map with location data
  • Device Configuration - Edit device name, location, TX power, and radio parameters
  • RX Log - Monitor raw radio traffic with packet decoding (route type, payload type, hop count, etc.)
  • Battery Monitoring - Real-time battery voltage display with polling
  • Dark Mode - Toggle between light and dark themes

Screenshots

Map View Map view showing mesh nodes in the Netherlands with contact locations, repeaters, and rooms

Requirements

  • Qt 6.10 or later
  • Qt modules: Core, Quick, QuickControls2, Bluetooth, SerialPort, Positioning, Location
  • CMake 3.21+
  • C++20 compiler

Linux Dependencies

On Debian/Ubuntu:

sudo apt install qt6-base-dev qt6-declarative-dev qt6-connectivity-dev \
    qt6-serialport-dev qt6-positioning-dev libqt6location6-plugins \
    cmake build-essential

Building

mkdir build && cd build
cmake ..
cmake --build .

Or open the project in Qt Creator and build from there.

Usage

  1. Launch the application
  2. BLE Connection: Click "Scan for BLE Devices", select your MeshCore device, and click "Connect"
  3. Serial Connection: Select the serial port and baud rate (default 115200), then click "Connect"
  4. Once connected, navigate through the tabs to:
    • Device Info: View and edit device settings
    • Contacts: See mesh network contacts and their status
    • Messages: View message history and send new messages
    • Channels: Manage channel subscriptions
    • Map: View node locations on a map
    • RX Log: Enable packet logging to see raw radio traffic

Project Structure

QMeshCoreApp/
├── CMakeLists.txt          # Build configuration
├── qml/
│   ├── Main.qml            # Main application window
│   └── components/         # QML UI components
│       ├── ConnectionPanel.qml
│       ├── DeviceInfoPanel.qml
│       ├── ContactsPanel.qml
│       ├── MessagesPanel.qml
│       ├── ChannelsPanel.qml
│       ├── MapPanel.qml
│       └── RxLogPanel.qml
└── src/
    ├── main.cpp
    └── meshcore/           # MeshCore protocol implementation
        ├── MeshCoreDevice.h/cpp      # High-level device API
        ├── connection/               # BLE and Serial connection handlers
        ├── types/                    # Data types (Contact, Message, etc.)
        └── models/                   # Qt models for QML ListView binding

MeshCore Protocol

This application implements the MeshCore companion protocol for communicating with MeshCore firmware devices. Key features:

  • Framed binary protocol with CRC16 checksums
  • Support for all MeshCore commands (get contacts, send messages, etc.)
  • Push notification handling for incoming messages and adverts
  • RX log packet parsing with route type, payload type, and hop count extraction

Related Projects

License

This project is licensed under the MIT License - see the LICENSE file for details.

Contributing

Contributions are welcome! Please feel free to submit issues and pull requests.

About

Qt C++/QML implementation of a desktop meshcore client

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors