Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- DEBUG=1 # 0=no debug 1=/var/log/dom/camino.log 2=stdio
- case "$DEBUG" in
- 0)
- LOG="/dev/null"
- ;;
- 1)
- LOG="/var/log/dom/camino.log"
- ;;
- 2)
- LOG="/dev/stdout"
- ;;
- esac
- # Regular Colors
- BLACK='\033[0;30m' # Black
- RED='\033[0;31m' # Red
- GREEN='\033[0;32m' # Green
- YELLOW='\033[0;33m' # Yellow
- BLUE='\033[0;34m' # Blue
- PURPLE='\033[0;35m' # Purple
- CYAN='\033[0;36m' # Cyan
- WHITE='\033[0;37m' # White
- # Bold
- BBLACK='\033[1;30m' # Black
- BRED='\033[1;31m' # Red
- BGREEN='\033[1;32m' # Green
- BYELLOW='\033[1;33m' # Yellow
- BBLUE='\033[1;34m' # Blue
- BPURPLE='\033[1;35m' # Purple
- BCYAN='\033[1;36m' # Cyan
- BWHITE='\033[1;37m' # White
- RESET="\x1b[39;49;00m"
- OLDSTATUS=`tail -1 /var/log/dom/mcz.last`
- if [[ $LOG == 2 ]] ; then
- cat /var/log/dom/mcz.status >> $LOG
- fi
- OLDSTRING=`head -1 /var/log/dom/mcz.last`
- LASTF=${OLDSTRING:16:2}
- LASTG=${OLDSTRING:18:2}
- LASTGNORM="0"`echo $LASTG-10|bc` # per visualizzare valore intuitivo (-10)
- LASTP=${OLDSTRING:20:2}
- LASTM=${OLDSTRING:22:2}
- if [[ $1 == "" ]] ; then
- printf "Pellet=$BRED$LASTP$RESET Fan1=$BGREEN$LASTF$RESET Fan2=$BGREEN$LASTGNORM$RESET Mode=$BCYAN$LASTM "
- if [[ "$LASTM" = "00" ]] ; then
- echo -n "Off "
- else
- echo -n "On "
- fi
- printf $RESET
- echo "($OLDSTATUS)"
- #echo "-f FAN1 [0-6] -g FAN2 [0-6] -p PELLET [0-5] -m mode [0-3]"
- exit 1
- fi
- date >> $LOG
- echo "Vecchio stato: $OLDSTATUS" >> $LOG
- if [[ $1 == "auto" ]] ; then
- printf "Modalita': Auto"
- echo auto > /var/log/dom/Camino
- exit 0
- fi
- # Counter routine (Sequence)
- if [ -e /tmp/mcz.seq ] ; then
- read cnt < /tmp/mcz.seq
- else
- cnt=0
- fi
- if [ $(($cnt)) -gt 255 ] ; then cnt=0; fi
- SQ=`printf '%x' $cnt`
- if [ ${#SQ} = 1 ] ; then SQ="0$SQ" ; fi
- PL="0c" # Packet Length (12)
- PT="43" # Packet Type 43 (thermostat4=MCZ) Don't modify
- ST="01" # SubType: 00=1FAN 01=2FAN 02=3FAN Set your type
- #SQ=Counter # Sequence Number 00-FF Automatically calculated
- ID=59B302 # U1+U2+U3: ID Stove Set your ID
- BE=01 # Beep Up to you
- # ARGUMENTS
- #F=FAN1 # 0-6 (6=auto)
- #G=FAN2 # 0-6 (6=auto)
- #P=PELLET # 1-5
- #M=MODE # 0=off 1=manual 2=auto 3=eco
- FI="00" # filler
- while getopts f:g:h:p:m: option
- do
- case "${option}"
- in
- f)F=0$((${OPTARG}));;
- g)G=1$((${OPTARG}));;
- p)P=0$((${OPTARG}));;
- m)M=0$((${OPTARG}));;
- esac
- done
- if [[ $M = "00" ]] ; then
- STATUS="Off"
- else
- case "$P" in
- "01")
- STATUS="Basso"
- ;;
- "03")
- STATUS="Medio"
- ;;
- "05")
- STATUS="Alto"
- ;;
- esac
- fi
- if [[ $F = "" ]] ; then F=$LASTF; fi
- if [[ $G = "" ]] ; then G=$LASTG; fi
- if [[ $P = "" ]] ; then P=$LASTP; fi
- if [[ $M = "" ]] ; then M=$LASTM; fi
- # string to be sent
- # PLength Ptype SubType Sequence Id Beep Fan1 Fan3 Pellet Mode 00
- STRING="$PL$PT$ST$SQ$ID$BE$F$G$P$M$FI"
- #echo "$PL $PT $ST $SQ $ID $BE $F $G $P $M $FI" >> $LOG
- # Controlla se è stato inviato lo stesso comando
- if [[ ${OLDSTRING:16:10} == ${STRING:16:10} ]] ; then
- echo "Nessun cambiamento" >> $LOG
- exit 1
- else
- echo "Nuovo stato: $STATUS" >> $LOG
- if [[ $LOG == 2 ]] ; then
- echo "Sequenza: $SQ" >> $LOG
- echo "Stringa : $STRING" >> $LOG
- echo "Fan1 : $F" >> $LOG
- echo "Fan2 : $G" >> $LOG
- echo "Pellet : $P" >> $LOG
- echo "Mode : $M" >> $LOG
- fi
- echo >> $LOG
- fi
- echo "Sequenza: $SQ" > /var/log/dom/mcz.status
- echo "Stringa : $STRING" >> /var/log/dom/mcz.status
- echo "Fan1 : $F" >> /var/log/dom/mcz.status
- echo "Fan2 : $G" >> /var/log/dom/mcz.status
- echo "Pellet : $P" >> /var/log/dom/mcz.status
- echo "Mode : $M" >> /var/log/dom/mcz.status
- # send command
- echo $STRING | jpnevulator -w -t /dev/ttyUSB0
- # visualizza su phathd
- source /opt/domoticz/scripts/output.sh Camino $STATUS
- # update counter
- (( cnt ++ ))
- echo $cnt > /tmp/mcz.seq
- echo $STRING > /var/log/dom/mcz.last
- echo $STATUS >> /var/log/dom/mcz.last
Advertisement
Add Comment
Please, Sign In to add comment