Table des matières:
- Étape 1: Configurer le matériel
- Étape 2: Configurer Dropbox
- Étape 3: Préparation de votre dossier d'application Dropbox
- Étape 4: Commencer avec le code
- Étape 5: approfondir le code
- Étape 6: Utilisation des fichiers de paramètres Dropbox
- Étape 7: Conclusion
Vidéo: Surveillance à domicile Raspberry Pi avec Dropbox : 7 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:09
Ce tutoriel vous montrera comment créer un système de surveillance domestique simple et extensible à l'aide d'un Raspberry Pi, d'une webcam, de quelques composants électriques et de votre compte Dropbox. Le système fini vous permettra de demander et de visualiser à distance des images de votre webcam tout en utilisant également un capteur de température numérique standard pour surveiller la température de votre maison sur Internet, le tout à l'aide de Dropbox.
C'était le premier projet que j'ai imaginé après avoir reçu un Raspberry Pi 2 modèle B. Mon objectif était de créer un système de surveillance basé sur Python que je pourrais contrôler et recevoir des données sur Internet. Bien qu'il existe de nombreuses façons de le faire, j'ai décidé d'utiliser Dropbox comme interface entre le Pi et Internet car ils ont une simple API Python qui vous permet de télécharger, de modifier et de rechercher des fichiers dans des dossiers spécifiques en utilisant quelques lignes de code.
Je voulais également que ma solution soit légère et simple, et qu'elle évite d'encombrer mon Pi avec des bibliothèques et des programmes inutiles. Le composant logiciel de ce projet consiste en un seul script Python, ce qui signifie que vous pouvez continuer à utiliser votre Pi normalement, même lorsque le système de surveillance est en cours d'exécution.
Pour ce projet, vous aurez besoin de:
Un Raspberry Pi. N'importe quel modèle devrait fonctionner, j'ai utilisé un kit de démarrage tout-en-un, mais vous n'avez peut-être besoin que de l'unité centrale
Une webcam USB. J'ai acheté un ADVENT AWC72015 bon marché, qui a bien fonctionné. Il peut être judicieux de consulter cette liste de webcams dont le fonctionnement est confirmé avec le Pi. Notez que certains nécessitent un hub USB alimenté (le mien fonctionne très bien sans)
Un compte Dropbox. J'utilise mon compte gratuit standard car ce projet ne nécessite pas beaucoup d'espace de stockage
Un capteur de température numérique DS18B20 et une résistance de 4,7k. Vous pouvez acheter le capteur ici, et cela peut valoir la peine de vous procurer également un pack de différentes résistances
Quelques accessoires de construction de circuits. Je recommanderais d'utiliser une planche à pain et des câbles de démarrage pour rendre le processus de construction du circuit aussi simple que possible
[Si vous décidez d'acheter l'un de ces produits, j'apprécierais grandement que vous accédiez aux listes en utilisant les liens ci-dessus - de cette façon, je reçois une infime part des bénéfices sans frais supplémentaires pour vous !]
Étape 1: Configurer le matériel
La première étape consiste à vous assurer que votre Pi et les périphériques associés sont configurés.
Tout d'abord, connectez votre Pi à Internet. Cela est nécessaire pour garantir que le programme de surveillance peut recevoir vos demandes et télécharger des données vers Dropbox. J'utilise une connexion Ethernet pour assurer la fiabilité, mais une connexion Wi-Fi devrait également fonctionner correctement, tout en ayant également l'avantage d'une portabilité améliorée. Si vous choisissez le Wi-Fi, je recommanderais ce dongle USB pour le Pi.
Ensuite, connectez votre webcam au Pi en la branchant sur l'un des ports USB. Bien que les instructions de ma webcam de l'Avent ne disaient pas explicitement qu'elle fonctionnerait avec Linux, tout ce que j'avais à faire était de la brancher et de démarrer le Pi. Aucune autre installation n'a été nécessaire. Les autres webcams peuvent varier. Vous pouvez vérifier si votre webcam a été détectée par Linux à l'aide de la commande suivante:
lsusb
Dans l'image ci-dessus, ma webcam est répertoriée comme '0c45:6340 Microdia'
Enfin, vous pouvez connecter votre capteur de température DS18B20 à l'en-tête GPIO du Pi. J'utilise ma maquette pour faciliter le processus de création de circuits, et je vous recommande de faire de même, d'autant plus que le DS18B20 nécessite une résistance de 4,7 k à placer entre deux de ses trois broches. Ce lien fournit un bon schéma de câblage montrant comment une maquette peut être utilisée pour se connecter à ce capteur de température.
La page suivante du didacticiel ci-dessus couvre également les étapes nécessaires pour lire les données du DS18B20 et vous montre comment vérifier qu'il fonctionne. Il est important d'effectuer ces étapes de configuration avant de pouvoir utiliser le DS18B20 pour ce projet. Nous intégrerons également l'exemple de script Python du didacticiel dans notre programme de surveillance, vous voudrez donc peut-être jeter un coup d'œil rapide sur ce code.
Veuillez également noter le numéro unique de votre DS18B20. C'est le numéro commençant par '28-' que vous rencontrez lors du tutoriel d'installation. Vous devrez l'entrer dans le prochain programme Python pour lui permettre de lire la température.
Étape 2: Configurer Dropbox
Pour que votre Pi s'interface avec Dropbox, vous devez configurer une nouvelle application Dropbox. Cela vous fournira les détails nécessaires à votre Pi pour effectuer une gestion de fichiers en ligne à l'aide de Python. En supposant que vous ayez créé un compte Dropbox et connecté, vous pouvez créer une nouvelle application à l'aide de l'option de menu " Développeurs ". Voir l'image ci-dessus pour un résumé des étapes importantes.
Dans le menu " Développeurs ", sélectionnez " Mes applications ", puis appuyez sur le bouton " Créer une application ". Pour remplir le formulaire résultant, sélectionnez ' Dropbox API ' suivi de ' App Folder '. Enfin, vous pouvez choisir un nom unique pour votre application dans Dropbox. Cliquez sur « Créer une application ».
Vous serez alors redirigé vers la page des paramètres de votre application dans Dropbox. Il n'y a qu'une autre chose que vous devez faire ici - générer vous-même un jeton d'accès. Pour ce faire, faites défiler jusqu'à la section " OAuth 2 " et sous " Jeton d'accès généré ", cliquez sur le bouton " Générer ".
Cela vous présentera une longue chaîne de caractères nécessaires pour accéder à votre compte Dropbox à l'aide de Python. Notez ce jeton d'accès car vous devrez le spécifier plus tard dans votre code. Si vous perdez le jeton, vous pouvez revenir aux paramètres de votre application en cliquant sur " Mes applications " dans la section Dropbox " Développeurs " et générer un nouveau jeton.
Vous pouvez laisser les autres paramètres tels quels. Pour confirmer que votre application a créé les dossiers nécessaires sur votre compte Dropbox, accédez à votre page d'accueil de stockage et recherchez le dossier « Applications ». Dans ce dossier devrait se trouver un sous-dossier avec le nom que vous avez choisi pour votre nouvelle application. C'est là que tous les fichiers de votre système de surveillance seront placés.
Étape 3: Préparation de votre dossier d'application Dropbox
Une fois que vous avez configuré votre application Dropbox, il est temps de réfléchir à la manière dont vous utiliserez le dossier résultant dans votre compte Dropbox pour interagir avec votre Pi. Ceci est accompli tout simplement. Le script Python qui s'exécutera sur le Pi utilisera un sous-ensemble de commandes de l'API Dropbox pour rechercher et modifier les noms de certains fichiers vides sans extension dans votre dossier d'application. Nous appellerons ces fichiers « fichiers de paramètres » car chacun vous permettra de contrôler un aspect différent du comportement du système de surveillance. L'image ci-dessus montre les quatre fichiers de paramètres qui doivent être présents dans le dossier de votre application Dropbox pour ce projet. Leur création est simple:
En commençant par votre dossier d'application complètement vide, ouvrez un programme d'édition de texte sur votre ordinateur. Bien que cela puisse être fait à l'aide du Pi, j'ai trouvé plus facile d'utiliser mon ordinateur portable Windows pour cette phase de configuration. Une fois l'éditeur de texte ouvert (j'ai utilisé le Bloc-notes sous Windows 7), il ne vous reste plus qu'à enregistrer un fichier texte complètement vide n'importe où sur votre ordinateur. Comme premier exemple, nous allons créer le premier paramètre dans l'image d'en-tête. Nommez le fichier 'delay=10' lorsque vous l'enregistrez.
Pour récapituler, vous devriez maintenant avoir un fichier texte vide stocké sur votre ordinateur avec le nom 'delay=10'. Le fichier aura également une extension '.txt' qui peut être visible ou non.
L'étape suivante consiste à télécharger ce fichier dans le dossier de votre application Dropbox. C'est comme n'importe quel autre téléchargement Dropbox. Accédez simplement au dossier de votre application, cliquez sur « Télécharger » et choisissez votre fichier « retard = 10 ».
Une fois ce fichier téléchargé, vous devez supprimer l'extension '.txt' qui devrait maintenant être visible dans le nom du fichier. Pour ce faire, faites simplement un clic droit sur le fichier et sélectionnez « Renommer ». Supprimez la partie '.txt' du nom de fichier. Vous devriez maintenant vous retrouver avec un fichier appelé 'delay=10' sans extension de fichier, comme indiqué dans l'image d'en-tête.
Le fichier de paramètres 'delay' est l'un des quatre qui seront utilisés par le programme de surveillance. Pour créer les autres, vous pouvez simplement copier et renommer votre fichier 'delay' en cliquant dessus avec le bouton droit. Une fois que vous avez créé trois copies, nommez-les comme indiqué dans l'image d'en-tête afin que votre dossier d'application soit identique à celui affiché au début de cette étape.
Étape 4: Commencer avec le code
Comme indiqué, le cœur de notre système de surveillance consistera en un seul script Python qui s'interfacera avec Dropbox. Pour que le programme de surveillance soit actif, ce script devra s'exécuter en arrière-plan sur votre Pi. Je suppose qu'il est décrit le plus précisément comme un script "démon", ce qui signifie que vous pouvez simplement le faire fonctionner et l'oublier. Le script est attaché à cette étape, il n'y a donc aucun sens à répéter le code ici. Le moment est peut-être venu de le télécharger et de vous familiariser avec.
Avant de pouvoir exécuter le script, il est important de vous assurer que les bibliothèques Python appropriées sont installées. Ceux dont vous avez besoin sont répertoriés en haut du script ci-joint. Elles sont:
importer la boîte de dépôt
importer pygame.camera importer l'heure d'importation du système d'exploitation
L'installation de Python sur mon Pi incluait déjà pygame, os et time, donc le seul que j'ai dû installer était Dropbox. Je l'ai fait en utilisant leurs instructions d'installation très simples avec pip.
Une fois vos bibliothèques configurées, vous devrez modifier les deux premières lignes du script joint pour qu'elles correspondent à votre jeton d'accès Dropbox et à l'identifiant unique de votre capteur de température DS18B20. Voici les deux lignes qu'il faut éditer:
APP_ACCESS_TOKEN = '**********'
THERMOMETRE_FILE = '/sys/bus/w1/devices/28-**********/w1_slave'
Remplacez simplement les **** par les valeurs correctes. À ce stade, vous êtes réellement prêt à commencer à utiliser le programme de surveillance ! Au lieu de simplement vous lancer, je vous recommande de passer à l'étape suivante pour un aperçu général du code.
IMPORTANT: lorsque vous exécutez ce script, vous souhaitez qu'il s'exécute en arrière-plan afin que a) vous puissiez continuer à utiliser le Pi, et b) lorsque vous fermez votre session SSH, le script continuera à s'exécuter. Voici la commande que j'utilise lorsque j'exécute le script:
nohup python DropCamTherm.py &
Cela accomplit trois choses: il exécutera le script ("python DropCamTherm.py"), il renverra immédiatement le contrôle à la ligne de commande afin que vous puissiez continuer à utiliser le Pi ("&"), et il enverra des sorties Python qui normalement être affiché sur la ligne de commande dans un fichier appelé 'nohup.out'. Cela peut être lu à l'aide d'un éditeur de texte Linux (mon préféré est nano) et sera créé automatiquement dans le répertoire à partir duquel le script est exécuté.
Étape 5: approfondir le code
Lorsque vous ouvrez le script, vous remarquerez qu'il se compose de trois fonctions et d'un bloc de code qui implémente ces fonctions lors de l'exécution du script. Les fonctions utilisent l'API Dropbox et accèdent au fichier journal de température du DS18B20 afin d'écouter les commandes de Dropbox et de télécharger la dernière lecture de température. Vous trouverez ci-dessous un aperçu de ce que font les fonctions et de la manière dont elles sont utilisées pour faire fonctionner le système de surveillance:
- poll_parameter():
Cette fonction montre le but des fichiers de paramètres Dropbox que nous avons créés à l'étape 3. Elle recherche dans le dossier de l'application Dropbox un fichier contenant le texte « param= ». Il extrait ensuite le texte après le '=' et essaie de le convertir en un entier. Vous pouvez voir que cela nous permet de contrôler le programme en ajoutant manuellement les numéros pertinents à la fin des fichiers de paramètres. L'étape suivante contiendra un bref manuel d'instructions vous montrant comment utiliser chacun des fichiers de paramètres pour contrôler un aspect du programme.
- set_parameter():
Cette fonction permet au programme de renommer un fichier de paramètres depuis Python. Il le fait à quelques reprises, principalement pour réduire le besoin d'un renommage manuel excessif des fichiers.
- set_latest_temp():
Cette fonction utilise set_parameter() pour télécharger la dernière température dans le dossier de l'application Dropbox en l'ajoutant au fichier de paramètres 'temperature'. La fonction lit la dernière température à partir du fichier journal du DS18B20 (qui est disponible sous Linux sur le chemin indiqué par la variable THERMOMETER_FILE).
La dernière partie du programme contient le code qui s'exécutera lors de l'exécution du script. Après quelques étapes de configuration requises pour le capteur DS18B20, il ouvre une session Dropbox à l'aide de votre jeton d'accès et utilise pygame pour rechercher votre webcam. Si une webcam est trouvée, elle entrera dans une boucle où elle utilisera poll_parameter() pour extraire des informations de Dropbox et agir en conséquence.
IMPORTANT: vous remarquerez la ligne de code suivante:
cam = pygame.camera. Camera(cam_list[0], (864, 480))
… cela tente de créer une interface de caméra utilisable à partir de la première webcam détectée par pygame. La résolution devra peut-être être modifiée pour correspondre à votre webcam. Expérimentez avec un certain nombre de valeurs pour trouver celle qui fonctionne le mieux.
Étape 6: Utilisation des fichiers de paramètres Dropbox
Alors maintenant, vous devriez avoir un script de travail qui, lorsqu'il est exécuté en utilisant les instructions de l'étape 4, permettra à votre Pi de commencer à surveiller le dossier de l'application pour vos entrées. Lors de votre première exécution, le dossier de l'application doit contenir les fichiers de paramètres suivants:
délai=10
exitprogram=0 imagerequest=0 température=0
L'interaction avec le programme est obtenue en renommant manuellement les fichiers de paramètres via Dropbox. Pour ce faire, faites un clic droit sur l'un des fichiers et sélectionnez « renommer ». Chaque fichier de paramètres a une fonction différente:
- retard:
Ce fichier indique au programme de surveillance combien de secondes il faut attendre entre chaque itération de la boucle de surveillance. Quand je sais que je n'interagirai pas beaucoup avec le programme, je le mets sur 60 ou 120. Quand je sais que je veux souvent demander des données au Pi, je le mets sur 10.
- programme de sortie:
Il doit être défini sur 1 ou 0. Si le programme détecte qu'il est défini sur 1, il terminera le script. Si vous le définissez sur 1 et que le script se termine, vous devrez vous reconnecter au Pi pour le redémarrer. Ce paramètre existe afin que vous puissiez terminer le programme de surveillance en douceur lorsque vous n'en avez plus besoin pour l'exécuter (par exemple, si vous êtes rentré chez vous et que vous ne souhaitez plus surveiller la webcam à distance).
-demande d'image:
C'est peut-être le paramètre le plus important. Cela doit être défini sur 1 ou 0. Si le programme détecte qu'il est défini sur 1, il demandera une image à la webcam et la téléchargera dans le dossier de l'application (avec le titre 'image.jpg'). Si un autre 'image.jpg' existe, il l'écrasera.
- Température:
Il s'agit de la lecture de température DS18B20 définie par la fonction set_latest_temp(). Vous ne devriez jamais avoir besoin de modifier ce fichier de paramètres - il est automatiquement défini par le programme.
Notez que si vous définissez 'exitprogram' ou 'imagerequest' sur 1, le programme les remettra automatiquement à 0 avant d'exécuter le code correspondant. C'est pour plus de commodité. Vous pouvez également remarquer que le code contient de nombreux blocs « try » et « except » entourant de nombreuses fonctions critiques. Cela permet de s'assurer que le script ne lancera pas d'exceptions (et ne cessera donc pas de s'exécuter) en cas de problème (comme un problème de connectivité Internet empêchant l'accès à Dropbox).
Étape 7: Conclusion
Ce projet a présenté un moyen de contrôler un Raspberry Pi en utilisant Python et Dropbox. Bien que le matériel utilisé dans ce projet soit un capteur de température et une webcam USB, il existe de nombreuses autres applications pour cette méthode de contrôle du Pi. En fait, tout composant matériel accessible via GPIO peut être contrôlé à l'aide d'une structure de programme similaire, ce qui rend le système très facile à étendre.
Dans une prochaine étape, vous pouvez également utiliser une bibliothèque d'interface graphique telle que Tkinter avec l'API Dropbox pour créer un programme client qui vous permettrait de modifier les fichiers de paramètres sans même avoir besoin de vous connecter à Dropbox.
J'espère que ce tutoriel a été clair, et si vous avez des questions ou souhaitez que je précise quelque chose, n'hésitez pas à poster un commentaire !
Conseillé:
Caméra IP utilisant le Raspberry Pi Zero (Surveillance à domicile Partie 1) : 5 étapes
Caméra IP utilisant le Raspberry Pi Zero (Surveillance à domicile Partie 1) : Il s'agit du premier article d'une nouvelle mini-série, où nous construisons un système de surveillance à domicile, principalement à l'aide de Raspberry Pis. Dans cet article, nous utilisons un Raspberry PI zero et créons une caméra IP qui diffuse la vidéo sur RTSP. La vidéo de sortie est d'un q beaucoup plus élevé
Sécurité à domicile avec Raspberry Pi : 6 étapes (avec photos)
Sécurité à domicile avec Raspberry Pi : C'est une solution simple qui peut vous faire sentir plus détendu lorsque vous quittez votre appartement - recevez des e-mails avec des photos de votre propriété visitée par des invités indésirables, armez et désarmez votre système de sécurité de la manière la plus simple et la plus fiable ( presse
Sécurité à domicile avec Orange Pi : 3 étapes (avec photos)
Sécurité à domicile avec Orange Pi : Il s'agit essentiellement de la même idée que dans mon précédent instructable : https://www.instructables.com/id/Home-Security-With… Le seul changement est l'utilisation de la carte Orange Pi (mon le choix était PC2) et un décaleur de niveau 4050 pour protéger les E/S des cartes. Pour résumer
Le Securibot : un petit drone de surveillance pour la sécurité à domicile : 7 étapes (avec photos)
Le Securibot : un petit drone de surveillance pour la sécurité à domicile : C'est un simple fait que les robots sont géniaux. Les robots de sécurité, cependant, ont tendance à être beaucoup trop chers pour une personne moyenne ou sont légalement impossibles à acheter; Les entreprises privées et les militaires ont tendance à garder ces appareils pour eux, et
Surveillance à domicile via Twitter et YouTube : 6 étapes
Surveillance à domicile via Twitter et YouTube : avec la dernière version de Yoics pour Windows, vous pouvez facilement transformer n'importe quelle webcam en votre propre système de surveillance personnel, où les vidéos sont automatiquement téléchargées sur YouTube & une notification Twitter est envoyée