From 92cd511f6a2d165405d80688dcaa484a57f524c1 Mon Sep 17 00:00:00 2001 From: flatsiedatsie Date: Wed, 25 Jan 2023 11:52:00 +0100 Subject: [PATCH 01/21] Update requirements.txt --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 30058f1..48db594 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,3 @@ jsonschema==3.2.0 singleton-decorator==1.0.0 -websocket-client==0.57.0 +websocket-client==1.4.2 From 41bccd58107257ade825fdf0e812e7f033c46eeb Mon Sep 17 00:00:00 2001 From: flatsiedatsie Date: Wed, 25 Jan 2023 12:03:50 +0100 Subject: [PATCH 02/21] Update ipc.py --- gateway_addon/ipc.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gateway_addon/ipc.py b/gateway_addon/ipc.py index 3c4c473..e54040a 100644 --- a/gateway_addon/ipc.py +++ b/gateway_addon/ipc.py @@ -86,7 +86,7 @@ def __init__(self, plugin_id, on_message, verbose=False): while not self.registered: time.sleep(0.01) - def on_open(self): + def on_open(self, _): """Event handler for WebSocket opening.""" if self.verbose: print('IpcClient: Connected to server, registering...') @@ -102,7 +102,7 @@ def on_open(self): print('IpcClient: Failed to send message: {}'.format(e)) return - def on_message(self, message): + def on_message(self, _, message): """ Event handler for WebSocket messages. From 46cfd7dd21a1f4c792e0686a91dda7c7004a03c9 Mon Sep 17 00:00:00 2001 From: flatsiedatsie Date: Thu, 26 Jan 2023 00:16:05 +0100 Subject: [PATCH 03/21] Update setup.py --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 7a246aa..a2963a2 100644 --- a/setup.py +++ b/setup.py @@ -24,7 +24,7 @@ requirements = [ 'jsonschema==3.2.0', 'singleton-decorator==1.0.0', - 'websocket-client==0.57.0', + 'websocket-client==1.4.2', ] setup( From 0c90aeff049d5a57ea13908cded4b17c95e1898c Mon Sep 17 00:00:00 2001 From: flatsiedatsie Date: Wed, 1 Feb 2023 12:22:23 +0100 Subject: [PATCH 04/21] Update requirements.txt --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 48db594..7d0e591 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,3 @@ jsonschema==3.2.0 singleton-decorator==1.0.0 -websocket-client==1.4.2 +websocket-client==1.5.0 From c13686b2f5ae026c28b331b63e90befce7fb1bc2 Mon Sep 17 00:00:00 2001 From: flatsiedatsie Date: Wed, 1 Feb 2023 12:28:14 +0100 Subject: [PATCH 05/21] Update setup.py --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index a2963a2..0db397e 100644 --- a/setup.py +++ b/setup.py @@ -24,7 +24,7 @@ requirements = [ 'jsonschema==3.2.0', 'singleton-decorator==1.0.0', - 'websocket-client==1.4.2', + 'websocket-client==1.5.0', ] setup( From d08db713e8f8c98027c4bb5c48f3575dd4482f9c Mon Sep 17 00:00:00 2001 From: flatsiedatsie Date: Thu, 6 Nov 2025 15:20:09 +0100 Subject: [PATCH 06/21] Update property.py --- gateway_addon/property.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gateway_addon/property.py b/gateway_addon/property.py index 353445b..1204ece 100644 --- a/gateway_addon/property.py +++ b/gateway_addon/property.py @@ -122,7 +122,7 @@ def get_value(self): """ return self.value - def set_value(self, value): + def set_value(self, value, origin): """ Set the current value of the property. From 9a71dc958825601590eebc331ca8458b0a542174 Mon Sep 17 00:00:00 2001 From: flatsiedatsie Date: Thu, 18 Dec 2025 14:49:10 +0100 Subject: [PATCH 07/21] Update property.py --- gateway_addon/property.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gateway_addon/property.py b/gateway_addon/property.py index 1204ece..b0809fc 100644 --- a/gateway_addon/property.py +++ b/gateway_addon/property.py @@ -122,7 +122,7 @@ def get_value(self): """ return self.value - def set_value(self, value, origin): + def set_value(self, value, meta): """ Set the current value of the property. From 33d9ef784a77a19f1e84f50c5102d1fb6114b6b8 Mon Sep 17 00:00:00 2001 From: flatsiedatsie Date: Sat, 27 Dec 2025 14:54:14 +0100 Subject: [PATCH 08/21] Update device.py --- gateway_addon/device.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gateway_addon/device.py b/gateway_addon/device.py index 32546ca..8402df3 100644 --- a/gateway_addon/device.py +++ b/gateway_addon/device.py @@ -186,7 +186,7 @@ def connected_notify(self, connected): """ self.adapter.manager_proxy.send_connected_notification(self, connected) - def set_property(self, property_name, value): + def set_property(self, property_name, value, meta): """ Set a property value. @@ -197,7 +197,7 @@ def set_property(self, property_name, value): if not prop: return - prop.set_value(value) + prop.set_value(value, meta) def request_action(self, action_id, action_name, action_input): """ From 1baac43e772bbeacc3105bdd4b7eba821c51af97 Mon Sep 17 00:00:00 2001 From: flatsiedatsie Date: Sat, 27 Dec 2025 15:02:26 +0100 Subject: [PATCH 09/21] Update ipc.py --- gateway_addon/ipc.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/gateway_addon/ipc.py b/gateway_addon/ipc.py index e54040a..dc4ce16 100644 --- a/gateway_addon/ipc.py +++ b/gateway_addon/ipc.py @@ -109,6 +109,9 @@ def on_message(self, _, message): message -- the received message """ try: + if os.path.exists('/boot/firmware/developer.txt'): + print('gateway_addon: on_message: \n' + str(message)) + resp = json.loads(message) self.validator.validate({'message': resp}) From 3525041b6e74e55f877af0ebd677f40000fc5ad3 Mon Sep 17 00:00:00 2001 From: flatsiedatsie Date: Wed, 28 Jan 2026 11:00:17 +0100 Subject: [PATCH 10/21] Update ipc.py --- gateway_addon/ipc.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/gateway_addon/ipc.py b/gateway_addon/ipc.py index dc4ce16..da433db 100644 --- a/gateway_addon/ipc.py +++ b/gateway_addon/ipc.py @@ -31,6 +31,7 @@ def __init__(self): referrer=None, cache_remote=True, ) + self.developer_mode = os.path.exists('/boot/firmware/developer.txt'): def resolve_remote(self, uri): """ @@ -109,8 +110,8 @@ def on_message(self, _, message): message -- the received message """ try: - if os.path.exists('/boot/firmware/developer.txt'): - print('gateway_addon: on_message: \n' + str(message)) + if self.developer_mode: + print('gateway_addon_python: developer.txt -> on_message: \n' + str(message)) resp = json.loads(message) From 1afe9c15320d6ff8cd49b0e81dada9eb363b4569 Mon Sep 17 00:00:00 2001 From: flatsiedatsie Date: Wed, 28 Jan 2026 22:56:08 +0100 Subject: [PATCH 11/21] Update ipc.py --- gateway_addon/ipc.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gateway_addon/ipc.py b/gateway_addon/ipc.py index da433db..f0ec3b3 100644 --- a/gateway_addon/ipc.py +++ b/gateway_addon/ipc.py @@ -31,7 +31,7 @@ def __init__(self): referrer=None, cache_remote=True, ) - self.developer_mode = os.path.exists('/boot/firmware/developer.txt'): + self.developer_mode = os.path.exists('/boot/firmware/developer.txt') def resolve_remote(self, uri): """ From f1ab8769b4d7789b2d5da6ab3f734f656c71ff74 Mon Sep 17 00:00:00 2001 From: flatsiedatsie Date: Thu, 29 Jan 2026 01:00:18 +0100 Subject: [PATCH 12/21] Update ipc.py --- gateway_addon/ipc.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gateway_addon/ipc.py b/gateway_addon/ipc.py index f0ec3b3..97cffac 100644 --- a/gateway_addon/ipc.py +++ b/gateway_addon/ipc.py @@ -31,7 +31,6 @@ def __init__(self): referrer=None, cache_remote=True, ) - self.developer_mode = os.path.exists('/boot/firmware/developer.txt') def resolve_remote(self, uri): """ @@ -67,6 +66,8 @@ def __init__(self, plugin_id, on_message, verbose=False): self.verbose = verbose self.owner_message_handler = on_message + self.developer_mode = os.path.exists('/boot/firmware/developer.txt') + self.validator = jsonschema.Draft7Validator( schema=schema, resolver=Resolver() From 63cb19d832c9d4ab13c95c330cd61b5207be1247 Mon Sep 17 00:00:00 2001 From: flatsiedatsie Date: Thu, 29 Jan 2026 01:27:16 +0100 Subject: [PATCH 13/21] Update ipc.py --- gateway_addon/ipc.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gateway_addon/ipc.py b/gateway_addon/ipc.py index 97cffac..bab480c 100644 --- a/gateway_addon/ipc.py +++ b/gateway_addon/ipc.py @@ -67,7 +67,7 @@ def __init__(self, plugin_id, on_message, verbose=False): self.owner_message_handler = on_message self.developer_mode = os.path.exists('/boot/firmware/developer.txt') - + print("ipc.py: self.developer_mode: " + str(self.developer_mode)) self.validator = jsonschema.Draft7Validator( schema=schema, resolver=Resolver() From 5df0dcd1a672aaa16d270991700c02b75d3d1dbf Mon Sep 17 00:00:00 2001 From: flatsiedatsie Date: Thu, 29 Jan 2026 01:28:10 +0100 Subject: [PATCH 14/21] Update ipc.py --- gateway_addon/ipc.py | 1 + 1 file changed, 1 insertion(+) diff --git a/gateway_addon/ipc.py b/gateway_addon/ipc.py index bab480c..8adfea1 100644 --- a/gateway_addon/ipc.py +++ b/gateway_addon/ipc.py @@ -68,6 +68,7 @@ def __init__(self, plugin_id, on_message, verbose=False): self.developer_mode = os.path.exists('/boot/firmware/developer.txt') print("ipc.py: self.developer_mode: " + str(self.developer_mode)) + self.validator = jsonschema.Draft7Validator( schema=schema, resolver=Resolver() From b3d26fb50bb30bd306880d31672d0b340cb62232 Mon Sep 17 00:00:00 2001 From: flatsiedatsie Date: Thu, 29 Jan 2026 01:35:00 +0100 Subject: [PATCH 15/21] Update ipc.py --- gateway_addon/ipc.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gateway_addon/ipc.py b/gateway_addon/ipc.py index 8adfea1..eab4858 100644 --- a/gateway_addon/ipc.py +++ b/gateway_addon/ipc.py @@ -67,7 +67,7 @@ def __init__(self, plugin_id, on_message, verbose=False): self.owner_message_handler = on_message self.developer_mode = os.path.exists('/boot/firmware/developer.txt') - print("ipc.py: self.developer_mode: " + str(self.developer_mode)) + #print("ipc.py: self.developer_mode: " + str(self.developer_mode)) self.validator = jsonschema.Draft7Validator( schema=schema, From 79baa34b16c04d5db08fd1f11c4b5c0531791172 Mon Sep 17 00:00:00 2001 From: flatsiedatsie Date: Thu, 29 Jan 2026 10:41:51 +0100 Subject: [PATCH 16/21] Update addon_manager_proxy.py --- gateway_addon/addon_manager_proxy.py | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/gateway_addon/addon_manager_proxy.py b/gateway_addon/addon_manager_proxy.py index 9678f41..4ad32a9 100644 --- a/gateway_addon/addon_manager_proxy.py +++ b/gateway_addon/addon_manager_proxy.py @@ -7,6 +7,7 @@ import threading import time import websocket +import inspect from .api_handler_utils import APIRequest, APIResponse from .constants import MessageType @@ -178,6 +179,9 @@ def send_pairing_prompt(self, adapter, prompt, url=None, device=None): url -- URL to site with further explanation or troubleshooting info device -- Device the prompt is associated with """ + if str(adapter.id).endsWth('Adapter'): + adapter.id = adapter.id[:-7] + data = { 'adapterId': adapter.id, 'prompt': prompt, @@ -200,6 +204,8 @@ def send_unpairing_prompt(self, adapter, prompt, url=None, device=None): url -- URL to site with further explanation or troubleshooting info device -- Device the prompt is associated with """ + if str(adapter.id).endsWth('Adapter'): + adapter.id = adapter.id[:-7] data = { 'adapterId': adapter.id, 'prompt': prompt, @@ -477,7 +483,23 @@ def set_prop_fn(proxy, adapter): return try: - prop.set_value(msg['data']['propertyValue']) + if 'meta' in msg['data']: + print("addon_manager_proxy: message has meta") + sig = inspect.signature(prop.set_value) + supports_meta = False + if len(sig.parameters) > 1: + for param in sig.parameters.values(): + if param.name == 'meta' + supports_meta = True + break + + if supports_meta: + print("addon_manager_proxy: addon supports meta") + prop.set_value(msg['data']['propertyValue'],msg['data']['meta']) + else + prop.set_value(msg['data']['propertyValue']) + else: + prop.set_value(msg['data']['propertyValue']) if prop.fire_and_forget: proxy.send_property_changed_notification(prop) except PropertyError: From 585e2d4d19c731c79f79ce5b44c8810f8158cf40 Mon Sep 17 00:00:00 2001 From: flatsiedatsie Date: Thu, 29 Jan 2026 10:43:13 +0100 Subject: [PATCH 17/21] Update addon_manager_proxy.py --- gateway_addon/addon_manager_proxy.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/gateway_addon/addon_manager_proxy.py b/gateway_addon/addon_manager_proxy.py index 4ad32a9..12ae61a 100644 --- a/gateway_addon/addon_manager_proxy.py +++ b/gateway_addon/addon_manager_proxy.py @@ -179,8 +179,8 @@ def send_pairing_prompt(self, adapter, prompt, url=None, device=None): url -- URL to site with further explanation or troubleshooting info device -- Device the prompt is associated with """ - if str(adapter.id).endsWth('Adapter'): - adapter.id = adapter.id[:-7] + #if str(adapter.id).endsWth('Adapter'): + # adapter.id = adapter.id[:-7] data = { 'adapterId': adapter.id, @@ -204,8 +204,9 @@ def send_unpairing_prompt(self, adapter, prompt, url=None, device=None): url -- URL to site with further explanation or troubleshooting info device -- Device the prompt is associated with """ - if str(adapter.id).endsWth('Adapter'): - adapter.id = adapter.id[:-7] + #if str(adapter.id).endsWth('Adapter'): + # adapter.id = adapter.id[:-7] + data = { 'adapterId': adapter.id, 'prompt': prompt, From bec6e5c2f5133e0db1824b804abf4a43c8442a14 Mon Sep 17 00:00:00 2001 From: flatsiedatsie Date: Thu, 29 Jan 2026 10:50:11 +0100 Subject: [PATCH 18/21] Update addon_manager_proxy.py --- gateway_addon/addon_manager_proxy.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gateway_addon/addon_manager_proxy.py b/gateway_addon/addon_manager_proxy.py index 12ae61a..14197f7 100644 --- a/gateway_addon/addon_manager_proxy.py +++ b/gateway_addon/addon_manager_proxy.py @@ -484,7 +484,7 @@ def set_prop_fn(proxy, adapter): return try: - if 'meta' in msg['data']: + if 'propertyMeta' in msg['data']: print("addon_manager_proxy: message has meta") sig = inspect.signature(prop.set_value) supports_meta = False @@ -496,7 +496,7 @@ def set_prop_fn(proxy, adapter): if supports_meta: print("addon_manager_proxy: addon supports meta") - prop.set_value(msg['data']['propertyValue'],msg['data']['meta']) + prop.set_value(msg['data']['propertyValue'],msg['data']['propertyMeta']) else prop.set_value(msg['data']['propertyValue']) else: From 7394b289a80731dfb123fe70fee9c2bddec7d170 Mon Sep 17 00:00:00 2001 From: flatsiedatsie Date: Thu, 29 Jan 2026 10:55:37 +0100 Subject: [PATCH 19/21] Update addon_manager_proxy.py --- gateway_addon/addon_manager_proxy.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gateway_addon/addon_manager_proxy.py b/gateway_addon/addon_manager_proxy.py index 14197f7..2cb76c2 100644 --- a/gateway_addon/addon_manager_proxy.py +++ b/gateway_addon/addon_manager_proxy.py @@ -490,7 +490,7 @@ def set_prop_fn(proxy, adapter): supports_meta = False if len(sig.parameters) > 1: for param in sig.parameters.values(): - if param.name == 'meta' + if param.name == 'meta': supports_meta = True break From 9148d2ff2924cbf3254bdcfcbf983330f275c1f9 Mon Sep 17 00:00:00 2001 From: flatsiedatsie Date: Thu, 29 Jan 2026 10:57:42 +0100 Subject: [PATCH 20/21] Update addon_manager_proxy.py --- gateway_addon/addon_manager_proxy.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gateway_addon/addon_manager_proxy.py b/gateway_addon/addon_manager_proxy.py index 2cb76c2..21d461d 100644 --- a/gateway_addon/addon_manager_proxy.py +++ b/gateway_addon/addon_manager_proxy.py @@ -497,7 +497,7 @@ def set_prop_fn(proxy, adapter): if supports_meta: print("addon_manager_proxy: addon supports meta") prop.set_value(msg['data']['propertyValue'],msg['data']['propertyMeta']) - else + else: prop.set_value(msg['data']['propertyValue']) else: prop.set_value(msg['data']['propertyValue']) From e62b77f70d8b8e0567c74bf08980bc65851992e9 Mon Sep 17 00:00:00 2001 From: flatsiedatsie Date: Sun, 1 Mar 2026 02:41:50 +0100 Subject: [PATCH 21/21] Update ipc.py --- gateway_addon/ipc.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gateway_addon/ipc.py b/gateway_addon/ipc.py index eab4858..26757e2 100644 --- a/gateway_addon/ipc.py +++ b/gateway_addon/ipc.py @@ -66,7 +66,7 @@ def __init__(self, plugin_id, on_message, verbose=False): self.verbose = verbose self.owner_message_handler = on_message - self.developer_mode = os.path.exists('/boot/firmware/developer.txt') + self.developer_mode = os.path.exists('/boot/firmware/developer_ipc.txt') #print("ipc.py: self.developer_mode: " + str(self.developer_mode)) self.validator = jsonschema.Draft7Validator( @@ -113,7 +113,7 @@ def on_message(self, _, message): """ try: if self.developer_mode: - print('gateway_addon_python: developer.txt -> on_message: \n' + str(message)) + print('gateway_addon_python: developer_ipc.txt -> on_message: \n' + str(message)) resp = json.loads(message)