Advertisement
chteuchteu

Raspberry Pi: monitoring de l'utilisation CPU (GPIO, V2)

Nov 5th, 2012
616
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 4.44 KB | None | 0 0
  1. #!/bin/bash
  2. # script créé par chteuchteu
  3. # article original:
  4. # http://www.chteuchteu.com/2012/10/26/raspberry-pi-monitoring-de-lutilisation-cpu-grace-au-gpio
  5. # www.chteuchteu.com
  6.  
  7. echo "4" > /sys/class/gpio/export 2> /dev/null
  8. echo "17" > /sys/class/gpio/export 2> /dev/null
  9. echo "18" > /sys/class/gpio/export 2> /dev/null
  10. echo "25" > /sys/class/gpio/export 2> /dev/null
  11. echo "22" > /sys/class/gpio/export 2> /dev/null
  12. echo "23" > /sys/class/gpio/export 2> /dev/null
  13. echo "24" > /sys/class/gpio/export 2> /dev/null
  14. echo "out" > /sys/class/gpio/gpio4/direction
  15. echo "out" > /sys/class/gpio/gpio17/direction
  16. echo "out" > /sys/class/gpio/gpio18/direction
  17. echo "out" > /sys/class/gpio/gpio25/direction
  18. echo "out" > /sys/class/gpio/gpio22/direction
  19. echo "out" > /sys/class/gpio/gpio23/direction
  20. echo "out" > /sys/class/gpio/gpio24/direction
  21.  
  22. # Tableau de correspondance pin <-> # led
  23.         #################
  24.         #   1   |   18  #
  25.         #   2   |   4   #
  26.         #   3   |   25  #
  27.         #   4   |   17  #
  28.         #   5   |   22  #
  29.         #   6   |   23  #
  30.         #   7   |   24  #
  31.         #################
  32.  
  33.  
  34. #################################################
  35. #                   FONCTIONS                   #
  36. #################################################
  37.  
  38. number=0
  39. gpio=0
  40.  
  41. function ON
  42. {
  43.     # Permet d'allumer la led dont le numéro est dans "number"
  44.     # La conversion numéro <-> pin est faite au début de la fonction
  45.  
  46.     if  [ ${number} -gt 0 ] ; then
  47.         if [ ${number} == 1 ] ; then
  48.             gpio=18
  49.         elif [ ${number} == 2 ] ; then
  50.             gpio=4
  51.         elif [ ${number} == 3 ] ; then
  52.             gpio=25
  53.         elif [ ${number} == 4 ] ; then
  54.             gpio=17
  55.         elif [ ${number} == 5 ] ; then
  56.             gpio=22
  57.         elif [ ${number} == 6 ] ; then
  58.             gpio=23
  59.         elif [ ${number} == 7 ] ; then
  60.             gpio=24
  61.         fi
  62.  
  63.         echo "1" > /sys/class/gpio/gpio$gpio/value
  64.         number=0
  65.         gpio=0
  66.     fi
  67. }
  68. function OFF
  69. {
  70.     # Permet d'éteindre la led dont le numéro est dans "number"
  71.     # La conversion numéro <-> pin est faite au début de la fonction
  72.  
  73.     if  [ ${number} -gt 0 ] ; then
  74.         if [ ${number} == 1 ] ; then
  75.             gpio=18
  76.         elif [ ${number} == 2 ] ; then
  77.             gpio=4
  78.         elif [ ${number} == 3 ] ; then
  79.             gpio=25
  80.         elif [ ${number} == 4 ] ; then
  81.             gpio=17
  82.         elif [ ${number} == 5 ] ; then
  83.             gpio=22
  84.         elif [ ${number} == 6 ] ; then
  85.             gpio=23
  86.         elif [ ${number} == 7 ] ; then
  87.             gpio=24
  88.         fi
  89.  
  90.         echo "0" > /sys/class/gpio/gpio$gpio/value
  91.         number=0
  92.         gpio=0
  93.     fi
  94. }
  95.  
  96. function allON
  97. {
  98.     # Permet d'allumer toutes les leds
  99.     number=1 ; ON
  100.     number=2 ; ON
  101.     number=3 ; ON
  102.     number=4 ; ON
  103.     number=5 ; ON
  104.     number=6 ; ON
  105.     number=7 ; ON
  106. }
  107. function allOFF
  108. {
  109.     # Permet d'éteindre toutes les leds
  110.     number=1 ; OFF
  111.     number=2 ; OFF
  112.     number=3 ; OFF
  113.     number=4 ; OFF
  114.     number=5 ; OFF
  115.     number=6 ; OFF
  116.     number=7 ; OFF
  117. }
  118. function flash
  119. {
  120.     # Permet de faire clignoter les leds pendant un laps de temps donné
  121.     i=0
  122.     while [ ${i} -lt 10 ] ; do
  123.         allON
  124.         sleep 0.08
  125.         allOFF
  126.         sleep 0.08
  127.  
  128.         i=$(( i + 1))
  129.     done
  130. }
  131.  
  132. #################################################
  133. #               CODE PRINCIPAL                  #
  134. #################################################
  135.  
  136. # Initialisation des leds
  137. number=1 ; ON
  138. sleep 0.3
  139. number=2 ; ON
  140. sleep 0.3
  141. number=3 ; ON
  142. sleep 0.3
  143. number=4 ; ON
  144. sleep 0.3
  145. number=5 ; ON
  146. sleep 0.3
  147. number=6 ; ON
  148. sleep 0.3
  149. number=7 ; ON
  150. sleep 1
  151.  
  152. allOFF
  153.  
  154.  
  155. i=0
  156. while [ ${i} -lt 200 ] ; do
  157.     # Récupération valeur actuelle utilisation CPU
  158.     idle=`vmstat 2 3 | tail -n1 | sed "s/\ \ */\ /g" | cut -d' ' -f 16`
  159.     cpu=$(( 100 - idle ))
  160.  
  161.     echo "######## $i / 200 ########"
  162.     echo "CPU usage: $cpu        (idle: $idle)"
  163.  
  164.     # Allumage des leds selon valeur de "cpu"
  165.     allOFF
  166.     if [ ${cpu} -lt 15 ] ; then
  167.         number=1    ; ON
  168.         echo " 1 0 0 0 0 0 0 "
  169.  
  170.     elif [ ${cpu} -lt 30 ] ; then
  171.         number=1    ; ON
  172.         number=2    ; ON
  173.         echo " 1 1 0 0 0 0 0 "
  174.  
  175.     elif [ ${cpu} -lt 45 ] ; then
  176.         number=1    ; ON
  177.         number=2    ; ON
  178.         number=3    ; ON
  179.         echo " 1 1 1 0 0 0 0 "
  180.  
  181.     elif [ ${cpu} -lt 60 ] ; then
  182.         number=1    ; ON
  183.         number=2    ; ON
  184.         number=3    ; ON
  185.         number=4    ; ON
  186.         echo " 1 1 1 1 0 0 0 "
  187.  
  188.     elif [ ${cpu} -lt 75 ] ; then
  189.         number=1    ; ON
  190.         number=2    ; ON
  191.         number=3    ; ON
  192.         number=4    ; ON
  193.         number=5    ; ON
  194.         echo " 1 1 1 1 1 0 0 "
  195.  
  196.     elif [ ${cpu} -lt 90 ] ; then
  197.         number=1    ; ON
  198.         number=2    ; ON
  199.         number=3    ; ON
  200.         number=4    ; ON
  201.         number=5    ; ON
  202.         number=6    ; ON
  203.         echo " 1 1 1 1 1 1 0 "
  204.  
  205.     else
  206.         number=1    ; ON
  207.         number=2    ; ON
  208.         number=3    ; ON
  209.         number=4    ; ON
  210.         number=5    ; ON
  211.         number=6    ; ON
  212.         number=7    ; ON
  213.         echo " 1 1 1 1 1 1 1 "
  214.     fi
  215.  
  216.     echo
  217.  
  218.     i=$(( i + 1))
  219. done
  220.  
  221. allOFF
  222.  
  223. exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement