Je construis une application simple où je veux envoyer une requête GET depuis mon Arduino en utilisant l'enc28j60 vers un script php situé dans mon hébergement en ligne. Tout semble fonctionner parfaitement, sauf de ne rien voir dans ma base de données.Impossible d'envoyer une requête GET depuis arduino en utilisant enc28j60
broches:
ENC SO -> broches Arduino 12
ENC SI -> broches Arduino 11
ENC SCK -> broches Arduino 13
ENC CS -> broches Arduino 10
ENC VCC -> Arduino 3V3 broche
ENC GND -> A rduino Gnd pin
ici est le code arduino:
#include <EtherCard.h>
#define PATH "index.php"
#define VARIABLE "test"
// ethernet interface mac address, must be unique on the LAN
byte mymac[] = { 0x74,0x69,0x69,0x2D,0x30,0x31 };
const char website[] PROGMEM = "billyval-com.stackstaging.com";
byte Ethernet::buffer[700];
uint32_t timer;
Stash stash;
void setup() {
Serial.begin(57600);
Serial.println("\n[webClient]");
if (ether.begin(sizeof Ethernet::buffer, mymac) == 0)
Serial.println("Failed to access Ethernet controller");
if (!ether.dhcpSetup())
Serial.println("DHCP failed");
ether.printIp("IP: ", ether.myip);
ether.printIp("GW: ", ether.gwip);
ether.printIp("DNS: ", ether.dnsip);
if (!ether.dnsLookup(website))
Serial.println("DNS failed");
ether.printIp("SRV: ", ether.hisip);
}
void loop() {
ether.packetLoop(ether.packetReceive());
if (millis() > timer) {
timer = millis() + 10000;
byte sd = stash.create();
stash.print("variable=");
stash.print(VARIABLE);
stash.save();
Stash::prepare(PSTR("GET http://$F/$F HTTP/1.1" "\r\n"
"Host: $F" "\r\n"
"Content-Length: $D" "\r\n"
"Content-Type: application/x-www-form-urlencoded; charset=UTF-8" "\r\n"
"\r\n"
"$H"),
website, PSTR(PATH), website, stash.size(), sd);
// send the packet - this also releases all stash buffers once done
ether.tcpSend();
}
}
et voici le script php de base:
<?php
$link = mysqli_connect("xxxx", "xxx", "xxx", "xxx");
if(mysqli_connect_error()){
die("database failed");
}
if(isset($_GET['variable'])){
$query = "INSERT INTO variables (variable) VALUES ('". $_GET['variable'] ."') ";
mysqli_query($link, $query);
}
?>
ici est ce que je prends du moniteur série:
[WEBCLIENT ]
IP: 192.168.10.10
GW: xxx
DNS: xxx
SRV: xxx
mais quand je vérifie la base je ne peux pas voir quoi que ce soit inséré. Mais si je le fais manuellement dans un navigateur comme: billyval-com.stackstaging.com/index.php?variable=x je peux voir la valeur insérée (x) dans la base de données. J'ai changé de poste mais je ne vois pas de changement.
Je n'arrive pas à comprendre où est le problème et je l'affiche ici si quelqu'un peut m'aider.
Merci beaucoup.
GET La requête HTTP ne doit pas contenir de corps de message. –
Pouvez-vous s'il vous plaît être plus spécifique? Je suppose que je dois supprimer quelque chose de Stash :: prepare? – kakavia
https://www.w3schools.com/tags/ref_httpmethods.asp –