mirror of
https://github.com/meshtastic/python.git
synced 2026-06-02 12:45:00 -04:00
55 lines
1.6 KiB
Python
55 lines
1.6 KiB
Python
"""Send once on connect and print received packets over TCP.
|
|
|
|
Purpose: demonstrate pubsub send-on-connect plus receive callback flow.
|
|
Transport scope: TCP only.
|
|
Behavior: sends "hello mesh" at connect, prints packets while running.
|
|
Expected output: "Connected..." plus "Received: ..." lines for inbound packets.
|
|
Cleanup/error handling: graceful Ctrl+C exit and clean interface close.
|
|
"""
|
|
|
|
import argparse
|
|
import time
|
|
|
|
from pubsub import pub
|
|
from meshtastic.tcp_interface import TCPInterface
|
|
|
|
|
|
def on_receive(packet, interface): # pylint: disable=unused-argument
|
|
"""Print each inbound packet."""
|
|
print(f"Received: {packet}")
|
|
|
|
|
|
def on_connection(interface, topic=pub.AUTO_TOPIC): # pylint: disable=unused-argument
|
|
"""Send a broadcast text when connected."""
|
|
print("Connected. Sending one broadcast message.")
|
|
interface.sendText("hello mesh")
|
|
|
|
|
|
def main() -> int:
|
|
"""Parse args, connect via TCP, and run callbacks."""
|
|
parser = argparse.ArgumentParser(description="TCP pubsub send-and-receive example")
|
|
parser.add_argument("host", help="TCP hostname or IP of the Meshtastic node")
|
|
args = parser.parse_args()
|
|
|
|
pub.subscribe(on_receive, "meshtastic.receive")
|
|
pub.subscribe(on_connection, "meshtastic.connection.established")
|
|
|
|
iface = None
|
|
try:
|
|
iface = TCPInterface(hostname=args.host)
|
|
while True:
|
|
time.sleep(1)
|
|
except KeyboardInterrupt:
|
|
return 0
|
|
except Exception as exc:
|
|
print(f"Error: Could not connect to {args.host}: {exc}")
|
|
return 1
|
|
finally:
|
|
if iface:
|
|
iface.close()
|
|
return 0
|
|
|
|
|
|
if __name__ == "__main__":
|
|
raise SystemExit(main())
|