| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- #!/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="~/script/pozzo"
- etichettairrigatore="~/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}
- }
- ###########################
- 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 : ${data}" |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
- while read -u 10 -r o l t; do
- echo $o $l $t
- esecuzione $o $l $t
- sleep 5
- done 10<${nomefileprogramma}
- 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.
- #
- ###########################
|