blob: 1525635b6a4787af17cf4285a7a70c674747da51 (
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
84
85
86
87
88
89
90
91
92
93
|
#!/bin/bash
# args
topic="$1"
host="${2-mqtt}"
# config
l1="500" # green
l2="1000" # yellow
l3="1500" # red
l4="2000" # purple
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 $l1; then
tty_rgb 0 255 0
elif test $ppm -lt $l2; then
red=$(( ($ppm - $l1) * 255 / ($l2 - $l1) ))
tty_rgb $red 255 0
elif test $ppm -lt $l3; then
green=$(( ($ppm - $l2) * 255 / ($l3 - $l2) ))
green=$(( 255 - $green ))
tty_rgb 255 $green 0
elif test $ppm -lt $l4; then
blue=$(( ($ppm - $l3) * 255 / ($l4 - $l3) ))
tty_rgb 255 0 $blue
else
tty_rgb 255 0 255
fi
}
function show_ppm() {
local ppm="$1"
colorize_ppm $ppm
figlet -t -c -k -f big $ppm
tty_reset
}
######################################################################################
if test "$topic" = "test"; then
for ppm in $(seq $l1 50 $l4); do
colorize_ppm $ppm
echo -n " -*- test -*- $ppm -*-"
tty_reset
echo ""
done
exit 0
fi
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
|