Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add arguments for MQTT username,password and ssl
diff --git a/server.py b/server.py index 787b620..ecc483b 100755 --- a/server.py +++ b/server.py @@ -3,6 +3,7 @@ import asyncio import comfospot40 import argparse import time +import ssl from os import path from aiomqtt import Client @@ -12,6 +13,7 @@ async def main( mqtturi, mqttport, mqttprefix, + args, dev, oscillation_time: int, storestate, @@ -19,6 +21,21 @@ async def main( reverse: bool, ): async with Client(mqtturi, port=mqttport) as client: + if args.mqtt_username: + client.username_pw_set(args.mqtt_username, args.mqtt_password) + + if args.mqtt_ssl: + tls_version = ssl.PROTOCOL_TLS + if args.mqtt_cafile: + client.tls_set(ca_certs=args.mqtt_cafile, tls_version=tls_version) + if args.mqtt_certfile and args.mqtt_keyfile: + client.tls_set( + certfile=args.mqtt_certfile, + keyfile=args.mqtt_keyfile, + cert_reqs=ssl.CERT_NONE, + tls_version=tls_version, + ) + await client.connect() state = comfospot40.State(sensorvalidity, reverse) hal = comfospot40.Hal(state, oscillation_time) @@ -51,7 +68,9 @@ async def main( if __name__ == "__main__": - parser = argparse.ArgumentParser() + parser = argparse.ArgumentParser( + formatter_class=argparse.ArgumentDefaultsHelpFormatter + ) parser.add_argument("--mqtt", action="store", required=True, help="MQTT address") parser.add_argument( "--mqtt-port", @@ -68,6 +87,42 @@ if __name__ == "__main__": help="MQTT prefix", default="comfospot40", ) + parser.add_argument( + "--mqtt-username", + type=str, + default=None, + help="Username for MQTT broker authentication", + ) + parser.add_argument( + "--mqtt-password", + type=str, + default=None, + help="Password for MQTT broker authentication", + ) + parser.add_argument( + "--mqtt-client-id", type=str, default="", help="Client ID for MQTT connection" + ) + parser.add_argument( + "--mqtt-ssl", action="store_true", help="Enable SSL/TLS for MQTT connection" + ) + parser.add_argument( + "--mqtt-cafile", + type=str, + default=None, + help="CA file for SSL/TLS connection (optional)", + ) + parser.add_argument( + "--mqtt-certfile", + type=str, + default=None, + help="Client certificate file for SSL/TLS connection (optional)", + ) + parser.add_argument( + "--mqtt-keyfile", + type=str, + default=None, + help="Client private key file for SSL/TLS connection (optional)", + ) parser.add_argument("--dev", action="store", required=False, help="Serial device") parser.add_argument( "--oscillation", @@ -105,6 +160,7 @@ if __name__ == "__main__": mqtturi=args.mqtt, mqttport=args.mqtt_port, mqttprefix=args.mqtt_prefix, + args=args, dev=args.dev, oscillation_time=args.oscillation, storestate=args.state,
- Loading branch information