monitoring: force horizontal stat layout for power/climate panels

This commit is contained in:
Brad Stein 2026-04-12 19:04:35 -03:00
parent 75a992b829
commit 609cfcb696
5 changed files with 412 additions and 127 deletions

View File

@ -605,47 +605,43 @@ ANANKE_UPS_RUNTIME_BY_SOURCE = f"ananke_ups_runtime_seconds{{{ANANKE_SELECTOR}}}
ANANKE_UPS_LOAD_BY_SOURCE = f"ananke_ups_load_percent{{{ANANKE_SELECTOR}}}" ANANKE_UPS_LOAD_BY_SOURCE = f"ananke_ups_load_percent{{{ANANKE_SELECTOR}}}"
ANANKE_UPS_CHARGE_BY_SOURCE = f"ananke_ups_battery_charge_percent{{{ANANKE_SELECTOR}}}" ANANKE_UPS_CHARGE_BY_SOURCE = f"ananke_ups_battery_charge_percent{{{ANANKE_SELECTOR}}}"
ANANKE_UPS_TRIGGER_BY_SOURCE = f"ananke_ups_trigger_active{{{ANANKE_SELECTOR}}}" ANANKE_UPS_TRIGGER_BY_SOURCE = f"ananke_ups_trigger_active{{{ANANKE_SELECTOR}}}"
CLIMATE_SENSOR_COUNT = "count(atlas_climate_temperature_celsius) or on() vector(0)" CLIMATE_SENSOR_COUNT = "count(typhon_temperature_celsius) or on() vector(0)"
CLIMATE_TEMP_MAX = "max(atlas_climate_tent_temperature_celsius) or max(atlas_climate_temperature_celsius) or on() vector(0)" CLIMATE_TEMP_MAX = "max(typhon_temperature_celsius) or on() vector(0)"
CLIMATE_PRESSURE_CURRENT = "max(atlas_climate_tent_pressure_kpa) or max(atlas_climate_pressure_kpa) or on() vector(0)" CLIMATE_PRESSURE_CURRENT = "max(typhon_vpd_kpa) or on() vector(0)"
CLIMATE_HUMIDITY_MAX = "max(atlas_climate_humidity_percent) or on() vector(0)" CLIMATE_HUMIDITY_MAX = "max(typhon_relative_humidity_percent) or on() vector(0)"
CLIMATE_TEMP_SERIES = "(atlas_climate_tent_temperature_celsius or atlas_climate_temperature_celsius)" CLIMATE_TEMP_SERIES = "typhon_temperature_celsius"
CLIMATE_PRESSURE_SERIES = "(atlas_climate_tent_pressure_kpa or atlas_climate_pressure_kpa)" CLIMATE_PRESSURE_SERIES = "typhon_vpd_kpa"
CLIMATE_HUMIDITY_SERIES = "typhon_relative_humidity_percent"
CLIMATE_DEWPOINT_SERIES = (
"(243.12 * (ln(clamp_min(typhon_relative_humidity_percent, 1) / 100) + "
"(17.62 * typhon_temperature_celsius) / (243.12 + typhon_temperature_celsius))) / "
"(17.62 - (ln(clamp_min(typhon_relative_humidity_percent, 1) / 100) + "
"(17.62 * typhon_temperature_celsius) / (243.12 + typhon_temperature_celsius)))"
)
CLIMATE_DEWPOINT_CURRENT = f"max({CLIMATE_DEWPOINT_SERIES}) or on() vector(0)"
CLIMATE_FAN_OUTLET_CURRENT = ( CLIMATE_FAN_OUTLET_CURRENT = (
'max(atlas_climate_fan_activity_level{fan_group="outlet"}) ' 'max(typhon_fan_speed_level{fan_group="outlet"}) or on() vector(0)'
'or max(atlas_climate_fan_activity_level{position="outlet"}) '
"or on() vector(0)"
) )
CLIMATE_FAN_INSIDE_INLET_CURRENT = ( CLIMATE_FAN_INSIDE_INLET_CURRENT = (
'max(atlas_climate_fan_activity_level{fan_group="inside_inlet"}) ' 'max(typhon_fan_speed_level{fan_group="inside_inlet"}) or on() vector(0)'
'or max(atlas_climate_fan_activity_level{position="inside_inlet"}) '
"or on() vector(0)"
) )
CLIMATE_FAN_OUTSIDE_INLET_CURRENT = ( CLIMATE_FAN_OUTSIDE_INLET_CURRENT = (
'max(atlas_climate_fan_activity_level{fan_group="outside_inlet"}) ' 'max(typhon_fan_speed_level{fan_group="outside_inlet"}) or on() vector(0)'
'or max(atlas_climate_fan_activity_level{position="outside_inlet"}) '
"or on() vector(0)"
) )
CLIMATE_FAN_INTERIOR_CURRENT = ( CLIMATE_FAN_INTERIOR_CURRENT = (
'max(atlas_climate_fan_activity_level{fan_group="interior"}) ' 'max(typhon_fan_speed_level{fan_group="interior"}) or on() vector(0)'
'or max(atlas_climate_fan_activity_level{position="interior"}) '
"or on() vector(0)"
) )
CLIMATE_FAN_OUTLET_SERIES = ( CLIMATE_FAN_OUTLET_SERIES = (
'(atlas_climate_fan_activity_level{fan_group="outlet"} ' 'typhon_fan_speed_level{fan_group="outlet"}'
'or atlas_climate_fan_activity_level{position="outlet"})'
) )
CLIMATE_FAN_INSIDE_INLET_SERIES = ( CLIMATE_FAN_INSIDE_INLET_SERIES = (
'(atlas_climate_fan_activity_level{fan_group="inside_inlet"} ' 'typhon_fan_speed_level{fan_group="inside_inlet"}'
'or atlas_climate_fan_activity_level{position="inside_inlet"})'
) )
CLIMATE_FAN_OUTSIDE_INLET_SERIES = ( CLIMATE_FAN_OUTSIDE_INLET_SERIES = (
'(atlas_climate_fan_activity_level{fan_group="outside_inlet"} ' 'typhon_fan_speed_level{fan_group="outside_inlet"}'
'or atlas_climate_fan_activity_level{position="outside_inlet"})'
) )
CLIMATE_FAN_INTERIOR_SERIES = ( CLIMATE_FAN_INTERIOR_SERIES = (
'(atlas_climate_fan_activity_level{fan_group="interior"} ' 'typhon_fan_speed_level{fan_group="interior"}'
'or atlas_climate_fan_activity_level{position="interior"})'
) )
POSTGRES_CONN_USED = ( POSTGRES_CONN_USED = (
'label_replace(sum(pg_stat_activity_count), "conn", "used", "__name__", ".*") ' 'label_replace(sum(pg_stat_activity_count), "conn", "used", "__name__", ".*") '
@ -1409,6 +1405,8 @@ def build_overview():
"properties": [{"id": "mappings", "value": status_mapping}, {"id": "description", "value": f"Attached node: {ANANKE_UPS_TETHYS_NODE}"}], "properties": [{"id": "mappings", "value": status_mapping}, {"id": "description", "value": f"Attached node: {ANANKE_UPS_TETHYS_NODE}"}],
}, },
], ],
orientation="horizontal",
wide_layout=True,
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.",
) )
@ -1441,16 +1439,20 @@ def build_overview():
text_mode="value", text_mode="value",
targets=[ targets=[
{"refId": "A", "expr": CLIMATE_TEMP_MAX, "legendFormat": "Tent Temp (°C)", "instant": True}, {"refId": "A", "expr": CLIMATE_TEMP_MAX, "legendFormat": "Tent Temp (°C)", "instant": True},
{"refId": "B", "expr": CLIMATE_PRESSURE_CURRENT, "legendFormat": "Tent Pressure (kPa)", "instant": True}, {"refId": "B", "expr": CLIMATE_PRESSURE_CURRENT, "legendFormat": "Tent VPD (kPa)", "instant": True},
{"refId": "C", "expr": CLIMATE_HUMIDITY_MAX, "legendFormat": "Tent RH (%)", "instant": True},
{"refId": "D", "expr": CLIMATE_DEWPOINT_CURRENT, "legendFormat": "Dew Point (°C)", "instant": True},
], ],
field_overrides=[ field_overrides=[
{"matcher": {"id": "byName", "options": "Tent Temp (°C)"}, "properties": [{"id": "unit", "value": "celsius"}]}, {"matcher": {"id": "byName", "options": "Tent Temp (°C)"}, "properties": [{"id": "unit", "value": "celsius"}]},
{"matcher": {"id": "byName", "options": "Tent Pressure (kPa)"}, "properties": [{"id": "unit", "value": "suffix:kPa"}]}, {"matcher": {"id": "byName", "options": "Tent VPD (kPa)"}, "properties": [{"id": "unit", "value": "suffix:kPa"}]},
{"matcher": {"id": "byName", "options": "Tent RH (%)"}, "properties": [{"id": "unit", "value": "percent"}]},
{"matcher": {"id": "byName", "options": "Dew Point (°C)"}, "properties": [{"id": "unit", "value": "celsius"}]},
], ],
links=link_to("atlas-power"), links=link_to("atlas-power"),
description="Current tent temperature and pressure.", description="Current tent temperature, humidity, VPD, and dew point.",
orientation="vertical", orientation="horizontal",
wide_layout=False, wide_layout=True,
) )
) )
panels.append( panels.append(
@ -1462,11 +1464,19 @@ def build_overview():
unit="celsius", unit="celsius",
targets=[ targets=[
{"refId": "A", "expr": CLIMATE_TEMP_SERIES, "legendFormat": "Temperature (°C)"}, {"refId": "A", "expr": CLIMATE_TEMP_SERIES, "legendFormat": "Temperature (°C)"},
{"refId": "B", "expr": CLIMATE_PRESSURE_SERIES, "legendFormat": "Pressure (kPa)"}, {"refId": "B", "expr": CLIMATE_HUMIDITY_SERIES, "legendFormat": "Humidity (%)"},
{"refId": "C", "expr": CLIMATE_PRESSURE_SERIES, "legendFormat": "VPD (kPa)"},
{"refId": "D", "expr": CLIMATE_DEWPOINT_SERIES, "legendFormat": "Dew Point (°C)"},
], ],
field_overrides=[ field_overrides=[
{ {
"matcher": {"id": "byName", "options": "Pressure (kPa)"}, "matcher": {"id": "byName", "options": "Humidity (%)"},
"properties": [
{"id": "unit", "value": "percent"},
],
},
{
"matcher": {"id": "byName", "options": "VPD (kPa)"},
"properties": [ "properties": [
{"id": "unit", "value": "none"}, {"id": "unit", "value": "none"},
{"id": "custom.axisPlacement", "value": "right"}, {"id": "custom.axisPlacement", "value": "right"},
@ -1478,6 +1488,7 @@ def build_overview():
legend_display="list", legend_display="list",
legend_placement="bottom", legend_placement="bottom",
links=link_to("atlas-power"), links=link_to("atlas-power"),
description="Two-axis chart: tent temperature/humidity/dew point (left axis) and VPD in kPa (right axis).",
) )
) )
panels.append( panels.append(
@ -1503,6 +1514,8 @@ def build_overview():
{"color": "red", "value": 9}, {"color": "red", "value": 9},
], ],
}, },
orientation="horizontal",
wide_layout=True,
links=link_to("atlas-power"), links=link_to("atlas-power"),
) )
) )
@ -3189,6 +3202,8 @@ def build_power_dashboard():
"properties": [{"id": "mappings", "value": status_mapping}, {"id": "description", "value": f"Attached node: {ANANKE_UPS_TETHYS_NODE}"}], "properties": [{"id": "mappings", "value": status_mapping}, {"id": "description", "value": f"Attached node: {ANANKE_UPS_TETHYS_NODE}"}],
}, },
], ],
orientation="horizontal",
wide_layout=True,
description=( description=(
"Per-UPS live snapshot: current draw in watts, estimated battery runtime if discharge started now, and charging/discharging status." "Per-UPS live snapshot: current draw in watts, estimated battery runtime if discharge started now, and charging/discharging status."
), ),
@ -3222,13 +3237,19 @@ def build_power_dashboard():
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": "Tent Temp (°C)", "instant": True},
{"refId": "B", "expr": CLIMATE_PRESSURE_CURRENT, "legendFormat": "Tent Pressure (kPa)", "instant": True}, {"refId": "B", "expr": CLIMATE_PRESSURE_CURRENT, "legendFormat": "Tent VPD (kPa)", "instant": True},
{"refId": "C", "expr": CLIMATE_HUMIDITY_MAX, "legendFormat": "Tent RH (%)", "instant": True},
{"refId": "D", "expr": CLIMATE_DEWPOINT_CURRENT, "legendFormat": "Dew Point (°C)", "instant": True},
], ],
field_overrides=[ field_overrides=[
{"matcher": {"id": "byName", "options": "Tent Temp (°C)"}, "properties": [{"id": "unit", "value": "celsius"}]}, {"matcher": {"id": "byName", "options": "Tent Temp (°C)"}, "properties": [{"id": "unit", "value": "celsius"}]},
{"matcher": {"id": "byName", "options": "Tent Pressure (kPa)"}, "properties": [{"id": "unit", "value": "none"}]}, {"matcher": {"id": "byName", "options": "Tent VPD (kPa)"}, "properties": [{"id": "unit", "value": "suffix:kPa"}]},
{"matcher": {"id": "byName", "options": "Tent RH (%)"}, "properties": [{"id": "unit", "value": "percent"}]},
{"matcher": {"id": "byName", "options": "Dew Point (°C)"}, "properties": [{"id": "unit", "value": "celsius"}]},
], ],
description="Current tent temperature and air pressure. These render once climate telemetry is online.", orientation="horizontal",
wide_layout=True,
description="Current tent temperature, humidity, VPD, and dew point. These render once Typhon climate telemetry is online.",
) )
) )
panels.append( panels.append(
@ -3240,11 +3261,19 @@ def build_power_dashboard():
unit="celsius", unit="celsius",
targets=[ targets=[
{"refId": "A", "expr": CLIMATE_TEMP_SERIES, "legendFormat": "Temperature (°C)"}, {"refId": "A", "expr": CLIMATE_TEMP_SERIES, "legendFormat": "Temperature (°C)"},
{"refId": "B", "expr": CLIMATE_PRESSURE_SERIES, "legendFormat": "Pressure (kPa)"}, {"refId": "B", "expr": CLIMATE_HUMIDITY_SERIES, "legendFormat": "Humidity (%)"},
{"refId": "C", "expr": CLIMATE_PRESSURE_SERIES, "legendFormat": "VPD (kPa)"},
{"refId": "D", "expr": CLIMATE_DEWPOINT_SERIES, "legendFormat": "Dew Point (°C)"},
], ],
field_overrides=[ field_overrides=[
{ {
"matcher": {"id": "byName", "options": "Pressure (kPa)"}, "matcher": {"id": "byName", "options": "Humidity (%)"},
"properties": [
{"id": "unit", "value": "percent"},
],
},
{
"matcher": {"id": "byName", "options": "VPD (kPa)"},
"properties": [ "properties": [
{"id": "unit", "value": "none"}, {"id": "unit", "value": "none"},
{"id": "custom.axisPlacement", "value": "right"}, {"id": "custom.axisPlacement", "value": "right"},
@ -3255,7 +3284,7 @@ def build_power_dashboard():
], ],
legend_display="table", legend_display="table",
legend_placement="right", legend_placement="right",
description="Two-axis chart: tent temperature (left axis) and tent pressure in kPa (right axis).", description="Two-axis chart: tent temperature/humidity/dew point (left axis) and tent VPD in kPa (right axis).",
) )
) )
panels.append( panels.append(
@ -3281,6 +3310,8 @@ def build_power_dashboard():
{"color": "red", "value": 9}, {"color": "red", "value": 9},
], ],
}, },
orientation="horizontal",
wide_layout=True,
description="Current fan activity levels (0-10): inside outlet, inside inlet, outside inlet, and interior fans.", description="Current fan activity levels (0-10): inside outlet, inside inlet, outside inlet, and interior fans.",
) )
) )

View File

@ -1281,7 +1281,9 @@
"fields": "", "fields": "",
"values": false "values": false
}, },
"textMode": "name_and_value" "textMode": "name_and_value",
"orientation": "horizontal",
"wideLayout": true
}, },
"links": [ "links": [
{ {
@ -1363,14 +1365,26 @@
"targets": [ "targets": [
{ {
"refId": "A", "refId": "A",
"expr": "max(atlas_climate_tent_temperature_celsius) or max(atlas_climate_temperature_celsius) or on() vector(0)", "expr": "max(typhon_temperature_celsius) or on() vector(0)",
"legendFormat": "Tent Temp (\u00b0C)", "legendFormat": "Tent Temp (\u00b0C)",
"instant": true "instant": true
}, },
{ {
"refId": "B", "refId": "B",
"expr": "max(atlas_climate_tent_pressure_kpa) or max(atlas_climate_pressure_kpa) or on() vector(0)", "expr": "max(typhon_vpd_kpa) or on() vector(0)",
"legendFormat": "Tent Pressure (kPa)", "legendFormat": "Tent VPD (kPa)",
"instant": true
},
{
"refId": "C",
"expr": "max(typhon_relative_humidity_percent) or on() vector(0)",
"legendFormat": "Tent RH (%)",
"instant": true
},
{
"refId": "D",
"expr": "max((243.12 * (ln(clamp_min(typhon_relative_humidity_percent, 1) / 100) + (17.62 * typhon_temperature_celsius) / (243.12 + typhon_temperature_celsius))) / (17.62 - (ln(clamp_min(typhon_relative_humidity_percent, 1) / 100) + (17.62 * typhon_temperature_celsius) / (243.12 + typhon_temperature_celsius)))) or on() vector(0)",
"legendFormat": "Dew Point (\u00b0C)",
"instant": true "instant": true
} }
], ],
@ -1415,7 +1429,7 @@
{ {
"matcher": { "matcher": {
"id": "byName", "id": "byName",
"options": "Tent Pressure (kPa)" "options": "Tent VPD (kPa)"
}, },
"properties": [ "properties": [
{ {
@ -1423,6 +1437,30 @@
"value": "suffix:kPa" "value": "suffix:kPa"
} }
] ]
},
{
"matcher": {
"id": "byName",
"options": "Tent RH (%)"
},
"properties": [
{
"id": "unit",
"value": "percent"
}
]
},
{
"matcher": {
"id": "byName",
"options": "Dew Point (\u00b0C)"
},
"properties": [
{
"id": "unit",
"value": "celsius"
}
]
} }
] ]
}, },
@ -1438,8 +1476,8 @@
"values": false "values": false
}, },
"textMode": "value", "textMode": "value",
"orientation": "vertical", "orientation": "horizontal",
"wideLayout": false "wideLayout": true
}, },
"links": [ "links": [
{ {
@ -1448,7 +1486,7 @@
"targetBlank": true "targetBlank": true
} }
], ],
"description": "Current tent temperature and pressure." "description": "Current tent temperature, humidity, VPD, and dew point."
}, },
{ {
"id": 43, "id": 43,
@ -1467,13 +1505,23 @@
"targets": [ "targets": [
{ {
"refId": "A", "refId": "A",
"expr": "(atlas_climate_tent_temperature_celsius or atlas_climate_temperature_celsius)", "expr": "typhon_temperature_celsius",
"legendFormat": "Temperature (\u00b0C)" "legendFormat": "Temperature (\u00b0C)"
}, },
{ {
"refId": "B", "refId": "B",
"expr": "(atlas_climate_tent_pressure_kpa or atlas_climate_pressure_kpa)", "expr": "typhon_relative_humidity_percent",
"legendFormat": "Pressure (kPa)" "legendFormat": "Humidity (%)"
},
{
"refId": "C",
"expr": "typhon_vpd_kpa",
"legendFormat": "VPD (kPa)"
},
{
"refId": "D",
"expr": "(243.12 * (ln(clamp_min(typhon_relative_humidity_percent, 1) / 100) + (17.62 * typhon_temperature_celsius) / (243.12 + typhon_temperature_celsius))) / (17.62 - (ln(clamp_min(typhon_relative_humidity_percent, 1) / 100) + (17.62 * typhon_temperature_celsius) / (243.12 + typhon_temperature_celsius)))",
"legendFormat": "Dew Point (\u00b0C)"
} }
], ],
"fieldConfig": { "fieldConfig": {
@ -1484,7 +1532,19 @@
{ {
"matcher": { "matcher": {
"id": "byName", "id": "byName",
"options": "Pressure (kPa)" "options": "Humidity (%)"
},
"properties": [
{
"id": "unit",
"value": "percent"
}
]
},
{
"matcher": {
"id": "byName",
"options": "VPD (kPa)"
}, },
"properties": [ "properties": [
{ {
@ -1522,7 +1582,8 @@
"url": "/d/atlas-power", "url": "/d/atlas-power",
"targetBlank": true "targetBlank": true
} }
] ],
"description": "Two-axis chart: tent temperature/humidity/dew point (left axis) and VPD in kPa (right axis)."
}, },
{ {
"id": 140, "id": 140,
@ -1541,25 +1602,25 @@
"targets": [ "targets": [
{ {
"refId": "A", "refId": "A",
"expr": "round(max(atlas_climate_fan_activity_level{fan_group=\"outlet\"}) or max(atlas_climate_fan_activity_level{position=\"outlet\"}) or on() vector(0))", "expr": "round(max(typhon_fan_speed_level{fan_group=\"outlet\"}) or on() vector(0))",
"legendFormat": "Inside Outlet", "legendFormat": "Inside Outlet",
"instant": true "instant": true
}, },
{ {
"refId": "B", "refId": "B",
"expr": "round(max(atlas_climate_fan_activity_level{fan_group=\"inside_inlet\"}) or max(atlas_climate_fan_activity_level{position=\"inside_inlet\"}) or on() vector(0))", "expr": "round(max(typhon_fan_speed_level{fan_group=\"inside_inlet\"}) or on() vector(0))",
"legendFormat": "Inside Inlet", "legendFormat": "Inside Inlet",
"instant": true "instant": true
}, },
{ {
"refId": "C", "refId": "C",
"expr": "round(max(atlas_climate_fan_activity_level{fan_group=\"outside_inlet\"}) or max(atlas_climate_fan_activity_level{position=\"outside_inlet\"}) or on() vector(0))", "expr": "round(max(typhon_fan_speed_level{fan_group=\"outside_inlet\"}) or on() vector(0))",
"legendFormat": "Outside Inlet", "legendFormat": "Outside Inlet",
"instant": true "instant": true
}, },
{ {
"refId": "D", "refId": "D",
"expr": "round(max(atlas_climate_fan_activity_level{fan_group=\"interior\"}) or max(atlas_climate_fan_activity_level{position=\"interior\"}) or on() vector(0))", "expr": "round(max(typhon_fan_speed_level{fan_group=\"interior\"}) or on() vector(0))",
"legendFormat": "Interior Fans", "legendFormat": "Interior Fans",
"instant": true "instant": true
} }
@ -1606,7 +1667,9 @@
"fields": "", "fields": "",
"values": false "values": false
}, },
"textMode": "name_and_value" "textMode": "name_and_value",
"orientation": "horizontal",
"wideLayout": true
}, },
"links": [ "links": [
{ {
@ -1633,22 +1696,22 @@
"targets": [ "targets": [
{ {
"refId": "A", "refId": "A",
"expr": "(atlas_climate_fan_activity_level{fan_group=\"outlet\"} or atlas_climate_fan_activity_level{position=\"outlet\"})", "expr": "typhon_fan_speed_level{fan_group=\"outlet\"}",
"legendFormat": "Inside Outlet" "legendFormat": "Inside Outlet"
}, },
{ {
"refId": "B", "refId": "B",
"expr": "(atlas_climate_fan_activity_level{fan_group=\"inside_inlet\"} or atlas_climate_fan_activity_level{position=\"inside_inlet\"})", "expr": "typhon_fan_speed_level{fan_group=\"inside_inlet\"}",
"legendFormat": "Inside Inlet" "legendFormat": "Inside Inlet"
}, },
{ {
"refId": "C", "refId": "C",
"expr": "(atlas_climate_fan_activity_level{fan_group=\"outside_inlet\"} or atlas_climate_fan_activity_level{position=\"outside_inlet\"})", "expr": "typhon_fan_speed_level{fan_group=\"outside_inlet\"}",
"legendFormat": "Outside Inlet" "legendFormat": "Outside Inlet"
}, },
{ {
"refId": "D", "refId": "D",
"expr": "(atlas_climate_fan_activity_level{fan_group=\"interior\"} or atlas_climate_fan_activity_level{position=\"interior\"})", "expr": "typhon_fan_speed_level{fan_group=\"interior\"}",
"legendFormat": "Interior Fans" "legendFormat": "Interior Fans"
} }
], ],

View File

@ -215,7 +215,9 @@
"fields": "", "fields": "",
"values": false "values": false
}, },
"textMode": "name_and_value" "textMode": "name_and_value",
"orientation": "horizontal",
"wideLayout": true
}, },
"description": "Per-UPS live snapshot: current draw in watts, estimated battery runtime if discharge started now, and charging/discharging status." "description": "Per-UPS live snapshot: current draw in watts, estimated battery runtime if discharge started now, and charging/discharging status."
}, },
@ -284,14 +286,26 @@
"targets": [ "targets": [
{ {
"refId": "A", "refId": "A",
"expr": "max(atlas_climate_tent_temperature_celsius) or max(atlas_climate_temperature_celsius) or on() vector(0)", "expr": "max(typhon_temperature_celsius) or on() vector(0)",
"legendFormat": "Tent Temp (\u00b0C)", "legendFormat": "Tent Temp (\u00b0C)",
"instant": true "instant": true
}, },
{ {
"refId": "B", "refId": "B",
"expr": "max(atlas_climate_tent_pressure_kpa) or max(atlas_climate_pressure_kpa) or on() vector(0)", "expr": "max(typhon_vpd_kpa) or on() vector(0)",
"legendFormat": "Tent Pressure (kPa)", "legendFormat": "Tent VPD (kPa)",
"instant": true
},
{
"refId": "C",
"expr": "max(typhon_relative_humidity_percent) or on() vector(0)",
"legendFormat": "Tent RH (%)",
"instant": true
},
{
"refId": "D",
"expr": "max((243.12 * (ln(clamp_min(typhon_relative_humidity_percent, 1) / 100) + (17.62 * typhon_temperature_celsius) / (243.12 + typhon_temperature_celsius))) / (17.62 - (ln(clamp_min(typhon_relative_humidity_percent, 1) / 100) + (17.62 * typhon_temperature_celsius) / (243.12 + typhon_temperature_celsius)))) or on() vector(0)",
"legendFormat": "Dew Point (\u00b0C)",
"instant": true "instant": true
} }
], ],
@ -336,12 +350,36 @@
{ {
"matcher": { "matcher": {
"id": "byName", "id": "byName",
"options": "Tent Pressure (kPa)" "options": "Tent VPD (kPa)"
}, },
"properties": [ "properties": [
{ {
"id": "unit", "id": "unit",
"value": "none" "value": "suffix:kPa"
}
]
},
{
"matcher": {
"id": "byName",
"options": "Tent RH (%)"
},
"properties": [
{
"id": "unit",
"value": "percent"
}
]
},
{
"matcher": {
"id": "byName",
"options": "Dew Point (\u00b0C)"
},
"properties": [
{
"id": "unit",
"value": "celsius"
} }
] ]
} }
@ -358,9 +396,11 @@
"fields": "", "fields": "",
"values": false "values": false
}, },
"textMode": "name_and_value" "textMode": "name_and_value",
"orientation": "horizontal",
"wideLayout": true
}, },
"description": "Current tent temperature and air pressure. These render once climate telemetry is online." "description": "Current tent temperature, humidity, VPD, and dew point. These render once Typhon climate telemetry is online."
}, },
{ {
"id": 4, "id": 4,
@ -379,13 +419,23 @@
"targets": [ "targets": [
{ {
"refId": "A", "refId": "A",
"expr": "(atlas_climate_tent_temperature_celsius or atlas_climate_temperature_celsius)", "expr": "typhon_temperature_celsius",
"legendFormat": "Temperature (\u00b0C)" "legendFormat": "Temperature (\u00b0C)"
}, },
{ {
"refId": "B", "refId": "B",
"expr": "(atlas_climate_tent_pressure_kpa or atlas_climate_pressure_kpa)", "expr": "typhon_relative_humidity_percent",
"legendFormat": "Pressure (kPa)" "legendFormat": "Humidity (%)"
},
{
"refId": "C",
"expr": "typhon_vpd_kpa",
"legendFormat": "VPD (kPa)"
},
{
"refId": "D",
"expr": "(243.12 * (ln(clamp_min(typhon_relative_humidity_percent, 1) / 100) + (17.62 * typhon_temperature_celsius) / (243.12 + typhon_temperature_celsius))) / (17.62 - (ln(clamp_min(typhon_relative_humidity_percent, 1) / 100) + (17.62 * typhon_temperature_celsius) / (243.12 + typhon_temperature_celsius)))",
"legendFormat": "Dew Point (\u00b0C)"
} }
], ],
"fieldConfig": { "fieldConfig": {
@ -396,7 +446,19 @@
{ {
"matcher": { "matcher": {
"id": "byName", "id": "byName",
"options": "Pressure (kPa)" "options": "Humidity (%)"
},
"properties": [
{
"id": "unit",
"value": "percent"
}
]
},
{
"matcher": {
"id": "byName",
"options": "VPD (kPa)"
}, },
"properties": [ "properties": [
{ {
@ -428,7 +490,7 @@
"mode": "multi" "mode": "multi"
} }
}, },
"description": "Two-axis chart: tent temperature (left axis) and tent pressure in kPa (right axis)." "description": "Two-axis chart: tent temperature/humidity/dew point (left axis) and tent VPD in kPa (right axis)."
}, },
{ {
"id": 5, "id": 5,
@ -447,25 +509,25 @@
"targets": [ "targets": [
{ {
"refId": "A", "refId": "A",
"expr": "round(max(atlas_climate_fan_activity_level{fan_group=\"outlet\"}) or max(atlas_climate_fan_activity_level{position=\"outlet\"}) or on() vector(0))", "expr": "round(max(typhon_fan_speed_level{fan_group=\"outlet\"}) or on() vector(0))",
"legendFormat": "Inside Outlet", "legendFormat": "Inside Outlet",
"instant": true "instant": true
}, },
{ {
"refId": "B", "refId": "B",
"expr": "round(max(atlas_climate_fan_activity_level{fan_group=\"inside_inlet\"}) or max(atlas_climate_fan_activity_level{position=\"inside_inlet\"}) or on() vector(0))", "expr": "round(max(typhon_fan_speed_level{fan_group=\"inside_inlet\"}) or on() vector(0))",
"legendFormat": "Inside Inlet", "legendFormat": "Inside Inlet",
"instant": true "instant": true
}, },
{ {
"refId": "C", "refId": "C",
"expr": "round(max(atlas_climate_fan_activity_level{fan_group=\"outside_inlet\"}) or max(atlas_climate_fan_activity_level{position=\"outside_inlet\"}) or on() vector(0))", "expr": "round(max(typhon_fan_speed_level{fan_group=\"outside_inlet\"}) or on() vector(0))",
"legendFormat": "Outside Inlet", "legendFormat": "Outside Inlet",
"instant": true "instant": true
}, },
{ {
"refId": "D", "refId": "D",
"expr": "round(max(atlas_climate_fan_activity_level{fan_group=\"interior\"}) or max(atlas_climate_fan_activity_level{position=\"interior\"}) or on() vector(0))", "expr": "round(max(typhon_fan_speed_level{fan_group=\"interior\"}) or on() vector(0))",
"legendFormat": "Interior Fans", "legendFormat": "Interior Fans",
"instant": true "instant": true
} }
@ -512,7 +574,9 @@
"fields": "", "fields": "",
"values": false "values": false
}, },
"textMode": "name_and_value" "textMode": "name_and_value",
"orientation": "horizontal",
"wideLayout": true
}, },
"description": "Current fan activity levels (0-10): inside outlet, inside inlet, outside inlet, and interior fans." "description": "Current fan activity levels (0-10): inside outlet, inside inlet, outside inlet, and interior fans."
}, },
@ -533,22 +597,22 @@
"targets": [ "targets": [
{ {
"refId": "A", "refId": "A",
"expr": "(atlas_climate_fan_activity_level{fan_group=\"outlet\"} or atlas_climate_fan_activity_level{position=\"outlet\"})", "expr": "typhon_fan_speed_level{fan_group=\"outlet\"}",
"legendFormat": "Inside Outlet" "legendFormat": "Inside Outlet"
}, },
{ {
"refId": "B", "refId": "B",
"expr": "(atlas_climate_fan_activity_level{fan_group=\"inside_inlet\"} or atlas_climate_fan_activity_level{position=\"inside_inlet\"})", "expr": "typhon_fan_speed_level{fan_group=\"inside_inlet\"}",
"legendFormat": "Inside Inlet" "legendFormat": "Inside Inlet"
}, },
{ {
"refId": "C", "refId": "C",
"expr": "(atlas_climate_fan_activity_level{fan_group=\"outside_inlet\"} or atlas_climate_fan_activity_level{position=\"outside_inlet\"})", "expr": "typhon_fan_speed_level{fan_group=\"outside_inlet\"}",
"legendFormat": "Outside Inlet" "legendFormat": "Outside Inlet"
}, },
{ {
"refId": "D", "refId": "D",
"expr": "(atlas_climate_fan_activity_level{fan_group=\"interior\"} or atlas_climate_fan_activity_level{position=\"interior\"})", "expr": "typhon_fan_speed_level{fan_group=\"interior\"}",
"legendFormat": "Interior Fans" "legendFormat": "Interior Fans"
} }
], ],

View File

@ -1290,7 +1290,9 @@ data:
"fields": "", "fields": "",
"values": false "values": false
}, },
"textMode": "name_and_value" "textMode": "name_and_value",
"orientation": "horizontal",
"wideLayout": true
}, },
"links": [ "links": [
{ {
@ -1372,14 +1374,26 @@ data:
"targets": [ "targets": [
{ {
"refId": "A", "refId": "A",
"expr": "max(atlas_climate_tent_temperature_celsius) or max(atlas_climate_temperature_celsius) or on() vector(0)", "expr": "max(typhon_temperature_celsius) or on() vector(0)",
"legendFormat": "Tent Temp (\u00b0C)", "legendFormat": "Tent Temp (\u00b0C)",
"instant": true "instant": true
}, },
{ {
"refId": "B", "refId": "B",
"expr": "max(atlas_climate_tent_pressure_kpa) or max(atlas_climate_pressure_kpa) or on() vector(0)", "expr": "max(typhon_vpd_kpa) or on() vector(0)",
"legendFormat": "Tent Pressure (kPa)", "legendFormat": "Tent VPD (kPa)",
"instant": true
},
{
"refId": "C",
"expr": "max(typhon_relative_humidity_percent) or on() vector(0)",
"legendFormat": "Tent RH (%)",
"instant": true
},
{
"refId": "D",
"expr": "max((243.12 * (ln(clamp_min(typhon_relative_humidity_percent, 1) / 100) + (17.62 * typhon_temperature_celsius) / (243.12 + typhon_temperature_celsius))) / (17.62 - (ln(clamp_min(typhon_relative_humidity_percent, 1) / 100) + (17.62 * typhon_temperature_celsius) / (243.12 + typhon_temperature_celsius)))) or on() vector(0)",
"legendFormat": "Dew Point (\u00b0C)",
"instant": true "instant": true
} }
], ],
@ -1424,7 +1438,7 @@ data:
{ {
"matcher": { "matcher": {
"id": "byName", "id": "byName",
"options": "Tent Pressure (kPa)" "options": "Tent VPD (kPa)"
}, },
"properties": [ "properties": [
{ {
@ -1432,6 +1446,30 @@ data:
"value": "suffix:kPa" "value": "suffix:kPa"
} }
] ]
},
{
"matcher": {
"id": "byName",
"options": "Tent RH (%)"
},
"properties": [
{
"id": "unit",
"value": "percent"
}
]
},
{
"matcher": {
"id": "byName",
"options": "Dew Point (\u00b0C)"
},
"properties": [
{
"id": "unit",
"value": "celsius"
}
]
} }
] ]
}, },
@ -1447,8 +1485,8 @@ data:
"values": false "values": false
}, },
"textMode": "value", "textMode": "value",
"orientation": "vertical", "orientation": "horizontal",
"wideLayout": false "wideLayout": true
}, },
"links": [ "links": [
{ {
@ -1457,7 +1495,7 @@ data:
"targetBlank": true "targetBlank": true
} }
], ],
"description": "Current tent temperature and pressure." "description": "Current tent temperature, humidity, VPD, and dew point."
}, },
{ {
"id": 43, "id": 43,
@ -1476,13 +1514,23 @@ data:
"targets": [ "targets": [
{ {
"refId": "A", "refId": "A",
"expr": "(atlas_climate_tent_temperature_celsius or atlas_climate_temperature_celsius)", "expr": "typhon_temperature_celsius",
"legendFormat": "Temperature (\u00b0C)" "legendFormat": "Temperature (\u00b0C)"
}, },
{ {
"refId": "B", "refId": "B",
"expr": "(atlas_climate_tent_pressure_kpa or atlas_climate_pressure_kpa)", "expr": "typhon_relative_humidity_percent",
"legendFormat": "Pressure (kPa)" "legendFormat": "Humidity (%)"
},
{
"refId": "C",
"expr": "typhon_vpd_kpa",
"legendFormat": "VPD (kPa)"
},
{
"refId": "D",
"expr": "(243.12 * (ln(clamp_min(typhon_relative_humidity_percent, 1) / 100) + (17.62 * typhon_temperature_celsius) / (243.12 + typhon_temperature_celsius))) / (17.62 - (ln(clamp_min(typhon_relative_humidity_percent, 1) / 100) + (17.62 * typhon_temperature_celsius) / (243.12 + typhon_temperature_celsius)))",
"legendFormat": "Dew Point (\u00b0C)"
} }
], ],
"fieldConfig": { "fieldConfig": {
@ -1493,7 +1541,19 @@ data:
{ {
"matcher": { "matcher": {
"id": "byName", "id": "byName",
"options": "Pressure (kPa)" "options": "Humidity (%)"
},
"properties": [
{
"id": "unit",
"value": "percent"
}
]
},
{
"matcher": {
"id": "byName",
"options": "VPD (kPa)"
}, },
"properties": [ "properties": [
{ {
@ -1531,7 +1591,8 @@ data:
"url": "/d/atlas-power", "url": "/d/atlas-power",
"targetBlank": true "targetBlank": true
} }
] ],
"description": "Two-axis chart: tent temperature/humidity/dew point (left axis) and VPD in kPa (right axis)."
}, },
{ {
"id": 140, "id": 140,
@ -1550,25 +1611,25 @@ data:
"targets": [ "targets": [
{ {
"refId": "A", "refId": "A",
"expr": "round(max(atlas_climate_fan_activity_level{fan_group=\"outlet\"}) or max(atlas_climate_fan_activity_level{position=\"outlet\"}) or on() vector(0))", "expr": "round(max(typhon_fan_speed_level{fan_group=\"outlet\"}) or on() vector(0))",
"legendFormat": "Inside Outlet", "legendFormat": "Inside Outlet",
"instant": true "instant": true
}, },
{ {
"refId": "B", "refId": "B",
"expr": "round(max(atlas_climate_fan_activity_level{fan_group=\"inside_inlet\"}) or max(atlas_climate_fan_activity_level{position=\"inside_inlet\"}) or on() vector(0))", "expr": "round(max(typhon_fan_speed_level{fan_group=\"inside_inlet\"}) or on() vector(0))",
"legendFormat": "Inside Inlet", "legendFormat": "Inside Inlet",
"instant": true "instant": true
}, },
{ {
"refId": "C", "refId": "C",
"expr": "round(max(atlas_climate_fan_activity_level{fan_group=\"outside_inlet\"}) or max(atlas_climate_fan_activity_level{position=\"outside_inlet\"}) or on() vector(0))", "expr": "round(max(typhon_fan_speed_level{fan_group=\"outside_inlet\"}) or on() vector(0))",
"legendFormat": "Outside Inlet", "legendFormat": "Outside Inlet",
"instant": true "instant": true
}, },
{ {
"refId": "D", "refId": "D",
"expr": "round(max(atlas_climate_fan_activity_level{fan_group=\"interior\"}) or max(atlas_climate_fan_activity_level{position=\"interior\"}) or on() vector(0))", "expr": "round(max(typhon_fan_speed_level{fan_group=\"interior\"}) or on() vector(0))",
"legendFormat": "Interior Fans", "legendFormat": "Interior Fans",
"instant": true "instant": true
} }
@ -1615,7 +1676,9 @@ data:
"fields": "", "fields": "",
"values": false "values": false
}, },
"textMode": "name_and_value" "textMode": "name_and_value",
"orientation": "horizontal",
"wideLayout": true
}, },
"links": [ "links": [
{ {
@ -1642,22 +1705,22 @@ data:
"targets": [ "targets": [
{ {
"refId": "A", "refId": "A",
"expr": "(atlas_climate_fan_activity_level{fan_group=\"outlet\"} or atlas_climate_fan_activity_level{position=\"outlet\"})", "expr": "typhon_fan_speed_level{fan_group=\"outlet\"}",
"legendFormat": "Inside Outlet" "legendFormat": "Inside Outlet"
}, },
{ {
"refId": "B", "refId": "B",
"expr": "(atlas_climate_fan_activity_level{fan_group=\"inside_inlet\"} or atlas_climate_fan_activity_level{position=\"inside_inlet\"})", "expr": "typhon_fan_speed_level{fan_group=\"inside_inlet\"}",
"legendFormat": "Inside Inlet" "legendFormat": "Inside Inlet"
}, },
{ {
"refId": "C", "refId": "C",
"expr": "(atlas_climate_fan_activity_level{fan_group=\"outside_inlet\"} or atlas_climate_fan_activity_level{position=\"outside_inlet\"})", "expr": "typhon_fan_speed_level{fan_group=\"outside_inlet\"}",
"legendFormat": "Outside Inlet" "legendFormat": "Outside Inlet"
}, },
{ {
"refId": "D", "refId": "D",
"expr": "(atlas_climate_fan_activity_level{fan_group=\"interior\"} or atlas_climate_fan_activity_level{position=\"interior\"})", "expr": "typhon_fan_speed_level{fan_group=\"interior\"}",
"legendFormat": "Interior Fans" "legendFormat": "Interior Fans"
} }
], ],

View File

@ -224,7 +224,9 @@ data:
"fields": "", "fields": "",
"values": false "values": false
}, },
"textMode": "name_and_value" "textMode": "name_and_value",
"orientation": "horizontal",
"wideLayout": true
}, },
"description": "Per-UPS live snapshot: current draw in watts, estimated battery runtime if discharge started now, and charging/discharging status." "description": "Per-UPS live snapshot: current draw in watts, estimated battery runtime if discharge started now, and charging/discharging status."
}, },
@ -293,14 +295,26 @@ data:
"targets": [ "targets": [
{ {
"refId": "A", "refId": "A",
"expr": "max(atlas_climate_tent_temperature_celsius) or max(atlas_climate_temperature_celsius) or on() vector(0)", "expr": "max(typhon_temperature_celsius) or on() vector(0)",
"legendFormat": "Tent Temp (\u00b0C)", "legendFormat": "Tent Temp (\u00b0C)",
"instant": true "instant": true
}, },
{ {
"refId": "B", "refId": "B",
"expr": "max(atlas_climate_tent_pressure_kpa) or max(atlas_climate_pressure_kpa) or on() vector(0)", "expr": "max(typhon_vpd_kpa) or on() vector(0)",
"legendFormat": "Tent Pressure (kPa)", "legendFormat": "Tent VPD (kPa)",
"instant": true
},
{
"refId": "C",
"expr": "max(typhon_relative_humidity_percent) or on() vector(0)",
"legendFormat": "Tent RH (%)",
"instant": true
},
{
"refId": "D",
"expr": "max((243.12 * (ln(clamp_min(typhon_relative_humidity_percent, 1) / 100) + (17.62 * typhon_temperature_celsius) / (243.12 + typhon_temperature_celsius))) / (17.62 - (ln(clamp_min(typhon_relative_humidity_percent, 1) / 100) + (17.62 * typhon_temperature_celsius) / (243.12 + typhon_temperature_celsius)))) or on() vector(0)",
"legendFormat": "Dew Point (\u00b0C)",
"instant": true "instant": true
} }
], ],
@ -345,12 +359,36 @@ data:
{ {
"matcher": { "matcher": {
"id": "byName", "id": "byName",
"options": "Tent Pressure (kPa)" "options": "Tent VPD (kPa)"
}, },
"properties": [ "properties": [
{ {
"id": "unit", "id": "unit",
"value": "none" "value": "suffix:kPa"
}
]
},
{
"matcher": {
"id": "byName",
"options": "Tent RH (%)"
},
"properties": [
{
"id": "unit",
"value": "percent"
}
]
},
{
"matcher": {
"id": "byName",
"options": "Dew Point (\u00b0C)"
},
"properties": [
{
"id": "unit",
"value": "celsius"
} }
] ]
} }
@ -367,9 +405,11 @@ data:
"fields": "", "fields": "",
"values": false "values": false
}, },
"textMode": "name_and_value" "textMode": "name_and_value",
"orientation": "horizontal",
"wideLayout": true
}, },
"description": "Current tent temperature and air pressure. These render once climate telemetry is online." "description": "Current tent temperature, humidity, VPD, and dew point. These render once Typhon climate telemetry is online."
}, },
{ {
"id": 4, "id": 4,
@ -388,13 +428,23 @@ data:
"targets": [ "targets": [
{ {
"refId": "A", "refId": "A",
"expr": "(atlas_climate_tent_temperature_celsius or atlas_climate_temperature_celsius)", "expr": "typhon_temperature_celsius",
"legendFormat": "Temperature (\u00b0C)" "legendFormat": "Temperature (\u00b0C)"
}, },
{ {
"refId": "B", "refId": "B",
"expr": "(atlas_climate_tent_pressure_kpa or atlas_climate_pressure_kpa)", "expr": "typhon_relative_humidity_percent",
"legendFormat": "Pressure (kPa)" "legendFormat": "Humidity (%)"
},
{
"refId": "C",
"expr": "typhon_vpd_kpa",
"legendFormat": "VPD (kPa)"
},
{
"refId": "D",
"expr": "(243.12 * (ln(clamp_min(typhon_relative_humidity_percent, 1) / 100) + (17.62 * typhon_temperature_celsius) / (243.12 + typhon_temperature_celsius))) / (17.62 - (ln(clamp_min(typhon_relative_humidity_percent, 1) / 100) + (17.62 * typhon_temperature_celsius) / (243.12 + typhon_temperature_celsius)))",
"legendFormat": "Dew Point (\u00b0C)"
} }
], ],
"fieldConfig": { "fieldConfig": {
@ -405,7 +455,19 @@ data:
{ {
"matcher": { "matcher": {
"id": "byName", "id": "byName",
"options": "Pressure (kPa)" "options": "Humidity (%)"
},
"properties": [
{
"id": "unit",
"value": "percent"
}
]
},
{
"matcher": {
"id": "byName",
"options": "VPD (kPa)"
}, },
"properties": [ "properties": [
{ {
@ -437,7 +499,7 @@ data:
"mode": "multi" "mode": "multi"
} }
}, },
"description": "Two-axis chart: tent temperature (left axis) and tent pressure in kPa (right axis)." "description": "Two-axis chart: tent temperature/humidity/dew point (left axis) and tent VPD in kPa (right axis)."
}, },
{ {
"id": 5, "id": 5,
@ -456,25 +518,25 @@ data:
"targets": [ "targets": [
{ {
"refId": "A", "refId": "A",
"expr": "round(max(atlas_climate_fan_activity_level{fan_group=\"outlet\"}) or max(atlas_climate_fan_activity_level{position=\"outlet\"}) or on() vector(0))", "expr": "round(max(typhon_fan_speed_level{fan_group=\"outlet\"}) or on() vector(0))",
"legendFormat": "Inside Outlet", "legendFormat": "Inside Outlet",
"instant": true "instant": true
}, },
{ {
"refId": "B", "refId": "B",
"expr": "round(max(atlas_climate_fan_activity_level{fan_group=\"inside_inlet\"}) or max(atlas_climate_fan_activity_level{position=\"inside_inlet\"}) or on() vector(0))", "expr": "round(max(typhon_fan_speed_level{fan_group=\"inside_inlet\"}) or on() vector(0))",
"legendFormat": "Inside Inlet", "legendFormat": "Inside Inlet",
"instant": true "instant": true
}, },
{ {
"refId": "C", "refId": "C",
"expr": "round(max(atlas_climate_fan_activity_level{fan_group=\"outside_inlet\"}) or max(atlas_climate_fan_activity_level{position=\"outside_inlet\"}) or on() vector(0))", "expr": "round(max(typhon_fan_speed_level{fan_group=\"outside_inlet\"}) or on() vector(0))",
"legendFormat": "Outside Inlet", "legendFormat": "Outside Inlet",
"instant": true "instant": true
}, },
{ {
"refId": "D", "refId": "D",
"expr": "round(max(atlas_climate_fan_activity_level{fan_group=\"interior\"}) or max(atlas_climate_fan_activity_level{position=\"interior\"}) or on() vector(0))", "expr": "round(max(typhon_fan_speed_level{fan_group=\"interior\"}) or on() vector(0))",
"legendFormat": "Interior Fans", "legendFormat": "Interior Fans",
"instant": true "instant": true
} }
@ -521,7 +583,9 @@ data:
"fields": "", "fields": "",
"values": false "values": false
}, },
"textMode": "name_and_value" "textMode": "name_and_value",
"orientation": "horizontal",
"wideLayout": true
}, },
"description": "Current fan activity levels (0-10): inside outlet, inside inlet, outside inlet, and interior fans." "description": "Current fan activity levels (0-10): inside outlet, inside inlet, outside inlet, and interior fans."
}, },
@ -542,22 +606,22 @@ data:
"targets": [ "targets": [
{ {
"refId": "A", "refId": "A",
"expr": "(atlas_climate_fan_activity_level{fan_group=\"outlet\"} or atlas_climate_fan_activity_level{position=\"outlet\"})", "expr": "typhon_fan_speed_level{fan_group=\"outlet\"}",
"legendFormat": "Inside Outlet" "legendFormat": "Inside Outlet"
}, },
{ {
"refId": "B", "refId": "B",
"expr": "(atlas_climate_fan_activity_level{fan_group=\"inside_inlet\"} or atlas_climate_fan_activity_level{position=\"inside_inlet\"})", "expr": "typhon_fan_speed_level{fan_group=\"inside_inlet\"}",
"legendFormat": "Inside Inlet" "legendFormat": "Inside Inlet"
}, },
{ {
"refId": "C", "refId": "C",
"expr": "(atlas_climate_fan_activity_level{fan_group=\"outside_inlet\"} or atlas_climate_fan_activity_level{position=\"outside_inlet\"})", "expr": "typhon_fan_speed_level{fan_group=\"outside_inlet\"}",
"legendFormat": "Outside Inlet" "legendFormat": "Outside Inlet"
}, },
{ {
"refId": "D", "refId": "D",
"expr": "(atlas_climate_fan_activity_level{fan_group=\"interior\"} or atlas_climate_fan_activity_level{position=\"interior\"})", "expr": "typhon_fan_speed_level{fan_group=\"interior\"}",
"legendFormat": "Interior Fans" "legendFormat": "Interior Fans"
} }
], ],