monitoring(overview): tune climate row and restore ups card density

This commit is contained in:
Brad Stein 2026-04-12 18:35:15 -03:00
parent de3272e160
commit 6b0d6b017c
3 changed files with 77 additions and 71 deletions

View File

@ -1386,6 +1386,8 @@ def build_overview():
], ],
links=link_to("atlas-power"), links=link_to("atlas-power"),
description="Per-UPS live snapshot: current draw, discharge, and charging/discharging status.", description="Per-UPS live snapshot: current draw, discharge, and charging/discharging status.",
orientation="horizontal",
wide_layout=False,
) )
) )
panels.append( panels.append(
@ -1415,19 +1417,19 @@ def build_overview():
decimals=2, decimals=2,
text_mode="name_and_value", text_mode="name_and_value",
targets=[ targets=[
{"refId": "A", "expr": CLIMATE_TEMP_MAX, "legendFormat": "Tent Temp (°C)", "instant": True}, {"refId": "A", "expr": CLIMATE_TEMP_MAX, "legendFormat": "°C", "instant": True},
{"refId": "B", "expr": CLIMATE_TEMP_FAHRENHEIT_MAX, "legendFormat": "Tent Temp (°F)", "instant": True}, {"refId": "B", "expr": CLIMATE_TEMP_FAHRENHEIT_MAX, "legendFormat": "°F", "instant": True},
{"refId": "C", "expr": CLIMATE_HUMIDITY_MAX, "legendFormat": "Tent RH (%)", "instant": True}, {"refId": "C", "expr": CLIMATE_HUMIDITY_MAX, "legendFormat": "RH%", "instant": True},
{"refId": "D", "expr": CLIMATE_PRESSURE_CURRENT, "legendFormat": "Tent Pressure (VPD kPa)", "instant": True}, {"refId": "D", "expr": CLIMATE_PRESSURE_CURRENT, "legendFormat": "VPD", "instant": True},
], ],
field_overrides=[ field_overrides=[
{"matcher": {"id": "byName", "options": "Tent Temp (°C)"}, "properties": [{"id": "unit", "value": "celsius"}]}, {"matcher": {"id": "byName", "options": "°C"}, "properties": [{"id": "unit", "value": "celsius"}]},
{"matcher": {"id": "byName", "options": "Tent Temp (°F)"}, "properties": [{"id": "unit", "value": "fahrenheit"}]}, {"matcher": {"id": "byName", "options": "°F"}, "properties": [{"id": "unit", "value": "fahrenheit"}]},
{"matcher": {"id": "byName", "options": "Tent RH (%)"}, "properties": [{"id": "unit", "value": "percent"}]}, {"matcher": {"id": "byName", "options": "RH%"}, "properties": [{"id": "unit", "value": "percent"}]},
{"matcher": {"id": "byName", "options": "Tent Pressure (VPD kPa)"}, "properties": [{"id": "unit", "value": "suffix:kPa"}]}, {"matcher": {"id": "byName", "options": "VPD"}, "properties": [{"id": "unit", "value": "suffix:kPa"}]},
], ],
links=link_to("atlas-power"), links=link_to("atlas-power"),
description="Current tent temperature in C/F, humidity, and pressure proxy (VPD in kPa).", description="Current tent values on one row: temperature (C/F), humidity (RH), and pressure proxy (VPD).",
orientation="horizontal", orientation="horizontal",
wide_layout=True, wide_layout=True,
) )
@ -1440,27 +1442,27 @@ def build_overview():
{"h": 6, "w": 6, "x": 6, "y": 12}, {"h": 6, "w": 6, "x": 6, "y": 12},
unit="celsius", unit="celsius",
targets=[ targets=[
{"refId": "A", "expr": CLIMATE_TEMP_SERIES, "legendFormat": "Temperature (°C)"}, {"refId": "A", "expr": CLIMATE_TEMP_SERIES, "legendFormat": "C"},
{"refId": "B", "expr": CLIMATE_TEMP_FAHRENHEIT_SERIES, "legendFormat": "Temperature (°F)"}, {"refId": "B", "expr": CLIMATE_TEMP_FAHRENHEIT_SERIES, "legendFormat": "F"},
{"refId": "C", "expr": CLIMATE_HUMIDITY_SERIES, "legendFormat": "Humidity (%)"}, {"refId": "C", "expr": CLIMATE_HUMIDITY_SERIES, "legendFormat": "RH"},
{"refId": "D", "expr": CLIMATE_PRESSURE_SERIES, "legendFormat": "Pressure (VPD kPa)"}, {"refId": "D", "expr": CLIMATE_PRESSURE_SERIES, "legendFormat": "VPD"},
], ],
field_overrides=[ field_overrides=[
{ {
"matcher": {"id": "byName", "options": "Temperature (°F)"}, "matcher": {"id": "byName", "options": "F"},
"properties": [ "properties": [
{"id": "unit", "value": "fahrenheit"}, {"id": "unit", "value": "fahrenheit"},
], ],
}, },
{ {
"matcher": {"id": "byName", "options": "Humidity (%)"}, "matcher": {"id": "byName", "options": "RH"},
"properties": [ "properties": [
{"id": "unit", "value": "percent"}, {"id": "unit", "value": "percent"},
{"id": "custom.axisPlacement", "value": "right"}, {"id": "custom.axisPlacement", "value": "right"},
], ],
}, },
{ {
"matcher": {"id": "byName", "options": "Pressure (VPD kPa)"}, "matcher": {"id": "byName", "options": "VPD"},
"properties": [ "properties": [
{"id": "unit", "value": "suffix:kPa"}, {"id": "unit", "value": "suffix:kPa"},
{"id": "custom.axisPlacement", "value": "right"}, {"id": "custom.axisPlacement", "value": "right"},
@ -1468,10 +1470,10 @@ def build_overview():
], ],
} }
], ],
legend_display="table", legend_display="list",
legend_placement="right", legend_placement="bottom",
links=link_to("atlas-power"), links=link_to("atlas-power"),
description="Historical tent temperature (C/F), humidity, and pressure proxy (VPD kPa).", description="Temperature scales on left axis, humidity and VPD on right axis.",
) )
) )
panels.append( panels.append(
@ -1484,10 +1486,10 @@ def build_overview():
decimals=0, decimals=0,
text_mode="name_and_value", text_mode="name_and_value",
targets=[ targets=[
{"refId": "A", "expr": f"round({CLIMATE_FAN_OUTLET_CURRENT})", "legendFormat": "Inside Outlet", "instant": True}, {"refId": "A", "expr": f"round({CLIMATE_FAN_OUTLET_CURRENT})", "legendFormat": "Outlet", "instant": True},
{"refId": "B", "expr": f"round({CLIMATE_FAN_INSIDE_INLET_CURRENT})", "legendFormat": "Inside Inlet", "instant": True}, {"refId": "B", "expr": f"round({CLIMATE_FAN_INSIDE_INLET_CURRENT})", "legendFormat": "Inlet In", "instant": True},
{"refId": "C", "expr": f"round({CLIMATE_FAN_OUTSIDE_INLET_CURRENT})", "legendFormat": "Outside Inlet", "instant": True}, {"refId": "C", "expr": f"round({CLIMATE_FAN_OUTSIDE_INLET_CURRENT})", "legendFormat": "Inlet Out", "instant": True},
{"refId": "D", "expr": f"round({CLIMATE_FAN_INTERIOR_CURRENT})", "legendFormat": "Interior Fans", "instant": True}, {"refId": "D", "expr": f"round({CLIMATE_FAN_INTERIOR_CURRENT})", "legendFormat": "Interior", "instant": True},
], ],
thresholds={ thresholds={
"mode": "absolute", "mode": "absolute",

View File

@ -1281,7 +1281,9 @@
"fields": "", "fields": "",
"values": false "values": false
}, },
"textMode": "name_and_value" "textMode": "name_and_value",
"orientation": "horizontal",
"wideLayout": false
}, },
"links": [ "links": [
{ {
@ -1364,25 +1366,25 @@
{ {
"refId": "A", "refId": "A",
"expr": "max(max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius)) or on() vector(0)", "expr": "max(max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius)) or on() vector(0)",
"legendFormat": "Tent Temp (\u00b0C)", "legendFormat": "\u00b0C",
"instant": true "instant": true
}, },
{ {
"refId": "B", "refId": "B",
"expr": "max((max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius)) * 9 / 5 + 32) or on() vector(0)", "expr": "max((max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius)) * 9 / 5 + 32) or on() vector(0)",
"legendFormat": "Tent Temp (\u00b0F)", "legendFormat": "\u00b0F",
"instant": true "instant": true
}, },
{ {
"refId": "C", "refId": "C",
"expr": "max(max without (job,instance,pod,service,endpoint,namespace) (typhon_relative_humidity_percent)) or on() vector(0)", "expr": "max(max without (job,instance,pod,service,endpoint,namespace) (typhon_relative_humidity_percent)) or on() vector(0)",
"legendFormat": "Tent RH (%)", "legendFormat": "RH%",
"instant": true "instant": true
}, },
{ {
"refId": "D", "refId": "D",
"expr": "max(max without (job,instance,pod,service,endpoint,namespace) (typhon_vpd_kpa)) or on() vector(0)", "expr": "max(max without (job,instance,pod,service,endpoint,namespace) (typhon_vpd_kpa)) or on() vector(0)",
"legendFormat": "Tent Pressure (VPD kPa)", "legendFormat": "VPD",
"instant": true "instant": true
} }
], ],
@ -1415,7 +1417,7 @@
{ {
"matcher": { "matcher": {
"id": "byName", "id": "byName",
"options": "Tent Temp (\u00b0C)" "options": "\u00b0C"
}, },
"properties": [ "properties": [
{ {
@ -1427,7 +1429,7 @@
{ {
"matcher": { "matcher": {
"id": "byName", "id": "byName",
"options": "Tent Temp (\u00b0F)" "options": "\u00b0F"
}, },
"properties": [ "properties": [
{ {
@ -1439,7 +1441,7 @@
{ {
"matcher": { "matcher": {
"id": "byName", "id": "byName",
"options": "Tent RH (%)" "options": "RH%"
}, },
"properties": [ "properties": [
{ {
@ -1451,7 +1453,7 @@
{ {
"matcher": { "matcher": {
"id": "byName", "id": "byName",
"options": "Tent Pressure (VPD kPa)" "options": "VPD"
}, },
"properties": [ "properties": [
{ {
@ -1484,7 +1486,7 @@
"targetBlank": true "targetBlank": true
} }
], ],
"description": "Current tent temperature in C/F, humidity, and pressure proxy (VPD in kPa)." "description": "Current tent values on one row: temperature (C/F), humidity (RH), and pressure proxy (VPD)."
}, },
{ {
"id": 43, "id": 43,
@ -1504,22 +1506,22 @@
{ {
"refId": "A", "refId": "A",
"expr": "max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius)", "expr": "max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius)",
"legendFormat": "Temperature (\u00b0C)" "legendFormat": "C"
}, },
{ {
"refId": "B", "refId": "B",
"expr": "(max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius)) * 9 / 5 + 32", "expr": "(max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius)) * 9 / 5 + 32",
"legendFormat": "Temperature (\u00b0F)" "legendFormat": "F"
}, },
{ {
"refId": "C", "refId": "C",
"expr": "max without (job,instance,pod,service,endpoint,namespace) (typhon_relative_humidity_percent)", "expr": "max without (job,instance,pod,service,endpoint,namespace) (typhon_relative_humidity_percent)",
"legendFormat": "Humidity (%)" "legendFormat": "RH"
}, },
{ {
"refId": "D", "refId": "D",
"expr": "max without (job,instance,pod,service,endpoint,namespace) (typhon_vpd_kpa)", "expr": "max without (job,instance,pod,service,endpoint,namespace) (typhon_vpd_kpa)",
"legendFormat": "Pressure (VPD kPa)" "legendFormat": "VPD"
} }
], ],
"fieldConfig": { "fieldConfig": {
@ -1530,7 +1532,7 @@
{ {
"matcher": { "matcher": {
"id": "byName", "id": "byName",
"options": "Temperature (\u00b0F)" "options": "F"
}, },
"properties": [ "properties": [
{ {
@ -1542,7 +1544,7 @@
{ {
"matcher": { "matcher": {
"id": "byName", "id": "byName",
"options": "Humidity (%)" "options": "RH"
}, },
"properties": [ "properties": [
{ {
@ -1558,7 +1560,7 @@
{ {
"matcher": { "matcher": {
"id": "byName", "id": "byName",
"options": "Pressure (VPD kPa)" "options": "VPD"
}, },
"properties": [ "properties": [
{ {
@ -1579,8 +1581,8 @@
}, },
"options": { "options": {
"legend": { "legend": {
"displayMode": "table", "displayMode": "list",
"placement": "right" "placement": "bottom"
}, },
"tooltip": { "tooltip": {
"mode": "multi" "mode": "multi"
@ -1593,7 +1595,7 @@
"targetBlank": true "targetBlank": true
} }
], ],
"description": "Historical tent temperature (C/F), humidity, and pressure proxy (VPD kPa)." "description": "Temperature scales on left axis, humidity and VPD on right axis."
}, },
{ {
"id": 140, "id": 140,
@ -1613,25 +1615,25 @@
{ {
"refId": "A", "refId": "A",
"expr": "round(max(max without (job,instance,pod,service,endpoint,namespace) (typhon_fan_speed_level{fan_group=\"outlet\"})) or on() vector(0))", "expr": "round(max(max without (job,instance,pod,service,endpoint,namespace) (typhon_fan_speed_level{fan_group=\"outlet\"})) or on() vector(0))",
"legendFormat": "Inside Outlet", "legendFormat": "Outlet",
"instant": true "instant": true
}, },
{ {
"refId": "B", "refId": "B",
"expr": "round(max(max without (job,instance,pod,service,endpoint,namespace) (typhon_fan_speed_level{fan_group=\"inside_inlet\"})) or on() vector(0))", "expr": "round(max(max without (job,instance,pod,service,endpoint,namespace) (typhon_fan_speed_level{fan_group=\"inside_inlet\"})) or on() vector(0))",
"legendFormat": "Inside Inlet", "legendFormat": "Inlet In",
"instant": true "instant": true
}, },
{ {
"refId": "C", "refId": "C",
"expr": "round(max(max without (job,instance,pod,service,endpoint,namespace) (typhon_fan_speed_level{fan_group=\"outside_inlet\"})) or on() vector(0))", "expr": "round(max(max without (job,instance,pod,service,endpoint,namespace) (typhon_fan_speed_level{fan_group=\"outside_inlet\"})) or on() vector(0))",
"legendFormat": "Outside Inlet", "legendFormat": "Inlet Out",
"instant": true "instant": true
}, },
{ {
"refId": "D", "refId": "D",
"expr": "round(max(max without (job,instance,pod,service,endpoint,namespace) (typhon_fan_speed_level{fan_group=~\"interior|unknown\"})) or on() vector(0))", "expr": "round(max(max without (job,instance,pod,service,endpoint,namespace) (typhon_fan_speed_level{fan_group=~\"interior|unknown\"})) or on() vector(0))",
"legendFormat": "Interior Fans", "legendFormat": "Interior",
"instant": true "instant": true
} }
], ],

View File

@ -1290,7 +1290,9 @@ data:
"fields": "", "fields": "",
"values": false "values": false
}, },
"textMode": "name_and_value" "textMode": "name_and_value",
"orientation": "horizontal",
"wideLayout": false
}, },
"links": [ "links": [
{ {
@ -1373,25 +1375,25 @@ data:
{ {
"refId": "A", "refId": "A",
"expr": "max(max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius)) or on() vector(0)", "expr": "max(max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius)) or on() vector(0)",
"legendFormat": "Tent Temp (\u00b0C)", "legendFormat": "\u00b0C",
"instant": true "instant": true
}, },
{ {
"refId": "B", "refId": "B",
"expr": "max((max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius)) * 9 / 5 + 32) or on() vector(0)", "expr": "max((max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius)) * 9 / 5 + 32) or on() vector(0)",
"legendFormat": "Tent Temp (\u00b0F)", "legendFormat": "\u00b0F",
"instant": true "instant": true
}, },
{ {
"refId": "C", "refId": "C",
"expr": "max(max without (job,instance,pod,service,endpoint,namespace) (typhon_relative_humidity_percent)) or on() vector(0)", "expr": "max(max without (job,instance,pod,service,endpoint,namespace) (typhon_relative_humidity_percent)) or on() vector(0)",
"legendFormat": "Tent RH (%)", "legendFormat": "RH%",
"instant": true "instant": true
}, },
{ {
"refId": "D", "refId": "D",
"expr": "max(max without (job,instance,pod,service,endpoint,namespace) (typhon_vpd_kpa)) or on() vector(0)", "expr": "max(max without (job,instance,pod,service,endpoint,namespace) (typhon_vpd_kpa)) or on() vector(0)",
"legendFormat": "Tent Pressure (VPD kPa)", "legendFormat": "VPD",
"instant": true "instant": true
} }
], ],
@ -1424,7 +1426,7 @@ data:
{ {
"matcher": { "matcher": {
"id": "byName", "id": "byName",
"options": "Tent Temp (\u00b0C)" "options": "\u00b0C"
}, },
"properties": [ "properties": [
{ {
@ -1436,7 +1438,7 @@ data:
{ {
"matcher": { "matcher": {
"id": "byName", "id": "byName",
"options": "Tent Temp (\u00b0F)" "options": "\u00b0F"
}, },
"properties": [ "properties": [
{ {
@ -1448,7 +1450,7 @@ data:
{ {
"matcher": { "matcher": {
"id": "byName", "id": "byName",
"options": "Tent RH (%)" "options": "RH%"
}, },
"properties": [ "properties": [
{ {
@ -1460,7 +1462,7 @@ data:
{ {
"matcher": { "matcher": {
"id": "byName", "id": "byName",
"options": "Tent Pressure (VPD kPa)" "options": "VPD"
}, },
"properties": [ "properties": [
{ {
@ -1493,7 +1495,7 @@ data:
"targetBlank": true "targetBlank": true
} }
], ],
"description": "Current tent temperature in C/F, humidity, and pressure proxy (VPD in kPa)." "description": "Current tent values on one row: temperature (C/F), humidity (RH), and pressure proxy (VPD)."
}, },
{ {
"id": 43, "id": 43,
@ -1513,22 +1515,22 @@ data:
{ {
"refId": "A", "refId": "A",
"expr": "max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius)", "expr": "max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius)",
"legendFormat": "Temperature (\u00b0C)" "legendFormat": "C"
}, },
{ {
"refId": "B", "refId": "B",
"expr": "(max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius)) * 9 / 5 + 32", "expr": "(max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius)) * 9 / 5 + 32",
"legendFormat": "Temperature (\u00b0F)" "legendFormat": "F"
}, },
{ {
"refId": "C", "refId": "C",
"expr": "max without (job,instance,pod,service,endpoint,namespace) (typhon_relative_humidity_percent)", "expr": "max without (job,instance,pod,service,endpoint,namespace) (typhon_relative_humidity_percent)",
"legendFormat": "Humidity (%)" "legendFormat": "RH"
}, },
{ {
"refId": "D", "refId": "D",
"expr": "max without (job,instance,pod,service,endpoint,namespace) (typhon_vpd_kpa)", "expr": "max without (job,instance,pod,service,endpoint,namespace) (typhon_vpd_kpa)",
"legendFormat": "Pressure (VPD kPa)" "legendFormat": "VPD"
} }
], ],
"fieldConfig": { "fieldConfig": {
@ -1539,7 +1541,7 @@ data:
{ {
"matcher": { "matcher": {
"id": "byName", "id": "byName",
"options": "Temperature (\u00b0F)" "options": "F"
}, },
"properties": [ "properties": [
{ {
@ -1551,7 +1553,7 @@ data:
{ {
"matcher": { "matcher": {
"id": "byName", "id": "byName",
"options": "Humidity (%)" "options": "RH"
}, },
"properties": [ "properties": [
{ {
@ -1567,7 +1569,7 @@ data:
{ {
"matcher": { "matcher": {
"id": "byName", "id": "byName",
"options": "Pressure (VPD kPa)" "options": "VPD"
}, },
"properties": [ "properties": [
{ {
@ -1588,8 +1590,8 @@ data:
}, },
"options": { "options": {
"legend": { "legend": {
"displayMode": "table", "displayMode": "list",
"placement": "right" "placement": "bottom"
}, },
"tooltip": { "tooltip": {
"mode": "multi" "mode": "multi"
@ -1602,7 +1604,7 @@ data:
"targetBlank": true "targetBlank": true
} }
], ],
"description": "Historical tent temperature (C/F), humidity, and pressure proxy (VPD kPa)." "description": "Temperature scales on left axis, humidity and VPD on right axis."
}, },
{ {
"id": 140, "id": 140,
@ -1622,25 +1624,25 @@ data:
{ {
"refId": "A", "refId": "A",
"expr": "round(max(max without (job,instance,pod,service,endpoint,namespace) (typhon_fan_speed_level{fan_group=\"outlet\"})) or on() vector(0))", "expr": "round(max(max without (job,instance,pod,service,endpoint,namespace) (typhon_fan_speed_level{fan_group=\"outlet\"})) or on() vector(0))",
"legendFormat": "Inside Outlet", "legendFormat": "Outlet",
"instant": true "instant": true
}, },
{ {
"refId": "B", "refId": "B",
"expr": "round(max(max without (job,instance,pod,service,endpoint,namespace) (typhon_fan_speed_level{fan_group=\"inside_inlet\"})) or on() vector(0))", "expr": "round(max(max without (job,instance,pod,service,endpoint,namespace) (typhon_fan_speed_level{fan_group=\"inside_inlet\"})) or on() vector(0))",
"legendFormat": "Inside Inlet", "legendFormat": "Inlet In",
"instant": true "instant": true
}, },
{ {
"refId": "C", "refId": "C",
"expr": "round(max(max without (job,instance,pod,service,endpoint,namespace) (typhon_fan_speed_level{fan_group=\"outside_inlet\"})) or on() vector(0))", "expr": "round(max(max without (job,instance,pod,service,endpoint,namespace) (typhon_fan_speed_level{fan_group=\"outside_inlet\"})) or on() vector(0))",
"legendFormat": "Outside Inlet", "legendFormat": "Inlet Out",
"instant": true "instant": true
}, },
{ {
"refId": "D", "refId": "D",
"expr": "round(max(max without (job,instance,pod,service,endpoint,namespace) (typhon_fan_speed_level{fan_group=~\"interior|unknown\"})) or on() vector(0))", "expr": "round(max(max without (job,instance,pod,service,endpoint,namespace) (typhon_fan_speed_level{fan_group=~\"interior|unknown\"})) or on() vector(0))",
"legendFormat": "Interior Fans", "legendFormat": "Interior",
"instant": true "instant": true
} }
], ],