commander une camera Pi avec l application telegram

Piloter son installation depuis son smartphone, envoyer ou recevoir des SMS d'alerte... C'est ici !

Modérateur : Francois

Répondre
maxmed
Messages : 13
Enregistré le : lun. 13 nov. 2017 12:30

commander une camera Pi avec l application telegram

Message par maxmed » lun. 13 nov. 2017 15:54

[je n'avais vu qu'il y avait une section dédiée alors je me permet de reposter le tuto ici]

Je me suis amusé à configurer mon raspberry pi zero pour utilisé motion et telegram afin d'être prévenu sur mon smartphone de toute activité suspecte chez moi en mon absence.

voici la marche à suivre si vous voulez faire de même !

TUTORIEL CAMERA INTELLIGENTE ET TELEGRAM

Etape 1 : installation de raspbian

Sur le raspberry pi zéro W, j’ai décidé d'installer raspbian lite : https://www.raspberrypi.org/downloads/raspbian/

Pour ce faire vous pouvez utiliser l’outil que vous préférez. J’utilise personnellement “win32 disk manager” sous windows avec une carte microsd et un adaptateur.

Afin de me passer d’adaptateur micro usb (pour le clavier) et micro hdmi ( pour l’écran) , vous pouvez préconfigurer ma carte sd afin d'activer par défaut le SSH et de configurer avant lancement la connexion wifi.

a) Activer la connexion SSH
Depuis la version Pixel de Raspbian en décembre 2016, la connexion SSH est désactivée par défaut. Pour activer le SSH, il suffit de créer un fichier nommé “ssh” à la racine.

b) Activer la connexion WiFi
Créer un nouveau fichier à la racine appelé “wpa_supplicant.conf” contenant :

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=FR
network={
ssid="votre nom du SSID exemple livebox0000 "
psk=" le PASSWORD de votre reseau wifi"
key_mgmt=WPA-PSK
}

Ça ne marche pas avec du WEP. Vérifiez bien la présence de deux fichiers à la racine de la carte SD. Vérifiez bien les paramètres de connexion au réseau WiFi. Ejectez la carte SD de votre ordinateur.

Etape 2 : Installation de la camera raspberry pi

J'ai choisi d'installer la caméra : (liens optionnels, c’est juste les shop sur lesquels j’ai l'habitude d'acheter mon matériel)
https://www.kubii.fr/fr/home/1653-nouve ... 10881.html
https://thepihut.com/products/raspberry ... era-module
https://www.modmypi.com/pis-and-periphe ... 2-8mp1080p

Mais libre à vous d’utiliser celle que vous préférez. Néanmoins il pourrait y avoir quelques subtilités d’installation.

Cette camera se branche sur le port camera du raspberry pi zero, cependant il vous faudra le cable adapté au pi zero, le connecteur étant plus petit que sur un raspberry pi B :
https://www.modmypi.com/raspberry-pi/ca ... able-150mm
https://thepihut.com/products/raspberry ... ra-adapter

Etape 3 : lancer Raspbian

a) Premier démarrage
Insérez la carte de SD dans le lecteur et mettez le Raspberry Pi Zero W sous tension. Le connecteur d’alimentation est le connecteur micro-USB situé à côté du connecteur caméra.

b) Comment trouver le PiZero sur le réseau ?

Le Pi Zero est maintenant démarré. Pour vous connecter au raspberry vous allez avoir besoin de son adresse local sur votre réseau. Pour la trouver, il existe plusieurs moyens à votre disposition.
1)A l’aide du routeur
La première solution consiste à se connecter à l’interface d’administration de votre routeur (freebox, livebox …). Vous pourrez ainsi retrouver l’adresse local de votre raspberry pi parmis les appareils connectés.

2)A l’aide d’un scanner réseau
Il existe de nombreux scanners réseau. Certain antivirus vous propose d'ailleur un scanner de réseau intégré.


c)Se connecter en SSH avec “putty”

Sous Windows pour vous connecter à votre raspberry pi zéro avec le protocole “SSH” vous aurez besoin du logiciel “Putty”:
http://www.putty.org/

Une fois installé, lancez Putty, rentrez l’adresse local de votre raspberry pi sur le réseau et appuyez sur OK (votre raspberry doit être allumé et connecté au réseau). Une fenêtre devrait s’ouvrir et vous demander un login.

Le login de raspbian par défaut est “pi” et le mot de passe est “raspberry”


Etape 4 : installation du service “Motion”

Comme toujours avant de procéder à une installation sur raspbian faite un petit :
Sudo apt-get update
Sudo apt-get upgrade

De même, il vous faudra peut être activé la caméra via le panneau de configuration du raspberry pi : raspi-config

Puis on va commencer par installer Motion :
sudo apt-get install motion


Etape 5 : configuration de Motion via le fichier Motion.conf

Vous allez maintenant tâcher de configurer Motion sur votre Raspberry Pi pour en faire une caméra de sécurité.

Dans un premier temps, assurons-nous que Motion tourne en permanence.
Pour cela, éditez le fichier « /etc/default/motion » et modifiez la ligne « start_motion_daemon » en :start_motion_daemon=yes

Maintenant, vous allez modifier un certain nombre de points de la configuration de Motion, afin de régler au mieux votre système de vidéosurveillance.
Pour cela, éditez le fichier « /etc/motion/motion.conf », dans certains cas ce fichier se trouvera plutôt dans « /etc/motion.conf ».

Vous allez modifier certaines lignes de ce fichier de façon à ce qu’elles correspondent aux lignes ci-dessous :
#On active le daemon
daemon on
#On utilise le fichier /tmp/motion.log pour stocker les logs
logfile /tmp/motion.log
#On règle la résolution (adapter la résolution à celle de votre camera. Ici, nous avons réglé pour la caméra de la raspberry pi)
width 1280
height 720
#On règle le nombre d'images prises par seconde
framerate 2
#On règle le nombre d'images enregistrées avant et après un mouvement (ici 2 avant 2 après)
pre_capture 2
post_capture 2
#On règle le code, pour une lecture sur de nombreux médias
ffmpeg_video_codec msmpeg4


Par défaut Motion diffuse la vidéo sur le port 8080 ou 8081 du Raspberry Pi. Si vous souhaitez modifier ce port, modifier la ligne “webcontrol_port”.

Si vous voulez autoriser la lecture du flux depuis internet pour permettre l'accès en ligne à la vidéosurveillance il faudra modifier la ligne “stream_localhost” et se référer à d’autre tutoriel en ligne


a) Cas particulier :

Il se peut que motion ne reconnaisse pas votre caméra pi dans ce cas tenter la commande :
sudo modprobe bcm2835-v4l2
echo "bcm2835-v4l2" | sudo tee -a /etc/modules


Etape 6 : Installation de “telepot”

Telepot est un programme python permettant de communiquer via le système de Bot API de telegram avec raspbian. C’est intéressant car cela va permettre de communiquer avec votre raspberry pi via votre smartphone et l’application telegram

Pour l'installer sur raspbian:
sudo apt-get install python-pip
sudo pip install telepot

Pour installer telegram sur votre smartphone :
Accédez à App Store (iPhone) ou Play Store (Android), téléchargez et installez Telegram sur votre téléphone.

Etape 7 : configuration de telepot

a)Création d’un compte Bot

Il va falloir commencer par créer un compte Bot sur telegram. Voila la marche à suivre :
Ouvrez Telegram sur votre téléphone, recherchez un utilisateur appelé BotFather. Comme son nom l'indique, il est le père de tous les robots.

Pour obtenir un compte de bot, envoyez lui le message : /newbot. (vous avez besoin de la barre oblique '/' devant).
Il vous posera ensuite quelques questions. Donnez lui un nom.

À la fin du processus, vous recevrez un jeton (token), quelque chose comme 123456789: ABCdefGhIJKlmNoPQRsTUVwxyZ. Ce jeton représente le compte du bot. Vous allez avoir besoin de ce jeton (token).

Vous allez aussi avoir besoin de votre ID telegram aussi appelé chat_id mais c’est plus complexe à récupérer donc on va attendre un petit peu.

b)Création des scripts sous raspbian

Il va falloir maintenant rédiger un script pour expliquer au Bot ce qu’il doit faire lorsqu'il recevra des commandes via telegram

Vous allez créer un dossier (ou vous voulez) exemple :
mkdir /home/pi/telepotscript
sudo chmod 755 (ou 777) /home/pi/telepotscript

Puis vous allez rédiger un script python :
Nano /home/pi/telepotscript/monscriptdecommand.py

import subprocess
import os
import sys
import time
import random
import datetime
import telepot

def handle(msg):
chat_id = msg['chat']['id']
command = msg['text']
print 'recu commande: %s' % command

if command == '/roll':
bot.sendMessage(chat_id, random.randint(1,6))
elif command == '/check':
subk1 = subprocess.Popen(["service", "motion","status"], stdout=subprocess.PIPE)
out, err = subk1.communicate()
print 'status'
bot.sendMessage(chat_id, out)
elif command == '/start':
subk2 = subprocess.call(["service", "motion","start"])
print 'start motion service'
bot.sendMessage(chat_id, 'camera activé')
elif command == '/stop':
subk2 = subprocess.call(["service", "motion","stop"])
print 'stop motion service'
bot.sendMessage(chat_id, 'camera desactivé')
elif command == '/myid':
bot.sendMessage(chat_id, chat_id)
elif command == '/stoptelebot':
os._exit(1)

bot = telepot.Bot('ici ecrire son token')
bot.message_loop(handle)
print 'i am listening...'

while 1:
time.sleep(10)



Maintenant on va pouvoir le lancer :
Sudo python /home/pi/telepotscript/monscriptdecommand.py

Comme vous pouvez le voir vous pouvez désormais contrôler votre raspberry pi via telegram en vous connectant à votre Bot et en lui envoyant différente commande:”/check”,”/roll”,”/start”,”/stop”...

Quitter le script via ctrl z. Il faut maintenant le faire démarrer automatiquement au démarrage de Raspbian. Pour cela vous allez éditer le fichier rc.local:
sudo nano /etc/rc.local

Et rajouter avant le “exit(0)” le chemin d'accès à votre script :
python /home/pi/telepotscript/monscriptdecommand.py &
(Attention n’oubliez pas le “&” sans quoi vous risquez un probleme au demarrage de votre raspberry pi)

c)Recuperer le Chat_id

C’est le moment de récupérer le “chat_id”. Pour ce faire, envoyez à votre bot via votre smartphone et telegram la commande “/myid”. Il devrai vous retourner votre ID sous la forme d’un numéro.

Maintenant que vous avez votre ID, vous allez pouvoir commencer à faire des chose intéressante avec Motion

Vous allez créer 2 nouveau scripts

Nano /home/pi/telepotscript/Inittelepotmotion.py


import telepot
bot = telepot.Bot('ici rentrez votre token')
bot.sendMessage('ici rentrez votre id',”mouvement détecté”)


Nano /home/pi/telepotscript/sendpicturemotion.py

import sys
import telepot
from sys import argv
argument = argv
f = open(argument[1], 'r')
bot = telepot.Bot('ici rentrez votre token')
bot.sendPhoto('ici rentrez votre id',f)

e)Dernière modification de motion.conf
Une fois les 2 scripts créés, vous allez de nouveau modifier le fichier motion.conf comme expliqué plus haut.

Vous allez chercher la ligne
;on_motion_detected
Et la modifier comme suit
on_motion_detected python /home/pi/telepotscript/Inittelepotmotion.py
(ne pas oublier d’enlever le point virgule devant)

De même pour la ligne :
;on_picture_save
Modifiez la comme suit :
on_picture_save python /home/pi/telepotscript/sendpicturemotion.py

Désormais Motion vous préviendra via telegram de toute activité suspecte à la caméra
Vous pourrez désactiver Motion via la commande : /stop, redémarrer via la command /start.

Libre à vous de modifier le script monscriptdecommand.py pour lui faire faire encore plus de chose !

Répondre

Retourner vers « Téléphonie et télécommunication »