Add tcp keepalive

This commit is contained in:
Meatballs1
2024-03-24 14:48:32 +00:00
parent fbb59974c1
commit b001c05550
2 changed files with 8 additions and 4 deletions

View File

@@ -131,6 +131,10 @@ class HCSocket:
def reconnect(self):
self.reset()
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)
sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPIDLE, 30)
sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPINTVL, 3)
sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPCNT, 5)
sock.connect((self.host, self.port))
if not self.http:
@@ -146,7 +150,7 @@ class HCSocket:
self.ws.connect(
self.uri,
socket=sock,
origin="",
origin=""
)
def send(self, msg):

View File

@@ -26,7 +26,7 @@ from HCSocket import HCSocket, now
@click.option("--mqtt_cafile")
@click.option("--mqtt_certfile")
@click.option("--mqtt_keyfile")
@click.option("--mqtt_clientname", default="hcpy11233")
@click.option("--mqtt_clientname", default="hcpy")
@click_config_file.configuration_option()
def hc2mqtt(
devices_file: str,
@@ -64,7 +64,7 @@ def hc2mqtt(
print(now(), f"ERROR MQTT connection failed: {rc}")
def on_disconnect(client, userdata, rc):
print(now(), f"ERROR MQTT client disconnected {rc}")
print(now(), f"ERROR MQTT client disconnected: {rc}")
def on_message(client, userdata, msg):
mqtt_state = msg.payload.decode()
@@ -168,7 +168,7 @@ def client_connect(client, device, mqtt_topic):
client.subscribe(mqtt_set_topic)
while True:
time.sleep(3)
time.sleep(20)
try:
print(now(), device["name"], f"connecting to {host}")
ws = HCSocket(host, device["key"], device.get("iv", None))