Comment extraire une variable d'une page php?

Bonjour

Je trouve beaucoup d'exemple visant à poster dans une Database des valeurs, par exemple de température.

Je cherche à faire le contraire:

  • Arduino devrait se rendre sur une page php qui affiche des valeurs (issues d'une DB, mais ça pourrait très bien être des valeurs entrées manuellement dans la page de code, à ce stade peu importe).
  • Sélectionner la valeur désignée et la rapatrier comme variable dans son code.
  • pouvoir utiliser cette variable, évidemment...

Schématiquement, l'idée serait celle-ci, via un exemple tout simple, coté php, sur la page apparaitrait ceci sous forme de tableau (mais avec d'autres infos présentes également):
Val1 = 90
Val2 = 50
Val3 = 80
etc

coté Arduino :
myservo1.write(Val1);
myservo2.write(Val2);
myservo3.write(Val3);

Auriez-vous des exemples de codes qui permettent de faire ceci, afin que je comprenne la procédure?
Ma question porte surtout sur la manière dont on pourrait demander à Arduino d'aller pointer telle ou telle valeur.

c'est pas exactement ce que tu veux faire

mais c'est avec des leds, mais prend exemple, il utilise le port serie

CF: il y a 2 partie :wink:

https://medium.com/@REPTILEHAUS/power-led-bulbs-with-arduino-php-part-1-90d28d6e03b0

Un autre exemple ou on controle un moteur

Le code php est exécuté sur le serveur. Le client reçoit généralement une page html générée par le serveur à l'exécution dudit php.
Tu veux extraire des valeurs contenu dans une page html?

Salut

Il existe différentes manières d'afficher des données dans une page HTML, avec ou sans balises.
Un exemple de contenu HTML de la page serait bien venu.

@+

bonjour,
un requête GET vers le server va renvoyer une chaine de caractère que tu vas stocker dans une variable.
en réponse, tu renvoi la variable ou les variables avec des marqueurs.
tu lis la réponse et la stock en utilisant les marqueurs
ex de retour :

[HTTP] begin...
[HTTP] GET...
[HTTP] GET... code: 200
||25||50

sujet traité ICI

@hazerty565: il est effectivement possible de contrôler arduino avec une interface de ce genre, mais je cherche à apprendre formellement le principe de base plus simple, se connecter, pointer une valeur, la rapatrier et la stocker.

@hbachetti: Je suis libre de mette en forme la page, puisque c’est moi qui introduit ces valeurs. Si une forme est plus propice qu’une autre pour faciliter la tâche à Arduino, j’opterai pour celle-là.
En réalité, j’ai lu dans un autre post qu’il était plus aisé de prendre des infos d’une page HTML que de se connecter directement à une base de données. Mais ce n’etait Peut-être pas une info pertinente?

@fdufnews: oui, tu l’auras compris

@infobarquee: ce lien me semble approprié, je vais explorer ça et reviendrai sans doute avec quelques questions, si je puis me permettre.
Merci

?

Bonjour Arduiouioui,

As tu déjà envisagé de retourner directement tes valeur au format JSON ?

En PHP :

header('Content-type: application/json');
echo json_encode([
  "value_1" => "ta valeur à retourner",
  "value_2" => "ta valeur à retourner",
  "etc" => "etc"]);

On ne sait pas si Arduiouioui est maitre du format de la page php.
Si c'est le cas, il serait plus simple de retourner les valeurs brutes dans du json ou dans une page html réduite.

@fdufnews : Je ne suis pas sûr de comprendre la question, mais comme dit plus haut, je suis libre du format et du langage de la page. En réalité, il s'agit d'extraire des données d'une DB Mysql mais j'ai lu sur un forum que ça pouvait être (paradoxalement) plus facile de créer une page intermédiaire que d'aller directement puiser dans la DB. Voilà pourquoi j'ai créer une page php qui affiche le résultat des valeurs de la DB dans un tableau.
Mais peut-être cette info est-elle fausse? Peut-Être peut-on directement se connecter à une DB Mysql et en extraire n'importe quelle valeur par ligne et colonne? Ca serait évidemment l'idéal... Mais je n'ai trouvé aucun code qui le permet.

@PLJerem: Je n'y ai pas pensé car je ne connais pas ce langage, mais si tu me dis que ça peut être une solution, je me pencherai volontiers sur cette proposition. A ce stade, je ne comprends pas pourquoi le JSON est plus facilement compréhensible pour qu'Arduino y extraie une valeur. Peux-tu préciser?

Mais peut-être cette info est-elle fausse? Peut-Être peut-on directement se connecter à une DB Mysql et en extraire n'importe quelle valeur par ligne et colonne? Ca serait évidemment l'idéal... Mais je n'ai trouvé aucun code qui le permet.

Cela existe poutant. MySQL_Connector_Arduino ICI

@+

Pour le JSON c'est un format que à peu près tous les langages de programmations savent interpréter dont Arduino en chargeant la bonne librairie.

Je te laisse faire un petit essai sur ton site web.

Imagineons que tu as en PHP les variables que tu veux transmettre à ton Arduino sous la forme d'un array :

// Tableau contenant les valeurs à transmettre
$valuesArray = [
   "Val1" => 90,
   "Val2" => 50,
   "Val3" => 80];

// Conversion de ton array PHP en Json
$valuesJSON = json_encode($valuesArray);


// Renvoie de la page au navigateur
header('Content-type: application/json');
echo $valuesJSON;

Pour mieux comprendre je t'invite à coller ce code dans un page "test.php" de ton site web et de l'ouvrir avec ton navigateur web pour voir comment sont retourner tes valeurs.

Le php peut très bien retourner une page html minimaliste avec les 2 valeurs séparées par une virgule.

Je vais poser ma question autrement pour cibler le problème.

Est-ce que quelqu'un ici est vraiment capable de se connecter à une Database hébergée AILLEURS qu'en localhost. Ce détail est TRES important, car je n'ai trouvé aucun code qui permet de se connecter avec ces deux contraintes :

  1. Un serveur par nom de domaine et NON via adresse ip (indisponible chez ovh)
  2. Un numéro de port quand cela est nécessaire (dépend du choix du serveur chez ovh, j'ai abandonné celui avec un port à renseigner, même pour mon code php)

Si oui, une fois connecté, avez-vous un exemple de code qui permet de pointer une valeur dans un tableau et la rapatrier?

Quelqu'un a-t-il déjà réalisé concrètement cet exercice?
C'est étrange, ça me parait basique, mais en fait, on tombe tout de suite sur des réalisations plus complexe (interface de contrôle, etc) et dès lors, il devient difficile d'apprendre la base de ce mécanisme car la forme semble différente.