Modify the kiln logger to be less redundant, and modify the CSV parser bit

This commit is contained in:
Charles Descamps 2025-11-22 20:10:24 -07:00
parent 96c968d698
commit f484d7b5f9

View file

@ -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")