Added support for configuring MQTT version for connection

This commit is contained in:
Gleb Tcivie 2024-07-08 22:24:41 +03:00
parent 189bc4ba38
commit 0d4547e57d
3 changed files with 27 additions and 2 deletions

8
.env
View file

@ -16,6 +16,14 @@ MQTT_KEEPALIVE=60
MQTT_TOPIC='msh/israel/#'
MQTT_IS_TLS=false
# MQTT protocol version (default: MQTTv5) the public MQTT server supports MQTTv311
# Options: MQTTv311, MQTTv31, MQTTv5
MQTT_PROTOCOL=MQTTv311
# MQTT callback API version (default: VERSION2) the public MQTT server supports VERSION2
# Options: VERSION1, VERSION2
MQTT_CALLBACK_API_VERSION=VERSION2
# Exporter configuration
## Hide source data in the exporter (default: false)
MESH_HIDE_SOURCE_DATA=false

13
constants.py Normal file
View file

@ -0,0 +1,13 @@
import paho.mqtt.client as mqtt
from paho.mqtt.enums import CallbackAPIVersion
protocol_map = {
'MQTTv31': mqtt.MQTTv31,
'MQTTv311': mqtt.MQTTv311,
'MQTTv5': mqtt.MQTTv5
}
callback_api_version_map = {
'VERSION1': CallbackAPIVersion.VERSION1,
'VERSION2': CallbackAPIVersion.VERSION2
}

View file

@ -5,6 +5,8 @@ from datetime import datetime
import paho.mqtt.client as mqtt
from dotenv import load_dotenv
from constants import callback_api_version_map, protocol_map
try:
from meshtastic.mesh_pb2 import MeshPacket
from meshtastic.mqtt_pb2 import ServiceEnvelope
@ -87,9 +89,11 @@ if __name__ == "__main__":
start_http_server(int(os.getenv('PROMETHEUS_COLLECTOR_PORT', 8000)), registry=registry)
# Create an MQTT client
mqtt_protocol = os.getenv('MQTT_PROTOCOL', 'MQTTv5')
mqtt_callback_api_version = os.getenv('MQTT_CALLBACK_API_VERSION', 'VERSION2')
mqtt_client = mqtt.Client(
callback_api_version=CallbackAPIVersion.VERSION2,
protocol=mqtt.MQTTv5
callback_api_version=callback_api_version_map.get(mqtt_callback_api_version, mqtt.CallbackAPIVersion.VERSION2),
protocol=protocol_map.get(mqtt_protocol, mqtt.MQTTv5)
)
mqtt_client.on_connect = handle_connect
mqtt_client.on_message = handle_message