.dockerignore
.gitattributes
.gitignore
AGENTS.md
CHANGELOG.md
CITATION.cff
CONTRIBUTING.md
DOCUMENTATION_REVIEW.md
DOCUMENTATION_TODO.md
Dockerfile
LICENSE
README.md
ROADMAP.md
SECURITY.md
config.yaml
pyproject.toml
requirements-host.txt
screenshot.md
simulate_serial.py
.github/workflows/release.yml
.github/workflows/test.yml
.vscode/launch.json
.vscode/settings.json
.vscode/tasks.json
config.d/triton-01-measurements.yaml
config.d/triton-02-measurements.yaml
deployment/README.md
deployment/edit_config.sh
deployment/generate_compose.sh
deployment/generate_homeassistant_config.sh
deployment/setup_container_fs.sh
docs/ARCHITECTURE.md
docs/CONFIGURATION.md
docs/DEVELOPMENT.md
docs/FIRST_SENSOR.md
docs/FIRST_STEPS.md
docs/HARDWARE.md
docs/INSTALLATION.md
docs/Internship purchased items.xlsx
docs/LabPulse Sensors.xlsx
docs/MAINTAINER_EXAMPLES.md
docs/MAINTAINING.md
docs/MAIN_UNIT.md
docs/Mini Shopping List.xlsx
docs/README.md
docs/RELEASING.md
docs/TRITON_PUBLISHER.md
docs/TROUBLESHOOTING.md
docs/USER_GUIDE.md
docs/~$Internship purchased items.xlsx
docs/examples/calculated-measurement.yaml
docs/examples/counter_driver.py
docs/examples/driver_template.py
docs/examples/minimal-serial.yaml
docs/examples/mqtt-input.yaml
docs/images/labpulse-overview.png
docs/internship/LabPulse_Internship_Report.md
docs/internship/LabPulse_Internship_Report.pdf
firmware/README.md
firmware/library.properties
firmware/run_triton_publisher.example.ps1
firmware/triton_logfile_publisher_production.py
firmware/triton_logfile_publisher_setup.py
firmware/examples/pressure_monitor/pressure_monitor.cpp
firmware/examples/pressure_monitor/pressure_monitor.h
firmware/examples/pressure_monitor/pressure_monitor.ino
firmware/examples/pump_room/pump_room.cpp
firmware/examples/pump_room/pump_room.h
firmware/examples/pump_room/pump_room.ino
firmware/examples/turbo_pump/turbo_pump.cpp
firmware/examples/turbo_pump/turbo_pump.h
firmware/examples/turbo_pump/turbo_pump.ino
firmware/src/Dht11Sensor.cpp
firmware/src/Dht11Sensor.h
firmware/src/LinearPressureSensor.cpp
firmware/src/LinearPressureSensor.h
firmware/src/PinMeasurement.h
firmware/src/PipeSampleWriter.cpp
firmware/src/PipeSampleWriter.h
firmware/src/PulseFlowSensor.cpp
firmware/src/PulseFlowSensor.h
firmware/src/Reading.h
firmware/src/Sht40Sensor.cpp
firmware/src/Sht40Sensor.h
firmware/src/ThermistorSensor.cpp
firmware/src/ThermistorSensor.h
hardware/3d_parts/README.txt
hardware/3d_parts/RPi 4 cover holes.stl
hardware/3d_parts/Tall boi With hole!.stl
hardware/PCB_files/Gerber_PCB_Arduino-Hat_Final_prototype.zip
hardware/PCB_files/Gerber_PCB_Arduino-Hat_prototype1.zip
hardware/PCB_files/Gerber_PCB_Arduino-Hat_prototype2_2025-11-14.zip
hardware/PCB_files/Gerber_PCB_Arduino-Hat_prototype3.zip
hardware/PCB_files/PCBv6.zip
legacy/Arduino code Water Temperature Sensor calibration.py
legacy/LEGACY README.md
legacy/Set_up_flowchart.pdf
legacy/Arduino/Pressure_Arduino.cpp
legacy/Arduino/Pump_Room_Arduino.cpp
legacy/Arduino/full_water_sensor_code.cpp
legacy/Arduino/Compressed Air sensor/Arduino instructions for CA sensor.cpp
legacy/Arduino/Compressed Air sensor/Calibration code for CA sensor.cpp
legacy/Arduino/Compressed Air sensor/pressurepub.py
legacy/Arduino/DHT sensor code/Arduino Instructions for TH sensor.cpp
legacy/Arduino/DHT sensor code/TH_sensor_code.cpp
legacy/Arduino/DHT sensor code/TH_sensor_code.h
legacy/Arduino/Water Temp sensor code/Arduino Instructions for WT sensor.cpp
legacy/Arduino/Water flow meter code/Arduino Instructions.cpp
legacy/Arduino/Water flow meter code/Temporary flow reader.cpp
legacy/Arduino/Water flow meter code/WT_and_WF_sensor_code_for_P_sensor.cpp
legacy/Arduino/Water flow meter code/flowpub.py
legacy/Arduino/pressure_monitor/README.md
legacy/Arduino/pressure_monitor/pressure_monitor.cpp
legacy/Arduino/pressure_monitor/pressure_monitor.h
legacy/Arduino/pressure_monitor/pressure_monitor.ino
legacy/Documentation/Internship purchased items.xlsx
legacy/Documentation/LabPulse cartoon-03.png
legacy/Documentation/PROJECT_REVIEW.md
legacy/Documentation/Setup of a lab monitor on a raspberry pi.docx
legacy/Future_work/README_FW.md
legacy/Future_work/generalised_architecture.md
legacy/Future_work/main.py
legacy/Future_work/sensor_base.py
legacy/Future_work/sensor_factory.py
legacy/Future_work/update_config.py
legacy/Future_work/update_config.yaml
legacy/Future_work/drivers/serial_driver.py
legacy/Installation/COMPATIBILITY.md
legacy/Installation/QUICKSTART.md
legacy/Installation/bootstap_pi.sh
legacy/Installation/setup.sh
legacy/archive_v1_pi_code/setup_homeassistant_313.sh
legacy/archive_v1_pi_code/Config files and scripts/Discoverycleaner.py
legacy/archive_v1_pi_code/Config files and scripts/modem-watchdog.sh
legacy/archive_v1_pi_code/Config files and scripts/phone_number_config.json
legacy/archive_v1_pi_code/Config files and scripts/phone_number_edit.py
legacy/archive_v1_pi_code/Config files and scripts/threshold_config_file.json
legacy/archive_v1_pi_code/General error detection code/Multiple_sensor changes.py
legacy/archive_v1_pi_code/General error detection code/Single_sensor_long_term_changes.py
legacy/archive_v1_pi_code/General error detection code/Upper_lower_limits.py
legacy/archive_v1_pi_code/General error detection code/WT and flow sensor error detection.py
legacy/archive_v1_pi_code/Python publishing scripts/DHT_publishing_code.py
legacy/archive_v1_pi_code/Python publishing scripts/UPS_Monitoring_code.py
legacy/archive_v1_pi_code/Python publishing scripts/pressure_pub.py
legacy/archive_v1_pi_code/Python publishing scripts/water_sensor.py
legacy/archive_v1_pi_code/Service Scripts/dhtpub.service
legacy/archive_v1_pi_code/Service Scripts/power_monitor.service
legacy/archive_v1_pi_code/Service Scripts/pressure_monitor.service
legacy/archive_v1_pi_code/Service Scripts/pump_room_monitor.service
legacy/archive_v1_pi_code/Service Scripts/turbo_pump_monitor.service
legacy/pi_scripts/config.yaml
legacy/pi_scripts/dhtpub.py
legacy/pi_scripts/powerpub.py
legacy/pi_scripts/pressurepub.py
legacy/pi_scripts/pumproompub.py
legacy/pi_scripts/pyproject.toml
legacy/pi_scripts/requirements.txt
legacy/pi_scripts/setup.sh
legacy/pi_scripts/smstest.py
legacy/pi_scripts/thresholds.json
legacy/pi_scripts/turbo_pump_monitor.py
legacy/pi_scripts/labpulse_common/__init__.py
legacy/pi_scripts/labpulse_common/config.py
legacy/pi_scripts/labpulse_common/mqtt_health.py
legacy/pi_scripts/labpulse_common/sms.py
legacy/pi_scripts/labpulse_common/utils.py
src/labpulse/README.md
src/labpulse/__init__.py
src/labpulse/backup.py
src/labpulse/control.py
src/labpulse/doctor.py
src/labpulse/installer.py
src/labpulse/usb.py
src/labpulse.egg-info/PKG-INFO
src/labpulse.egg-info/SOURCES.txt
src/labpulse.egg-info/dependency_links.txt
src/labpulse.egg-info/entry_points.txt
src/labpulse.egg-info/requires.txt
src/labpulse.egg-info/scm_file_list.json
src/labpulse.egg-info/scm_version.json
src/labpulse.egg-info/top_level.txt
src/labpulse/common/README.md
src/labpulse/common/__init__.py
src/labpulse/common/config.py
src/labpulse/common/fake_config.py
src/labpulse/common/generated_files.py
src/labpulse/common/identity.py
src/labpulse/common/logging_config.py
src/labpulse/common/measurement_config.py
src/labpulse/common/mqtt_contracts.py
src/labpulse/common/output_config.py
src/labpulse/common/service_config.py
src/labpulse/common/sms_templates.py
src/labpulse/common/sms_templates.yaml
src/labpulse/deployment/README.md
src/labpulse/deployment/__init__.py
src/labpulse/deployment/__main__.py
src/labpulse/deployment/compose.py
src/labpulse/deployment/generate.py
src/labpulse/deployment/mosquitto.py
src/labpulse/hardware/README.md
src/labpulse/hardware/__init__.py
src/labpulse/hardware/__main__.py
src/labpulse/hardware/_simulation.py
src/labpulse/hardware/driver.py
src/labpulse/hardware/homeassistant_publisher.py
src/labpulse/hardware/registry.py
src/labpulse/hardware/runner.py
src/labpulse/hardware/drivers/README.md
src/labpulse/hardware/drivers/__init__.py
src/labpulse/hardware/drivers/_gpio.py
src/labpulse/hardware/drivers/dht11.py
src/labpulse/hardware/drivers/gpio_input.py
src/labpulse/hardware/drivers/gpio_output.py
src/labpulse/hardware/drivers/mqtt_json.py
src/labpulse/hardware/drivers/serial_pipe.py
src/labpulse/hardware/drivers/sht40.py
src/labpulse/hardware/drivers/x1200.py
src/labpulse/homeassistant/README.md
src/labpulse/homeassistant/__init__.py
src/labpulse/homeassistant/__main__.py
src/labpulse/homeassistant/alarm.py
src/labpulse/homeassistant/generator.py
src/labpulse/homeassistant/templates/README.md
src/labpulse/homeassistant/templates/configuration.yaml.j2
src/labpulse/homeassistant/templates/dashboard.yaml.j2
src/labpulse/homeassistant/templates/alarm/alarm_package.yaml.j2
src/labpulse/homeassistant/templates/alarm/derived_entities.yaml.j2
src/labpulse/homeassistant/templates/alarm/helpers.yaml.j2
src/labpulse/homeassistant/templates/alarm/scripts.yaml.j2
src/labpulse/homeassistant/templates/alarm/automations/installation.yaml.j2
src/labpulse/homeassistant/templates/alarm/automations/measurement.yaml.j2
src/labpulse/homeassistant/templates/alarm/automations/measurement_missing_reading.yaml.j2
src/labpulse/homeassistant/templates/alarm/automations/measurement_state.yaml.j2
src/labpulse/homeassistant/templates/alarm/automations/power.yaml.j2
src/labpulse/homeassistant/templates/alarm/automations/power_state.yaml.j2
src/labpulse/homeassistant/templates/alarm/automations/service_health.yaml.j2
src/labpulse/homeassistant/templates/dashboard/alarm_setup.yaml.j2
src/labpulse/homeassistant/templates/dashboard/custom_dashboards.yaml.j2
src/labpulse/homeassistant/templates/dashboard/monitor.yaml.j2
src/labpulse/homeassistant/templates/dashboard/monitor_status.yaml.j2
src/labpulse/homeassistant/templates/dashboard/power_subviews.yaml.j2
src/labpulse/homeassistant/templates/dashboard/setup_measurements.yaml.j2
src/labpulse/homeassistant/templates/dashboard/setup_subviews.yaml.j2
src/labpulse/homeassistant/templates/dashboard/system_status.yaml.j2
src/labpulse/homeassistant/templates/dashboard/alarm_setup/bulk_editor.yaml.j2
src/labpulse/homeassistant/templates/dashboard/alarm_setup/notification_controls.yaml.j2
src/labpulse/homeassistant/templates/dashboard/alarm_setup/targets.yaml.j2
src/labpulse/homeassistant/templates/dashboard/setup_subviews/measurement_cards.yaml.j2
src/labpulse/homeassistant/templates/dashboard/setup_subviews/setup_header.yaml.j2
src/labpulse/output/README.md
src/labpulse/output/__init__.py
src/labpulse/output/__main__.py
src/labpulse/output/service.py
src/labpulse/sms/README.md
src/labpulse/sms/__init__.py
src/labpulse/sms/__main__.py
src/labpulse/sms/sender.py
src/labpulse/sms/subscriber.py
testing/README.md
testing/conftest.py
testing/test_backup_restore.py
testing/test_common_contracts.py
testing/test_config_editor_bundle.py
testing/test_config_pipeline.py
testing/test_container_release.py
testing/test_control_cli.py
testing/test_custom_measurements.py
testing/test_deployment_generation.py
testing/test_dht11_driver.py
testing/test_doctor.py
testing/test_documentation.py
testing/test_fake_hardware.py
testing/test_firmware_layout.py
testing/test_gpio_input_driver.py
testing/test_gpio_output_driver.py
testing/test_hardware_factory.py
testing/test_hardware_runner.py
testing/test_homeassistant_entities.py
testing/test_homeassistant_generator.py
testing/test_homeassistant_publisher.py
testing/test_logging_config.py
testing/test_measurement_files.py
testing/test_mqtt_json_driver.py
testing/test_notification_context.py
testing/test_output_mqtt_service.py
testing/test_packaging.py
testing/test_power_monitor.py
testing/test_serial_driver.py
testing/test_serial_parser.py
testing/test_setup_grouping.py
testing/test_sht40_driver.py
testing/test_simulate_serial.py
testing/test_sms_container.py
testing/test_triton_logfile_decoder.py
testing/test_unified_generation.py
testing/test_usb_setup.py
testing/test_x1200_ups_driver.py
testing/test_yaml_dashboard.py
testing/ups_test_pi_config.yaml
testing/real_hardware/README.md
testing/real_hardware/hardware_fault_common.sh
testing/real_hardware/test_dht11_fault.sh
testing/real_hardware/test_x1200_faults.sh