Lire dans une BDD distante depuis mon PI

Paramétrer le Raspberry Pi B/B+ pour se connecter via Ethernet ou une clé WiFi USB

Modérateurs : Francois, maxty01

estelle
Raspinaute
Messages : 154
Enregistré le : jeu. 24 déc. 2015 17:14

Lire dans une BDD distante depuis mon PI

Message par estelle » mar. 12 sept. 2017 18:35

Bonjour,

Je veux lire avec mon PI le contenu du premier enregistrement de ma base Echange (hébergé chez Free) qui contient deux champs (Camera, Eclairage)
Qui peut m'aider
Estelle

maxty01
Modérateur
Messages : 790
Enregistré le : dim. 16 nov. 2014 20:53
Localisation : Charleroi - Belgique

Re: Lire dans une BDD distante depuis mon PI

Message par maxty01 » mar. 12 sept. 2017 20:21

Bonsoir,

Peux-tu nous donner plus de détails techniques.

Bonne soirée,
Il n'y a pas de question stupide, il n'y a que des imbéciles qui ne posent pas de question !
RaspBerry Pi : 1 x B+ Raspbian 1 x RPI2 MiniBian
Mieux me connaître ? Regarder mon LinkedIn

estelle
Raspinaute
Messages : 154
Enregistré le : jeu. 24 déc. 2015 17:14

Re: Lire dans une BDD distante depuis mon PI

Message par estelle » mer. 13 sept. 2017 08:10

Plus de détails techniques:
Je suis apicultrice et je me sers du PI pour surveiller le poids des ruches (essaimage, vol de ruches, etc..) via des cartes d'entrées analogiques
Le PI écrit toute les 30mn dans la BDD et envoie des alertes sur mon site et un SMS
Le PI n'est pas serveur (je ne veux pas ouvrir de port sur ma Box Free)
Le PI est connecté sur ma Box par Ethenet
J'ai crée un site chez Free et un BDD (MySQL) http://ruches.montminoises.free.fr/index.php
Dans le sens PI => FREE pas de problème

En fait l'idée finale est de pouvoir piloter des sorties TOR, caméra du PI depuis mon site par l’intermédiaire des champs Camera, Eclairage que je mets à 1 par le site
Si le champ Caméra est à 1, le PI active la caméra nocturne et s'il y a effraction pouvoir activer une sortie (éclairage, message,etc...)

Il y a certainement plus simple ....
A+

nexen
Raspinaute
Messages : 175
Enregistré le : lun. 29 sept. 2014 13:58

Re: Lire dans une BDD distante depuis mon PI

Message par nexen » mer. 13 sept. 2017 09:22

Bonjour,

Miam le miel :)

ceci étant je ne comprends pas ou est ton problème : Tu arrive à écrire dans ta base de donnée Free (si j'ai bien compris) via ton Rasp. tu fait donc un 'Insert' SQL, et maintenant tu désire faire un 'Select'. La procédure est donc identique avec juste un appel à une fonction qui dépend de ton langage (PHP,Python, Perl ...)

Cordialement.
Nexen

Bud Spencer
Raspinaute
Messages : 1089
Enregistré le : lun. 15 août 2016 21:38

Re: Lire dans une BDD distante depuis mon PI

Message par Bud Spencer » mer. 13 sept. 2017 09:56

On avait déja parlé de ca autrefois quand tu voulais recuperer d'autre valeur dans ta base.
La réponse que je t'avais proposé est identique a celle que je te ferais aujourd'hui, a savoir
utiliser un script php coté hebergeur de facon a recuper tes données au format json via une requete
http.

exemple de code php pour recuperer les valeur des champs Camera et Eclairage du premier enregistrement de la table Echange:

$cnx = mysqli_connect('ton_db_host','ton_db_user','ton_db_password','ton_db_dbname')
or die('erreur cnx !');

$qry = "SELECT Camera, Eclairage FROM Echange LIMIT 0, 1";
$res =mysqli_fetch_assoc(mysqli_query($cnx,$qry));
mysqli_close($cnx);
echo json_encode($res);
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).

estelle
Raspinaute
Messages : 154
Enregistré le : jeu. 24 déc. 2015 17:14

Re: Lire dans une BDD distante depuis mon PI

Message par estelle » mer. 13 sept. 2017 14:00

Bud Spencer a écrit :On avait déja parlé de ca autrefois quand tu voulais recuperer d'autre valeur dans ta base.
La réponse que je t'avais proposé est identique a celle que je te ferais aujourd'hui, a savoir
utiliser un script php coté hebergeur de facon a recuper tes données au format json via une requete
http.

exemple de code php pour recuperer les valeur des champs Camera et Eclairage du premier enregistrement de la table Echange:

$cnx = mysqli_connect('ton_db_host','ton_db_user','ton_db_password','ton_db_dbname')
or die('erreur cnx !');

$qry = "SELECT Camera, Eclairage FROM Echange LIMIT 0, 1";
$res =mysqli_fetch_assoc(mysqli_query($cnx,$qry));
mysqli_close($cnx);
echo json_encode($res);
Ok c"est la même technique que pour écrire avec un insert
Ce qui fonctionne bien pour récupérer une variable dans une page PHP
Sauf que je veux récupérer cette valeur dans le PI et dans un prg écrit en Python
C'est sympa de m'aider
A+

Bud Spencer
Raspinaute
Messages : 1089
Enregistré le : lun. 15 août 2016 21:38

Re: Lire dans une BDD distante depuis mon PI

Message par Bud Spencer » mer. 13 sept. 2017 20:50

estelle a écrit :...
Ce qui fonctionne bien pour récupérer une variable dans une page PHP
Sauf que je veux récupérer cette valeur dans le PI et dans un prg écrit en Python
J'ai parfaitement compris ce que tu cherches à faire Estelle.

Si tu mets le code que je t'ais écrit dans une simple page php, quand tu l'appelleras depuis un navigateur, tu afficheras normalement une chaine de caractère structurée au format json qui contiendra tes données. La dessus on est d'accord. Par contre si tu fais l'appel depuis ton programme python (en utilisant de mémoire la lib requests) , tu vas pouvoir récupérer tes valeurs et les placer dans des variables pour ensuite en faire ce que tu veux.

Cela s'apparente à la fonction GET ce que l'on appelle un web service (en plus simple). Cela te permet de récupérer des données pour ton programme depuis ta database sans avoir a t'y connecter a distance et sans l'exposer.
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).

estelle
Raspinaute
Messages : 154
Enregistré le : jeu. 24 déc. 2015 17:14

Re: Lire dans une BDD distante depuis mon PI

Message par estelle » jeu. 14 sept. 2017 09:11

Comme pour écrire dans la base:

data = {"datealerte":Date_heure_sql, "alerte":'Batterie OK', "ruche":'0', "poidstension":Tension_batterie}
try:
r = requests.post("http://ruches.montminoises.free.fr/RajoutHisto.php", data = data)
print (r.text)
except:
print("Requests: probleme de transmission tension batterie vers serveur")

Sauf que là je doit récupérer les données....????,

Bud Spencer
Raspinaute
Messages : 1089
Enregistré le : lun. 15 août 2016 21:38

Re: Lire dans une BDD distante depuis mon PI

Message par Bud Spencer » jeu. 14 sept. 2017 21:37

estelle a écrit :Comme pour écrire dans la base:

data = {"datealerte":Date_heure_sql, "alerte":'Batterie OK', "ruche":'0', "poidstension":Tension_batterie}
try:
r = requests.post("http://ruches.montminoises.free.fr/RajoutHisto.php", data = data)
print (r.text)
except:
print("Requests: probleme de transmission tension batterie vers serveur")

Sauf que là je doit récupérer les données....????,
Exactement le même modèle sauf que pour récupérer des données tu vas utiliser une requête du type request.GET sur ton url et non pas un request.POST

tu peux trouver un peu plus d'info ici -> http://docs.python-requests.org/en/mast ... uickstart/
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).

estelle
Raspinaute
Messages : 154
Enregistré le : jeu. 24 déc. 2015 17:14

Re: Lire dans une BDD distante depuis mon PI

Message par estelle » ven. 15 sept. 2017 08:53

Ok pour le GET j'avais compris

Par le GET je lance une page PHP avec interrogation de la BDD et résultat dans un ECHO
Au niveau du PI réponse dans r.text

J'ai juste ?
A+

Répondre

Retourner vers « Le réseau sur le Raspberry Pï »