leos1971

MCZ.sh

Sep 12th, 2022
1,221
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 4.02 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. DEBUG=1         # 0=no debug  1=/var/log/dom/camino.log  2=stdio
  4.  
  5. case "$DEBUG" in
  6.   0)
  7.   LOG="/dev/null"
  8.   ;;
  9.   1)
  10.   LOG="/var/log/dom/camino.log"
  11.   ;;
  12.   2)
  13.   LOG="/dev/stdout"
  14.   ;;
  15. esac
  16.  
  17. # Regular Colors
  18. BLACK='\033[0;30m'        # Black
  19. RED='\033[0;31m'          # Red
  20. GREEN='\033[0;32m'        # Green
  21. YELLOW='\033[0;33m'       # Yellow
  22. BLUE='\033[0;34m'         # Blue
  23. PURPLE='\033[0;35m'       # Purple
  24. CYAN='\033[0;36m'         # Cyan
  25. WHITE='\033[0;37m'        # White
  26.  
  27. # Bold
  28. BBLACK='\033[1;30m'       # Black
  29. BRED='\033[1;31m'         # Red
  30. BGREEN='\033[1;32m'       # Green
  31. BYELLOW='\033[1;33m'      # Yellow
  32. BBLUE='\033[1;34m'        # Blue
  33. BPURPLE='\033[1;35m'      # Purple
  34. BCYAN='\033[1;36m'        # Cyan
  35. BWHITE='\033[1;37m'       # White
  36.  
  37. RESET="\x1b[39;49;00m"
  38.  
  39. OLDSTATUS=`tail -1 /var/log/dom/mcz.last`
  40. if [[ $LOG == 2 ]] ; then
  41.   cat /var/log/dom/mcz.status >> $LOG
  42. fi
  43.  
  44. OLDSTRING=`head -1 /var/log/dom/mcz.last`
  45. LASTF=${OLDSTRING:16:2}
  46. LASTG=${OLDSTRING:18:2}
  47. LASTGNORM="0"`echo $LASTG-10|bc`  # per visualizzare valore intuitivo (-10)
  48. LASTP=${OLDSTRING:20:2}
  49. LASTM=${OLDSTRING:22:2}
  50.  
  51. if [[ $1 == "" ]] ; then
  52.   printf "Pellet=$BRED$LASTP$RESET Fan1=$BGREEN$LASTF$RESET Fan2=$BGREEN$LASTGNORM$RESET Mode=$BCYAN$LASTM "
  53.   if [[ "$LASTM" = "00" ]] ; then
  54.     echo -n "Off "
  55.   else
  56.     echo -n "On "
  57.   fi
  58.   printf $RESET
  59.   echo "($OLDSTATUS)"
  60.  
  61.   #echo "-f FAN1 [0-6] -g FAN2 [0-6] -p PELLET [0-5] -m mode [0-3]"
  62.   exit 1
  63. fi
  64.  
  65. date >> $LOG
  66. echo "Vecchio stato: $OLDSTATUS" >> $LOG
  67.  
  68. if [[ $1 == "auto" ]] ; then
  69.   printf "Modalita': Auto"
  70.   echo auto > /var/log/dom/Camino
  71.   exit 0
  72. fi
  73.  
  74.  
  75. # Counter routine (Sequence)
  76. if [ -e /tmp/mcz.seq ] ; then
  77.   read cnt < /tmp/mcz.seq
  78. else
  79.   cnt=0
  80. fi
  81.  
  82. if [ $(($cnt)) -gt 255 ] ; then cnt=0; fi
  83. SQ=`printf '%x' $cnt`
  84. if [ ${#SQ} = 1 ] ; then SQ="0$SQ" ; fi
  85.  
  86. PL="0c"     # Packet Length (12)
  87. PT="43"     # Packet Type 43 (thermostat4=MCZ)  Don't modify
  88. ST="01"     # SubType: 00=1FAN 01=2FAN 02=3FAN  Set your type
  89. #SQ=Counter # Sequence Number 00-FF         Automatically calculated
  90. ID=59B302   # U1+U2+U3: ID Stove            Set your ID
  91. BE=01       # Beep                  Up to you
  92. # ARGUMENTS
  93. #F=FAN1     # 0-6 (6=auto)
  94. #G=FAN2     # 0-6 (6=auto)
  95. #P=PELLET   # 1-5
  96. #M=MODE     # 0=off 1=manual 2=auto 3=eco
  97. FI="00"     # filler
  98.  
  99. while getopts f:g:h:p:m: option
  100. do
  101.   case "${option}"
  102.     in
  103.       f)F=0$((${OPTARG}));;
  104.       g)G=1$((${OPTARG}));;
  105.       p)P=0$((${OPTARG}));;
  106.       m)M=0$((${OPTARG}));;
  107.   esac
  108. done
  109.  
  110. if [[ $M = "00" ]] ; then
  111.   STATUS="Off"
  112. else
  113.   case "$P" in
  114.     "01")
  115.       STATUS="Basso"
  116.     ;;
  117.     "03")
  118.       STATUS="Medio"
  119.     ;;
  120.     "05")
  121.       STATUS="Alto"
  122.     ;;
  123.   esac
  124. fi
  125.  
  126. if [[ $F = "" ]] ; then F=$LASTF; fi
  127. if [[ $G = "" ]] ; then G=$LASTG; fi
  128. if [[ $P = "" ]] ; then P=$LASTP; fi
  129. if [[ $M = "" ]] ; then M=$LASTM; fi
  130.  
  131. # string to be sent
  132. # PLength Ptype SubType Sequence Id Beep Fan1 Fan3 Pellet Mode 00
  133. STRING="$PL$PT$ST$SQ$ID$BE$F$G$P$M$FI"
  134.  
  135. #echo "$PL $PT $ST $SQ $ID $BE $F $G $P $M $FI" >> $LOG
  136.  
  137. # Controlla se è stato inviato lo stesso comando
  138. if [[ ${OLDSTRING:16:10} == ${STRING:16:10} ]] ; then
  139.   echo "Nessun cambiamento" >> $LOG
  140.   exit 1
  141. else
  142.   echo "Nuovo stato: $STATUS" >> $LOG
  143.   if [[ $LOG == 2 ]] ; then
  144.     echo "Sequenza: $SQ" >> $LOG
  145.     echo "Stringa : $STRING" >> $LOG
  146.     echo "Fan1    : $F" >> $LOG
  147.     echo "Fan2    : $G" >> $LOG
  148.     echo "Pellet  : $P" >> $LOG
  149.     echo "Mode    : $M" >> $LOG
  150.   fi
  151.     echo >> $LOG
  152. fi
  153.  
  154. echo "Sequenza: $SQ" > /var/log/dom/mcz.status
  155. echo "Stringa : $STRING" >> /var/log/dom/mcz.status
  156. echo "Fan1    : $F" >> /var/log/dom/mcz.status
  157. echo "Fan2    : $G" >> /var/log/dom/mcz.status
  158. echo "Pellet  : $P" >> /var/log/dom/mcz.status
  159. echo "Mode    : $M" >> /var/log/dom/mcz.status
  160.  
  161.  
  162. # send command
  163. echo $STRING | jpnevulator -w -t /dev/ttyUSB0
  164.  
  165. # visualizza su phathd
  166. source /opt/domoticz/scripts/output.sh Camino $STATUS
  167.  
  168. # update counter
  169. (( cnt ++ ))
  170. echo $cnt > /tmp/mcz.seq
  171. echo $STRING > /var/log/dom/mcz.last
  172. echo $STATUS >> /var/log/dom/mcz.last
  173.  
Advertisement
Add Comment
Please, Sign In to add comment