Commit Graph

257 Commits

Author SHA1 Message Date
atse ae9c34f411 Proper report 2024-02-14 11:31:41 +08:00
atse 3e20658107 Proper timeout implementation 2024-02-14 11:31:41 +08:00
atse e82437ca9f Move global params into window 2024-02-14 11:31:41 +08:00
atse 3597fb4445 Fan group to be set based on hw_rev only 2024-02-14 11:31:41 +08:00
atse 953e314abb Add optional channel selection for save/load 2024-02-14 11:31:41 +08:00
atse f3e13cbb0b List comprehension 2024-02-14 11:31:41 +08:00
atse 980812de67 Full name of the parameter tree 2024-02-14 11:31:41 +08:00
atse cc60ceefa9 Unused import 2024-02-14 11:31:41 +08:00
atse 82c3576603 Don't use payload to get channel
Use parent param instead
2024-02-14 11:31:41 +08:00
atse 6f40adb19d Max current plus-or-minus better informs 2024-02-14 11:31:41 +08:00
atse 02619f1338 Convinience to turn down fan on connect 2024-02-14 11:31:41 +08:00
atse 7e89bf5337 Better send_command 2024-02-14 11:31:41 +08:00
atse 98f2d70cf6 Match statement 2024-02-14 11:31:41 +08:00
atse fde4e42069 Set status first in _on_connection_changed 2024-02-14 11:31:41 +08:00
atse 3c9541fea2 host 2024-02-14 11:31:41 +08:00
atse c1ae69f218 Enable axis linking functionality 2024-02-14 11:31:41 +08:00
atse 7149fb6d85 Shield pending commands from cancellation 2024-02-14 11:31:41 +08:00
atse 39a78b92c4 Implement IPv4 settings dialog 2024-02-14 11:31:41 +08:00
atse 2a31cdb1af Add ipv4 config 2024-02-14 11:31:41 +08:00
atse 169b89208d Use direct calling in report mode 2024-02-14 11:31:41 +08:00
atse 967492642e Add load and save configs 2024-02-14 11:31:41 +08:00
atse bfec9efbec Implement DFU mode 2024-02-14 11:31:41 +08:00
atse 9291160798 Change name of tec_client 2024-02-14 11:31:41 +08:00
atse 26fdc951bc Move fan signal connection into menu setup 2024-02-14 11:31:41 +08:00
atse 0443778456 Split menu setup method per menu 2024-02-14 11:31:41 +08:00
atse 7a727cb011 Add about thermostat window 2024-02-14 11:31:41 +08:00
atse d7c0219456 Use graph emoji for plot settings 2024-02-14 11:31:41 +08:00
atse 34ed3cf39a Add tooltip to settings buttons 2024-02-14 11:31:41 +08:00
atse 1f0e74bf9f Don't enabled thermostat settings before connect 2024-02-14 11:31:41 +08:00
atse 1ae44d6b82 Give proper names to settings buttons 2024-02-14 11:31:41 +08:00
atse fa8f1ebf10 No :port 2024-02-14 11:31:41 +08:00
atse 0434b08abc Don't translate ip 2024-02-14 11:31:41 +08:00
atse 8ff08c1539 Not just ip, can put domain name too, or "host" 2024-02-14 11:31:41 +08:00
atse b32062d855 More elegant connection stopping 2024-02-14 11:31:41 +08:00
atse d52aafd7f6 Add timeout to connect call 2024-02-14 11:31:41 +08:00
atse efa814a0d3 Add load and save config menu items 2024-02-14 11:31:41 +08:00
atse 1be874f6a7 Add about thermostat menu item
Meant to display hardware rev stuff, does nothing right now
2024-02-14 11:31:41 +08:00
atse 9364c9b187 Add network settings menu option
Also does nothing for now
2024-02-14 11:31:41 +08:00
atse a9c0106c46 Add DFU mode menu option
Does nothing for now
2024-02-14 11:31:41 +08:00
atse 2d341df23c Use _on_connection_changed(False) 2024-02-14 11:31:41 +08:00
atse 8f31380d52 Reset button 2024-02-14 11:31:41 +08:00
atse 998d999b59 Save the entire hw_rev data
Not just fan_pwm_recommended
2024-02-14 11:31:41 +08:00
atse ca7c64c115 Put connection details in connection button menu 2024-02-14 11:31:41 +08:00
atse a1a94a9c99 Move host selection into menu too 2024-02-14 11:31:41 +08:00
atse 9fc38d4614 Move fan throttling warning to the right 2024-02-14 11:31:41 +08:00
atse 5732bc951f Split the settings and plotting menus 2024-02-14 11:31:41 +08:00
atse cbffb8d700 Crude relocation of port spinbox from .ui file 2024-02-14 11:31:41 +08:00
atse cc1fddddda Space out bottom bar properly 2024-02-14 11:31:41 +08:00
atse 9aac571187 Remove leftover lines 2024-02-14 11:31:41 +08:00
atse a3d4bef68e Crude removal of fan group from .ui file 2024-02-14 11:31:41 +08:00
atse 8e98b62cfb Add line at PID temp 2024-02-14 11:31:41 +08:00
atse 64891231cd Report mode functionality 2024-02-14 11:31:41 +08:00
atse 728bce38b6 Add crosshair for better read of values 2024-02-14 11:31:41 +08:00
atse 5c081b0547 Add samples box in menu 2024-02-14 11:31:41 +08:00
atse 001ce432e8 Add clear graphs context menu item 2024-02-14 11:31:41 +08:00
atse fdf4c4f0d6 Plot temperature and current graphs
- Have units

- Samples are limited

- pglive is used for better live graphs
-- Also fixes bug with constantly updating normal pyqtgraphs where it
will bug out if right-clicked on and context menu is brought up
--Since pglive requires pyqtgraph == 0.13.3, upgrade pyqtgraph to that
too.
2024-02-14 11:31:41 +08:00
atse 90df3ae784 Plus or minus symbol on swing 2024-02-14 11:31:41 +08:00
atse ac51476d59 Add save to flash paramtree item 2024-02-14 11:31:41 +08:00
atse 4be6d419f6 Hide paramtree headers 2024-02-14 11:31:41 +08:00
atse ae6f08247a Add postfilter config 2024-02-14 11:31:41 +08:00
atse 863352d620 Add i_set 2024-02-14 11:31:41 +08:00
atse 9803a2d12b Add pwm update 2024-02-14 11:31:41 +08:00
atse 8291b2052f Add thermistor config & sync
Note: The formula is not actually Steinhart-Hart
2024-02-14 11:31:41 +08:00
atse 49c5120600 Connect up pid 2024-02-14 11:31:41 +08:00
atse 0e3a01d601 Connect up report update 2024-02-14 11:31:41 +08:00
atse 4961b2adb2 Use proper symbols in units, and add units
PID parameters are not actually dimensionless, and their units can be
deduced from the input unit and the output (actuator) unit.
2024-02-14 11:31:41 +08:00
atse abf5d5f2bd Fix formatting 2024-02-14 11:31:41 +08:00
atse 1b3f767d94 Might as well be a pass, doens't exec 2024-02-14 11:31:41 +08:00
atse 137004e6b5 Loop through trees to set them up 2024-02-14 11:31:41 +08:00
atse 5ba189d3ba Remove unused as clause 2024-02-14 11:31:41 +08:00
Egor Savkin 928db9963d Add paramtree view, without updates
Signed-off-by: Egor Savkin <es@m-labs.hk>

Fix signal blocker argument -atse
2024-02-14 11:31:41 +08:00
atse 8383abec8c Add explanation of report rate 2024-02-14 11:31:41 +08:00
atse b8d0cdabd3 Swap order connected first 2024-02-14 11:31:41 +08:00
atse 04a8f5ea56 Add tooltip to fan 2024-02-14 11:31:41 +08:00
atse 6c11a0536c Arrange context menu items to be in order 2024-02-14 11:31:41 +08:00
atse e5b0583a91 Disable auto fan box if adjusted while auto 2024-02-14 11:31:41 +08:00
atse 71076510a2 Steal fan group and port??? Somehow 2024-02-14 11:31:41 +08:00
atse 7749459701 Max the label 2024-02-14 11:31:41 +08:00
atse 463ee4105c Context menu by QToolButton 2024-02-14 11:31:41 +08:00
atse 1d192f50c8 Remove redundant return 2024-02-14 11:31:41 +08:00
atse 30f6c4f829 Correct order once the tec_client disconnects to
stop watching the client first
2024-02-14 11:31:41 +08:00
atse 1226cca6e6 Only set connecting task to None once 2024-02-14 11:31:41 +08:00
atse 8520dae93b Update and add docstrings to aioclient 2024-02-14 11:31:41 +08:00
atse 981c28ac27 Conslidate connect & disconnect actions 2024-02-14 11:31:41 +08:00
atse 5ced33594c Change name of button slot 2024-02-14 11:31:41 +08:00
atse b4a5e90f2e Turn on_connection_changed to coroutine
Further compresses the connect
2024-02-14 11:31:41 +08:00
atse 82438ee4a5 Simplify stuff a bit 2024-02-14 11:31:41 +08:00
atse e727f8b06b Change statement order up a bit 2024-02-14 11:31:41 +08:00
atse 27ce311111 Init client_watcher once 2024-02-14 11:31:41 +08:00
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