#!/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 [ | 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