Merge pull request #71 from Meatballs1/domain_suffix

Add domain_suffix option
This commit is contained in:
pmagyar
2024-05-14 07:24:52 +02:00
committed by GitHub
3 changed files with 17 additions and 8 deletions

View File

@@ -37,8 +37,11 @@ sslpsk.sslpsk._sslobj = _sslobj
class HCSocket:
def __init__(self, host, psk64, iv64=None):
def __init__(self, host, psk64, iv64=None, domain_suffix=""):
self.host = host
if domain_suffix:
self.host = f"{host}.{domain_suffix}"
self.psk = base64url(psk64 + "===")
self.debug = False
@@ -49,11 +52,11 @@ class HCSocket:
self.enckey = hmac(self.psk, b"ENC")
self.mackey = hmac(self.psk, b"MAC")
self.port = 80
self.uri = "ws://" + host + ":80/homeconnect"
self.uri = f"ws://{host}:80/homeconnect"
else:
self.http = False
self.port = 443
self.uri = "wss://" + host + ":443/homeconnect"
self.uri = f"wss://{host}:443/homeconnect"
# don't connect automatically so that debug etc can be set
# self.reconnect()

View File

@@ -27,6 +27,7 @@ from HCSocket import HCSocket, now
@click.option("--mqtt_certfile")
@click.option("--mqtt_keyfile")
@click.option("--mqtt_clientname", default="hcpy1")
@click.option("--domain_suffix", default="")
@click.option("--debug/--no-debug", default=False)
@click_config_file.configuration_option()
def hc2mqtt(
@@ -41,6 +42,7 @@ def hc2mqtt(
mqtt_certfile: str,
mqtt_keyfile: str,
mqtt_clientname: str,
domain_suffix: str,
debug: bool,
):
@@ -103,7 +105,7 @@ def hc2mqtt(
f"Hello {devices_file=} {mqtt_host=} {mqtt_prefix=} "
f"{mqtt_port=} {mqtt_username=} {mqtt_password=} "
f"{mqtt_ssl=} {mqtt_cafile=} {mqtt_certfile=} {mqtt_keyfile=} {mqtt_clientname=}"
f"{debug=}"
f"{domain_suffix=} {debug=}"
)
with open(devices_file, "r") as f:
@@ -133,7 +135,9 @@ def hc2mqtt(
for device in devices:
mqtt_topic = mqtt_prefix + device["name"]
thread = Thread(target=client_connect, args=(client, device, mqtt_topic, debug))
thread = Thread(
target=client_connect, args=(client, device, mqtt_topic, domain_suffix, debug)
)
thread.start()
client.loop_forever()
@@ -143,7 +147,7 @@ global dev
dev = {}
def client_connect(client, device, mqtt_topic, debug):
def client_connect(client, device, mqtt_topic, domain_suffix, debug):
host = device["host"]
name = device["name"]
@@ -195,7 +199,7 @@ def client_connect(client, device, mqtt_topic, debug):
time.sleep(3)
try:
print(now(), name, f"connecting to {host}")
ws = HCSocket(host, device["key"], device.get("iv", None))
ws = HCSocket(host, device["key"], device.get("iv", None), domain_suffix)
dev[name] = HCDevice(ws, device, debug)
dev[name].run_forever(on_message=on_message, on_open=on_open, on_close=on_close)
except Exception as e:

View File

@@ -1,7 +1,7 @@
---
name: "HomeConnect2MQTT"
description: "Run HCPY as addon"
version: "v0.1.0"
version: "v0.1.1"
slug: "hcpy"
image: ghcr.io/hcpy2-0/hcpy
init: false
@@ -27,6 +27,7 @@ options:
HCPY_MQTT_CERTFILE: ""
HCPY_MQTT_KEYFILE: ""
HCPY_MQTT_CLIENTNAME: "hcpy1"
HCPY_DOMAIN_SUFFIX: ""
HCPY_DEBUG: false
schema:
HCPY_DEVICES_FILE: str
@@ -40,5 +41,6 @@ schema:
HCPY_MQTT_CERTFILE: str
HCPY_MQTT_KEYFILE: str
HCPY_MQTT_CLIENTNAME: str
HCPY_DOMAIN_SUFFIX: str
HCPY_DEBUG: bool?
startup: services