Skip to main content

This library may be useful for testing Meshtastic networks connected to an MQTT server.

Project description

This project is useful for testing Meshtastic networks connected to an MQTT server. Functions can be called via the mmqtt command or imported and used programmatically.

Installation

pip install mmqtt

Functions (see examples for further information):

from mmqtt import send_nodeinfo, send_position, send_device_telemetry, send_text_message

send_nodeinfo(node_id, long_name, short_name)
send_position(lattitude, longitude, altitude, location_precision)
send_device_telemetry(battery_level, voltage, chutil, airtxutil, uptime)
send_power_metrics(ch1_voltage, ch1_current, ch2_voltage, ch2_current, ch3_voltage, ch3_current)
send_environment_metrics(temperature, relative_humidity, barometric_pressure)
send_text_message("text")

Supported keyword arguments for environment metrics:

  • temperature
  • relative_humidity
  • barometric_pressure
  • gas_resistance
  • voltage
  • current
  • iaq
  • distance
  • ir_lux
  • lux
  • radiation
  • rainfall_1h
  • rainfall_24h
  • soil_moisture
  • soil_temperature
  • uv_lux
  • weight
  • white_lux
  • wind_direction
  • wind_gust
  • wind_lull
  • wind_speed

Optional Arguments for all message types:

  • to=INT
  • hop_limit=INT
  • hop_start=INT
  • want_ack=BOOL
  • want_response=BOOL

Example:

send_text_message("Happy New Year" to=12345678, hop_limit=5)

Command Line Interface:

mmqtt --args

Available arguments:

  -h, --help             show this help message and exit
  --config CONFIG        Path to the config file
  --message MESSAGE      Message to send. You can use this multiple times.
  --message-file FILE    Path to a file containing messages, one per line
  --nodeinfo             Send NodeInfo from my config
  --telemetry            Send telemetry from my config
  --lat LAT              Latitude coordinate
  --lon LON              Longitude coordinate
  --alt ALT              Altitude
  --precision PRECISION  Position Precision
  --position             Send position from config unless overridden by --lat, --lon, or --alt
  --listen               Stay connected and listen for incoming MQTT messages

Examples:

To publish a message to the broker using settings defined in config-example.json:

mmqtt --message "I need an Alpinist"

To publish a message to the broker using settings defined in my-config.json:

mmqtt --config "my-config.json" --message "I need an Alpinist"

Example config.json:

{
  "mqtt": {
    "broker": "mqtt.meshtastic.org",
    "port": 1883,
    "user": "meshdev",
    "password": "large4cats",
    "root_topic": "msh/US/2/e/"
  },
  "channel": {
    "preset": "LongFast",
    "key": "AQ=="
  },
  "nodeinfo": {
    "id": "!deadbeef",
    "short_name": "q",
    "long_name": "mmqtt",
    "hw_model": 255
  },
  "position": {
    "lat": 45.43139,
    "lon": -122.37354,
    "alt": 9,
    "location_source": "LOC_MANUAL",
    "precision": 16
  },
  "telemetry": {
    "battery_level": 99,
    "voltage": 4.0,
    "chutil": 3,
    "airtxutil": 1,
    "uptime": 420
  },
  "message": {
    "text": "Happy New Year",
    "destination_id": "4294967295"
  },
  "mode": {
    "listen": "False"
  }
}

Build and install locally:

python3 -m venv .venv
source .venv/bin/activate
pip install poetry
poetry build
pip install dist/mmqtt*.whl

Install in development (editable) mode:

pip install -e .

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mmqtt-1.1.2.tar.gz (23.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mmqtt-1.1.2-py3-none-any.whl (26.7 kB view details)

Uploaded Python 3

File details

Details for the file mmqtt-1.1.2.tar.gz.

File metadata

  • Download URL: mmqtt-1.1.2.tar.gz
  • Upload date:
  • Size: 23.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for mmqtt-1.1.2.tar.gz
Algorithm Hash digest
SHA256 70b47b42b259566eb9ba94c152c8c99a388c44967e93a3bfa7c7514407bd8c4c
MD5 696f5b14f8e61d528a9eeadec114a04a
BLAKE2b-256 9ce9c27dcd76ecb02cc54120d26b9ac42b9b335a4c62bc5ea43097deb7da795a

See more details on using hashes here.

Provenance

The following attestation bundles were made for mmqtt-1.1.2.tar.gz:

Publisher: release.yaml on pdxlocations/mmqtt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mmqtt-1.1.2-py3-none-any.whl.

File metadata

  • Download URL: mmqtt-1.1.2-py3-none-any.whl
  • Upload date:
  • Size: 26.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for mmqtt-1.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 6aed7fc82edbec740e134192236cbcb091f42898f65177086263779742809d61
MD5 54a820203479e989d9996d1048945c09
BLAKE2b-256 08f95df518a6c12c9741a9cf4f048341815386bfb9d8678f9fbee40da46a27df

See more details on using hashes here.

Provenance

The following attestation bundles were made for mmqtt-1.1.2-py3-none-any.whl:

Publisher: release.yaml on pdxlocations/mmqtt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page