forked from M-Labs/thermostat
Compare commits
119 Commits
a7ba382dad
...
085e3a5fd3
Author | SHA1 | Date | |
---|---|---|---|
085e3a5fd3 | |||
1035978ce4 | |||
1481819233 | |||
75f05aa252 | |||
0833813909 | |||
6b30c33c1b | |||
56200902f3 | |||
fae9122ad5 | |||
28a76d091d | |||
9c0c6ab323 | |||
242b516acc | |||
524b6d9bce | |||
a84ebdd6ad | |||
7cf5bcb400 | |||
2b33d1f75a | |||
938d92ce02 | |||
1099f6d9ec | |||
97d26e3c65 | |||
60672d9590 | |||
7f62c6ae4f | |||
f5cab6b825 | |||
8f088e43cf | |||
25990d19a9 | |||
db7cdca24c | |||
969a7be0cc | |||
f45d2c5c9e | |||
5c8270834a | |||
52550cf721 | |||
d1692ad0e6 | |||
940603e7cf | |||
b873b03aaf | |||
cd38a1c303 | |||
9787dc1e8b | |||
02aab70e82 | |||
3c9b6a40d9 | |||
c549d0344e | |||
15880290b0 | |||
bb9a363b31 | |||
b3293cd431 | |||
d71c1f4e7e | |||
b5b8a374c0 | |||
46831917ba | |||
6e357c14e2 | |||
342f7c6655 | |||
f75348c69d | |||
b98773784e | |||
b26747f527 | |||
c81f09c9d8 | |||
de6c16e380 | |||
d6f86c3435 | |||
6e9ded532b | |||
d5e2abfac7 | |||
93d09e9467 | |||
1eae8029ad | |||
bb2ca2c7f8 | |||
0cf685a3a1 | |||
6ab41a1943 | |||
b34c70742d | |||
019fa31d44 | |||
c2fbc7029c | |||
99e1574886 | |||
1829d72536 | |||
b5a011aa0c | |||
c8b3bc9c0f | |||
76a832c8ba | |||
cb6c807b90 | |||
d3df467017 | |||
bd6adf9526 | |||
0786fa0158 | |||
547700ac51 | |||
a76268a81f | |||
7668bbf57e | |||
f93e76eaa0 | |||
067ab925dd | |||
5bef8883e0 | |||
a19c64ce98 | |||
0107ed0acc | |||
3a1c7792c9 | |||
22de1b623f | |||
e8387acbc9 | |||
7abcc63a90 | |||
c4d31a78b1 | |||
047bde887e | |||
c83e6dc388 | |||
d4f46b994b | |||
f61c09596e | |||
b587a72345 | |||
ddd4ea9958 | |||
88c3c6f815 | |||
71d1c7390a | |||
1256b5ff49 | |||
e59f8d05e0 | |||
7f45437492 | |||
dcf628b542 | |||
958fddf953 | |||
1db3a3ccb9 | |||
05d46030b4 | |||
73c29338af | |||
d3e878e294 | |||
38eb1c886d | |||
1d4bc5c53f | |||
1ec541d580 | |||
eb8944e5ac | |||
abe08e4be6 | |||
0024ebae5f | |||
3f5ae9e333 | |||
dd850d34c2 | |||
f77f5399cf | |||
f632349c62 | |||
5bf33c01fe | |||
5119c68c9a | |||
a0c8fb9285 | |||
19c3c7a8f2 | |||
41abad7aa3 | |||
5c8d9c7cce | |||
278898fad2 | |||
dd83daa5d9 | |||
d57cc9ef2a | |||
be77a6f205 |
@ -137,36 +137,33 @@ class CtrlPanel(QObject):
|
||||
|
||||
for inner_param, change, data in changes:
|
||||
if change == "value":
|
||||
if inner_param.opts.get("param", None) is not None:
|
||||
new_value = data
|
||||
if "thermostat:set_param" in inner_param.opts:
|
||||
if inner_param.opts.get("suffix", None) == "mA":
|
||||
data /= 1000 # Given in mA
|
||||
new_value /= 1000 # Given in mA
|
||||
|
||||
thermostat_param = inner_param.opts["param"]
|
||||
if thermostat_param[1] == "ch":
|
||||
thermostat_param[1] = ch
|
||||
thermostat_param = inner_param.opts["thermostat:set_param"]
|
||||
|
||||
if inner_param.name() == "Postfilter Rate" and data is None:
|
||||
set_param_args = (*thermostat_param[:2], "off")
|
||||
else:
|
||||
set_param_args = (*thermostat_param, data)
|
||||
param.child(*param.childPath(inner_param)).setOpts(lock=True)
|
||||
await self.thermostat.set_param(*set_param_args)
|
||||
param.child(*param.childPath(inner_param)).setOpts(lock=False)
|
||||
# Handle thermostat command irregularities
|
||||
match inner_param.name(), new_value:
|
||||
case "Postfilter Rate", None:
|
||||
thermostat_param = thermostat_param.copy()
|
||||
thermostat_param["field"] = "off"
|
||||
new_value = ""
|
||||
case "Control Method", "Constant Current":
|
||||
return
|
||||
case "Control Method", "Temperature PID":
|
||||
new_value = ""
|
||||
|
||||
if inner_param.opts.get("pid_autotune", None) is not None:
|
||||
auto_tuner_param = inner_param.opts["pid_autotune"][0]
|
||||
if inner_param.opts["pid_autotune"][1] != "ch":
|
||||
ch = inner_param.opts["pid_autotune"][1]
|
||||
self.autotuners.set_params(auto_tuner_param, ch, data)
|
||||
inner_param.setOpts(lock=True)
|
||||
await self.thermostat.set_param(
|
||||
channel=ch, value=new_value, **thermostat_param
|
||||
)
|
||||
inner_param.setOpts(lock=False)
|
||||
|
||||
if inner_param.opts.get("activaters", None) is not None:
|
||||
activater = inner_param.opts["activaters"][
|
||||
inner_param.opts["limits"].index(data)
|
||||
]
|
||||
if activater is not None:
|
||||
if activater[1] == "ch":
|
||||
activater[1] = ch
|
||||
await self.thermostat.set_param(*activater)
|
||||
if "pid_autotune" in inner_param.opts:
|
||||
auto_tuner_param = inner_param.opts["pid_autotune"]
|
||||
self.autotuners.set_params(auto_tuner_param, ch, new_value)
|
||||
|
||||
@pyqtSlot(list)
|
||||
def update_pid(self, pid_settings):
|
||||
|
@ -25,14 +25,10 @@
|
||||
"Constant Current",
|
||||
"Temperature PID"
|
||||
],
|
||||
"activaters":[
|
||||
null,
|
||||
[
|
||||
"pwm",
|
||||
"ch",
|
||||
"pid"
|
||||
]
|
||||
],
|
||||
"thermostat:set_param":{
|
||||
"topic":"pwm",
|
||||
"field":"pid"
|
||||
},
|
||||
"children":[
|
||||
{
|
||||
"name":"Set Current",
|
||||
@ -46,11 +42,10 @@
|
||||
"triggerOnShow":true,
|
||||
"decimals":6,
|
||||
"suffix":"mA",
|
||||
"param":[
|
||||
"pwm",
|
||||
"ch",
|
||||
"i_set"
|
||||
],
|
||||
"thermostat:set_param":{
|
||||
"topic":"pwm",
|
||||
"field":"i_set"
|
||||
},
|
||||
"lock":false
|
||||
},
|
||||
{
|
||||
@ -63,11 +58,10 @@
|
||||
300
|
||||
],
|
||||
"format":"{value:.4f} °C",
|
||||
"param":[
|
||||
"pid",
|
||||
"ch",
|
||||
"target"
|
||||
],
|
||||
"thermostat:set_param":{
|
||||
"topic":"pid",
|
||||
"field":"target"
|
||||
},
|
||||
"lock":false
|
||||
}
|
||||
]
|
||||
@ -88,11 +82,10 @@
|
||||
2000
|
||||
],
|
||||
"suffix":"mA",
|
||||
"param":[
|
||||
"pwm",
|
||||
"ch",
|
||||
"max_i_pos"
|
||||
],
|
||||
"thermostat:set_param":{
|
||||
"topic":"pwm",
|
||||
"field":"max_i_pos"
|
||||
},
|
||||
"lock":false
|
||||
},
|
||||
{
|
||||
@ -106,11 +99,10 @@
|
||||
2000
|
||||
],
|
||||
"suffix":"mA",
|
||||
"param":[
|
||||
"pwm",
|
||||
"ch",
|
||||
"max_i_neg"
|
||||
],
|
||||
"thermostat:set_param":{
|
||||
"topic":"pwm",
|
||||
"field":"max_i_neg"
|
||||
},
|
||||
"lock":false
|
||||
},
|
||||
{
|
||||
@ -124,11 +116,10 @@
|
||||
],
|
||||
"siPrefix":true,
|
||||
"suffix":"V",
|
||||
"param":[
|
||||
"pwm",
|
||||
"ch",
|
||||
"max_v"
|
||||
],
|
||||
"thermostat:set_param":{
|
||||
"topic":"pwm",
|
||||
"field":"max_v"
|
||||
},
|
||||
"lock":false
|
||||
}
|
||||
]
|
||||
@ -150,11 +141,10 @@
|
||||
100
|
||||
],
|
||||
"format":"{value:.4f} °C",
|
||||
"param":[
|
||||
"s-h",
|
||||
"ch",
|
||||
"t0"
|
||||
],
|
||||
"thermostat:set_param":{
|
||||
"topic":"s-h",
|
||||
"field":"t0"
|
||||
},
|
||||
"lock":false
|
||||
},
|
||||
{
|
||||
@ -164,11 +154,10 @@
|
||||
"step":1,
|
||||
"siPrefix":true,
|
||||
"suffix":"Ω",
|
||||
"param":[
|
||||
"s-h",
|
||||
"ch",
|
||||
"r0"
|
||||
],
|
||||
"thermostat:set_param":{
|
||||
"topic":"s-h",
|
||||
"field":"r0"
|
||||
},
|
||||
"lock":false
|
||||
},
|
||||
{
|
||||
@ -178,22 +167,20 @@
|
||||
"step":1,
|
||||
"suffix":"K",
|
||||
"decimals":4,
|
||||
"param":[
|
||||
"s-h",
|
||||
"ch",
|
||||
"b"
|
||||
],
|
||||
"thermostat:set_param":{
|
||||
"topic":"s-h",
|
||||
"field":"b"
|
||||
},
|
||||
"lock":false
|
||||
},
|
||||
{
|
||||
"name":"Postfilter Rate",
|
||||
"type":"list",
|
||||
"value":16.67,
|
||||
"param":[
|
||||
"postfilter",
|
||||
"ch",
|
||||
"rate"
|
||||
],
|
||||
"thermostat:set_param":{
|
||||
"topic":"postfilter",
|
||||
"field":"rate"
|
||||
},
|
||||
"limits":{
|
||||
"Off":null,
|
||||
"16.67 Hz":16.67,
|
||||
@ -215,11 +202,10 @@
|
||||
"type":"float",
|
||||
"step":0.1,
|
||||
"suffix":"",
|
||||
"param":[
|
||||
"pid",
|
||||
"ch",
|
||||
"kp"
|
||||
],
|
||||
"thermostat:set_param":{
|
||||
"topic":"pid",
|
||||
"field":"kp"
|
||||
},
|
||||
"lock":false
|
||||
},
|
||||
{
|
||||
@ -227,11 +213,10 @@
|
||||
"type":"float",
|
||||
"step":0.1,
|
||||
"suffix":"Hz",
|
||||
"param":[
|
||||
"pid",
|
||||
"ch",
|
||||
"ki"
|
||||
],
|
||||
"thermostat:set_param":{
|
||||
"topic":"pid",
|
||||
"field":"ki"
|
||||
},
|
||||
"lock":false
|
||||
},
|
||||
{
|
||||
@ -239,11 +224,10 @@
|
||||
"type":"float",
|
||||
"step":0.1,
|
||||
"suffix":"s",
|
||||
"param":[
|
||||
"pid",
|
||||
"ch",
|
||||
"kd"
|
||||
],
|
||||
"thermostat:set_param":{
|
||||
"topic":"pid",
|
||||
"field":"kd"
|
||||
},
|
||||
"lock":false
|
||||
},
|
||||
{
|
||||
@ -261,11 +245,10 @@
|
||||
],
|
||||
"decimals":6,
|
||||
"suffix":"mA",
|
||||
"param":[
|
||||
"pid",
|
||||
"ch",
|
||||
"output_min"
|
||||
],
|
||||
"thermostat:set_param":{
|
||||
"topic":"pid",
|
||||
"field":"output_min"
|
||||
},
|
||||
"lock":false
|
||||
},
|
||||
{
|
||||
@ -278,11 +261,10 @@
|
||||
],
|
||||
"decimals":6,
|
||||
"suffix":"mA",
|
||||
"param":[
|
||||
"pid",
|
||||
"ch",
|
||||
"output_max"
|
||||
],
|
||||
"thermostat:set_param":{
|
||||
"topic":"pid",
|
||||
"field":"output_max"
|
||||
},
|
||||
"lock":false
|
||||
}
|
||||
]
|
||||
@ -298,10 +280,7 @@
|
||||
"value":20,
|
||||
"step":0.1,
|
||||
"format":"{value:.4f} °C",
|
||||
"pid_autotune":[
|
||||
"target_temp",
|
||||
"ch"
|
||||
]
|
||||
"pid_autotune":"target_temp"
|
||||
},
|
||||
{
|
||||
"name":"Test Current",
|
||||
@ -314,10 +293,7 @@
|
||||
2000
|
||||
],
|
||||
"suffix":"mA",
|
||||
"pid_autotune":[
|
||||
"test_current",
|
||||
"ch"
|
||||
]
|
||||
"pid_autotune":"test_current"
|
||||
},
|
||||
{
|
||||
"name":"Temperature Swing",
|
||||
@ -326,10 +302,7 @@
|
||||
"step":0.1,
|
||||
"prefix":"±",
|
||||
"format":"{value:.4f} °C",
|
||||
"pid_autotune":[
|
||||
"temp_swing",
|
||||
"ch"
|
||||
]
|
||||
"pid_autotune":"temp_swing"
|
||||
},
|
||||
{
|
||||
"name":"Lookback",
|
||||
@ -337,10 +310,7 @@
|
||||
"value":3.0,
|
||||
"step":0.1,
|
||||
"format":"{value:.4f} s",
|
||||
"pid_autotune":[
|
||||
"lookback",
|
||||
"ch"
|
||||
]
|
||||
"pid_autotune":"lookback"
|
||||
},
|
||||
{
|
||||
"name":"Run",
|
||||
|
Loading…
Reference in New Issue
Block a user