4

I'm trying to connect my Arduino Mega via Wifi to my XAMPP server. My main objective is get a value from my database and store it on a variable in Arduino code. With this new variable I'll be able to control the rest of the program... So I need your help. Can someone give me advice?

I already tried every thing that I found on the internet but it just doesn't work.

I think that the simple way is to send a GET request to the server and read its response... But for some reason I can't send a GET request through...

I tested it on the browser directly and the value shows up, so I think that the server side is all right.

Here is my Arduino code:

#include <Arduino.h>
#include <SoftwareSerial.h>
#include "WiFly.h"
#include "HTTPClient.h"
#define SSID "mySSID"
#define KEY "myKEY"
#define AUTH WIFLY_AUTH_WPA2_PSK
#define HTTP_GET_URL "http://192.168.1.80/xampp/training/send_data_db.php/?temp=0"
// Pins' connection
// Arduino WiFly
// 2 <----> TX
// 3 <----> RX
SoftwareSerial uart(10, 11);
WiFly wifly(uart);
HTTPClient http;
char get;
void setup() {
 Serial.begin(9600);
 Serial.println("------- WIFLY HTTP --------");
 uart.begin(9600); // WiFly UART Baud Rate: 9600
 // Wait WiFly to init
 // delay(3000);
 // check if WiFly is associated with AP(SSID)
 if (!wifly.isAssociated(SSID)) {
 while (!wifly.join(SSID, KEY, AUTH)) {
 Serial.println("Failed to join " SSID);
 Serial.println("Wait 0.1 second and try again...");
 delay(100);
 }
 wifly.save(); // save configuration,
 }
 Serial.println("\r\nTry to get url - " HTTP_GET_URL);
 Serial.println("------------------------------");
 while (http.get(HTTP_GET_URL, 10000) < 0) {
 }
 while (wifly.receive((uint8_t *)&get, 1, 1000) == 1) {
 Serial.print(get);
 }
 if (wifly.commandMode()) {
 Serial.println("\r\n\r\nEnter command mode. Send \"exit\"(with \\r) to exit command mode");
 }
}
void loop() {
 int c;
 while (wifly.available()) {
 c = wifly.read();
 if (c > 0) {
 Serial.write((char)c);
 }
 }
 while (Serial.available()) {
 c = Serial.read();
 if (c >= 0) {
 wifly.write((char)c);
 }
 }
}

And here is my PHP code:

<? php
include("./connection/database_connect.php");
include("./top_table.php");
if ((isset($_SESSION["ID"])) AND (isset($_GET["temp"]))) {
 $id = $_SESSION["ID"];
 $sql = "SELECT temp FROM perfil, client WHERE perfil.ID ='$id'";
 $consult = mysqli_query($connect, $sql);
 $result = mysqli_num_rows($consult);
 if (($result == 1)) {
 $person_data = mysqli_fetch_array($consult, MYSQLI_ASSOC);
 $temp = $person_data["temp"];
 header("HTTP/1.1" . " " . 200 . "OK");
 header("Content-Type: text/html; charset=UTF-8");
 header("Content-Length: 1112");
 header("Connection: close");
 header("/r/n");
 echo $temp;
 } else {
 //se user dosen't exist on data base
 header("Location: http://192.168.1.80/xampp/training/login.php");
 exit;
 }
} else {
 header("Location: http://192.168.1.80/xampp/training/login.php");
 exit;
}
?>
dda
1,5951 gold badge12 silver badges17 bronze badges
asked Aug 20, 2015 at 11:08
8
  • Step 1: confirm if the request is reaching the Apache server. Commented Aug 20, 2015 at 12:30
  • Sorry the delay but I just saw it now... Yes the request is reaching the server. I tried with a simpler code just to be sure and the server sends a response, but not what I want. It seems that the $_GET['temp'] is not set... Commented Aug 20, 2015 at 17:33
  • php/?temp - That looks "iffy" to me. Should that / be in there? Commented Aug 20, 2015 at 18:19
  • I think so, just a while ago I spoted an error in that line I had "php/?$temp" in there and solved part of my problem. It seems like the problem is that the $_SESSION can't be reached. And besides that my web page on the browser dosen't react Commented Aug 20, 2015 at 18:36
  • $_SESSION either needs cookies or a PHPSESSID=.... parameter, neither of which you will likely have. Commented Aug 20, 2015 at 18:49

2 Answers 2

1

You should forget about the $_SESSION["ID"]; on PHP side, because you are working stateless without any session! You should give a parameter for identifying your variable from arduino to php script - is this the temp=0? If so you need to exchange

$sql="SELECT temp FROM perfil, client WHERE perfil.ID ='$id'";

with

$sql="SELECT temp FROM perfil, client WHERE perfil.ID =" . $_GET["temp"];

assuming that perfil.id is only an integer - if it is a string, then add "'".

answered Jun 14, 2016 at 9:32
0

Yes you are right!

Meanwhile i finished this project.

The problem was with the Wi-Fi shield that I was using. The Http request wasn't in a right format.

answered Jun 15, 2016 at 12:31

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.