Construction d’un moniteur système multi-plateforme avec Ubidots (1 / 3 étapes)

Étape 1: Écrire le scénario

Nous commençons. Notre objectif est de créer un programme qui utilise la source de données « Moniteur » aux valeurs du rapport des trois variables : cpu_percent (pour cent du processeur en cours d’utilisation), mem_percent (pour cent de mémoire vive en cours d’utilisation) et disk_percent (pourcentage du disque dur en cours d’utilisation). Pour donner au programme une saveur supplémentaire, nous rechercher ces variables et la source de données par nom et les créer seulement si nécessaire.

La première partie de n’importe quel programme Python est la ligne de shebang ainsi qu’une description du programme dans un docstring. Offrant une bonne description est une pratique saine.

 #!/usr/bin/python""" Monitoring Statistics via UbidotsThis script sends CPU, Memory, and Disk Usage statistics toUbidots for visualization and insights. This script is crossplatform and will work on Windows, Linux, and OS X. """ 

Nous importons des quatre modules. Nous prenons uniquement la fonction gethostname() provenant du module de prise de courant et juste la variable argv du module sys.

 from socket import gethostnamefrom sys import argv import psutil import ubidots 

Nous allons maintenant définir la méthode principale. Le programme aura un argument de ligne de commande, et ce sera la clé API Ubidots. La dernière ligne ci-dessous instancie une instance de ApiClient que nous allons utiliser pour le reste du programme.

 def main(): """Main routine for the script.""" if len(argv) != 2: print "Usage: %s API_KEY" % argv[0] return api = ubidots.ApiClient(argv[1]) 

Maintenant, nous allons écrire du code pour rechercher la source de données correspondant au nom souhaité de notre source de données: « Monitor ». Si aucune telle source de données n’existe, nous prenons le temps de le créer.

 ds_name = gethostname() + " Monitor" ds = None for cur_ds in api.get_datasources(): if cur_ds.name == ds_name: ds = cur_ds break if ds is None: ds = api.create_datasource({"name": ds_name}) 

Avec notre variable ds créée, nous sera maintenant suivent un modèle semblable de la recherche et la création sinon trouves pour chacune des variables. En dehors de votre fonction principale, définir cette fonction d’assistance :

 def get_var_by_name(var_name, ds): """Search for a variable in a data source. If found, returns the variable. If not found, returns None.""" for var in ds.get_variables(): if var.name == var_name: return var return None 

Retour dans la fonction main :

 var_cpu = get_var_by_name("cpu_percent", ds) var_mem = get_var_by_name("mem_percent", ds) var_disk = get_var_by_name("disk_percent", ds) if var_cpu is None: var_cpu = ds.create_variable({"name": "cpu_percent", "unit": "%"}) if var_mem is None: var_mem = ds.create_variable({"name": "mem_percent", "unit": "%"}) if var_disk is None: var_disk = ds.create_variable({"name": "disk_percent", "unit": "%"}) 

Maintenant, à la fin de notre fonction principale, nous allons faire les appels appropriés aux fonctions dans le module psutil pour enregistrer la valeur. Le code ci-dessous examine toutes les partitions disponibles et choisit le premier rapport sur.

 # Utilize the psutil module to send values to Ubidots. first_mnt = psutil.disk_partitions(all=False)[0].mountpoint var_cpu.save_value({"value": psutil.cpu_percent(interval=1)}) var_mem.save_value({"value": psutil.virtual_memory().percent}) var_disk.save_value({"value": psutil.disk_usage(first_mnt).percent}) 

Articles Liés

Une Table Multi-Touch avec un Point de contrôle de l’utilisateur AI

Une Table Multi-Touch avec un Point de contrôle de l’utilisateur AI

l'optique Interface Design Club (OIDC) est une organisation d'étudiant fondée sur la recherche/conception fondée dans l'Université d'Alabama à Huntsville sur le semestre d'automne 2012. L'OIDC vise à fournir à tous les étudiants - en particulier les
Un système hydroponique Simple avec MediaTek LinkIt™ un

Un système hydroponique Simple avec MediaTek LinkIt™ un

Aujourd'hui, nous voulons décrire un projet basé sur le Mediatek Linkit un nouveau Conseil d'administration. Avec cette carte, nous voulons réaliser un système hydroponique simple, qui est capable de :1) préparation de la solution nutritive hydroponi
Système d’alarme avec envoi de SMS et E-mail depuis votre appareil ITO

Système d’alarme avec envoi de SMS et E-mail depuis votre appareil ITO

Les notifications de téléphone sont un bon moyen pour obtenir alerté sur untoute activité inhabituelle. Lorsque nous développons une solution IoT, il est toujours bon d'envoyer des SMS au téléphone de l'utilisateur pour certaines activités comme les
Système d’alarme avec LabVIEW et MyRIO-1900

Système d’alarme avec LabVIEW et MyRIO-1900

Ce Instructable consiste à faire un système de Buzzer avec NI MyRIO-1900Notes de l'avant projet :Pour un concours de Quiz, le plus rapide et la bonne réponse seront considérées, qui n'est pas possible manuellement pour le maître de jeu-questionnaire
Moniteur système de téléappel 3001 de garage

Moniteur système de téléappel 3001 de garage

il s'agit d'un système de pagination à jour pour le Garage moniteur 3001 (GM3K1).J'utilisais Nagios avant pour la pagination, mais après le passage en le SheevaPlug, j'ai décidé de sauter l'installation de Nagios et il suffit d'utiliser un script pou
Moniteur système avec Arduino et affichage 7 segments

Moniteur système avec Arduino et affichage 7 segments

Récemment j'ai reçu un nouvel ordinateur et jeux vidéo. J'aime écouter mon système tout en ayant le plein écran Jeux : je veux voir ma température GPU et ma quantité de RAM utilisée (Minecraft FTB mange un grand nombre de, comme 3-6 GB!).J'ai eu un a
Arduino Accueil Moniteur système

Arduino Accueil Moniteur système

salutations !Dans ce Instructable, je détaillerai comment j'ai fait mon propre système de sécurité résidentiel homebrew basée sur Arduino. Je le reconnais, il n'est pas le plus sûr dans son état actuel, mais compte tenu de certaines modifications et
Annoncez votre entreprise avec des applications multi-plateformes web

Annoncez votre entreprise avec des applications multi-plateformes web

récemment, j'ai trouvé un site qui vous permet d'effectuer une application de web iPhone qui peut être ajoutée sur la page d'accueil et qui ont l'apparence d'une application ordinaire.Avec ce service, vous êtes capable de créer une application iphone
IoT NFT système aquaponique Controler avec WebApp (Intel Edison & Node.js)

IoT NFT système aquaponique Controler avec WebApp (Intel Edison & Node.js)

AquaponiqueAquaponique combine l'Aquaculture (poissons de plus en plus) avec la culture hydroponique (culture des plantes dans l'eau). Poissons excrètent est décomposé par des bactéries en nitrates qui sont absorbés par les plantes sous forme de nutr
IBeacon système de saisie avec le Raspberry Pi et Azure

IBeacon système de saisie avec le Raspberry Pi et Azure

À la fin mars, je suis allé à un hackathon à Universal Studios. Nous avons créé un système où les invités pourraient contourner la ligne de file d'attente en complétant une série de tâches qui seraient amener autour de la terre, le trajet est en déla
Moniteur pour bébé Polaroid avec RPi

Moniteur pour bébé Polaroid avec RPi

Quand ma copine et moi avons eu notre premier bébé au mois d'août, nous regardions de solution pour un moniteur de bébé, mais dang ces choses coûtent chers. En plus de cela la plupart des moniteurs nous n'ont pas donné les caractéristiques que nous v
Comment faire un système d’autowatering avec des articles ménagers

Comment faire un système d’autowatering avec des articles ménagers

vous prévoyez d'aller en vacances, mais vous n'avez pas quelqu'un pour arroser vos plantes pendant ce laps de temps ?Au lieu d'acheter une auto cher arrosage système, vous pouvez faire un avec des matériaux que vous pouvez trouver dans n'importe quel
Système d’éclairage avec détecteur de mouvement PIR et Arduino DIY chambre Smart

Système d’éclairage avec détecteur de mouvement PIR et Arduino DIY chambre Smart

Bonjour amis, sujet d'aujourd'hui est système intelligent Light Room et comment les détecteur de mouvement PIR détecte le mouvement et le travail en conséquence. Je vais vous parler du projet dans lequel vous apprendrez comment vous pouvez auto allum
Le streaming de la Xbox 360 à secousse en utilisant un vieux moniteur de PC VGA/DVI avec son séparée (moniteur sans haut-parleurs)

Le streaming de la Xbox 360 à secousse en utilisant un vieux moniteur de PC VGA/DVI avec son séparée (moniteur sans haut-parleurs)

Je voulais être en mesure de jeux de flux à Twitch TV de ma Xbox 360 dans le confort de ma propre chambre plutôt que la salle de séjour. Étant donné que je n'ai pas une TV dans ma chambre, j'ai eu connecter la Xbox à mon moniteur de PC. Le moniteur d