WIP: GUI: Thermostat Control Panel #147

Draft
atse wants to merge 10 commits from atse/thermostat:GUI into master
Contributor

This implements the comprehensive control panel for the Sinara 8451 Thermostat.

Features include:

  • Live controlling of parameters
  • Plotting of channel currents and temperatures
  • GUI-friendly access to various channel-agnostic settings

Further feature developments/fixes/polishing ongoing (e.g. linuswck/thermostat#2).

image

This implements the comprehensive control panel for the Sinara 8451 Thermostat. Features include: * Live controlling of parameters * Plotting of channel currents and temperatures * GUI-friendly access to various channel-agnostic settings Further feature developments/fixes/polishing ongoing (e.g. https://git.m-labs.hk/linuswck/thermostat/pulls/2). ![image](/attachments/ada89140-9918-4f6b-a76b-ca3d3530acf5)
atse force-pushed GUI from 953a48230c to f7ad053433 2024-11-11 18:08:18 +08:00 Compare
atse force-pushed GUI from f7ad053433 to 198b07f2a6 2024-11-18 13:20:26 +08:00 Compare
atse force-pushed GUI from 198b07f2a6 to 348f2600f3 2024-11-18 18:04:37 +08:00 Compare
atse force-pushed GUI from 348f2600f3 to 1eba7d8556 2024-11-25 13:13:37 +08:00 Compare
atse force-pushed GUI from 1eba7d8556 to e4ad9bf271 2024-11-25 18:08:57 +08:00 Compare
atse changed title from WIP: GUI: Thermostat Control Panel to GUI: Thermostat Control Panel 2024-11-25 18:58:26 +08:00
sb10q reviewed 2024-11-26 15:17:58 +08:00
README.md Outdated
@ -71,0 +71,4 @@
A GUI has been developed for easy configuration and plotting of key parameters.
The Python GUI program is located at pythermostat/pythermostat/thermostat_qt.py, and is developed based on the Python library pyqtgraph. The GUI can be configured and
Owner

and PyQt

and PyQt
Author
Contributor

Added mention to it in force-push to 851b29e328.

Added mention to it in force-push to 851b29e328.
atse marked this conversation as resolved
sb10q reviewed 2024-11-26 15:18:43 +08:00
@ -0,0 +1,4 @@
graft examples
include pythermostat/gui/resources/artiq.ico
Owner

Isn't .ico an ancient Windows thing?

Isn't .ico an ancient Windows thing?
Author
Contributor

Yup. Used SVG instead in force-push to 851b29e328.

Yup. Used SVG instead in force-push to 851b29e328.
atse marked this conversation as resolved
sb10q reviewed 2024-11-26 15:19:17 +08:00
@ -0,0 +33,4 @@
with suppress(asyncio.CancelledError):
await polling_task
asyncio.run(main())
Owner

Split from GUI PR

Split from GUI PR
Author
Contributor

Now in #163.

Now in #163.
sb10q reviewed 2024-11-26 15:19:31 +08:00
flake.nix Outdated
@ -98,1 +134,4 @@
]);
shellHook = ''
export PYTHONPATH=`git rev-parse --show-toplevel`/pythermostat:$PYTHONPATH
'';
Owner

Split from GUI PR

Split from GUI PR
Author
Contributor

Already in #145.

Already in #145.
Author
Contributor

Removed for this PR in force-push to 851b29e328.

Removed for this PR in force-push to 851b29e328.
atse marked this conversation as resolved
sb10q reviewed 2024-11-26 15:19:58 +08:00
@ -85,0 +104,4 @@
ki = divisors[1] * self._Ku / self._Pu
kd = divisors[2] * self._Ku * self._Pu
return kp, ki, kd
Owner

Split all autotune changes from GUI PR

Split all autotune changes from GUI PR
Author
Contributor

Now in #162.

Now in #162.
sb10q reviewed 2024-11-26 15:20:30 +08:00
@ -60,0 +66,4 @@
self._noiseband = noiseband
self._inputs = deque(maxlen=round(lookback / sampletime))
def setReady(self):
Owner

Do not mix camel case and underscore naming schemes in method names for the same class.

Do not mix camel case and underscore naming schemes in method names for the same class.
Author
Contributor

Corrected in #162.

Corrected in #162.
atse marked this conversation as resolved
sb10q reviewed 2024-11-26 15:22:48 +08:00
@ -0,0 +22,4 @@
limit_samples = QtWidgets.QWidgetAction(self)
limit_samples.setDefaultWidget(self.samples_spinbox)
self.addAction(limit_samples)
self.limit_samples = limit_samples
Owner

Not sure if one menu per file is the right thing to do.

Not sure if one menu per file is the right thing to do.
Author
Contributor

Merged all menus into one file in force-push to 3f46bf3547.

Merged all menus into one file in force-push to 3f46bf3547.
Author
Contributor

That file might grow too large in the near future as settings grow; however it seems viable to have only one file for now.

That file might grow too large in the near future as settings grow; however it seems viable to have only one file for now.
sb10q reviewed 2024-11-26 15:23:17 +08:00
@ -0,0 +47,4 @@
self._lbl.setToolTip(report_str)
else:
self._lbl.setPixmap(QtGui.QPixmap())
self._lbl.setToolTip(None)
Owner

This probably can be merged into some other file.

This probably can be merged into some other file.
atse force-pushed GUI from e4ad9bf271 to 851b29e328 2025-01-06 17:21:14 +08:00 Compare
atse force-pushed GUI from 851b29e328 to 3f46bf3547 2025-01-06 17:55:22 +08:00 Compare
atse changed title from GUI: Thermostat Control Panel to WIP: GUI: Thermostat Control Panel 2025-01-13 10:16:32 +08:00
Author
Contributor

Waiting on #162 & #163 to be merged.

Waiting on #162 & #163 to be merged.
This pull request is marked as a work in progress.
This branch is out-of-date with the base branch

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u GUI:atse-GUI
git checkout atse-GUI
Sign in to join this conversation.
No reviewers
No Label
No Milestone
No Assignees
2 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: M-Labs/thermostat#147
No description provided.