Mettre a jour une base de donnée avec un Raspberry 3 B+

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 :

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.

Lien vers les liaisons
Lien vers le diagramme de déploiement

Si vous avez des suggestions d’amélioration je suis preneur :slight_smile:

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 ^^ :slight_smile: )

hello,

si j’ai bien compris ton problème c’est la mise à jour de ta database donc tu as deux solution :

  • soit ton hébergeur te propose un accès extérieur a la base de donnée; dans ce cas sur ton Rpi ta requête de Maj commencera par la connexion a cette base en php ça donnerait un truc comme ça:
    <?php $mysqli = new mysqli("<le host qui héberge la base>", "user", "password", "database");
  • soit il n’y a pas d’accès extérieur et la il faut que tu mettes ta mise a jour de la base sur le site web de l’hébergeur avec un accès à cette page depuis ton Rpi par curl. ( pour automatiser l’envoie de la page de mise à jour ) avec les valeurs en POST ou en GET ( un enregistrement de l’horodatage par passage ?)

Salut ^^

oui du coup je me suis pencher sur la 1ère possibilité, alwaysdata propose une connexion extérieur donc j’essaie de relier la base à mon raspberry mais je trouve pas comment faire, on m’a parlé de réquète SQL mais je vois pas comment les envoyer depuis mon rasp

merci

il faut que tu écrives un programme ! a mon avis le plus simple c’est d’utiliser PHP; donc d’abord il faut qu’il soit installer ds un terminal tu tapes :
sudo apt-get install php php-mysql
ensuite a partir de cette page https://www.w3schools.com/php/php_mysql_insert.asp et en remplacant les variable du début par le server distant, le user et le passwd et la base qui vont bien, puis en modifiant la requete ( $sql = "INSERT INTO …)
tu n’auras plus ensuite qu’à lancer ce programme lors d’une détection de passage.
php mise_a_jour_db.php

si tu n’as pas de base crée sur ton hébergeur tu trouveras le phpmyadmin pour ton compte alwaysata; c’est l’interface web qui te permet de connecter sur ta base distante.
creation de la base ( ou pas si tu n’en a qu 'une )
création de la table dans laquelle tu feras des maj. ( un champ avec un timestamp devrais suffire )

source :
https://www.w3schools.com/php/
https://www.php.net/manual/fr/book.mysqli.php

NB: tu as bien sûr le choix entre utiliser le php sur ton Rpi ou créer un page php chez l’hébergeur. dans le cas d’une page hébergée tu pourras la déclencher avec un curl.

1 J'aime

Bonjour,

Avant toute chose, il faut que tu récupère ce que c’est comme type de base de données.
Quel est son adresse IP, quel est son port de connexion, quel est son utilisateur et quel est le mot de passe ?

Si c’est mysql par exemple, je ne vois pas personnellement l’intérêt de d’installer une usine à gaz (c’est mon avis personnel) comme PHP pour faire juste une requête d’insert alors que le pakage mysql-client fait l’affaire.

Exemple de requête d’insertion mysql

Toujours avec l’exemple de mysql, une fois toutes les infos récupérées et un test de connexion manuel à la base
exécuter cette commande :

$ mysql --host <serverur> --port <port> --user <user> --password<motdepasse> <basededonnees> -e INSERT INTO table (colonne) VALUES (<valeur>)

A+

1 J'aime

clair ! chacun voit midi à sa porte; moi je préfère utiliser une couche logicielle souvent utile pour gérer les erreurs, pré-formater les données, faire un log personnalisé et je préfère php a un shell.
on se refait pas :wink:

Cool pour le forum, plus il y a de compétences différentes, plus il y aura de bonnes réponses :smiley:

A+

Re, oui je vois ce que vous voulez dire,
effectivement je j’arrive à me connecter sur ma bdd sur windows mais actuellement je galère à relier mon raspberry à cette dernière.
J’ai essayer par python mais j’ai des erreurs me disant que le module n’existe pas (alors que je les ai installer et désinstaller avec et sans « sudo »)
Je pense partir vers le PHP dans ce cas, je vais installer le php je vous tiendrai au courant ^^

si ton Rpi accède a internet la solution de

doit fonctionner; après libre à toi de l’utiliser en prod ou de gérer l’accès avec du code.