Advertisement
chteuchteu

Raspberry Pi: monitoring de l'utilisation CPU grâce au GPIO

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