#!/bin/bash nomefileprogramma=$1 #pompacirsterna, si riferisce alla sola pompa nella cisterna pompacisternasi=1 pompacisterna=10 #pompapozzo si riferisce alla pompa del pozzo pompapozzosi=1 pompapozzo=11 #valvolaingresso, che consente il caricamento della cisterna dalla linea # pubblica o dal pozzo se quest'ultimo viene avviato valvolaingresso=9 etichettapozzo="/home/mauro/script/pozzo" etichettairrigatore="/home/mauro/script/irrigatore" data=$(date) log=$(mktemp) ########################### status() { echo "status porte:" | tee -a ${log} raspi-gpio get 4,5,6,7,8,9,10,11 | tee -a ${log} echo "" } ########################### apri() { alinea=$1 echo "Apro pin ${alinea}" | tee -a ${log} raspi-gpio get ${alinea} raspi-gpio set ${alinea} dl raspi-gpio get ${alinea} mosquitto_pub -h nuc1 -p 1883 -u sword -P "Abcd.1234" -t "Status" -m "{\"linea\":${alinea},\"status\":$(pinctrl lev ${alinea})}" } ########################### chiudi() { clinea=$1 echo "Chiudo pin ${clinea}" | tee -a ${log} raspi-gpio get ${clinea} raspi-gpio set ${clinea} dh raspi-gpio get ${clinea} mosquitto_pub -h nuc1 -p 1883 -u sword -P "Abcd.1234" -t "Status" -m "{\"linea\":${clinea},\"status\":$(pinctrl lev ${clinea})}" } ########################## esecuzione() { o=$1 linea=$2 tempo=$3 if [ __${tempo}__ == ____ ] ; then echo "non e' stato indicato il tempo, si va in automatico" | tee -a ${log} tempo=30s fi echo "#############################" echo "data : $(date)" |tee -a ${log} echo "rich : ${o}" |tee -a ${log} echo "linea: ${linea}" |tee -a ${log} echo "tempo: ${tempo}" |tee -a ${log} echo "" |tee -a ${log} if [ __${o}__ == __i__ ]; then echo "Richiesta attivazione irrigatore" # verifica la presenza del file "${etichettairrigatore}" if [ -f ${etichettairrigatore} ]; then echo "File 'irrigatore' presente" | tee -a ${log} echo "Apro linea ${linea} per ${tempo}" | tee -a ${log} apri ${linea} if [ ${pompacisternasi} == 1 ]; then echo "Accendo pompa ${pompacisterna}" | tee -a ${log} apri ${pompacisterna} fi mosquitto_pub -h nuc1 -p 1883 -u sword -P "Abcd.1234" -t "Status" -m "{\"tempo\":${pompa},\"status\":${tempo})}" sleep ${tempo} if [ ${pompacisternasi} == 1 ]; then echo "Spengo pompa ${pompacisterna}" | tee -a ${log} chiudi ${pompacisterna} fi echo "Chiudo linea ${linea}" | tee -a ${log} chiudi ${linea} else echo -e "Accensione linea ${linea} per ${tempo}\nDisattivata: manca file '${etichettairrigatore}'." | tee -a ${log} fi fi if [ __${o}__ == __p__ ]; then echo "Richiesta attivazione pozzo" if [ -f ${etichettapozzo} ]; then echo "File '${etichettapozzo}' presente" |tee -a ${log} echo "Apro valvola ${valvolaingresso}" |tee -a ${log} apri ${valvolaingresso} if [ ${pompapozzosi} == 1 ]; then echo "Accendo pompa ${pompapozzo}" |tee -a ${log} apri ${pompapozzo} fi mosquitto_pub -h nuc1 -p 1883 -u sword -P "Abcd.1234" -t "Status" -m "{\"tempo\":${pompa},\"status\":${tempo})}" sleep ${tempo} if [ ${pompapozzosi} == 1 ]; then echo "Spengo pompa ${pompapozzo}" |tee -a ${log} chiudi ${pompapozzo} fi echo "Chiudo valvola ${linea}" |tee -a ${log} chiudi ${valvolaingresso} else echo -e "Accensione pompa pozzo ${pompapozzo} per ${tempo}\nDisattivata: manca file '${etichettapozzo}'." |tee -a ${log} fi fi #dl lo attiva #dh lo disattiva #op abilita la linea } ############################################ if [ __${nomefileprogramma}__ == ____ ]; then nomefileprogramma="programma.txt" echo "nome file non indicato, inserito default ${nomefileprogramma}" | tee -a ${log} fi echo "Lettura file ${nomefileprogramma}" | tee -a ${log} if [ ! -f ${nomefileprogramma} ]; then echo "il file con la programmazione '${nomefileprogramma}' non esiste" | tee -a ${log} exit 99 fi status echo "inizio: $(date)" while read -u 10 -r o l t; do echo $o $l $t esecuzione $o $l $t sleep 5 done 10<${nomefileprogramma} echo "fine: $(date)" status cat ${log} | mail -s "${data}: linea ${linea} per ${tempo}" root rm ${log} ########################### # # uso: # po.sh nomeprogramma.txt # dove nomeprogramma.txt รจ il file che contiene riga per riga: tipo (p per pozzo o i per irrigatore), linea (ignorata dalla sezione pozzo) e durata (es: 10m: 10 minuti) # lo script legge riga per riga ed esegue in sequenza le azioni indicate. tra ogni azione viene inserita una pausa di 5 secondi. # ###########################