I'm using this domain http://www.decathlon.commonarchitecture.ca/ to host my phpmyadmin database and php code. I would like to read a specific column of the database in the serial monitor, displaying each number one right after the other. I'm unsure of whether to work with a GSM shield, an Ethernet shield or an Arduino wifi shield. Here is my php code (indents are off I know):
<?php
$dbhost = "mysql.commonarchitecture.ca";
$username = "arduinodb";
$password = "*******";
$db = "arduinodb" ;
mysql_connect("$dbhost" , "$username" , "$password");
//echo "Connected" ;
//select db
mysql_select_db($db);
//echo "Connected to db" ;
$sql="SELECT * FROM data";
$records=mysql_query($sql);
?>
<!DOCTYPE html>
<html>
<head>
<title> Consumption Data </title>
</head>
<body>
<table width="600" border="1" cellpadding="1" cellspacing"1">
<tr>
<th>Day</th>
<th>Date</th>
<th>Water Consumption (liters per person)</th>
<tr>
<?php
while($data=mysql_fetch_assoc($records)) {
echo "<tr>";
echo "<td>".$data['id']."</td>";
echo "<td>".$data['date']."</td>";
echo "<td>".$data['value']."</td>";
echo "</tr>";
}//end while
?>
</table>
</body>
</html>
The code works, however I'm unsure of how to go about reading the data on an Arduino (very new to Arduino)
Here's my Arduino code paired with an ethernet shield
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192, 168, *, *);
EthernetClient client;
char server[] = "www.decathlon.commonarchitecture.ca";
void setup()
{
Serial.begin(9600);
// attempt a DHCP connection:
Serial.println("Attempting to get an IP address using DHCP:");
if (!Ethernet.begin(mac)) {
// if DHCP fails, start with a hard-coded address:
Serial.println("failed to get an IP address using DHCP, trying
manually");
Ethernet.begin(mac, ip);
}
Serial.print("My address:");
Serial.println(Ethernet.localIP());
}
void loop()
{
// connect to the server
if (client.connect(server, 80))
{
// print to serial monitor
Serial.println("connected...");
Serial.println("ARDUINO: forming HTTP request message");
// send data the server through GET request
client.print("GET /index.php?value");
client.println(" HTTP/1.1");
client.print("HOST: ");
client.println(server);
Serial.println("ARDUINO: HTTP message sent");
// give server time to receive request
delay(1000);
// get the response from the page and print it to serial port
// to ascertain that request was received properly
if(client.available())
{
Serial.println("ARDUINO: HTTP message received");
Serial.println("ARDUINO: printing received headers and
script response...\n");
while(client.available())
{
char c = client.read();
Serial.print(c);
}
}
else
{
Serial.println("ARDUINO: no response received / no response
received in time");
}
client.stop();
}
// do nothing forever after:
while(true);
}
My issue now is in getting the Arduino to read my php data, can I not use an http GET request to display data in my serial monitor? Am I using this function properly? There's a ton of documentation on posting Arduino sensor data to the web using php/my sql but not as much on retrieval of set data back into the serial monitor. Here's what the monitor reads currently...
Attempting to get an IP address using DHCP:
My address:192.168.*.*
connected...
ARDUINO: forming HTTP request message
ARDUINO: HTTP message sent
ARDUINO: no response received / no response received in time