mirror of
https://github.com/l5yth/potato-mesh.git
synced 2026-05-01 02:52:41 +02:00
* feat: split device and power-sensor telemetry charts (#643) Add telemetry_type TEXT discriminator column across the full stack so device_metrics rows no longer mix with power_metrics in the same chart. Python and Ruby ingestors detect the protobuf subtype at write time; classifySnapshot() provides field-presence fallback for legacy rows. 'Power metrics' chart split into 'Device health' and 'Power sensor'. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix: skip typeFilter for aggregated telemetry; add air_quality coverage - renderTelemetryChart now skips spec.typeFilter when chartOptions.isAggregated is true, preventing mixed-bucket aggregated snapshots from losing series data - renderTelemetryCharts detects the aggregated vs per-packet path and sets isAggregated accordingly; typeFilter still applies for per-packet history - JS tests: extract makeAggregatedNode/makeHistoryNode helpers to eliminate fixture duplication; add aggregated-mixed-bucket regression test; move type-separation tests onto the history path where filtering actually applies - Ruby + Python: add air_quality_metrics telemetry_type tests for coverage Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * refactor: reduce test duplication flagged by Sonar Hoist CHART_NOW_MS/CHART_NOW_SECONDS constants to eliminate 14 repeated setup lines across renderTelemetryCharts tests. Extract expect_stored_telemetry_type helper in app_spec to replace the four identical with_db/SELECT/expect blocks in telemetry_type inference tests. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * web: address review comments --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
65 lines
2.4 KiB
SQL
65 lines
2.4 KiB
SQL
-- Copyright © 2025-26 l5yth & contributors
|
|
--
|
|
-- Licensed under the Apache License, Version 2.0 (the "License");
|
|
-- you may not use this file except in compliance with the License.
|
|
-- You may obtain a copy of the License at
|
|
--
|
|
-- http://www.apache.org/licenses/LICENSE-2.0
|
|
--
|
|
-- Unless required by applicable law or agreed to in writing, software
|
|
-- distributed under the License is distributed on an "AS IS" BASIS,
|
|
-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
-- See the License for the specific language governing permissions and
|
|
-- limitations under the License.
|
|
|
|
CREATE TABLE IF NOT EXISTS telemetry (
|
|
id INTEGER PRIMARY KEY,
|
|
node_id TEXT,
|
|
node_num INTEGER,
|
|
from_id TEXT,
|
|
to_id TEXT,
|
|
rx_time INTEGER NOT NULL,
|
|
rx_iso TEXT NOT NULL,
|
|
telemetry_time INTEGER,
|
|
channel INTEGER,
|
|
portnum TEXT,
|
|
hop_limit INTEGER,
|
|
snr REAL,
|
|
rssi INTEGER,
|
|
bitfield INTEGER,
|
|
payload_b64 TEXT,
|
|
battery_level REAL,
|
|
voltage REAL,
|
|
channel_utilization REAL,
|
|
air_util_tx REAL,
|
|
uptime_seconds INTEGER,
|
|
temperature REAL,
|
|
relative_humidity REAL,
|
|
barometric_pressure REAL,
|
|
gas_resistance REAL,
|
|
current REAL,
|
|
iaq INTEGER,
|
|
distance REAL,
|
|
lux REAL,
|
|
white_lux REAL,
|
|
ir_lux REAL,
|
|
uv_lux REAL,
|
|
wind_direction INTEGER,
|
|
wind_speed REAL,
|
|
weight REAL,
|
|
wind_gust REAL,
|
|
wind_lull REAL,
|
|
radiation REAL,
|
|
rainfall_1h REAL,
|
|
rainfall_24h REAL,
|
|
soil_moisture INTEGER,
|
|
soil_temperature REAL,
|
|
ingestor TEXT,
|
|
protocol TEXT NOT NULL DEFAULT 'meshtastic',
|
|
telemetry_type TEXT
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_telemetry_rx_time ON telemetry(rx_time);
|
|
CREATE INDEX IF NOT EXISTS idx_telemetry_node_id ON telemetry(node_id);
|
|
CREATE INDEX IF NOT EXISTS idx_telemetry_time ON telemetry(telemetry_time);
|