Blame

280af2 David Marsh 2026-04-24 02:32:15
1
# Grafana
2
0103fd David Marsh 2026-04-28 00:50:54
3
## Battery
7e519d David Marsh 2026-04-24 04:45:23
4
280af2 David Marsh 2026-04-24 02:32:15
5
```
6
from(bucket: "meshcore")
7
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
0103fd David Marsh 2026-04-28 00:50:54
8
|> filter(fn: (r) => r._measurement == "meshcore_status")
9
|> filter(fn: (r) => r._field == "bat")
28109c David Marsh 2026-04-24 09:06:34
10
|> map(fn: (r) => ({
0103fd David Marsh 2026-04-28 00:50:54
11
_time: r._time,
12
_value: r._value,
13
series: r.node
28109c David Marsh 2026-04-24 09:06:34
14
}))
0103fd David Marsh 2026-04-28 00:50:54
15
|> group(columns: ["series"])
16
|> aggregateWindow(every:15m, fn:last, createEmpty:true)
9c9944 David Marsh 2026-04-24 05:50:27
17
```
e4678d David Marsh 2026-04-24 05:47:48
18
0103fd David Marsh 2026-04-28 00:50:54
19
## Noise Floor
6383b7 David Marsh 2026-04-24 15:35:05
20
21
```
22
from(bucket: "meshcore")
23
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
0103fd David Marsh 2026-04-28 00:50:54
24
|> filter(fn: (r) => r._measurement == "meshcore_status")
25
|> filter(fn: (r) => r._field == "noise_floor")
26
|> group(columns: ["node"])
27
|> aggregateWindow(every: 15m, fn: mean, createEmpty: true)
28
```
29
30
## RF Link Health
31
32
```
33
from(bucket: "meshcore")
34
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
35
|> filter(fn: (r) => r._measurement == "meshcore_status")
36
|> filter(fn: (r) =>
37
r._field == "last_snr" or
38
r._field == "last_rssi" or
39
r._field == "noise_floor"
40
)
41
|> group(columns: ["node", "_field"])
42
|> aggregateWindow(every:15m, fn:mean, createEmpty:true)
43
```
44
45
## Status SNR
46
47
```
48
from(bucket: "meshcore")
49
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
50
|> filter(fn: (r) => r._measurement == "meshcore_status")
51
|> filter(fn: (r) => r._field == "last_snr")
6383b7 David Marsh 2026-04-24 15:35:05
52
|> map(fn: (r) => ({
0103fd David Marsh 2026-04-28 00:50:54
53
_time: r._time,
54
_value: r._value,
55
node: r.node
6383b7 David Marsh 2026-04-24 15:35:05
56
}))
0103fd David Marsh 2026-04-28 00:50:54
57
|> group(columns: ["node"])
58
|> aggregateWindow(every: 15m, fn: mean, createEmpty: true)
6383b7 David Marsh 2026-04-24 15:35:05
59
```
60
1783a5 David Marsh 2026-04-28 00:51:22
61
## Trace SNR
7e519d David Marsh 2026-04-24 04:45:23
62
280af2 David Marsh 2026-04-24 02:32:15
63
```
64
from(bucket: "meshcore")
65
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
46ddd2 David Marsh 2026-04-24 04:47:38
66
|> filter(fn: (r) => r._measurement == "meshcore_trace")
0103fd David Marsh 2026-04-28 00:50:54
67
|> filter(fn: (r) => r._field == "snr")
28109c David Marsh 2026-04-24 09:06:34
68
|> map(fn: (r) => ({
0103fd David Marsh 2026-04-28 00:50:54
69
_time: r._time,
70
_value: r._value,
71
route: r.from + " → " + r.to + " : " + r.site
28109c David Marsh 2026-04-24 09:06:34
72
}))
0103fd David Marsh 2026-04-28 00:50:54
73
|> group(columns: ["route"])
74
|> aggregateWindow(every: 15m, fn: mean, createEmpty: true)
9c9944 David Marsh 2026-04-24 05:50:27
75
```