From 89d415194dd63b08afcf81d916656e103c6cb856 Mon Sep 17 00:00:00 2001 From: linuswck Date: Wed, 7 Feb 2024 16:57:10 +0800 Subject: [PATCH] update eth_cmd_test code --- eth_cmd_test.py | 86 +++++++++++++++++++++++++++---------------------- 1 file changed, 47 insertions(+), 39 deletions(-) diff --git a/eth_cmd_test.py b/eth_cmd_test.py index e403f51..f380173 100644 --- a/eth_cmd_test.py +++ b/eth_cmd_test.py @@ -1,7 +1,6 @@ # Python Test Scripts for Controlling Kirdy # Kirdy is written to be controlled via a json object based on miniconf rust crate # Json Field: -# "rev": hw_rev # "laser_diode_cmd / thermostat_cmd": Check cmd_handler.rs for the list of cmds # "data_f32": Optional f32 Data field depending on cmd # "data_f64": Optional f64 Data field depending on cmd @@ -9,103 +8,112 @@ import socket import json import time +import signal # Kirdy IP and Port Number HOST = "192.168.1.132" PORT = 1337 ld_cmd = { - "rev": 3, "laser_diode_cmd": "SetI", "data_f64": 0.0, } tec_power_down = { - "rev": 3, "thermostat_cmd": "PowerDown", } tec_set_sh_t0_cmd = { - "rev": 3, "thermostat_cmd": "SetShT0", "data_f64": 25.0, } tec_set_sh_r0_cmd = { - "rev": 3, "thermostat_cmd": "SetShR0", "data_f64": 10.0 * 1000, } tec_set_sh_beta_cmd = { - "rev": 3, "thermostat_cmd": "SetShBeta", "data_f64": 3900.0, } tec_set_temperature_setpoint_cmd = { - "rev": 3, "thermostat_cmd": "SetTemperatureSetpoint", - "data_f64": 45.0, + "data_f64": 25.0, } tec_set_pid_kp_cmd = { - "rev": 3, "thermostat_cmd": "SetPidKp", - "data_f64": 1.0, + "data_f64": 0.10889684439011593 } tec_set_pid_ki_cmd = { - "rev": 3, "thermostat_cmd": "SetPidKi", - "data_f64": 0.01, + "data_f64": 0.0038377132059211646 } tec_set_pid_kd_cmd = { - "rev": 3, "thermostat_cmd": "SetPidKd", - "data_f64": 0.0, + "data_f64": 0.22294449514406328 } tec_set_pid_out_min_cmd = { - "rev": 3, "thermostat_cmd": "SetPidOutMin", "data_f64": -1.0, } tec_set_pid_out_max_cmd = { - "rev": 3, "thermostat_cmd": "SetPidOutMax", "data_f64": 1.0, } tec_power_up = { - "rev": 3, "thermostat_cmd": "PowerUp", } -# Current version of cmd_handler cannot service multiple cmds in the same eth buffer -delay = 0.25 +tec_pid_engage = { + "thermostat_cmd": "SetPidEngage", +} + +tec_get_tec_status = { + "thermostat_cmd": "GetTecStatus", +} + +def send_cmd(input, socket): + socket.send(bytes(json.dumps(input), "UTF-8")) + # Give some time for Kirdy to process the cmd + time.sleep(0.5) + +def read_cmd(input, socket): + socket.send(bytes(json.dumps(input), "UTF-8")) + data = socket.recv(1024).decode('utf8') + return json.loads(data) + +s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + +def signal_handler(sig, frame): + send_cmd(tec_power_down, s) + s.close() + exit() + +signal.signal(signal.SIGINT, signal_handler) + with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: s.connect((HOST, PORT)) - s.send(bytes(json.dumps(tec_power_down), "UTF-8")) - time.sleep(delay) - s.send(bytes(json.dumps(tec_set_sh_t0_cmd), "UTF-8")) - time.sleep(delay) - s.send(bytes(json.dumps(tec_set_sh_r0_cmd), "UTF-8")) - time.sleep(delay) - s.send(bytes(json.dumps(tec_set_sh_beta_cmd), "UTF-8")) - time.sleep(delay) - s.send(bytes(json.dumps(tec_set_temperature_setpoint_cmd), "UTF-8")) - time.sleep(delay) - s.send(bytes(json.dumps(tec_set_pid_kp_cmd), "UTF-8")) - time.sleep(delay) - s.send(bytes(json.dumps(tec_set_pid_ki_cmd), "UTF-8")) - time.sleep(delay) - s.send(bytes(json.dumps(tec_set_pid_kd_cmd), "UTF-8")) - time.sleep(delay) - s.send(bytes(json.dumps(tec_power_up), "UTF-8")) - print("press enter to force thermostat to stop") - input() - s.send(bytes(json.dumps(tec_power_down), "UTF-8")) + send_cmd(ld_cmd, s) + send_cmd(tec_power_down, s) + send_cmd(tec_set_sh_t0_cmd, s) + send_cmd(tec_set_sh_r0_cmd, s) + send_cmd(tec_set_sh_beta_cmd, s) + send_cmd(tec_set_temperature_setpoint_cmd, s) + send_cmd(tec_set_pid_kp_cmd, s) + send_cmd(tec_set_pid_ki_cmd, s) + send_cmd(tec_set_pid_kd_cmd, s) + send_cmd(tec_pid_engage, s) + send_cmd(tec_power_up, s) + while True: + tec_status = read_cmd(tec_get_tec_status, s) + print(f"Ts: {tec_status['ts']} | Temperature: {tec_status['temperature'] - 273.15}") + s.close()