Caméra de surveillance à accès directe

Création d’une caméra de surveillance à partir d’un Raspberry PI Zero 2W et d’une caméra standard (type OV5647). Cette caméra est accessible via un navigateur depuis Internet. Elle est en accès directe sans passer par un serveur externe contrairement aux cameras classiques du commerce. Il faudra pour cela configurer la Box internet.

Les pièces pour l’impression 3D sont disponibles sur le site Cults3D. Aller sur ce site et rechercher « corejo »

En standard, le système d’exploitation du Raspberry est stocké sur une carte mémoire amovible. Une carte au format Micro SD. La préparation de la carte Micro SD peut être réalisée de deux façons. Pour cela on peut soit déposer une image préparée pour ce projet, ou bien refaire toutes les étapes de préparation pour arriver au même résultat. Ici toutes les étapes sont décrites.

Liste des étapes d’installation :

Installation de l’OS Raspberry sur la carte Micro SD
Création des fichiers de configuration sur la racine de la carte Micro SD
1er Démarrage du Raspberry
Création du répertoire d’installation de l’application
Génération des fichiers pour la connexion sécurisée SSL
Création des fichiers de l’application
Configuration pour le démarrage automatique de l’application
Configuration de la Box pour l’accès directe
Formatage de la carte Micro SD

Mettre la carte Micro SD dans l’ordinateur. Si celle-ci n’est pas reconnue aller à l’étape « Formatage de la carte Micro SD » à la fin de ce document.

Installation de l’OS Raspberry sur la carte Micro SD

Télécharger l’outils de récupération d’image « Raspberry Pi Imager » à  partir du site :https://www.raspberrypi.com/software/

Une fois installer, lancer l’application :

Sélectionner le modèle, cliquer sur « CHOISIR LE MODELE » :

Il s’agit d’un Raspberry Pi Zero 2W

Sélectionner L’OS et aller dans Other en cliquant sur « > » :

Sélectionner « Raspberry Pi OS (Legacy, 32-bit) Lite » :

Sélectionner le stockage :

Ou bien. Cela dépend si la carte a déjà servi à une installation d’Os Raspberry.

Dans tous les cas, il récupère la totalité de l’espace. Soit 32 Go. On peut prendre une carte Micro SD plus petite. 8 Go par exemple.

Une fois les trois options définies, cliquer sur « SUIVANT » :

Cliquer sur « MODIFIER REGLAGES » :

Modifier la configuration d’installation avec les paramètres suivants :

Nom d’hôte                      = PICAMERA

Nom d’utilisateur           = camera

Mot de passe                   = rubby (c’est un exemple qui ne dépend pas du clavier QUERTY / AZERTY)

SSID                                     = Ici c’est le nom de la Box

Mot de passe                   = ici c’est le mot de passe de la Box

Attention, le nom d’utilisateur sera utilisé plus bas pour le démarrage automatique du serveur Web.

Puis cliquer sur « ENREGISTRER » :

Pour continuer l’installation, cliquer sur « OUI » :

Cliquer sur « OUI » :

L’écriture de l’OS sur la carte Micro SD commence :

Ensuite c’est la vérification :

La préparation est terminée cliquer sur « CONTINUER » :

Fermer l’application « Raspberry Pi Imager ».

Plusieurs fenêtres de l’explorateur vont s’ouvrir. Il faut les refermer en cliquant sur « ANNULER » :

Ne pas tenir compte de ce message d’avertissement et cliquer sur « OK »

La carte Micro SD est prête pour déposer les fichiers avant d’être insérée dans le Raspberry.

Créer trois fichiers sur la racine de la carte Micro SD

Créer le fichier « wpa_supplicant.conf » sur la racine de la carte Micro SD. Remplacer les informations ssid et psk par celles de la Box. Attention de bien respecter les minuscules et majuscules et de supprimer les espaces.

Contenu du fichier :

============================================================

country=FR

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev

update_config=1

network={

  ssid= »nom de la box« 

  scan_ssid=1

  psk= »mot de passe de la box« 

  key_mgmt=WPA-PSK

}

============================================================

Dupliquer le fichier wpa_supplicant.conf en wpa_supplicant.bak au même endroit.

Céer le fichier « ma_config.conf » sur la racine de la carte Micro SD. Remplacer les informations user et password par celles souhaitées.

Contenu du fichier :

============================================================

user= « nom du compte utilisé lors de la connexion à la caméra »

password= « mot de passe associé à ce compte »

============================================================

Ces deux fichiers seront copiés automatiquement au démarrage du Raspberry dans le répertoire /boot.

On a maintenant trois nouveaux fichiers sur la racine de la carte Micro SD.

Le fichier « wpa_supplicant.conf » disparaitra au démarrage du Raspberry, c’est pour cela que l’on a créé une sauvegarde (.bak)

1er Démarrage du Raspberry

Mettre la carte Micro SD dans le Raspberry et brancher le.

La Box va lui affecter automatiquement une adresse IP. Il faut découvrir cette adresse. Elle sera de la forme 192.168.1.xxx

Sur le PC, ouvrir une invite de commandes :

Et faire des essais pour joindre le Raspberry :

Taper

ping 192.168.1.38

ping 192.168.1.39

ping 192.168.1.40

etc..

Jusqu’à obtenir une réponse :

Une fois une réponse positive taper la commande pour valider qu’il s’agit bien du Raspberry.

ping -a 192.168.1.38

Ici l’adresse 192.168.1.38 correspond à la machine raspberrypi.home

Création du répertoire d’installation de l’application

L’application est un script écrit en Python. Cette application est déposée dans le répertoire « cam1 ».

Télécharger l’utilitaire WinSCP depuis le site « https://winscp.net/eng/download.php »

Lors de la première connexion, saisir l’adresse IP du Raspberry et cliquer sur « Connexion » :

(l’adresse trouvée précédemment)

Cliquer sur « Oui » pour accepter la connexion :

Si cette opération a déjà été faite pour cette carte Raspberry, alors le message est différent et cliquer alors sur « Mettre à jour » :

Saisir le nom de l’utilisateur et cliquer sur « OK » :

Saisir de mot de passe et cliquer sur « OK »

Sélectionner la colonne de droite (celle du Raspberry)

Et presser sur « F7 » pour créer un nouveau répertoire « cam1 » :

Le répertoire cam1 vient d’être créé :

Génération des fichiers pour la connexion sécurisée SSL

Télécharger l’utilitaire Putty sur le site https://www.putty.org/

Lancer Putty :

A la première connexion vers le Raspberry il faut accepter. Cliquer sur « Accept »

Entrer le compte et le mot de passe :

Entrer la commande cd cam1 pour aller dans le répertoire cam1 qui vient d’être créer.

Dans le répertoire /cam1 entrer la commande suivante pour générer les fichiers de sécurité

openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365

Répondre aux questions successives en respectant minuscules et majuscules :

( les réponses sont en caractères gras)

Enter PEM pass phrase = gogo

Verifying -Enter PEM pass phrase = gogo

Country Name = FR

State or Province Name = FRANCE

Locality Name = PARIS

Organisation Name = HOME

Organizational Unit Name = FAMILY

Common Name = HARRY

Email Address = . (une réponse vide c’est un .)

Les deux fichiers ont été créés cerp.pem et key.pem :

Création des fichiers de l’application

Télécharger et copier les fichiers suivants dans le répertoire /home/camera/cam1 du Raspberry avec WinSCP :

(attention respecter les minuscules dans les noms des fichiers)

login.html

login_not_okay.html

login_okay.html

my_webpage.html

server_https_login.py

Il faut copier le contenu du fichier server_https_login.doc dans un nouveau fichier server_https_login.py

Attention : C’est un script python où il faut absolument respecter l’indentation sinon il y aura des erreurs lors de l’exécution.

Pour tester l’application, ouvrir une session avec Putty, aller dans le répertoire /cam1 et lancer la commande suivante :

cd cam1

sudo python3 server_https_login.py

S’il n’y a pas d’erreur dans le fichier, le service Web est en attente d’une connexion sur le port 8443

Configuration pour le démarrage automatique de l’application

Pour que le serveur Web soit lancé au démarrage du Raspberry il faut modifier le fichier /etc/rc.local avec winSCP.

Dans un premier temps changer les permissions sur le fichier. Aller dans le répertoire /etc du Raspberry. Ouvrir une console.

Taper la commande « sudo chmod 777 rc.local » et « Exécuter ».

Fermer la console et dans le répertoire /etc et faire un clique droit sur le fichier rc.local pour le modifier (Editer) :

Avant la dernière ligne (exit 0), ajouter les deux lignes suivantes :

cd /home/camera/cam1/

/usr/bin/python3 /home/camera/cam1/server_https_login.py

Sauvegarder la modification :

Le message d’avertissement suivant apparait, cliquer sur « Passer ». La modification a été prise en compte :

Remettre les permissions initiales sur le fichier /etc/rc.local . Entrer la commande « sudo chmod 755 rc.local » et cliquer sur « Exécuter »

Il faut maintenant redémarrer le Raspberry pour que ces opérations soient prises en compte.

Ouvrir une console dans winSCP et taper la commande « sudo shutdown -r now » et cliquer sur « Exécuter » :

WinSCP perd alors la connexion avec le Raspberry. Cliquer sur « OK » :

Configuration de la Box pour l’accès directe

Dans un navigateur entrer l’adresse suivante :

https://192.168.1.1

C’est en générale l’adresse pour se connecter à sa Box depuis la maison (réseau interne)

Ici, il s’agit d’une Box de l’opérateur Orange.

Saisir le mot de passe et cliquer sur « Connexion »

Le mot de passe est fourni avec la documentation de la Box.

Il faut réaliser deux opérations. La première consiste à récupérer l’adresse IP publique de la Box.

La seconde sera d’ajouter une règle pour accéder au Raspberry depuis l’extérieur.

Aller dans le menu « Informations système » :

Sélectionner l’onglet « Internet »

La ligne 4.10 indique l’adresse publique de la Box (Adresse IPv4 WAN)

C’est avec cet adresse que l’on peut se connecter à la Box depuis internet.

Pour autoriser une connexion depuis Internet sur un équipement situé dans la maison comme le Raspberry, il faut ajouter une règle. Aller dans le menu « Réseau » :

Sélectionner l’onglet « NAT / PAT »

Ajouter la règle suivante :

Il s’agit ici d’une Box Orange. Ce qu’il faut retenir sur la création de cette règle c’est :

On veut accéder au serveur Web qui est sur le Raspberry. Ce serveur Web est sécurisé (HTTPS).

Ensuite il est accessible sur le port « 8443 » depuis l’extérieur et on ne change pas de port en interne. On peut le modifier dans le script Python. On pourrait le changer si ce port était déjà utilisé par une autre application par exemple.

On avait identifié l’adresse IP du Raspberry comme 192.168.1.38

Pour d’autres Box que celle d’orange, les informations à fournir sont sensiblement les mêmes. Les intitulés sont peut-être différents, mais la démarche est la même.

Les Box sont là pour protéger les équipements de la maison. Donc par défaut on ne peut pas y accéder. Il faut créer un canal (une règle) pour y arriver. Ensuite le Raspberry est protégé par un compte et un mot de passe. Si des tentatives de connexion malveillantes sont réalisées, elles sont enregistrées dans le fichier « app.log »

Maintenant la caméra est accessible depuis un smartphone avec l’adresse publique récupérée un peu plus haut. Cette adresse publique peut changer dans le temps. Donc en cas de problème de connexion, vérifier de nouveau l’adresse IPWan dans l’application de la Box.

Lien pour se connecter à la caméra

Https://IPWan:8443

Formatage de la carte Micro SD

Taper dans la barre de recherche :  « Gestion des disques »

Dans la liste de résultat, sélectionner :

La carte Micro SD apparait avec la lettre E :

C’est une carte de 32 Go. Celle-ci avait déjà été utilisée pour un Raspberry. Elle est divisée en deux partitions.

Il faut les supprimer. Clique droit sur la partition de 28,87 Go et « Supprimer le volume ».

Cliquer sur Oui

La partition change d’état pour devenir « Non alloué » :

Faire de même avec la Partition principale et « Supprimer le volume… » :

Cliquer sur Oui

La carte Micro SD est maintenant complètement libre (non allouée)

On peut la configurer à nouveau en créant un volume :

Suivre les étapes dans l’assistant de création. Cliquer sur « Suivant »  :

La taille du volume par défaut est 29816. Cela ne sert à rien de le réduire car il sera redimensionné lors de la copie de l’image. Cliquer sur « Suivant »  :

Laisser la lettre assignée automatiquement (Ici F) et cliquer sur « Suivant » :

Utiliser les paramètres par défaits pour formater la partition et cliquer sur « Suivant » :

La carte est maintenant prête pour le formatage. Cliquer sur « Terminer » :

Une partition de 19,12 Go vient d’être créée :

L’explorateur de fichier s’ouvre sur la nouvelle ressource [F] :

La carte Micro SD est maintenant prête pour l’installation de l’OS Raspberry.