blob: 4a20708db0f7df25a06c48c429c36e87b52941cd (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
#!/bin/bash
# args
topic="$1"
host="${2-mqtt}"
# config
low="600" # green
medium="1000" # yellow
high="2000" # red
sleep="60"
######################################################################################
function tty_rgb() {
local r="$1"
local g="$2"
local b="$3"
echo -ne "\x1b[38;2;${r};${g};${b}m"
}
function tty_reset() {
echo -ne "\x1b[0m"
}
function colorize_ppm() {
local ppm="$1"
if test $ppm -lt $low; then
tty_rgb 0 255 0
# echo "$ppm: low"
elif test $ppm -lt $medium; then
red=$(( ($ppm - $low) * 255 / ($medium - $low) ))
tty_rgb $red 255 0
# echo "$ppm: low-medium: red $red"
elif test $ppm -lt $high; then
green=$(( ($ppm - $medium) * 255 / ($high - $medium) ))
green=$(( 255 - $green ))
tty_rgb 255 $green 0
# echo "$ppm: medium-high: green $green"
else
tty_rgb 255 0 0
# echo "$ppm: high"
fi
}
function show_ppm() {
local ppm="$1"
colorize_ppm $ppm
figlet -t -c -k -f big $ppm
tty_reset
}
######################################################################################
if test -f /var/lib/scd/values.json; then
# direct mode
while true; do
ppm=$(jq .co2 /var/lib/scd/values.json)
show_ppm $ppm
sleep $sleep
done
exit 0
fi
# mqtt mode
if test "$topic" = ""; then
echo "usage: $0 [ <mqtt-topic> | list ]"
exit 1
fi
if test "$topic" = "list"; then
mqtt-simple -h "$host" -s "sensors/co2/#"
exit 0
fi
while true; do
ppm=$(mqtt-simple -1 -h "$host" -s "$topic")
show_ppm $ppm
sleep $sleep
done
|