diff --git a/scripts/dashboards_render_atlas.py b/scripts/dashboards_render_atlas.py index fc1e1ab3..cd8fdc6d 100644 --- a/scripts/dashboards_render_atlas.py +++ b/scripts/dashboards_render_atlas.py @@ -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_CHARGE_BY_SOURCE = f"ananke_ups_battery_charge_percent{{{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_TEMP_MAX = "max(atlas_climate_tent_temperature_celsius) or max(atlas_climate_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_HUMIDITY_MAX = "max(atlas_climate_humidity_percent) or on() vector(0)" -CLIMATE_TEMP_SERIES = "(atlas_climate_tent_temperature_celsius or atlas_climate_temperature_celsius)" -CLIMATE_PRESSURE_SERIES = "(atlas_climate_tent_pressure_kpa or atlas_climate_pressure_kpa)" +CLIMATE_SENSOR_COUNT = "count(typhon_temperature_celsius) or on() vector(0)" +CLIMATE_TEMP_MAX = "max(typhon_temperature_celsius) or on() vector(0)" +CLIMATE_PRESSURE_CURRENT = "max(typhon_vpd_kpa) or on() vector(0)" +CLIMATE_HUMIDITY_MAX = "max(typhon_relative_humidity_percent) or on() vector(0)" +CLIMATE_TEMP_SERIES = "typhon_temperature_celsius" +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 = ( - 'max(atlas_climate_fan_activity_level{fan_group="outlet"}) ' - 'or max(atlas_climate_fan_activity_level{position="outlet"}) ' - "or on() vector(0)" + 'max(typhon_fan_speed_level{fan_group="outlet"}) or on() vector(0)' ) CLIMATE_FAN_INSIDE_INLET_CURRENT = ( - 'max(atlas_climate_fan_activity_level{fan_group="inside_inlet"}) ' - 'or max(atlas_climate_fan_activity_level{position="inside_inlet"}) ' - "or on() vector(0)" + 'max(typhon_fan_speed_level{fan_group="inside_inlet"}) or on() vector(0)' ) CLIMATE_FAN_OUTSIDE_INLET_CURRENT = ( - 'max(atlas_climate_fan_activity_level{fan_group="outside_inlet"}) ' - 'or max(atlas_climate_fan_activity_level{position="outside_inlet"}) ' - "or on() vector(0)" + 'max(typhon_fan_speed_level{fan_group="outside_inlet"}) or on() vector(0)' ) CLIMATE_FAN_INTERIOR_CURRENT = ( - 'max(atlas_climate_fan_activity_level{fan_group="interior"}) ' - 'or max(atlas_climate_fan_activity_level{position="interior"}) ' - "or on() vector(0)" + 'max(typhon_fan_speed_level{fan_group="interior"}) or on() vector(0)' ) CLIMATE_FAN_OUTLET_SERIES = ( - '(atlas_climate_fan_activity_level{fan_group="outlet"} ' - 'or atlas_climate_fan_activity_level{position="outlet"})' + 'typhon_fan_speed_level{fan_group="outlet"}' ) CLIMATE_FAN_INSIDE_INLET_SERIES = ( - '(atlas_climate_fan_activity_level{fan_group="inside_inlet"} ' - 'or atlas_climate_fan_activity_level{position="inside_inlet"})' + 'typhon_fan_speed_level{fan_group="inside_inlet"}' ) CLIMATE_FAN_OUTSIDE_INLET_SERIES = ( - '(atlas_climate_fan_activity_level{fan_group="outside_inlet"} ' - 'or atlas_climate_fan_activity_level{position="outside_inlet"})' + 'typhon_fan_speed_level{fan_group="outside_inlet"}' ) CLIMATE_FAN_INTERIOR_SERIES = ( - '(atlas_climate_fan_activity_level{fan_group="interior"} ' - 'or atlas_climate_fan_activity_level{position="interior"})' + 'typhon_fan_speed_level{fan_group="interior"}' ) POSTGRES_CONN_USED = ( '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}"}], }, ], + orientation="horizontal", + wide_layout=True, links=link_to("atlas-power"), description="Per-UPS live snapshot: current draw, discharge, and charging/discharging status.", ) @@ -1441,16 +1439,20 @@ def build_overview(): text_mode="value", targets=[ {"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=[ {"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"), - description="Current tent temperature and pressure.", - orientation="vertical", - wide_layout=False, + description="Current tent temperature, humidity, VPD, and dew point.", + orientation="horizontal", + wide_layout=True, ) ) panels.append( @@ -1462,11 +1464,19 @@ def build_overview(): unit="celsius", targets=[ {"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=[ { - "matcher": {"id": "byName", "options": "Pressure (kPa)"}, + "matcher": {"id": "byName", "options": "Humidity (%)"}, + "properties": [ + {"id": "unit", "value": "percent"}, + ], + }, + { + "matcher": {"id": "byName", "options": "VPD (kPa)"}, "properties": [ {"id": "unit", "value": "none"}, {"id": "custom.axisPlacement", "value": "right"}, @@ -1478,6 +1488,7 @@ def build_overview(): legend_display="list", legend_placement="bottom", links=link_to("atlas-power"), + description="Two-axis chart: tent temperature/humidity/dew point (left axis) and VPD in kPa (right axis).", ) ) panels.append( @@ -1503,6 +1514,8 @@ def build_overview(): {"color": "red", "value": 9}, ], }, + orientation="horizontal", + wide_layout=True, 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}"}], }, ], + orientation="horizontal", + wide_layout=True, description=( "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", targets=[ {"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=[ {"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( @@ -3240,11 +3261,19 @@ def build_power_dashboard(): unit="celsius", targets=[ {"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=[ { - "matcher": {"id": "byName", "options": "Pressure (kPa)"}, + "matcher": {"id": "byName", "options": "Humidity (%)"}, + "properties": [ + {"id": "unit", "value": "percent"}, + ], + }, + { + "matcher": {"id": "byName", "options": "VPD (kPa)"}, "properties": [ {"id": "unit", "value": "none"}, {"id": "custom.axisPlacement", "value": "right"}, @@ -3255,7 +3284,7 @@ def build_power_dashboard(): ], legend_display="table", 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( @@ -3281,6 +3310,8 @@ def build_power_dashboard(): {"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.", ) ) diff --git a/services/monitoring/dashboards/atlas-overview.json b/services/monitoring/dashboards/atlas-overview.json index d1557b7d..fa6f8ec5 100644 --- a/services/monitoring/dashboards/atlas-overview.json +++ b/services/monitoring/dashboards/atlas-overview.json @@ -1281,7 +1281,9 @@ "fields": "", "values": false }, - "textMode": "name_and_value" + "textMode": "name_and_value", + "orientation": "horizontal", + "wideLayout": true }, "links": [ { @@ -1363,14 +1365,26 @@ "targets": [ { "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)", "instant": true }, { "refId": "B", - "expr": "max(atlas_climate_tent_pressure_kpa) or max(atlas_climate_pressure_kpa) or on() vector(0)", - "legendFormat": "Tent Pressure (kPa)", + "expr": "max(typhon_vpd_kpa) or on() vector(0)", + "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 } ], @@ -1415,7 +1429,7 @@ { "matcher": { "id": "byName", - "options": "Tent Pressure (kPa)" + "options": "Tent VPD (kPa)" }, "properties": [ { @@ -1423,6 +1437,30 @@ "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 }, "textMode": "value", - "orientation": "vertical", - "wideLayout": false + "orientation": "horizontal", + "wideLayout": true }, "links": [ { @@ -1448,7 +1486,7 @@ "targetBlank": true } ], - "description": "Current tent temperature and pressure." + "description": "Current tent temperature, humidity, VPD, and dew point." }, { "id": 43, @@ -1467,13 +1505,23 @@ "targets": [ { "refId": "A", - "expr": "(atlas_climate_tent_temperature_celsius or atlas_climate_temperature_celsius)", + "expr": "typhon_temperature_celsius", "legendFormat": "Temperature (\u00b0C)" }, { "refId": "B", - "expr": "(atlas_climate_tent_pressure_kpa or atlas_climate_pressure_kpa)", - "legendFormat": "Pressure (kPa)" + "expr": "typhon_relative_humidity_percent", + "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": { @@ -1484,7 +1532,19 @@ { "matcher": { "id": "byName", - "options": "Pressure (kPa)" + "options": "Humidity (%)" + }, + "properties": [ + { + "id": "unit", + "value": "percent" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "VPD (kPa)" }, "properties": [ { @@ -1522,7 +1582,8 @@ "url": "/d/atlas-power", "targetBlank": true } - ] + ], + "description": "Two-axis chart: tent temperature/humidity/dew point (left axis) and VPD in kPa (right axis)." }, { "id": 140, @@ -1541,25 +1602,25 @@ "targets": [ { "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", "instant": true }, { "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", "instant": true }, { "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", "instant": true }, { "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", "instant": true } @@ -1606,7 +1667,9 @@ "fields": "", "values": false }, - "textMode": "name_and_value" + "textMode": "name_and_value", + "orientation": "horizontal", + "wideLayout": true }, "links": [ { @@ -1633,22 +1696,22 @@ "targets": [ { "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" }, { "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" }, { "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" }, { "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" } ], diff --git a/services/monitoring/dashboards/atlas-power.json b/services/monitoring/dashboards/atlas-power.json index 9a8cceeb..48a50880 100644 --- a/services/monitoring/dashboards/atlas-power.json +++ b/services/monitoring/dashboards/atlas-power.json @@ -215,7 +215,9 @@ "fields": "", "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." }, @@ -284,14 +286,26 @@ "targets": [ { "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)", "instant": true }, { "refId": "B", - "expr": "max(atlas_climate_tent_pressure_kpa) or max(atlas_climate_pressure_kpa) or on() vector(0)", - "legendFormat": "Tent Pressure (kPa)", + "expr": "max(typhon_vpd_kpa) or on() vector(0)", + "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 } ], @@ -336,12 +350,36 @@ { "matcher": { "id": "byName", - "options": "Tent Pressure (kPa)" + "options": "Tent VPD (kPa)" }, "properties": [ { "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": "", "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, @@ -379,13 +419,23 @@ "targets": [ { "refId": "A", - "expr": "(atlas_climate_tent_temperature_celsius or atlas_climate_temperature_celsius)", + "expr": "typhon_temperature_celsius", "legendFormat": "Temperature (\u00b0C)" }, { "refId": "B", - "expr": "(atlas_climate_tent_pressure_kpa or atlas_climate_pressure_kpa)", - "legendFormat": "Pressure (kPa)" + "expr": "typhon_relative_humidity_percent", + "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": { @@ -396,7 +446,19 @@ { "matcher": { "id": "byName", - "options": "Pressure (kPa)" + "options": "Humidity (%)" + }, + "properties": [ + { + "id": "unit", + "value": "percent" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "VPD (kPa)" }, "properties": [ { @@ -428,7 +490,7 @@ "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, @@ -447,25 +509,25 @@ "targets": [ { "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", "instant": true }, { "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", "instant": true }, { "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", "instant": true }, { "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", "instant": true } @@ -512,7 +574,9 @@ "fields": "", "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." }, @@ -533,22 +597,22 @@ "targets": [ { "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" }, { "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" }, { "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" }, { "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" } ], diff --git a/services/monitoring/grafana-dashboard-overview.yaml b/services/monitoring/grafana-dashboard-overview.yaml index 43844351..4d0824d4 100644 --- a/services/monitoring/grafana-dashboard-overview.yaml +++ b/services/monitoring/grafana-dashboard-overview.yaml @@ -1290,7 +1290,9 @@ data: "fields": "", "values": false }, - "textMode": "name_and_value" + "textMode": "name_and_value", + "orientation": "horizontal", + "wideLayout": true }, "links": [ { @@ -1372,14 +1374,26 @@ data: "targets": [ { "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)", "instant": true }, { "refId": "B", - "expr": "max(atlas_climate_tent_pressure_kpa) or max(atlas_climate_pressure_kpa) or on() vector(0)", - "legendFormat": "Tent Pressure (kPa)", + "expr": "max(typhon_vpd_kpa) or on() vector(0)", + "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 } ], @@ -1424,7 +1438,7 @@ data: { "matcher": { "id": "byName", - "options": "Tent Pressure (kPa)" + "options": "Tent VPD (kPa)" }, "properties": [ { @@ -1432,6 +1446,30 @@ data: "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 }, "textMode": "value", - "orientation": "vertical", - "wideLayout": false + "orientation": "horizontal", + "wideLayout": true }, "links": [ { @@ -1457,7 +1495,7 @@ data: "targetBlank": true } ], - "description": "Current tent temperature and pressure." + "description": "Current tent temperature, humidity, VPD, and dew point." }, { "id": 43, @@ -1476,13 +1514,23 @@ data: "targets": [ { "refId": "A", - "expr": "(atlas_climate_tent_temperature_celsius or atlas_climate_temperature_celsius)", + "expr": "typhon_temperature_celsius", "legendFormat": "Temperature (\u00b0C)" }, { "refId": "B", - "expr": "(atlas_climate_tent_pressure_kpa or atlas_climate_pressure_kpa)", - "legendFormat": "Pressure (kPa)" + "expr": "typhon_relative_humidity_percent", + "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": { @@ -1493,7 +1541,19 @@ data: { "matcher": { "id": "byName", - "options": "Pressure (kPa)" + "options": "Humidity (%)" + }, + "properties": [ + { + "id": "unit", + "value": "percent" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "VPD (kPa)" }, "properties": [ { @@ -1531,7 +1591,8 @@ data: "url": "/d/atlas-power", "targetBlank": true } - ] + ], + "description": "Two-axis chart: tent temperature/humidity/dew point (left axis) and VPD in kPa (right axis)." }, { "id": 140, @@ -1550,25 +1611,25 @@ data: "targets": [ { "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", "instant": true }, { "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", "instant": true }, { "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", "instant": true }, { "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", "instant": true } @@ -1615,7 +1676,9 @@ data: "fields": "", "values": false }, - "textMode": "name_and_value" + "textMode": "name_and_value", + "orientation": "horizontal", + "wideLayout": true }, "links": [ { @@ -1642,22 +1705,22 @@ data: "targets": [ { "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" }, { "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" }, { "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" }, { "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" } ], diff --git a/services/monitoring/grafana-dashboard-power.yaml b/services/monitoring/grafana-dashboard-power.yaml index 3882c4bc..8047e06c 100644 --- a/services/monitoring/grafana-dashboard-power.yaml +++ b/services/monitoring/grafana-dashboard-power.yaml @@ -224,7 +224,9 @@ data: "fields": "", "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." }, @@ -293,14 +295,26 @@ data: "targets": [ { "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)", "instant": true }, { "refId": "B", - "expr": "max(atlas_climate_tent_pressure_kpa) or max(atlas_climate_pressure_kpa) or on() vector(0)", - "legendFormat": "Tent Pressure (kPa)", + "expr": "max(typhon_vpd_kpa) or on() vector(0)", + "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 } ], @@ -345,12 +359,36 @@ data: { "matcher": { "id": "byName", - "options": "Tent Pressure (kPa)" + "options": "Tent VPD (kPa)" }, "properties": [ { "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": "", "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, @@ -388,13 +428,23 @@ data: "targets": [ { "refId": "A", - "expr": "(atlas_climate_tent_temperature_celsius or atlas_climate_temperature_celsius)", + "expr": "typhon_temperature_celsius", "legendFormat": "Temperature (\u00b0C)" }, { "refId": "B", - "expr": "(atlas_climate_tent_pressure_kpa or atlas_climate_pressure_kpa)", - "legendFormat": "Pressure (kPa)" + "expr": "typhon_relative_humidity_percent", + "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": { @@ -405,7 +455,19 @@ data: { "matcher": { "id": "byName", - "options": "Pressure (kPa)" + "options": "Humidity (%)" + }, + "properties": [ + { + "id": "unit", + "value": "percent" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "VPD (kPa)" }, "properties": [ { @@ -437,7 +499,7 @@ data: "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, @@ -456,25 +518,25 @@ data: "targets": [ { "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", "instant": true }, { "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", "instant": true }, { "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", "instant": true }, { "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", "instant": true } @@ -521,7 +583,9 @@ data: "fields": "", "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." }, @@ -542,22 +606,22 @@ data: "targets": [ { "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" }, { "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" }, { "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" }, { "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" } ],