HD | RaspberryPi B+ |
---|---|
OS | Raspbian GNU/Linux 8.0 (jessie) |
Python | ver 2.7.9 |
RaspberyPi a une commande simple appelée commandes vcgencmd
qui obtient des informations internes sur RaspberyPi.
RPI vcgencmd commands | Means |
---|---|
vcgencmd measure_temp | Température du CPU |
vcgencmd measure_clock arm | Fréquence du processeur Python |
vcgencmd measure_voltsp | Acquisition de tension |
vcgencmd get_mem arm | CPU(arm)utilisation de la mémoire |
vcgencmd get_mem gpu | GPU(gpu)utilisation de la mémoire |
J'avais l'habitude d'écrire ceci dans shell
, mais comme Python est plus compatible avec le dessin de graphe ultérieur, j'ai commencé avec le sentiment que je l'écrirais pour que les commandes externes puissent être exécutées en Python.
#!/usr/bin/env python$
#coding:utf-8$
#Importez la bibliothèque.$
import os
import commands
#Exécuter la commande de contrôle Raspbian (vcgencmd)$
#Commande RPi pour obtenir la température
temp = commands.getoutput("vcgencmd measure_temp").split('=')
print temp[1]
#Obtenir la fréquence du processeur
clock=commands.getoutput("vcgencmd measure_clock arm").split('=')
print clock[1]
#Obtenez la tension
volt=commands.getoutput("vcgencmd measure_volts").split('=')
print volt[1]
#CPU(arm),Utilisation de la mémoire GPU
arm=commands.getoutput("vcgencmd get_mem arm").split('=')
print arm[1]
gpu=commands.getoutput("vcgencmd get_mem gpu").split('=')
print gpu[1]
Résultat d'exécution
38.5'C
700000000
1.2000V
448M
64M
** getoutput () ** exécute des commandes externes à partir de Python. getoutput () renvoie uniquement le résultat de l'exécution de la commande. Si vous utilisez getoutput (), veuillez importer le module de commandes.
import commands
commands.getoutput('ls')
** str.split (sep) ** est une méthode qui divise les mots en une liste en utilisant sep comme délimiteur. Si aucun délimiteur n'est spécifié, il peut s'agir d'une règle spéciale séparée par des espaces, des tabulations et des chaînes de saut de ligne. Dans ce cas, ils sont séparés par «=». La raison en est que si vous l'exécutez sans fractionnement
temp = commands.getoutput("vcgencmd measure_temp")
print temp
Résultat d'exécution
temp=37.9'C
Cette fois, lors de son utilisation dans un graphique, la température est superflue car je ne veux utiliser que des valeurs numériques.
Séparez les caractères par split ('=')
.
temp = commands.getoutput("vcgencmd measure_temp").split('=')
print temp
Résultat d'exécution
['temp', "38.5'C"]
Puisqu'il se distingue comme une liste comme celle-ci, après cela, spécifiez l'indice et extraire et n'affichez que la partie numérique. De plus, étant donné que la valeur après avoir été séparée à ce stade est ** str type **, lorsque vous la traitez comme une valeur numérique, convertissez la chaîne de caractères en valeur numérique avec ** int () **.
temp = commands.getoutput("vcgencmd measure_temp").split('=')
temp_i = int(temp[1])
J'ai essayé d'obtenir la température du processeur de Raspberry Pi (Raspbian) sans utiliser cat Comment exécuter des commandes et des scripts shell externes avec python Split, join, rsplit