diff --git a/ph4_metrics/ha/sensor.yaml b/ph4_metrics/ha/sensor.yaml index 8de8692..e3efd62 100644 --- a/ph4_metrics/ha/sensor.yaml +++ b/ph4_metrics/ha/sensor.yaml @@ -7,3 +7,13 @@ state_topic: "metrics/liv" value_template: "{{ value_json.temp_zone1 }}" unit_of_measurement: "C" + + - name: "Load Avg 1" + state_topic: "metrics/liv" + value_template: "{{ value_json.load_avg1 }}" + unit_of_measurement: "u" + + - name: "Mem Percent" + state_topic: "metrics/liv" + value_template: "{{ value_json.mem_percent }}" + unit_of_measurement: "%" diff --git a/ph4_metrics/ph4_metrics/metrics.py b/ph4_metrics/ph4_metrics/metrics.py index ef2242f..8b593d6 100644 --- a/ph4_metrics/ph4_metrics/metrics.py +++ b/ph4_metrics/ph4_metrics/metrics.py @@ -4,6 +4,7 @@ from typing import Optional import paho.mqtt.client as mqtt # paho-mqtt +import psutil from attr import dataclass @@ -11,6 +12,8 @@ class Metrics: temp_zone0: Optional[float] = None temp_zone1: Optional[float] = None + load_avg_1: Optional[float] = None + mem_percent: Optional[float] = None class Bark: @@ -44,6 +47,8 @@ def publish(self): { "temp_zone0": self.metrics.temp_zone0, "temp_zone1": self.metrics.temp_zone1, + "load_avg1": self.metrics.load_avg_1, + "mem_percent": self.metrics.mem_percent, }, ) @@ -59,6 +64,12 @@ def compute_metrics(self): self.metrics.temp_zone0 = self.read_temp("/sys/class/thermal/thermal_zone0/temp") self.metrics.temp_zone1 = self.read_temp("/sys/class/thermal/thermal_zone1/temp") + load_avg = psutil.getloadavg() + self.metrics.load_avg_1 = load_avg[0] + + memory = psutil.virtual_memory() + self.metrics.mem_percent = memory.percent + except Exception as e: print(f"Error in metrics collection {e}") diff --git a/ph4_metrics/setup.py b/ph4_metrics/setup.py index 8ff98d9..474dfab 100644 --- a/ph4_metrics/setup.py +++ b/ph4_metrics/setup.py @@ -9,6 +9,7 @@ "future", "coloredlogs", "paho-mqtt", + "psutil", ] dev_extras = [