diff --git a/configuration.yaml b/configuration.yaml index 1977491..55b8f62 100644 --- a/configuration.yaml +++ b/configuration.yaml @@ -20,6 +20,21 @@ prometheus: lovelace: mode: storage dashboards: + pfv-overview: + mode: yaml + title: Ops Overview + filename: dashboards/overview.yaml + icon: mdi:view-dashboard-outline + pfv-power: + mode: yaml + title: Power + filename: dashboards/power.yaml + icon: mdi:flash + pfv-thermal: + mode: yaml + title: Thermal + filename: dashboards/thermal.yaml + icon: mdi:thermometer-lines pfv-server-room: mode: yaml title: Server Room diff --git a/dashboards/overview.yaml b/dashboards/overview.yaml new file mode 100644 index 0000000..9ae7e23 --- /dev/null +++ b/dashboards/overview.yaml @@ -0,0 +1,79 @@ +title: Ops Overview +views: + - title: Overview + type: sections + sections: + - type: grid + cards: + - type: markdown + content: > + ## Ops Overview + + One screen: is anything on fire? Details live in + [Power](/lovelace-pfv-power), [Thermal](/lovelace-pfv-thermal), + [Server Room](/lovelace-pfv-server-room) and + [STLP](/lovelace-pfv-stlp). + - type: grid + cards: + - type: heading + heading: Room & cooling + - type: gauge + entity: sensor.pfv_tsys1_rack_temperature + name: Server room + min: 50 + max: 110 + severity: + green: 60 + yellow: 85 + red: 95 + - type: entities + entities: + - sensor.pfv_garage_temperature + - sensor.pfv_artroom_temperature + - type: grid + cards: + - type: heading + heading: Power + - type: gauge + entity: sensor.tsys1_ups_battery_charge + name: APC charge + min: 0 + max: 100 + severity: + green: 60 + yellow: 40 + red: 20 + - type: gauge + entity: sensor.tsys1_triplite_battery_charge + name: Tripp Lite charge + min: 0 + max: 100 + severity: + green: 60 + yellow: 40 + red: 20 + - type: entities + entities: + - sensor.tsys1_ups_status + - sensor.tsys1_triplite_status + - sensor.pfv_ups_runtime_minutes + - sensor.pfv_triplite_runtime_minutes + - type: grid + cards: + - type: heading + heading: Alerts & self-healing + - type: entities + entities: + - automation.pfv_plant_ups_on_battery + - automation.pfv_plant_ups_battery_low + - automation.pfv_plant_ups_communication_lost + - automation.pfv_plant_high_temperature + - automation.pfv_watchdog_stale_entity_auto_heal + - input_boolean.pfv_watchdog_auto_restart + - type: grid + cards: + - type: markdown + content: > + **Pipeline:** deploy sensor tracks `release` on KNEL/KNELBMS. + CI runs on every dev/release push (Actions tab in gitea). + Out-of-band paging: Uptime Kuma (Cloudron). diff --git a/dashboards/power.yaml b/dashboards/power.yaml new file mode 100644 index 0000000..e9b0ec2 --- /dev/null +++ b/dashboards/power.yaml @@ -0,0 +1,114 @@ +title: Power +views: + - title: UPS detail + type: sections + sections: + - type: grid + cards: + - type: heading + heading: APC Smart-UPS C 1500 (battery-side USB HID) + - type: gauge + entity: sensor.tsys1_ups_battery_charge + name: Charge + min: 0 + max: 100 + severity: + green: 60 + yellow: 40 + red: 20 + - type: gauge + entity: sensor.pfv_ups_runtime_minutes + name: Runtime (min) + min: 0 + max: 60 + severity: + green: 25 + yellow: 15 + red: 5 + - type: grid + cards: + - type: entities + title: APC status + entities: + - sensor.tsys1_ups_status + - sensor.tsys1_ups_status_data + - sensor.tsys1_ups_battery_charge + - sensor.pfv_ups_runtime_minutes + - sensor.tsys1_ups_battery_runtime + - sensor.tsys1_ups_battery_voltage + - sensor.tsys1_ups_nominal_battery_voltage + - sensor.tsys1_ups_low_battery_setpoint + - sensor.tsys1_ups_beeper_status + - type: markdown + content: > + Serial AS1213210423 · mfr 2012-03 · fw UPS 02.2 · 24 V + nominal. USB HID exposes battery-side metrics only — no + input/output voltage or watts on this unit. + - type: grid + cards: + - type: heading + heading: Tripp Lite 1500 VA (moved from tsys9, #372) + - type: gauge + entity: sensor.tsys1_triplite_battery_charge + name: Charge + min: 0 + max: 100 + severity: + green: 60 + yellow: 40 + red: 20 + - type: gauge + entity: sensor.tsys1_triplite_load + name: Load % + min: 0 + max: 100 + severity: + green: 70 + yellow: 85 + red: 95 + - type: grid + cards: + - type: entities + title: Tripp Lite status + entities: + - sensor.tsys1_triplite_status + - sensor.tsys1_triplite_status_data + - sensor.tsys1_triplite_battery_charge + - sensor.tsys1_triplite_apparent_power + - sensor.tsys1_triplite_output_current + - sensor.tsys1_triplite_load + - sensor.pfv_triplite_runtime_minutes + - sensor.tsys1_triplite_battery_runtime + - sensor.tsys1_triplite_input_voltage + - sensor.tsys1_triplite_output_voltage + - sensor.tsys1_triplite_nominal_power + - title: Trends + type: sections + sections: + - type: grid + cards: + - type: history-graph + title: UPS charge (7 days) + entities: + - sensor.tsys1_ups_battery_charge + - sensor.tsys1_triplite_battery_charge + hours_to_show: 168 + - type: grid + cards: + - type: history-graph + title: Tripp Lite apparent power (24h) + entities: + - sensor.tsys1_triplite_apparent_power + hours_to_show: 24 + - type: history-graph + title: UPS load % (24h) + entities: + - sensor.tsys1_triplite_load + hours_to_show: 24 + - type: grid + cards: + - type: markdown + content: > + **Planned sections** (land with their data sources): + Emporia CT rental-bank feed (#623), whole-house kWh vs + solar production (#760), garage PDU circuits (#733). diff --git a/dashboards/thermal.yaml b/dashboards/thermal.yaml new file mode 100644 index 0000000..f284902 --- /dev/null +++ b/dashboards/thermal.yaml @@ -0,0 +1,119 @@ +title: Thermal +views: + - title: Rooms + type: sections + sections: + - type: grid + cards: + - type: gauge + entity: sensor.pfv_tsys1_rack_temperature + name: Server room + min: 50 + max: 110 + severity: + green: 60 + yellow: 85 + red: 95 + - type: history-graph + title: Server room (24h) + entities: + - sensor.pfv_tsys1_rack_temperature + hours_to_show: 24 + - type: grid + cards: + - type: gauge + entity: sensor.pfv_garage_temperature + name: Garage + min: 30 + max: 110 + severity: + green: 40 + yellow: 90 + red: 100 + - type: history-graph + title: Garage (24h) + entities: + - sensor.pfv_garage_temperature + hours_to_show: 24 + - type: grid + cards: + - type: gauge + entity: sensor.pfv_artroom_temperature + name: Art room + min: 40 + max: 110 + severity: + green: 60 + yellow: 85 + red: 95 + - type: history-graph + title: Art room (24h) + entities: + - sensor.pfv_artroom_temperature + hours_to_show: 24 + - type: grid + cards: + - type: markdown + content: > + **Minisplit** — climate entity lands with the Carrier dongle + commissioning (#629). Manual setpoint tonight: 62°F, with the + oscillating fan improving distribution. Alert tiers: + ambient 104°F · drives 140°F · NVMe 150°F · PCH 160°F · + GPU 185°F. + - title: Racks & silicon + type: sections + sections: + - type: grid + cards: + - type: entities + title: R3 · PowerEdge (DRAC) + entities: + - sensor.pfv_tsys6_cpu_temperature + - sensor.pfv_tsys6_drac_ambient + - sensor.pfv_tsys7_cpu_temperature + - sensor.pfv_tsys7_drac_inlet + - sensor.pfv_tsys7_drac_exhaust + - sensor.pfv_tsys7_drac_cpu1 + - sensor.pfv_tsys7_drac_cpu2 + - type: grid + cards: + - type: entities + title: R3 · Pis + Jetson + entities: + - sensor.pfv_svrpi_temperature + - sensor.pfv_subopi3_temperature + - sensor.pfv_subopi_dev_3_temperature + - sensor.pfv_subopi_dev_4_temperature + - sensor.pfv_jetson_temperature + - sensor.pfv_jetson_gpu_temperature + - type: grid + cards: + - type: entities + title: R5 · Laptops + entities: + - sensor.pfv_tsys3_cpu_temperature + - sensor.pfv_tsys3_gpu_temperature + - sensor.pfv_tsys3_nvme_temperature + - sensor.pfv_tsys5_nvme_temperature + - type: grid + cards: + - type: entities + title: R5 · Desktops / OptiPlex-class + entities: + - sensor.pfv_tsys1_rack_temperature + - sensor.pfv_tsys4_ambient_temperature + - sensor.pfv_tsys1_cpu_temperature + - sensor.pfv_tsys4_cpu_temperature + - sensor.pfv_tsys9_cpu_temperature + - sensor.pfv_tsys9_pch_temperature + - type: grid + cards: + - type: history-graph + title: CPU temperatures (24h) + entities: + - sensor.pfv_tsys1_cpu_temperature + - sensor.pfv_tsys3_cpu_temperature + - sensor.pfv_tsys6_cpu_temperature + - sensor.pfv_tsys7_cpu_temperature + - sensor.pfv_tsys9_cpu_temperature + hours_to_show: 24 diff --git a/packages/plant_snmp.yaml b/packages/plant_snmp.yaml index ae6a5f1..8f852ed 100644 --- a/packages/plant_snmp.yaml +++ b/packages/plant_snmp.yaml @@ -800,6 +800,13 @@ template: state: >- {% set v = states('sensor.tsys1_ups_battery_runtime') %} {{ (v | float / 60) | round(0) if is_number(v) else none }} + - name: "PFV Tripp Lite runtime minutes" + unique_id: pfv_triplite_runtime_minutes + device_class: duration + unit_of_measurement: "min" + state: >- + {% set v = states('sensor.tsys1_triplite_battery_runtime') %} + {{ (v | float / 60) | round(0) if is_number(v) else none }} - name: "PFV tsys1 drive temperature" unique_id: pfv_tsys1_drive_temperature device_class: temperature