HantZ_
Posts: 7
Joined: Tue Jan 28, 2020 8:45 am

Contrôle d'une base de donnée avec un Raspberry

Tue Jan 28, 2020 9:31 am

Bonjour,

Tout d'abord je suis débutant qui vient d'acquérir un raspberry 3B+, étudiant en BTS Système Numérique 2ème année.

Pour ma partie de projet de cette année je dois faire mettre à jour une base de donnée (qui est sur internet) avec mon raspberry.

Le projet :
Il s'agit de détecter les personnes entrante et sortante d'un CDI, pour vous donnez une idée voici un schéma :
<a href='https://www.casimages.com/i/200128101223971974.jpg.html' title='Mon image'>Schéma</a>

Une personne rentre, elle est détecté par une barrière infra-rouge, elle envoi +1 à un arduino, qui lui envoi l'information +1 au raspberry qui update la base de donnée qui est sur internet. La base des donnée est accessible sur un site web et une application Android.
Le PC de la documentaliste est là pour corrigé s'il y a un problème, elle permettra de modifié le nombre de personne présente dans le CDI.
Nous devons faire également des statistique jour/semaine/mois/années.

<a href='https://www.casimages.com/i/200128102519834539.jpg.html' title='Mon image'>Lien vers les liaisons</a>
<a href='https://www.casimages.com/i/200128102822539943.png.html' title='Mon image'>Lien vers le diagramme de déploiement</a>
<a href='https://www.casimages.com/i/200128102948951469.png.html' title='Mon image'>Lien vers la carte mental</a>

Si vous avez des suggestions d'amélioration je suis preneur :)

J'ai voulu faire un serveur lamp sur le rasp mais comme la bdd n'est pas sur le rasp ça ne sert à rien.
Je n'ai pas trouvé comment update une base de donnée avec un raspberry, sachant qu'on a choisit un hébergeur gratuit (alwaysata), sachant que je n'ai pas beaucoup d’expérience sur le sujet je n'ai fait que 2 tables "etudiant_entrant" et "étudiant_sortant"

Merci, (c'est mon permier post, s'il manque des infos, soyez exigeant ^^ :) )

ernesto
Posts: 136
Joined: Thu Jul 19, 2012 10:09 am

Re: Contrôle d'une base de donnée avec un Raspberry

Tue Jan 28, 2020 11:20 am

Bonjour.
En général les hébergeurs gratuits n'autorisent pas l'accès aux bases de données depuis l'extérieur. (accès MySQL n'est pas possible depuis l'extérieur)
Une solution serait de créer un formulaire sur le site hébergé par alwaysdata puis de renseigner ce formulaire avec le Raspberry Pi.

Dans un premier temps je vous conseil de mettre au point votre projet avec un serveur lamp sur votre PI (cela procure beaucoup de facilitées de développement).
Puis vous n'aurez plus qu'a résoudre comment mettre a jour une BD externe (ce qui ne devrait pas être trop difficile).

Pourquoi un arduino ? La barrière infra rouge ne peut elle pas être gérée par le PI?

totoharibo
Posts: 4329
Joined: Thu Jan 24, 2013 8:43 am

Re: Contrôle d'une base de donnée avec un Raspberry

Wed Jan 29, 2020 10:24 am

pourquoi pas une bdd locale sqlite avec l'outil de gestion sqlitebrowser.
C'est mono-utilisateur et c'est sans doute suffisant pour toi.

OK avec ernesto pour gérer la barrière infrarouge par le RPi.

pour gérer le nombre de personnes un fichier contenant le nombre de personnes et mis à jour devrait suffire.
Pourquoi une bdd : un éléphant pour écraser une mouche.

Mieux : un programme de gestion de la barrière IR qui envoie un signal à un programme maître qui compte et décompte et affiche
man 7 signal pour plus d'info.
le tout en bash ... pas besoin de python et autres usines à gaz.

par contre si tu veux le nom des gens avec du RFID c'est plus dans la même cour.

HantZ_
Posts: 7
Joined: Tue Jan 28, 2020 8:45 am

Re: Contrôle d'une base de donnée avec un Raspberry

Tue Feb 04, 2020 8:44 am

ernesto wrote:
Tue Jan 28, 2020 11:20 am
Bonjour.
En général les hébergeurs gratuits n'autorisent pas l'accès aux bases de données depuis l'extérieur. (accès MySQL n'est pas possible depuis l'extérieur)
Une solution serait de créer un formulaire sur le site hébergé par alwaysdata puis de renseigner ce formulaire avec le Raspberry Pi.

Dans un premier temps je vous conseil de mettre au point votre projet avec un serveur lamp sur votre PI (cela procure beaucoup de facilitées de développement).
Puis vous n'aurez plus qu'a résoudre comment mettre a jour une BD externe (ce qui ne devrait pas être trop difficile).

Pourquoi un arduino ? La barrière infra rouge ne peut elle pas être gérée par le PI?
Bonjour

Je n'ai pas bien compris le principe de fonctionnement du formulaire et comment l'utilisé, pouvez vous détaillez ? merci

Oui il faut un arduino, il est imposé de plus il faut que je récupère sur le raspberry en liaison série

merci de votre aide

HantZ_
Posts: 7
Joined: Tue Jan 28, 2020 8:45 am

Re: Contrôle d'une base de donnée avec un Raspberry

Tue Feb 04, 2020 8:50 am

totoharibo wrote:
Wed Jan 29, 2020 10:24 am
pourquoi pas une bdd locale sqlite avec l'outil de gestion sqlitebrowser.
C'est mono-utilisateur et c'est sans doute suffisant pour toi.

OK avec ernesto pour gérer la barrière infrarouge par le RPi.

pour gérer le nombre de personnes un fichier contenant le nombre de personnes et mis à jour devrait suffire.
Pourquoi une bdd : un éléphant pour écraser une mouche.

Mieux : un programme de gestion de la barrière IR qui envoie un signal à un programme maître qui compte et décompte et affiche
man 7 signal pour plus d'info.
le tout en bash ... pas besoin de python et autres usines à gaz.

par contre si tu veux le nom des gens avec du RFID c'est plus dans la même cour.
Bonjour

je suis d'accord que c'est beaucoup une bdd pour si peu mais c'est mon projet qui me l'impose

ernesto m'est inutile (je pense) car le capteur est relié à un arduino qui est lui même relié en liaison série au raspberry

Je cherche actuellement comment faire une mise à jour de la base de données à distance avec une application du raspberry, cette dernière doit lire la liaison RS232 et faire la mise à jour.

On m'a vivement conseiller le C++ pour cela

merci de votre aide

totoharibo
Posts: 4329
Joined: Thu Jan 24, 2013 8:43 am

Re: Contrôle d'une base de donnée avec un Raspberry

Tue Feb 04, 2020 9:25 am

shadok ton chef de projet :lol:

si la bdd n'est pas imposée : sqlite.
léger et monoutilisateur mais dans ton cas ça devrait coller.

HantZ_
Posts: 7
Joined: Tue Jan 28, 2020 8:45 am

Re: Contrôle d'une base de donnée avec un Raspberry

Tue Feb 04, 2020 9:37 am

totoharibo wrote:
Tue Feb 04, 2020 9:25 am
shadok ton chef de projet :lol:

si la bdd n'est pas imposée : sqlite.
léger et monoutilisateur mais dans ton cas ça devrait coller.
Si je pouvais seulement :lol:

Malheureusement la bdd est imposé donc je peux que passé par là, la grande question du moment c'est de faire une application raspberry ( ce que je n'ai jamais fais :? )

nikotinux
Posts: 707
Joined: Sat Feb 02, 2013 2:11 am

Re: Contrôle d'une base de donnée avec un Raspberry

Tue Feb 04, 2020 10:45 am

exemple en bash

Code: Select all

#!/bin/bash
mysql -u root -psecret -h host <<MY_QUERY
USE mysql
SHOW tables
MY_QUERY
rien de specifique au raspberry !

totoharibo
Posts: 4329
Joined: Thu Jan 24, 2013 8:43 am

Re: Contrôle d'une base de donnée avec un Raspberry

Tue Feb 04, 2020 10:58 am

je confirme que du bash :
#!/bin/bash
sqlite3 <mon fichier base données> 'ma requete SQL'

ernesto
Posts: 136
Joined: Thu Jul 19, 2012 10:09 am

Re: Contrôle d'une base de donnée avec un Raspberry

Tue Feb 04, 2020 11:23 am

Bonjour. Il s'agit donc d'un exercice pédagogique et donc tout l'environnement est imposé.
Arduino --> PI --> BD déportée chez alwaysdata

1) pour la BD déportée:
Sur le site de alwaysdata qui contient la base vous devrez écrire un script PHP (update_bd.php) qui reçoit en paramètre les valeurs que vous voulez mettre à jour dans la base. Le script se chargera alors de mettre à jour la BD

A partir du PI pour transmettre les paramètres il faut faire un appel à update_bd.php en lui passant les paramètres suivants par exemple (la table a mettre a jour , le param1 qui aura pour valeur val1 , ect ...
Pour cela il suffit de faire :

Code: Select all

wget "http://monsite.alwaysdata.com/update_bd.php?table=nom_table&param1=val1&param2=val2"
2) pour la voie série provenant de l'arduino:
Je suppose que l'arduino transmet une trame lorsque la barrière IR est activée.
-Il vous faut donc faire un prog
- qui "écoute" la voie série pour récupérer la trame émise par l'arduino.
- qui analyse la trame pour en extraire les valeurs souhaitées
- qui met a jour la BD --> wget "http://monsite ..... comme vu au 1)

pour cela comme vous le dites le C++ convient très bien , mais si vous êtes débutant je vous conseil python (car beaucoup d'exemples sur le web, facilité d'apprentissage ...)
Bon courage, "Y a plus qu ' a" :D développer chaque étape

HantZ_
Posts: 7
Joined: Tue Jan 28, 2020 8:45 am

Re: Contrôle d'une base de donnée avec un Raspberry

Tue Feb 04, 2020 2:30 pm

ernesto wrote:
Tue Feb 04, 2020 11:23 am
Bonjour. Il s'agit donc d'un exercice pédagogique et donc tout l'environnement est imposé.
Arduino --> PI --> BD déportée chez alwaysdata

1) pour la BD déportée:
Sur le site de alwaysdata qui contient la base vous devrez écrire un script PHP (update_bd.php) qui reçoit en paramètre les valeurs que vous voulez mettre à jour dans la base. Le script se chargera alors de mettre à jour la BD

A partir du PI pour transmettre les paramètres il faut faire un appel à update_bd.php en lui passant les paramètres suivants par exemple (la table a mettre a jour , le param1 qui aura pour valeur val1 , ect ...
Pour cela il suffit de faire :

Code: Select all

wget "http://monsite.alwaysdata.com/update_bd.php?table=nom_table&param1=val1&param2=val2"
2) pour la voie série provenant de l'arduino:
Je suppose que l'arduino transmet une trame lorsque la barrière IR est activée.
-Il vous faut donc faire un prog
- qui "écoute" la voie série pour récupérer la trame émise par l'arduino.
- qui analyse la trame pour en extraire les valeurs souhaitées
- qui met a jour la BD --> wget "http://monsite ..... comme vu au 1)

pour cela comme vous le dites le C++ convient très bien , mais si vous êtes débutant je vous conseil python (car beaucoup d'exemples sur le web, facilité d'apprentissage ...)
Bon courage, "Y a plus qu ' a" :D développer chaque étape
Merci beaucoup, vous m'avez donnez des directions que je n'avais pas pensé ^^

Je vois un peu près ce qu'il faudrait marqué dans le update.php pour se connecter. Il faudra une structure en if pour différencier un +1 d'un -1 (et inversement) ?

j'ai trouvé un petit programme pour récupéré les données(0 ou 1) émit par l'aduino vers le rasp mais le plus gros problème reste celui-ci : Comment faire un logiciel qui en C++ (car on me l'impose aussi ) qui exécute le wget en lui donnant des paramètres

voici le site trouvé : https://gladysassistant.com/fr/article/ ... spberry-pi

merci encore pour votre aide :)

ernesto
Posts: 136
Joined: Thu Jul 19, 2012 10:09 am

Re: Contrôle d'une base de donnée avec un Raspberry

Tue Feb 04, 2020 4:32 pm

Je vois un peu près ce qu'il faudrait marqué dans le update.php pour se connecter. Il faudra une structure en if pour différencier un +1 d'un -1 (et inversement) ?
Il vous faut bien réfléchir à ce que va contenir la BD pour d'éventuelles statistiques ...
par exemple: un champ date_heure_minute_sec et un champ direction
Lorsque la barrière IR détecte un passage vous stockez :
-date_heure_minute_sec
-direction cad +1 si on rentre dans le CDI, -1 si on sort du CDI
Vous pourrez alors faire des statistiques jour/semaine/mois .....

Pour faire simple le prog update_bd.php doit donc recevoir date_heure_minute_sec et direction. Puis il les ajoutera a la BD . Cela peut se faire en une dizaine de ligne de PHP ( ou plus si vous ajoutez des vérifications et autre contrôles)
j'ai trouvé un petit programme pour récupéré les données(0 ou 1) émit par l'arduino vers le rasp mais le plus gros problème reste celui-ci : Comment faire un logiciel qui en C++ (car on me l'impose aussi ) qui exécute le wget en lui donnant des paramètres
- C'est la mème barrière qui compte les entrants et les sortants ?
- Il vous faut bien caractériser le message envoyé par l'arduino (peut être une autre équipe fait le prog sur l'arduino ?)

wget est un prog qui s’exécute en ligne de commande. Le plus simple pour faire un wget en C c'est de faire un appel system: voir la doc ... man system , man wget ...
Voila un bout de code qui donne une piste , je n'ai pas testé et je suis pratiquement sur qu'il contient des erreurs.

Code: Select all

int i;
char command[255];
sprintf(command,"wget \"http://monsite.alwaysdata.com/update_bd.php?date_heure_min_sec=%s&direction=%s\"",date,dir);
i = system (command);

HantZ_
Posts: 7
Joined: Tue Jan 28, 2020 8:45 am

Re: Contrôle d'une base de donnée avec un Raspberry

Mon Feb 10, 2020 1:25 pm

Merci pour tes précieux conseils

J'ai pu faire le update.php qui m'a permit de communiquer avec la base de donnée

J'ai aussi minicom qui me permet de testé les données envoyer par le raspberry (des 0 et des 1)

Je suis entrain de faire également un logiciel en python pour essayer de récupérer cette valeur (et voir ce que j'en fait après)

oui c'est une autre équipe qui s'occupe de faire le programme de l'arduino ( a voir avec eux ce qu'il m'envoit)

Est ce que j'utilise le wget dans mon programme python pour rajouter une valeur ou dans un autre carrement ?

Merci à tous pour votre aide ^^

HantZ_
Posts: 7
Joined: Tue Jan 28, 2020 8:45 am

Re: Contrôle d'une base de donnée avec un Raspberry

Mon Feb 10, 2020 1:33 pm

Voici ma bdd pour l'instant :

Table mensuelle :
Capture mensuelle.JPG
La table mensuelle
Capture mensuelle.JPG (15.89 KiB) Viewed 134 times
La table journalière
Capture journalière.JPG
La table journalière
Capture journalière.JPG (23.45 KiB) Viewed 134 times
La table annuelle
Capture anuelle.JPG
La table annuelle
Capture anuelle.JPG (16.21 KiB) Viewed 134 times

Return to “Français”