Meshtastic Python 取得裝置會持續的產生訊息
---
Meshtastic Python 函式庫使用pubsub 發布-訂閱 (pub/sub) 模式,
在系統不同部分之間傳遞非同步事件,
並通知應用程式收到的訊息、狀態變更和連線事件。
官方有很多內定的toptic,
內定的 meshtastic.receive 本身就提供很多訊息。新手可以先觀察這部分。
其他上官方文件找還有很多。
範例: mesh_log_monitor.py (簡單的純文字範例,連線COM3 有需要自己改,或者參考官網改成藍芽或TCP網路介面)
import meshtastic
import meshtastic.serial_interface
from pubsub import pub
import threading
import time
try:
interface = meshtastic.serial_interface.SerialInterface(devPath="COM3")
print("連線成功")
except Exception as e:
print(f"連線失敗:{e}")
# 訂閱 meshtastic.receive 的訊息事件
def on_receive(packet, interface):
print(f"收到訊息:{packet}")
# 訂閱事件
pub.subscribe(on_receive, "meshtastic.receive")
# 保持程式運作
try:
while True:
pass
except KeyboardInterrupt:
print("結束監聽")
interface.close()
編輯後再執行 python.exe mesh_log_monitor.py
可以參照我之前的可攜python環境寫一個批次來跑 [Meshtastic Python 的基礎可攜環境製作](https://hackmd.io/4RhEkBKSSjmRZtN_NQ67cg)
能連上機器後,稍等一下,就會接收到很多機器輸出的訊息,
我們是很上層的toptic,所以會有很多不同portnum類型的訊息,
圖中是很常見的portnum 定義名稱為'TELEMETRY_APP',
它會一直顯示機器的硬體數據,電池電量與電壓。
還有很多不同portnum項目訊息,有興趣看看官網的說明,跟觀察一下內容。
以觀察電量來說,如果是python會寫的人,應該很好過濾訊息,
看看官方的toptic,其實有比較細的,不用全讀到。
例如:
以TELEMETRY_APP來說,把電量資料帶時間輸出txt文字檔或是寫進資料庫內,用於電量分析或即時顯示。
如果是文字訊息就是portnum 是 TEXT_MESSAGE_APP。
