Skip to content

Commit ec28771

Browse files
authored
Merge pull request #1752 from makermelissa/main
Last minute fixes for MacroPad RPC Home Assistant Code
2 parents c584aa8 + 1b0a45c commit ec28771

4 files changed

Lines changed: 22 additions & 4 deletions

File tree

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import usb_cdc
2+
3+
usb_cdc.enable(console=True, data=True)

MacroPad_RPC_Home_Assistant/code.py

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ class MqttError(Exception):
4848
def rpc_call(function, *args, **kwargs):
4949
response = rpc.call(function, *args, **kwargs)
5050
if response["error"]:
51-
if response["error_type"]:
51+
if response["error_type"] == "mqtt":
5252
raise MqttError(response["message"])
5353
raise RpcError(response["message"])
5454
return response["return_val"]
@@ -62,7 +62,16 @@ def update_key(key_number):
6262
if switch_state is not None:
6363
macropad.pixels[key_number] = NEOPIXEL_COLORS[switch_state]
6464
else:
65-
macropad.pixels[key_number] = None
65+
macropad.pixels[key_number] = 0
66+
67+
server_is_running = False
68+
print("Waiting for server...")
69+
while not server_is_running:
70+
try:
71+
server_is_running = rpc_call("is_running")
72+
print("Connected")
73+
except RpcError:
74+
pass
6675

6776
mqtt_init()
6877
last_macropad_encoder_value = macropad.encoder
@@ -92,6 +101,8 @@ def update_key(key_number):
92101
if "key_number" in output:
93102
time.sleep(UPDATE_DELAY)
94103
update_key(output["key_number"])
104+
elif ENCODER_ITEM is not None:
105+
update_key(ENCODER_ITEM)
95106
except MqttError:
96107
mqtt_init()
97108
except RpcError as err_msg:

MacroPad_RPC_Home_Assistant/rpc.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@
1515
import usb_cdc as serial
1616
json_decode_exception = ValueError
1717

18-
RESPONSE_TIMEOUT=1
19-
DATA_TIMEOUT=0.2
18+
RESPONSE_TIMEOUT=5
19+
DATA_TIMEOUT=0.5
2020

2121
class RpcError(Exception):
2222
"""For RPC Specific Errors"""

MacroPad_RPC_Home_Assistant/rpc_ha_server.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,10 +68,14 @@ def mqtt_get_last_value(topic):
6868
return last_mqtt_messages[topic]
6969
return None
7070

71+
def is_running():
72+
return True
73+
7174
def handle_rpc(packet):
7275
"""This function will verify good data in packet,
7376
call the method with parameters, and generate a response
7477
packet as the return value"""
78+
print("Received packet")
7579
func_name = packet['function']
7680
if func_name in PROTECTED_FUNCTIONS:
7781
return rpc.create_response_packet(error=True, message=f"{func_name}'() is a protected function and can not be called.")

0 commit comments

Comments
 (0)