From f484d7b5f952f1485ee20f018275e3e387857a42 Mon Sep 17 00:00:00 2001 From: cdez Date: Sat, 22 Nov 2025 20:10:24 -0700 Subject: [PATCH] Modify the kiln logger to be less redundant, and modify the CSV parser bit --- kiln-logger.py | 40 ++++++++++++++++++++++++---------------- 1 file changed, 24 insertions(+), 16 deletions(-) diff --git a/kiln-logger.py b/kiln-logger.py index 89641c6..99bcb33 100755 --- a/kiln-logger.py +++ b/kiln-logger.py @@ -12,7 +12,7 @@ from luma.led_matrix.device import max7219 from luma.core.interface.serial import spi, noop from luma.core.virtual import viewport, sevensegment -import requests +# import requests STD_HEADER = [ @@ -65,8 +65,8 @@ def logger(hostname, csvfile, noprofilestats, pidstats, stdout): csv_stdout = None # setup seven segment display - -# serial = spi(port=0, device=0, gpio=noop()) + # remove comment on the next line if using SPI interface 0. currently using SPI interface 1 + #serial = spi(port=0, device=0, gpio=noop()) serial = spi(port=1, device=0, gpio=noop()) device = max7219(serial, cascaded=2) seg = sevensegment(device) @@ -104,32 +104,40 @@ def logger(hostname, csvfile, noprofilestats, pidstats, stdout): msg[k] = '{:5.3f}'.format(v) csv_stdout.writerow(msg) sys.stdout.flush() - # ADD THE TEMPERATURE HERE - try: - req = requests.get('http://127.0.0.1:8081/api/stats') + + # ADD THE TEMPERATURE HERE with requests library, however, this is redundant, as the + # websocket messaging already has the temp value. + # try: + # req = requests.get('http://127.0.0.1:8081/api/stats') - except KeyError: - try: - req = requests.get('http://127.0.0.1:8081/api/stats') - except Exception: - time.sleep(25) + # except KeyError: + # try: + # req = requests.get('http://127.0.0.1:8081/api/stats') + # except Exception: + # time.sleep(25) - continue + # continue - temp = round(req.json()['ispoint']) + # TODO: temp needs to be error checked if using the requests library. + # expected value is a decimal/float value between -58 and 2372 deg F + # temp = round(req.json()['ispoint']) + + temp = round(msg['temperature']) + # time remaining for the display, calculated for rounded seconds time_rem = msg['totaltime'] - msg['runtime'] hours = round(time_rem // 3600) minutes = round((time_rem - (hours * 3600)) // 60) - seconds = round((time_rem - (hours * 3600) - (minutes * 60))) + seconds = round((time_rem - (hours * 3600) - (minutes * 60))) - 1 - seg.text = f"TEMP{temp:4.0f}{hours:2.0f}-{minutes:2.0f}-{seconds:2.0f}" + seg.text = f"{hours:2.0f}-{minutes:2.0f}-{seconds:2.0f}TEMP{temp:4.0f}" # END ADD TEMP if __name__ == "__main__": parser = argparse.ArgumentParser(description='Log kiln data for analysis.') parser.add_argument('--hostname', type=str, default="localhost:8081", help="The kiln-controller hostname:port") - parser.add_argument('--csvfile', type=str, default="/tmp/kilnstats.csv", help="Where to write the kiln stats to") + # parser.add_argument('--csvfile', type=str, default="/tmp/kilnstats.csv", help="Where to write the kiln stats to") + parser.add_argument('--csvfile', type=str, default=f"/tmp/kilnstats-{datetime.today().strftime("%Y_%m_%d-%I_%M")}.csv", help="Where to write the kiln stats to") parser.add_argument('--pidstats', action='store_true', help="Include PID stats") parser.add_argument('--noprofilestats', action='store_true', help="Do not store profile stats (default is to store them)") parser.add_argument('--stdout', action='store_true', help="Also print to stdout")