diff --git a/examples/meshtastic_serial_message_reader.py b/examples/meshtastic_serial_message_reader.py new file mode 100644 index 0000000..bf0112e --- /dev/null +++ b/examples/meshtastic_serial_message_reader.py @@ -0,0 +1,45 @@ +#!/usr/bin/env python3 +# +# Released Under GNU GPLv3 +# Copyright 2025 Henri Shustak +# +# About : +# This script will print messages as they arrive from a meshtastic node connected via serial port USB. +# If you have multiple nodes attached, you will need to edit this script and specify the node to monitor. +# https://gist.github.com/henri/a6584d55813f971e5b1a4ee940c07d25 +# +# Requirements : +# You will need to install python meshtastic libraries : https://github.com/meshtastic/python +# +# Version History : +# 1.0 - initial release +# 1.1 - added support for sender id and bug fixs + +import time +import meshtastic +import meshtastic.serial_interface +from pubsub import pub + +def onReceive(packet, interface): + # DEBUGGING + # print(f"message arrived") + # print(f"{packet}") + try: + if packet['decoded']['portnum'] == 'TEXT_MESSAGE_APP': + message = packet['decoded']['text'] + channel_num = packet['channel'] + sender_id = packet['fromId'] + print(f"{channel_num} : {sender_id} : {message}") + except KeyError as e: + print(f"unable to decode message") + return + +#pub.subscribe(onReceive, "meshtastic.receive.text") +pub.subscribe(onReceive, "meshtastic.receive") + +# try to find a meshtastic device, otherwise provide a device path like /dev/ttyUSB0 +interface = meshtastic.serial_interface.SerialInterface() + +while True: + time.sleep(10) # wait for the next message +