Compare commits

...

4 Commits

Author SHA1 Message Date
9868ca4447 PyThermostat: Add dependencies to pyproject.toml 2025-01-15 23:00:11 +08:00
6aef143e3e PyThermostat: Remove tec terminology
The client controls the Thermostat as a whole and not just a TEC
attached to it; adjust variable names accordingly.
2025-01-06 18:04:12 +08:00
8db4867ebf PyThermostat: Improve pyproject metadata 2024-11-25 13:38:04 +08:00
130bde480e PyThermostat: Replace setup.py with pyproject.toml 2024-11-25 13:14:54 +08:00
7 changed files with 46 additions and 44 deletions

View File

@ -61,6 +61,7 @@
pythermostat = pkgs.python3Packages.buildPythonPackage {
pname = "pythermostat";
version = "0.0.0";
format = "pyproject";
src = "${self}/pythermostat";
propagatedBuildInputs =

View File

@ -1,13 +1,13 @@
import time
from pythermostat.client import Client
tec = Client() #(host="localhost", port=6667)
tec.set_param("b-p", 1, "t0", 20)
print(tec.get_output())
print(tec.get_pid())
print(tec.get_output())
print(tec.get_postfilter())
print(tec.get_b_parameter())
thermostat = Client() #(host="localhost", port=6667)
thermostat.set_param("b-p", 1, "t0", 20)
print(thermostat.get_output())
print(thermostat.get_pid())
print(thermostat.get_output())
print(thermostat.get_postfilter())
print(thermostat.get_b_parameter())
while True:
print(tec.get_report())
print(thermostat.get_report())
time.sleep(0.05)

View File

@ -0,0 +1,22 @@
[build-system]
requires = ["setuptools"]
build-backend = "setuptools.build_meta"
[project]
name = "pythermostat"
version = "0.0"
authors = [{name = "M-Labs"}]
description = "Python utilities for the Sinara 8451 Thermostat"
urls.Repository = "https://git.m-labs.hk/M-Labs/thermostat"
license = {text = "GPLv3"}
dependencies = [
"numpy >= 1.26.4",
"matplotlib >= 3.9.2"
]
[project.gui-scripts]
thermostat_plot = "pythermostat.plot:main"
[project.scripts]
thermostat_autotune = "pythermostat.autotune:main"
thermostat_test = "pythermostat.test:main"

View File

@ -235,16 +235,16 @@ def main():
# logging.basicConfig(level=logging.DEBUG)
tec = Client()
thermostat = Client()
data = tec.get_report()
data = thermostat.get_report()
ch = data[channel]
tuner = PIDAutotune(target_temperature, output_step,
lookback, noiseband, ch['interval'])
while True:
data = tec.get_report()
data = thermostat.get_report()
ch = data[channel]
@ -255,11 +255,11 @@ def main():
tuner_out = tuner.output()
tec.set_param("output", channel, "i_set", tuner_out)
thermostat.set_param("output", channel, "i_set", tuner_out)
time.sleep(0.05)
tec.set_param("output", channel, "i_set", 0)
thermostat.set_param("output", channel, "i_set", 0)
if __name__ == "__main__":

View File

@ -151,11 +151,11 @@ class Client:
"""Set configuration parameters
Examples::
tec.set_param("output", 0, "max_v", 2.0)
tec.set_param("pid", 1, "output_max", 2.5)
tec.set_param("b-p", 0, "t0", 20.0)
tec.set_param("center", 0, "vref")
tec.set_param("postfilter", 1, 21)
thermostat.set_param("output", 0, "max_v", 2.0)
thermostat.set_param("pid", 1, "output_max", 2.5)
thermostat.set_param("b-p", 0, "t0", 20.0)
thermostat.set_param("center", 0, "vref")
thermostat.set_param("postfilter", 1, 21)
See the firmware's README.md for a full list.
"""

View File

@ -9,8 +9,8 @@ from pythermostat.client import Client
def main():
TIME_WINDOW = 300.0
tec = Client()
target_temperature = tec.get_pid()[0]['target']
thermostat = Client()
target_temperature = thermostat.get_pid()[0]['target']
print("Channel 0 target temperature: {:.3f}".format(target_temperature))
class Series:
@ -48,10 +48,10 @@ def main():
quit = False
def recv_data(tec):
def recv_data(thermostat):
global last_packet_time
while True:
data = tec.get_report()
data = thermostat.get_report()
ch0 = data[0]
series_lock.acquire()
try:
@ -67,7 +67,7 @@ def main():
break
time.sleep(0.05)
thread = Thread(target=recv_data, args=(tec,))
thread = Thread(target=recv_data, args=(thermostat,))
thread.start()
fig, ax = plt.subplots()

View File

@ -1,21 +0,0 @@
from setuptools import setup, find_packages
setup(
name="pythermostat",
version="0.0",
author="M-Labs",
url="https://git.m-labs.hk/M-Labs/thermostat",
description="Control TEC",
license="GPLv3",
install_requires=["setuptools"],
packages=find_packages(),
entry_points={
"gui_scripts": [
"thermostat_plot = pythermostat.plot:main",
],
"console_scripts": [
"thermostat_autotune = pythermostat.autotune:main",
"thermostat_test = pythermostat.test:main",
]
},
)