[RESOLU]ecrire 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

Répondre
estelle
Raspinaute
Messages : 141
Enregistré le : jeu. 24 déc. 2015 17:14

[RESOLU]ecrire dans une BDD distante depuis mon PI

Message par estelle » ven. 25 nov. 2016 09:37

Bonjour,

J'ai créé un site (PHP) qui est hébergé avec un nom de domaine chez OVH et une BDD (MySQL)
Actuellement la base est sur mon PC en LocalHost (WAP)
Je n'ai pas encore décidé si je vais prendre un extension BDD payante chez OVN ou tout balancer chez FREE

Je désire écrire dans cette base depuis mon PI qui est relié à ma box en WIFI

Je suis débutante et je viens juste de me former à HTML5 et CSS3 et PHP et MySQL
Toute cette partie WEB fonctionne bien.
Qui peut m'aider ou qui a déjà écrit une telle com
Merci d'avance

Estelle
Modifié en dernier par estelle le ven. 22 sept. 2017 16:26, modifié 3 fois.

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

Re: ecrire dans une BDD distante depuis mon PI

Message par estelle » ven. 25 nov. 2016 09:43

j'oubliais
Je programme en PYTHON

domi
Administrateur
Messages : 2893
Enregistré le : mer. 17 sept. 2014 18:12
Localisation : Seine et Marne

Re: ecrire dans une BDD distante depuis mon PI

Message par domi » ven. 25 nov. 2016 12:34

Bonjour,

Je suis également client OVH, si tu es sur un offre mutualisée, tu ne peux pas te connecter à la base de donnée depuis une connexion distante.
C'est une sécurité qu'ils imposent, le domaine des bases de données OVH est en "mysql.db", ce domaine est interne, il n'est connu que de leurs DNS internes, il n'est donc pas accessible depuis internet.
Le seul moyen d'y accéder est depuis une machine interne OVH.

Si tu es en serveur VPS ou Dédié, dans ce cas il te faut faire la configuration du compte pour qu'il soit accessible depuis tout l'extérieur, ou depuis ton adresse IP public.
Passionné de Raspberry, Arduino, ESP8266, ESP32, et objets connectés :
Spécial débutant, concevez vous-même votre domotique DIY : https://www.youtube.com/c/DomoticDIY

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

Re: ecrire dans une BDD distante depuis mon PI

Message par estelle » ven. 25 nov. 2016 15:02

Merci pour ta réponse.

Je suis perdue !!!

Donc pour résumer, je ne peux accéder à la BDD depuis l'extérieur
La seule solution si je garde l'hébergeur OVH est d'installer la BDD sur le PI
J'ai tout compris ?
Merci du renseignement car j'avais l"intention de contacter une offre mutualiste
Et chez FREE peux on accéder à la BDD de l'extérieur ?
A+
Estelle

destroyedlolo
Raspinaute
Messages : 1426
Enregistré le : dim. 10 mai 2015 18:44
Localisation : Dans la campagne à côté d'Annecy
Contact :

Re: ecrire dans une BDD distante depuis mon PI

Message par destroyedlolo » ven. 25 nov. 2016 15:29

Salut,

Si la base n'est pas accessible depuis l'exterrieur, tu peux :
- ouvrir un tunel SSH (mais il faut vérifier avec OVH s'ils l'acceptent)
- utiliser des webservices ce qui te demandera de faire du cote sur ton serveur OVH ouvert sur l'exterrieur et sur ton PI. Mais ca necessite de bien penser aux actions que tu veux faire sur ta bdd. Je veux dire, c'est une très mauvaise idée de laisser passer des ordres SQL directement dans les WS (faille de sécurité). Génération on liste ce que l'on souhaite faire sur la base (catalogue des actes) et on crée les WS correspondant.

Le tunel est le plus simple.

A+
  • BananaPI : Gentoo, disque SATA de 2 To
  • Domotique : 1-wire, TéléInfo, Tablette passée sous Gentoo, ESP8266
  • Multimedia par DNLA
  • Et pleins d'idées ... et bien sûr, pas assez de temps.
Un descriptif de ma domotique 100% fait maison.

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

Re: ecrire dans une BDD distante depuis mon PI

Message par Bud Spencer » ven. 25 nov. 2016 15:30

Pourquoi ne pas utiliser des méthodes 'moderne' et écrire des web services ? C'est très facile a faire en php et les applis clientes deviennes totalement indépendantes du type de base de données qui se trouve derrière. Pour les format et les méthodes il en existe plusieurs, mais le plus simple, surtout pour avoir du python au bout, c'est de faire des services RESTfull au format JSon.
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).

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

Re: ecrire dans une BDD distante depuis mon PI

Message par estelle » ven. 25 nov. 2016 16:57

Merci pour vos réponses mais cela vient de plus en plus ténébreux
Chez OVH il faut prendre la version Pro pour ouvrir un pipe SSH (78€).....

Je veux juste écrire depuis mon PI en Python vers ma BDD pour la gestion du poids de mes ruches

J'ai ouvert un compte chez Free et je l'ai activé ce jour (attendre 48H)
Je peux accéder à des pages perso et à une BDD MySQL
Peut on accéder du PI vers cette BDD de chez Free ?
A+
Estelle

destroyedlolo
Raspinaute
Messages : 1426
Enregistré le : dim. 10 mai 2015 18:44
Localisation : Dans la campagne à côté d'Annecy
Contact :

Re: ecrire dans une BDD distante depuis mon PI

Message par destroyedlolo » ven. 25 nov. 2016 18:49

Salut,
estelle a écrit :Merci pour vos réponses mais cela vient de plus en plus ténébreux
Chez OVH il faut prendre la version Pro pour ouvrir un pipe SSH (78€).....
Heu techniquement, a partir du moment où tu peux ouvrir une session SSH sur le serveur sans passer par une autre machine (pas de rebond quoi), ouvrir un tunnel SSH est trivial (y'a plein de tuto sur le web ;) ). Après, faut voir avec leurs conditions d'utilisations.
estelle a écrit :Je veux juste écrire depuis mon PI en Python vers ma BDD pour la gestion du poids de mes ruches
Donc, en clair tu ne fais qu'inserer dans ta base toujours le meme type de donnée. C'est le cas typique d'utilisation d'un webService.
estelle a écrit :J'ai ouvert un compte chez Free et je l'ai activé ce jour (attendre 48H)
Je peux accéder à des pages perso et à une BDD MySQL
Peut on accéder du PI vers cette BDD de chez Free ?
Aucune idée, mais j'avais regardé il y a quelques années pour y héberger mon site (paske ma ligne ADSL a 2Mo était poussive) : les perfs étaient très mauvaises et les indispos fréquentes. Les choses se sont surement améliorées mais je doute que tu ai le même niveau de service que chez OVH.
  • BananaPI : Gentoo, disque SATA de 2 To
  • Domotique : 1-wire, TéléInfo, Tablette passée sous Gentoo, ESP8266
  • Multimedia par DNLA
  • Et pleins d'idées ... et bien sûr, pas assez de temps.
Un descriptif de ma domotique 100% fait maison.

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

Re: ecrire dans une BDD distante depuis mon PI

Message par estelle » sam. 26 nov. 2016 07:22

Bonjour lolo

Je vois que l'on habite dans le même coin que moi autour d'Annecy
Merci pour ta réponse

Je suis apicultrice et j'utilise le PI (programmé en PYTHON) pour peser mes ruches
A ce jour je pèse en continu le poids de 7 ruches mais le but et de l'étendre à 24
Les infos de poids sont envoyées par mail via le WIFI et un fichier CSV que je remets en forme pour afficher un graphique
Tout cela reste rustique
J'ai donc décidé de me former en PHP, MySQL & highcharts pour créer un site qui serai accessible partout
Mes connaissances sont encore limitées mais j'apprends vite
Le type d'infos de poids à insérer dans la base est toujours le même
Apparemment je pourrais utiliser un service WEB REST/JSON mais je ne vois pas trop comment créer cette liaison PI/BDD
Peux tu m'aider ?
A+
Estelle
rucher-montminois.fr

destroyedlolo
Raspinaute
Messages : 1426
Enregistré le : dim. 10 mai 2015 18:44
Localisation : Dans la campagne à côté d'Annecy
Contact :

Re: ecrire dans une BDD distante depuis mon PI

Message par destroyedlolo » sam. 26 nov. 2016 12:49

Salut,
estelle a écrit :Je vois que l'on habite dans le même coin que moi autour d'Annecy
Oui, de l'autre coté du lac en diagonal :)
D'ailleurs, je viens de me rendre compte que Montmin est une des rares stations du coin ou je n'ai jamais posé mes raquettes ou mes ski : un manque qu'il faudra que je corrige un jours :lol:
estelle a écrit :Je suis apicultrice et j'utilise le PI (programmé en PYTHON) pour peser mes ruches
A ce jour je pèse en continu le poids de 7 ruches mais le but et de l'étendre à 24
Les infos de poids sont envoyées par mail via le WIFI et un fichier CSV que je remets en forme pour afficher un graphique
J'en déduis donc que :
  • tu as déjà un moyen automatique pour peser tes ruches
  • que c'est accessible par Wifi
Reste donc a ne plus le faire à la main, j'ai juste jusque là ?
estelle a écrit :Le type d'infos de poids à insérer dans la base est toujours le même
Apparemment je pourrais utiliser un service WEB REST/JSON mais je ne vois pas trop comment créer cette liaison PI/BDD
J'ai fait plus ou moins ce que tu souhaites faire avec mon outils de monitoring.

En fait, c'est relativement simple :

Coté serveur :
Tu dois créé une page web classique qui ressemblera à quelque chose du genre

Code : Tout sélectionner

<?php 
if($_SERVER['REQUEST_METHOD'] == 'POST'){    /* Si c'est un web service, la requete sera de type POST */
    $res = file_get_contents('php://input');    /* On récupère le corp du message qui contient nos données */
    $dt = json_decode($res, true);        /* On décode les données JSON */

    ta_fonction_pour_insertion_bdd( $dt );
} else {    /* C'était un appel direct et non un appel par webservice 
         * donc on affiche un message d'erreur
         */
?>
    Web Services for Domestik. Not intended for direct call.<br>
    Have a look on <a href='http://destroyedlolo.info/Developpement/Domestik/'>Domestik's home</a>.<br><br>
    <u>Domestik's version :</u> <b><?= VERSION ?></b>
<?php
}
?>
Jusque là, rien de vraiment transcendant. Il ne te restera donc qu'a coder le fonction ta_fonction_pour_insertion_bdd() en fonction du schema de la base et des données que tu y inséreras.

Mon code complet est visible sur cette page : c'est évidement beaucoup plus complexe que ce que je met ci-dessus car mon code prend en compte la sécurité et des trucs internes qui sont propre à mon outils (l'envoie d'alertes ou les schedulers internes).

Pour la partie HighChart, on verra quand tu arriveras à nourrir ta base ;)

Coté client :
Coté client, je ne peux te donner que les principes et pas du code : je n'utilise pas python qui était trop lourd pour mes besoins mais Lua.

Bref, le code client ressemble à

Code : Tout sélectionner

        ... bla bla bla ...
        ... tout ton code pour récupère les données et les mets dans une table ...

		-- Envoie de la reponse après encodage en json
	local r, c, h = protocol.request("http://url_de_ta_page.php" , json.encode(result) ) 

	if r == nil then   -- Probleme de communication
		posix.syslog(3, "Communication layer error :" .. c)
		return
	elseif c ~= 200 then  -- Le serveur a renvoyé une erreur (code retour autre que 200)
		print(c);
		posix.syslog(3, "Domestik's web service returned error ".. c ..": " .. r);
	elseif r:gsub("\n", "") ~= "" then -- code 200, mais le serveur a quand même renvoyé un message (genre warning PHP)
		posix.syslog(3, "Domestik's web service returned no error but said '" .. r .."'");
	end
Le code complet donne ça (à nouveau, il faut beaucoup plus que juste envoyer des données).
A nouveau, rien de bien compliqué.

A+
Modifié en dernier par destroyedlolo le sam. 26 nov. 2016 15:55, modifié 1 fois.
  • BananaPI : Gentoo, disque SATA de 2 To
  • Domotique : 1-wire, TéléInfo, Tablette passée sous Gentoo, ESP8266
  • Multimedia par DNLA
  • Et pleins d'idées ... et bien sûr, pas assez de temps.
Un descriptif de ma domotique 100% fait maison.

Répondre

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