158 lines
2.5 KiB
Bash
158 lines
2.5 KiB
Bash
#
|
|
# Imposta lo stato di una elettrovalvola
|
|
# $1 numero del sensore
|
|
# $2 tipologia dello stato
|
|
# $3 stato da scrivere
|
|
#
|
|
function sensor_set_state {
|
|
echo "$3" > "$STATUS_DIR/sensor$1_$2"
|
|
}
|
|
|
|
#
|
|
# Legge lo stato di un sensore
|
|
# $1 numero del sensore
|
|
# $2 tipologia dello stato
|
|
#
|
|
function sensor_get_state {
|
|
if [ ! -f "$STATUS_DIR/sensor$1_$2" ]; then
|
|
sensor_set_state $1 $2 ""
|
|
fi
|
|
|
|
return `cat "$STATUS_DIR/sensor$1_$2"`
|
|
}
|
|
|
|
#
|
|
# Recupera il numero di un sensore in base all'alias
|
|
# $1 alias del sensore
|
|
#
|
|
function sensor_alias2number {
|
|
for i in $(seq $EV_TOTAL)
|
|
do
|
|
a=SENSOR"$i"_ALIAS
|
|
av=${!a}
|
|
if [ "$av" == "$1" ]; then
|
|
return $i
|
|
fi
|
|
done
|
|
|
|
log_write "general" "error" "ERROR sensor alias not found: $1"
|
|
message_write "warning" "Sensor alias not found"
|
|
mqtt_status
|
|
exit 1
|
|
}
|
|
|
|
#
|
|
# Verifica se un alias di un sensore esiste
|
|
# $1 alias dell'elettrovalvola
|
|
#
|
|
function sensor_alias_exists {
|
|
local vret='FALSE'
|
|
for i in $(seq $EV_TOTAL)
|
|
do
|
|
a=SENSOR"$i"_ALIAS
|
|
av=${!a}
|
|
if [ "$av" == "$1" ]; then
|
|
vret='TRUE'
|
|
fi
|
|
done
|
|
|
|
echo $vret
|
|
}
|
|
|
|
#
|
|
# Mostra lo stato di tutte le elettrovalvole
|
|
#
|
|
function sensor_status_all {
|
|
for i in $(seq $SENSOR_TOTAL)
|
|
do
|
|
a=SENSOR"$i"_ALIAS
|
|
av=${!a}
|
|
for t in $SENSOR_STATE_TYPE
|
|
do
|
|
sensor_get_state $i $t
|
|
echo -e "$av: $t $?"
|
|
done
|
|
done
|
|
}
|
|
|
|
#
|
|
# Mostra lo stato di un sensore
|
|
# $1 alias sensore
|
|
# $2 tipologia dello stato
|
|
#
|
|
function sensor_status {
|
|
sensor_alias2number $1
|
|
i=$?
|
|
if [ -z "$2" ]; then
|
|
for t in $SENSOR_STATE_TYPE
|
|
do
|
|
sensor_get_state $i $t
|
|
echo -e "$av: $t $?"
|
|
done
|
|
else
|
|
sensor_get_state $i $2
|
|
local state=$?
|
|
echo -e "$state"
|
|
return $state
|
|
fi
|
|
|
|
}
|
|
|
|
#
|
|
# Imposta lo stato di un sensore per alias
|
|
# $1 alias sensore
|
|
# $2 tipologia dello stato
|
|
# $3 stato da imopostare
|
|
#
|
|
function sensor_status_set {
|
|
sensor_alias2number $1
|
|
i=$?
|
|
sensor_set_state $i $2 $3
|
|
mqtt_status
|
|
}
|
|
|
|
#
|
|
# Stampa la lista degli alias dei sensori
|
|
#
|
|
function list_alias_sensor {
|
|
|
|
for i in $(seq $SENSOR_TOTAL)
|
|
do
|
|
local a=SENSOR"$i"_ALIAS
|
|
local al=${!a}
|
|
echo $al
|
|
done
|
|
|
|
}
|
|
|
|
#
|
|
# Stampa lo stato di tutti i sensori in formato json
|
|
#
|
|
function json_sensor_status_all {
|
|
local js=""
|
|
local js_item=""
|
|
local js_type=""
|
|
|
|
for i in $(seq $SENSOR_TOTAL)
|
|
do
|
|
a=SENSOR"$i"_ALIAS
|
|
av=${!a}
|
|
|
|
js_type=""
|
|
for t in $SENSOR_STATE_TYPE
|
|
do
|
|
sensor_get_state $i $t
|
|
js_type="$js_type \"$t\": \"$?\", "
|
|
done
|
|
js_type="${js_type::-2}"
|
|
js_item="$js_item \"$av\":{$js_type}, ";
|
|
done
|
|
|
|
if [[ ! -z $js_item ]]; then
|
|
js_item="${js_item::-2}"
|
|
fi
|
|
|
|
js="\"sensor\": {$js_item}"
|
|
echo $js
|
|
}
|