Scripts del Servidor

De Comissió Energia Can Fugarolas
La revisió el 20:21, 27 juny 2016 per Admin (discussió | contribucions) (→‎Script per cada Arduino)
(dif.) ← Versió més antiga | Versió actual (dif.) | Versió més nova → (dif.)
Salta a la navegació Salta a la cerca

Script per cada Arduino

En aquest cas, només posem pel del Shield II.

  #! /bin/bash
  ### BEGIN INIT INFO
  # Provides:          getdata 192.168.130.2
  # Required-Start:    
  # Required-Stop:
  # Default-Start:     S
  # Default-Stop:
  # Short-Description: Monitoritzacio
  # Description:       Envia les dades de monitoritzacio que pregunta a l'arduino al propi 
  #                    servidor de monitoritzacio i a emoncms. Tambe guarda les dades en 
  #                    un fitxer local.
  ### END INIT INFO
  
  ESPERA=10
  
  VOLTATGEMAXIM=500
  INTENSITATMAXIMA=50
  POTENCIAMAXIMA=25000
  
  FUGA="https://emon.canfugarolas.org/input/post.json"
  FUGAKEY="apikey=6db9"
  EMON="http://emoncms.org/input/post.json"
  EMONKEY="apikey=ebbd"
  
  do_start () {
  
   for j in `seq 1 10`; do 
       vector=(`curl -k --silent 192.168.130.2`);
       sleep 2;
     done;
  
   while true; do
  
       vector=(`curl -k -m 3 --silent 192.168.130.2`);
  
       v0=`echo ${vector[0]}`
  
       while [ -z "$v0" ]; do
  
          curl --silent -k "$FUGA?json={Forat:"1"}&node=2&$FUGAKEY";
          curl --silent -k "$EMON?json={Forat:"1"}&node=2&$EMONKEY";
  
          Dades=$(date '+%d/%m/%y %H:%M:%S')
          echo $Dades >> /var/www/emon/Dades/DadesArduino2.res
  
          vector=(`curl -k -m 3 --silent 192.168.130.2`);
          v0=`echo ${vector[0]}`
  
          done;
  
       v2=`echo ${vector[2]}`
       v3=`echo ${vector[3]}`
       v4=`echo ${vector[4]}`
       v5=`echo ${vector[5]}`
       v7=`echo ${vector[7]}`
       v8=`echo ${vector[8]}`
       v9=`echo ${vector[9]}`
       v10=`echo ${vector[10]}`
       v12=`echo ${vector[12]}`
       v13=`echo ${vector[13]}`
       v14=`echo ${vector[14]}`
       v15=`echo ${vector[15]}`
  
       #Comprovem si el voltatge es passa en valor absolut de 500V
       #Comprovem si les intensitats es passen en valor absolut de 50A
       #Si aquests valors es passen escriurem igualment al fitxer peròamb valors  0 i marcarem el voltatge com valor 3.1416
       #Comprovem la potencia maxima amb el v3, v8 i v13 en principi
       #I el NAN a tots
  
       absv0=`echo "$v0" | awk '{if($1>=0) { print $1} else {print $1*-1 }}'`
       absv2=`echo "$v2" | awk '{if($1>=0) { print $1} else {print $1*-1 }}'`
       absv3=`echo "$v3" | awk '{if($1>=0) { print $1} else {print $1*-1 }}'`
       absv4=`echo "$v4" | awk '{if($1>=0) { print $1} else {print $1*-1 }}'`
       absv5=`echo "$v5" | awk '{if($1>=0) { print $1} else {print $1*-1 }}'`
       absv7=`echo "$v7" | awk '{if($1>=0) { print $1} else {print $1*-1 }}'`
       absv8=`echo "$v8" | awk '{if($1>=0) { print $1} else {print $1*-1 }}'`
       absv9=`echo "$v9" | awk '{if($1>=0) { print $1} else {print $1*-1 }}'`
       absv10=`echo "$v10" | awk '{if($1>=0) { print $1} else {print $1*-1 }}'`
       absv12=`echo "$v12" | awk '{if($1>=0) { print $1} else {print $1*-1 }}'`
       absv13=`echo "$v13" | awk '{if($1>=0) { print $1} else {print $1*-1 }}'`
       absv14=`echo "$v14" | awk '{if($1>=0) { print $1} else {print $1*-1 }}'`
       absv15=`echo "$v15" | awk '{if($1>=0) { print $1} else {print $1*-1 }}'`
  
       if (( $(echo "$absv0  > $VOLTATGEMAXIM" | bc -l) )) ||
          (( $(echo "$absv2  > $INTENSITATMAXIMA" | bc -l) )) ||
          (( $(echo "$absv3  > $POTENCIAMAXIMA" | bc -l) )) ||
          (( $(echo "$absv4  > $POTENCIAMAXIMA" | bc -l) )) ||
          (( $(echo "$absv5  > 1" | bc -l) )) ||
          (( $(echo "$absv7  > $INTENSITATMAXIMA" | bc -l) )) ||
          (( $(echo "$absv8  > $POTENCIAMAXIMA" | bc -l) )) ||
          (( $(echo "$absv9  > $POTENCIAMAXIMA" | bc -l) )) ||
          (( $(echo "$absv10  > 1" | bc -l) )) ||
          (( $(echo "$absv12  > $INTENSITATMAXIMA" | bc -l) )) ||
          (( $(echo "$absv13  > $POTENCIAMAXIMA" | bc -l) )) ||
          (( $(echo "$absv14  > $POTENCIAMAXIMA" | bc -l) )) ||
          (( $(echo "$absv15 >  1" | bc -l) ))
        then
          v0="1.31416"
          v2=0
          v2=0
          v3=0
          v4=0
          v5=0
          v7=0
          v8=0
          v9=0
          v10=0
          v12=0
          v13=0
          v14=0
          v15=0
       fi
  
  
       curl -k --silent "$FUGA?json={voltage:"$v0"}&node=2&$FUGAKEY";
       curl -k --silent "$FUGA?json={IL1:"$v2"}&node=2&$FUGAKEY";
       curl -k --silent "$FUGA?json={PL1:"$v3"}&node=2&$FUGAKEY";
       curl -k --silent "$FUGA?json={SL1:"$v4"}&node=2&$FUGAKEY";
       curl -k --silent "$FUGA?json={CosPhiL1:"$v5"}&node=2&$FUGAKEY";
       curl -k --silent "$FUGA?json={IL2:"$v7"}&node=2&$FUGAKEY";
       curl -k --silent "$FUGA?json={PL2:"$v8"}&node=2&$FUGAKEY";
       curl -k --silent "$FUGA?json={SL2:"$v9"}&node=2&$FUGAKEY";
       curl -k --silent "$FUGA?json={CosPhiL2:"$v10"}&node=2&$FUGAKEY";
       curl -k --silent "$FUGA?json={IL3:"$v12"}&node=2&$FUGAKEY";
       curl -k --silent "$FUGA?json={PL3:"$v13"}&node=2&$FUGAKEY";
       curl -k --silent "$FUGA?json={SL3:"$v14"}&node=2&$FUGAKEY";
       curl -k --silent "$FUGA?json={CosPhiL3:"$v15"}&node=2&$FUGAKEY";
       curl -k --silent "$FUGA?json={Forat:"0"}&node=2&$FUGAKEY";
    
       #curl --silent "$EMON?json={voltage:"$v0"}&node=2&$EMONKEY";
       #curl --silent "$EMON?json={IL1:"$v2"}&node=2&$EMONKEY";
       #curl --silent "$EMON?json={PL1:"$v3"}&node=2&$EMONKEY";
       #curl --silent "$EMON?json={SL1:"$v4"}&node=2&$EMONKEY";
       #curl --silent "$EMON?json={CosPhiL1:"$v5"}1&node=2&$EMONKEY";
       #curl --silent "$EMON?json={IL2:"$v7"}&node=2&$EMONKEY";
       #curl --silent "$EMON?json={PL2:"$v8"}&node=2&$EMONKEY";
       #curl --silent "$EMON?json={SL2:"$v9"}&node=2&$EMONKEY";
       #curl --silent "$EMON?json={CosPhiL2:"$v10"}&node=2&$EMONKEY";
       #curl --silent "$EMON?json={IL3:"$v12"}&node=2&$EMONKEY";
       #curl --silent "$EMON?json={PL3:"$v13"}&node=2&$EMONKEY";
       #curl --silent "$EMON?json={SL3:"$v14"}&node=2&$EMONKEY";
       #curl --silent "$EMON?json={CosPhiL3:"$v15"}&node=2&$EMONKEY";
       #curl --silent "$EMON?json={Forat:"0"}&node=2&$EMONKEY";
  
       Dades=$(date '+%d/%m/%y %H:%M:%S')
       Dades+="  "
       for index in 0 2 3 4 5 7 8 9 10 12 13 14 15 ; do
          aux="v$index"
          Dades+=${!aux}
          Dades+=" "
         done;
       echo $Dades >> /var/www/emon/Dades/DadesArduino2.res
  
   sleep $ESPERA 
   done;
  
  }
  
  case "$1" in
    start|"")
  	do_start
  	;;
    restart|reload|force-reload)
  	echo "Error: argument '$1' not supported" >&2
  	exit 3
  	;;
    stop)
  	# No-op
  	;;
    *)
  	echo "Usage: getdata.sh start|stop" >&2
  	exit 3
  	;;
  esac
  
  :

Script per copiar scripts

Aquest segon script, ens serveix per copiar el primer amb la configuració dels altres, només modificant les ip's i l'identificador per pujar al programari emoncms.

 #!/bin/bash
 #########################################################################
 #  Script que copia el fitxer getdata.2.sh a la restar de getdates de 
 #  3 a 7. Canvia la ip 192.168.130.2 per la corresponent i canvia el node=2
 #  per el node corresponent. 
 #########################################################################
 for i in `seq 3 7`;
    do cp /etc/init.d/getdata.2.sh /etc/init.d/getdata.$i.sh;
    sed -e "s/192.168.130.2/192.168.130.$i/g" /etc/init.d/getdata.$i.sh > /tmp/res.sh;
    mv /tmp/res.sh /etc/init.d/getdata.$i.sh 
    sed -e "s/DadesArduino2/DadesArduino$i/g" /etc/init.d/getdata.$i.sh > /tmp/res.sh;
    mv /tmp/res.sh /etc/init.d/getdata.$i.sh 
    sed -e "s/node=2/node=$i/g" /etc/init.d/getdata.$i.sh > /tmp/res.sh;
    mv /tmp/res.sh /etc/init.d/getdata.$i.sh 
    done;
 chmod u+x /etc/init.d/getdata.*;