Commit Graph

168 Commits

Author SHA1 Message Date
atse 659d0d0835 Init client once
No none-ing
2024-02-14 11:31:41 +08:00
atse fa60439e39 Put the connecting task in aioclient 2024-02-14 11:31:41 +08:00
atse 7e56f2d879 Rearrange bottom bar for new context menu 2024-02-14 11:31:41 +08:00
atse 917a2546cc Remove is running loop variable
Just use Task.done()
2024-02-14 11:31:41 +08:00
atse fd83ee23e1 Catch a more specific exception 2024-02-14 11:31:41 +08:00
atse 115c7eb800 Add stop connection button
Stuff to add to stop button
2024-02-14 11:31:41 +08:00
atse 7e1b64b72c Set fan slider value minimum to 1, not 0 2024-02-14 11:31:41 +08:00
atse fca4b061ee Fix Slot decorators and types 2024-02-14 11:31:41 +08:00
atse 9f839f4bd9 Handle UI when fan_pwm is 0 2024-02-14 11:31:41 +08:00
atse ac77c457ec Fix fan warning wording 2024-02-14 11:31:41 +08:00
atse 54bb740a41 Only warn about fan pwm when not at full strength 2024-02-14 11:31:41 +08:00
atse 47dbe95045 Replace fan group highlighting with warning icon
Highlighting is too confusing
2024-02-14 11:31:41 +08:00
atse 8045d8c93d Grammar 2024-02-14 11:31:41 +08:00
atse 3d801666fa Update fan slider value immediately after fan auto 2024-02-14 11:31:41 +08:00
atse 5e105884d1 Use slider signal argument to set fan value 2024-02-14 11:31:41 +08:00
atse 1849711c62 Set client to none if failed to connect
Fixes connect button behaviour after accidental disconnect
2024-02-14 11:31:41 +08:00
atse 84018c3ebc Start running only when task is running 2024-02-14 11:31:41 +08:00
atse 1fd49360d0 Lock connection details while connecting
Fix connect button behaviour
2024-02-14 11:31:41 +08:00
atse ad5e36beab Add unit to report spinbox 2024-02-14 11:31:41 +08:00
atse a55589415d Cancel task to stop watch 2024-02-14 11:31:41 +08:00
atse c261ca2447 Disconnect client too on close 2024-02-14 11:31:41 +08:00
atse c476ad9f7d Close client_watcher on closeEvent not aboutToQuit
Mirrors
2024-02-14 11:31:41 +08:00
atse d0d33f42da Rearrange client_watcher to hold its own task 2024-02-14 11:31:41 +08:00
atse 608573c03c Update fan too 2024-02-14 11:31:41 +08:00
atse ec9ce6537c More helpful tooltip 2024-02-14 11:31:41 +08:00
atse 6b4b576518 Fix hardware revision showing major.major 2024-02-14 11:31:41 +08:00
atse 142fe1043c Remove unused 'as' clause 2024-02-14 11:31:41 +08:00
atse 3544f1ebdf Get rid of global client 2024-02-14 11:31:41 +08:00
atse e33f8430f2 Remove client_watcher global 2024-02-14 11:31:41 +08:00
atse 9cf33abe06 Gather client_watcher managment into connect 2024-02-14 11:31:41 +08:00
atse 0252c7b0e4 Invert logic, connect first 2024-02-14 11:31:41 +08:00
atse c6ca2b3490 Make Ui_MainWindow a superclass of our main window
Gets rid of the global ui.
2024-02-14 11:31:41 +08:00
atse 299ef7dcc3 Get rid of app global
QApplication is a singleton, no need for global
2024-02-14 11:31:41 +08:00
atse 73887564a5 Change title 2024-02-14 11:31:41 +08:00
atse f469d8fee3 Stop polling drift
Just waiting for the update_s doesn't take into account the time to
execute update_params, and causes time drift.
2024-02-14 11:31:41 +08:00
atse f546a3c61b Finish moving over to qasync
Also:
-Add aioclient

The old client is synchronous and blocking, and the only way to achieve
true asynchronous IO is to create a new client that interfaces with
asyncio.

-Make the GUI `nix run`-able
2024-02-14 11:31:41 +08:00
Egor Savkin 0ad77047f1 Try move from Qthreads to qasync
Signed-off-by: Egor Savkin <es@m-labs.hk>
2024-02-14 11:31:41 +08:00
Egor Savkin 3de6f233f9 Create client watcher, that would poll Thermostat for config
Signed-off-by: Egor Savkin <es@m-labs.hk>
2024-02-14 11:31:41 +08:00
Egor Savkin 069280feb6 Create basic GUI, that would connect and control thermostat's fan
Signed-off-by: Egor Savkin <es@m-labs.hk>
2024-02-14 11:31:41 +08:00
topquark12 059dd0bbb6 add autotune 2024-02-14 11:31:41 +08:00
topquark12 be4383a447 WIP: adding autotune 2024-02-14 11:31:41 +08:00
topquark12 f31c3be335 fix docs, fix i_set, fix GUI param ranges 2024-02-14 11:31:41 +08:00
topquark12 e71453750c fix whitespace error 2024-02-14 11:31:41 +08:00
topquark12 2796400d47 bi-dir sync, minimum working prototype 2024-02-14 11:31:41 +08:00
topquark12 593ad9a133 sync tree param from TEC 2024-02-14 11:31:41 +08:00
topquark12 563a32edf4 add sync from TEC 2024-02-14 11:31:41 +08:00
topquark12 b097067afc add param tree, param tree inactive 2024-02-14 11:31:41 +08:00
topquark12 d841cd2559 add voltage monitoring 2024-02-14 11:31:41 +08:00
topquark12 d6a80c4f9b fix typo 2024-02-14 11:31:41 +08:00
topquark12 4310a27085 refactor with classes 2024-02-14 11:31:41 +08:00
topquark12 61a8af468a add graph legends 2024-02-14 11:31:40 +08:00
topquark12 fe28ac98e5 add more graphs in 2x2 grid 2024-02-14 11:31:40 +08:00
topquark12 6655581b6f plot both channel temperatures 2024-02-14 11:31:40 +08:00
Egor Savkin e3e3237d2f Emit warning when current/voltage limits are near zero
Signed-off-by: Egor Savkin <es@m-labs.hk>
2023-03-23 16:58:05 +08:00
topquark12 26ad2f0119 rewrite PID
Rewrite of PID according to https://hackmd.io/IACbwcOTSt6Adj3_F9bKuw PID implementation.

To migrate:
- TEC+/- pin polarity has to be reversed.
- Some saved settings might be wiped upon flashing of new firmware, back up settings before upgrade
- Min / Max integral parameters no longer exist
- kp, ki, kd will likely need to be retuned

The software has been tested on hardware with good temperature control stability.

Reviewed-on: M-Labs/thermostat#68
Co-authored-by: topquark12 <aw@m-labs.hk>
Co-committed-by: topquark12 <aw@m-labs.hk>
2022-02-24 20:16:47 +08:00
topquark12 a5d8661b10 main: fix handling of incomplete data received (#55)
Reviewed-on: M-Labs/thermostat#55
Co-Authored-By: topquark12 <aw@m-labs.hk>
Co-Committed-By: topquark12 <aw@m-labs.hk>
2021-01-29 16:18:07 +08:00
topquark12 96f52ace8b pytec: simpler default graphs in plot 2021-01-25 13:51:50 +08:00
topquark12 73dd6d9154 add PID autotune code
Co-Authored-By: topquark12 <aw@m-labs.hk>
Co-Committed-By: topquark12 <aw@m-labs.hk>
2021-01-06 11:02:52 +08:00
Astro 7c55e34145 pytec: remove obsolete conversions 2020-12-18 19:37:25 +01:00
Astro 980d27ebfc pytec: remove client-side interval calculation 2020-12-18 15:44:11 +01:00
Astro b7e6cdbec2 pytec: measure interval 2020-12-16 22:14:21 +01:00
Astro 23d0c470e5 pytec: rename test.py to example.py 2020-12-09 01:08:34 +01:00
Astro 2a6f8ed874 pytec: use py3 dict methods
Fixes Gitea issue #14
2020-12-07 16:57:50 +01:00
Astro 5acebbef9f pytec: doc set_param 2020-10-01 00:35:16 +02:00
Astro 1b4a030e7e pytec: more methods, doc 2020-10-01 00:21:43 +02:00
Astro bfdb64ffd6 pytec: add configuration getters 2020-09-30 23:13:11 +02:00
Astro 4b75c6147d pytec plot: update legend, rm debug add pid_output 2020-09-30 19:13:50 +02:00
Astro 97490e5e1b pytec: init 2020-09-29 02:52:46 +02:00