Skip to content

Commit

Permalink
Add arguments for MQTT username,password and ssl
Browse files Browse the repository at this point in the history
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
rubenbe committed May 18, 2024
1 parent 2a2ac86 commit 68f9ba1
Showing 1 changed file with 57 additions and 1 deletion.
58 changes: 57 additions & 1 deletion server.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import comfospot40
import argparse
import time
import ssl
from os import path

from aiomqtt import Client
Expand All @@ -12,13 +13,29 @@ async def main(
mqtturi,
mqttport,
mqttprefix,
args,
dev,
oscillation_time: int,
storestate,
sensorvalidity: int,
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)
Expand Down Expand Up @@ -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",
Expand All @@ -68,6 +87,42 @@ async def 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",
Expand Down Expand Up @@ -105,6 +160,7 @@ async def main(
mqtturi=args.mqtt,
mqttport=args.mqtt_port,
mqttprefix=args.mqtt_prefix,
args=args,
dev=args.dev,
oscillation_time=args.oscillation,
storestate=args.state,
Expand Down

0 comments on commit 68f9ba1

Please sign in to comment.