Waarde in database opslaan (localhost) d.m.v. Wifishield
4 berichten
• Pagina 1 van 1
Waarde in database opslaan (localhost) d.m.v. Wifishield
Voor een weerstationproject wil ik waardes opslaan in een mysql database die op mijn pc draait door middel van een Arduino Uno met een origineel Arduino WiFi shield. Een soortgelijke project heb ik gemaakt met een Ethernet shield en dat werkt perfect. Echter bij het WiFi shield krijg ik geen data in mijn database.
De connectie opzetten met de database lukt (getest in browser en via een echo bericht in de serial monitor)
Het draaien van het php-bestand dat de waardes moet toevoegen werkt (getest in browser, data wordt weggeschreven in database)
Het php-bestand dat de waardes moet toevoegen wordt ook gestart door de Arduino maar er verschijnt geen data in mijn database.
Kan iemand eens naar mijn code kijken en mij een handreiking bieden. Ik heb al heel wat google uurtjes er op zitten maar kan geen oorzaak of oplossing vinden.
Lavast bedankt voor jullie hulp.
cpp code
[php-bestand: add_wifidata.php]
<?php
// Connect to MySQL
include("dbconnect.php");
// Prepare the SQL statement
$sql = "INSERT INTO test.wifidata (Wifidata1,Wifidata2,Weekdag) VALUES ('".$_GET["Wifidata1"]."', '".$_GET["Wifidata2"]."', '".$_GET["Weekdag"]."')";
echo "data " . $_GET["Wifidata1"] . "\n";
echo "data " . $_GET["Wifidata2"] . "\n";
if(mysqli_query($link, $sql)){
echo "Records inserted successfully in database test en tabel wifidata. \n\n";
} else{
echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
}
// Close connection
mysqli_close($link);
?>
[/php-bestand: add_wifidata.php]
De connectie opzetten met de database lukt (getest in browser en via een echo bericht in de serial monitor)
Het draaien van het php-bestand dat de waardes moet toevoegen werkt (getest in browser, data wordt weggeschreven in database)
Het php-bestand dat de waardes moet toevoegen wordt ook gestart door de Arduino maar er verschijnt geen data in mijn database.
Kan iemand eens naar mijn code kijken en mij een handreiking bieden. Ik heb al heel wat google uurtjes er op zitten maar kan geen oorzaak of oplossing vinden.
Lavast bedankt voor jullie hulp.
cpp code
#include <WiFi.h>
#include <DS3231.h>
// Init the DS3231 using the hardware interface
DS3231 rtc(SDA, SCL);
char ssid[] = "SSID"; // your network SSID (name)
char pass[] = "PASS"; // your network password
int keyIndex = 0; // your network key Index number (needed only for WEP)
int status = WL_IDLE_STATUS;
// Initialize the Wifi client library
WiFiClient client;
// server address:
//char server[] = "192.168.178.94";
IPAddress server(192,168,178,94);
unsigned long lastConnectionTime = 0; // last time you connected to the server, in milliseconds
const unsigned long postingInterval = 10L * 1000L; // delay between updates, in milliseconds
void setup() {
//Initialize serial and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}
// check for the presence of the shield:
if (WiFi.status() == WL_NO_SHIELD) {
Serial.println("WiFi shield not present");
// don't continue:
while (true);
}
String fv = WiFi.firmwareVersion();
if (fv != "1.1.0") {
Serial.println("Please upgrade the firmware");
}
// attempt to connect to Wifi network:
while (status != WL_CONNECTED) {
Serial.print("Attempting to connect to SSID: ");
Serial.println(ssid);
// Connect to WPA/WPA2 network. Change this line if using open or WEP network:
status = WiFi.begin(ssid, pass);
// wait 10 seconds for connection:
delay(10000);
}
// you're connected now, so print out the status:
printWifiStatus();
// Initialize the rtc object
rtc.begin();
}
void loop() {
// if there's incoming data from the net connection.
// send it out the serial port. This is for debugging
// purposes only:
while (client.available()) {
char c = client.read();
Serial.write(c);
}
// if ten seconds have passed since your last connection,
// then connect again and send data:
if (millis() - lastConnectionTime > postingInterval) {
httpRequest();
}
}
// this method makes a HTTP connection to the server:
void httpRequest() {
// close any connection before send a new request.
// This will free the socket on the WiFi shield
client.stop();
// if there's a successful connection:
if (client.connect(server, 80)) {
Serial.println("connecting...");
Serial.print(rtc.getDOWStr()); // Send Day-of-Week
// send the HTTP PUT request:
client.println("GET /add_wifidata.php?");
client.println("Wifidata1=");
client.println("1");
client.print("&&");
client.print("Wifidata2=");
client.println("2");
client.print("&&");
client.print("Weekdag=");
client.println(rtc.getDOWStr()); // Send Day-of-Week
client.println(" HTTP//1.1");
client.println("Host: 192.168.178.94");
client.println("Connection: close");
client.println();
// note the time that the connection was made:
lastConnectionTime = millis();
} else {
// if you couldn't make a connection:
Serial.println("connection failed");
}
}
void printWifiStatus() {
// print the SSID of the network you're attached to:
Serial.print("SSID: ");
Serial.println(WiFi.SSID());
// print your WiFi shield's IP address:
IPAddress ip = WiFi.localIP();
Serial.print("IP Address: ");
Serial.println(ip);
// print the received signal strength:
long rssi = WiFi.RSSI();
Serial.print("signal strength (RSSI):");
Serial.print(rssi);
Serial.println(" dBm");
}
[php-bestand: add_wifidata.php]
<?php
// Connect to MySQL
include("dbconnect.php");
// Prepare the SQL statement
$sql = "INSERT INTO test.wifidata (Wifidata1,Wifidata2,Weekdag) VALUES ('".$_GET["Wifidata1"]."', '".$_GET["Wifidata2"]."', '".$_GET["Weekdag"]."')";
echo "data " . $_GET["Wifidata1"] . "\n";
echo "data " . $_GET["Wifidata2"] . "\n";
if(mysqli_query($link, $sql)){
echo "Records inserted successfully in database test en tabel wifidata. \n\n";
} else{
echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
}
// Close connection
mysqli_close($link);
?>
[/php-bestand: add_wifidata.php]
Advertisement
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: Waarde in database opslaan (localhost) d.m.v. Wifishield
Zit je GET wel goed in elkaar? Moeten die parameters niet op dezelfde regel als jouw GET ?Nu spring je elke keer naar een nieuwe regel...
Re: Waarde in database opslaan (localhost) d.m.v. Wifishield
Beste Nico,
In de sketch voor het ethernet shield werkt het prima. ik heb geen idee hoe ik die values (sensor reading) achter de GET moet opnemen in de code.
grt
In de sketch voor het ethernet shield werkt het prima. ik heb geen idee hoe ik die values (sensor reading) achter de GET moet opnemen in de code.
grt
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: Waarde in database opslaan (localhost) d.m.v. Wifishield
W3school.com en dan html en GET zoeken
4 berichten
• Pagina 1 van 1
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 31 gasten