po.sh 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. #!/bin/bash
  2. nomefileprogramma=$1
  3. #pompacirsterna, si riferisce alla sola pompa nella cisterna
  4. pompacisternasi=1
  5. pompacisterna=10
  6. #pompapozzo si riferisce alla pompa del pozzo
  7. pompapozzosi=1
  8. pompapozzo=11
  9. #valvolaingresso, che consente il caricamento della cisterna dalla linea
  10. # pubblica o dal pozzo se quest'ultimo viene avviato
  11. valvolaingresso=9
  12. etichettapozzo="/home/mauro/script/pozzo"
  13. etichettairrigatore="/home/mauro/script/irrigatore"
  14. data=$(date)
  15. log=$(mktemp)
  16. ###########################
  17. status() {
  18. echo "status porte:" | tee -a ${log}
  19. raspi-gpio get 4,5,6,7,8,9,10,11 | tee -a ${log}
  20. echo ""
  21. }
  22. ###########################
  23. apri() {
  24. alinea=$1
  25. echo "Apro pin ${alinea}" | tee -a ${log}
  26. raspi-gpio get ${alinea}
  27. raspi-gpio set ${alinea} dl
  28. raspi-gpio get ${alinea}
  29. mosquitto_pub -h nuc1 -p 1883 -u sword -P "Abcd.1234" -t "Status" -m "{\"linea\":${alinea},\"status\":$(pinctrl lev ${alinea})}"
  30. }
  31. ###########################
  32. chiudi() {
  33. clinea=$1
  34. echo "Chiudo pin ${clinea}" | tee -a ${log}
  35. raspi-gpio get ${clinea}
  36. raspi-gpio set ${clinea} dh
  37. raspi-gpio get ${clinea}
  38. mosquitto_pub -h nuc1 -p 1883 -u sword -P "Abcd.1234" -t "Status" -m "{\"linea\":${clinea},\"status\":$(pinctrl lev ${clinea})}"
  39. }
  40. ##########################
  41. esecuzione() {
  42. o=$1
  43. linea=$2
  44. tempo=$3
  45. if [ __${tempo}__ == ____ ] ; then
  46. echo "non e' stato indicato il tempo, si va in automatico" | tee -a ${log}
  47. tempo=30s
  48. fi
  49. echo "#############################"
  50. echo "data : $(date)" |tee -a ${log}
  51. echo "rich : ${o}" |tee -a ${log}
  52. echo "linea: ${linea}" |tee -a ${log}
  53. echo "tempo: ${tempo}" |tee -a ${log}
  54. echo "" |tee -a ${log}
  55. if [ __${o}__ == __i__ ]; then
  56. echo "Richiesta attivazione irrigatore"
  57. # verifica la presenza del file "${etichettairrigatore}"
  58. if [ -f ${etichettairrigatore} ]; then
  59. echo "File 'irrigatore' presente" | tee -a ${log}
  60. echo "Apro linea ${linea} per ${tempo}" | tee -a ${log}
  61. apri ${linea}
  62. if [ ${pompacisternasi} == 1 ]; then
  63. echo "Accendo pompa ${pompacisterna}" | tee -a ${log}
  64. apri ${pompacisterna}
  65. fi
  66. mosquitto_pub -h nuc1 -p 1883 -u sword -P "Abcd.1234" -t "Status" -m "{\"tempo\":${pompa},\"status\":${tempo})}"
  67. sleep ${tempo}
  68. if [ ${pompacisternasi} == 1 ]; then
  69. echo "Spengo pompa ${pompacisterna}" | tee -a ${log}
  70. chiudi ${pompacisterna}
  71. fi
  72. echo "Chiudo linea ${linea}" | tee -a ${log}
  73. chiudi ${linea}
  74. else
  75. echo -e "Accensione linea ${linea} per ${tempo}\nDisattivata: manca file '${etichettairrigatore}'." | tee -a ${log}
  76. fi
  77. fi
  78. if [ __${o}__ == __p__ ]; then
  79. echo "Richiesta attivazione pozzo"
  80. if [ -f ${etichettapozzo} ]; then
  81. echo "File '${etichettapozzo}' presente" |tee -a ${log}
  82. echo "Apro valvola ${valvolaingresso}" |tee -a ${log}
  83. apri ${valvolaingresso}
  84. if [ ${pompapozzosi} == 1 ]; then
  85. echo "Accendo pompa ${pompapozzo}" |tee -a ${log}
  86. apri ${pompapozzo}
  87. fi
  88. mosquitto_pub -h nuc1 -p 1883 -u sword -P "Abcd.1234" -t "Status" -m "{\"tempo\":${pompa},\"status\":${tempo})}"
  89. sleep ${tempo}
  90. if [ ${pompapozzosi} == 1 ]; then
  91. echo "Spengo pompa ${pompapozzo}" |tee -a ${log}
  92. chiudi ${pompapozzo}
  93. fi
  94. echo "Chiudo valvola ${linea}" |tee -a ${log}
  95. chiudi ${valvolaingresso}
  96. else
  97. echo -e "Accensione pompa pozzo ${pompapozzo} per ${tempo}\nDisattivata: manca file '${etichettapozzo}'." |tee -a ${log}
  98. fi
  99. fi
  100. #dl lo attiva
  101. #dh lo disattiva
  102. #op abilita la linea
  103. }
  104. ############################################
  105. if [ __${nomefileprogramma}__ == ____ ]; then
  106. nomefileprogramma="programma.txt"
  107. echo "nome file non indicato, inserito default ${nomefileprogramma}" | tee -a ${log}
  108. fi
  109. echo "Lettura file ${nomefileprogramma}" | tee -a ${log}
  110. if [ ! -f ${nomefileprogramma} ]; then
  111. echo "il file con la programmazione '${nomefileprogramma}' non esiste" | tee -a ${log}
  112. exit 99
  113. fi
  114. status
  115. echo "inizio: $(date)"
  116. while read -u 10 -r o l t; do
  117. echo $o $l $t
  118. esecuzione $o $l $t
  119. sleep 5
  120. done 10<${nomefileprogramma}
  121. echo "fine: $(date)"
  122. status
  123. cat ${log} | mail -s "${data}: linea ${linea} per ${tempo}" root
  124. rm ${log}
  125. ###########################
  126. #
  127. # uso:
  128. # po.sh nomeprogramma.txt
  129. # 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)
  130. # lo script legge riga per riga ed esegue in sequenza le azioni indicate. tra ogni azione viene inserita una pausa di 5 secondi.
  131. #
  132. ###########################