From a4745ab9e5f838a627fa874dea72320facd2a7d2 Mon Sep 17 00:00:00 2001 From: pallago <67544460+pallago@users.noreply.github.com> Date: Fri, 6 Dec 2024 23:51:32 +0100 Subject: [PATCH] Output File (#157) * added output file to write some values to a text file * bugfix, return statement was missing and also the description for the example is updated --- src/config.py.example | 15 +++++++++++++++ src/rpi-cpu2mqtt.py | 18 ++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/src/config.py.example b/src/config.py.example index ab74267..d95b085 100644 --- a/src/config.py.example +++ b/src/config.py.example @@ -93,3 +93,18 @@ cpu_thermal_zone = 'cpu' # read external sensors for temperature, humidity, pressure etc. ext_sensors = False #ext_sensors = [["Housing", "ds18b20", "0014531448ff", -300], ["ext2", "sht21", 0, [-300, 0]]] + +# output file +output_filename = False +#output_filename = "/dev/shm/mjpeg/user_annotate.txt" +# a for append or w for write (overwrites content) +output_mode = "w" +# define what should be in the output +def get_content_outputfile(): + # In this example the values from the ext_sensors are used + # the values for the temperature values are rounded to 1 decimal + sht21_temp = round(float(ext_sensors[1][3][0]), 1) + sht21_hum = ext_sensors[1][3][1] + ds18b20_temp = round(float(ext_sensors[0][3]), 1) + return f"T: {sht21_temp} 'C; H: {sht21_hum} %% ; T-Rpi: {ds18b20_temp} 'C" + diff --git a/src/rpi-cpu2mqtt.py b/src/rpi-cpu2mqtt.py index baf6af3..9a90923 100644 --- a/src/rpi-cpu2mqtt.py +++ b/src/rpi-cpu2mqtt.py @@ -917,6 +917,24 @@ def gather_and_send_info(): if args.display: print_measured_values(monitored_values) + # write some output to a file + if config.output_filename: + # the only options are "a" for append or "w" for (over)write + # check if one of this options is defined + if config.output_mode not in ["a", "w"]: + print("Error, output_type not known. Default w is set.") + config.output_type = "w" + try: + # open the text file + output_file = open(config.output_filename, config.output_mode) + # read what should be written into the textfile + # we need to define this is a function, otherwise the values are not updated and default values are taken + output_content = config.get_content_outputfile() + output_file.write(output_content) + output_file.close() + except Exception as e: + print("Error writing to output file:", e) + if args.hass_api: publish_to_hass_api(monitored_values) else: