Waarde in database opslaan (localhost) d.m.v. ethernetshield

Arduino shields
Berichten: 1
Geregistreerd: 01 Dec 2016, 14:52

Waarde in database opslaan (localhost) d.m.v. ethernetshield

Berichtdoor jordi1992 » 01 Dec 2016, 15:01

Beste allemaal,

Voor een project wil ik graag een waarde opslaan in de database door middel van een Arduino Uno met V1 Arduino Ethernet shield
Nu heb ik al bepaalde testen gedaan, om te kijken of alle hardware werkt. En dat blijkt zo te zijn.

Echter ben ik nu begonnen met een poging om (voor nu nog) een vaste variabele (22) naar de database te schrijven met deze setup.
Helaas krijg ik nu geen connectie met mijn localhost (ik gebruik WAMP) om dit gemakkelijk te testen.

Zowel mijn eigen IP en die van de Arduino zijn correct. Toch krijg ik in de serial telkens de lijn dat de connectie gefaald is.
Mijn vraag is dus, of het uberhaupt mogelijk is om via localhost data, naar een database te sturen door middel van deze setup. En zo ja, waar ga ik de mist in. Of zie ik iets over het hoofd

Code: Alles selecteren
#include <SPI.h>
#include <Ethernet.h>

byte mac[] = {
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
 
// Enter the IP address for Arduino, as mentioned we will use 192.168.0.16
// Be careful to use , insetead of . when you enter the address here
IPAddress ip(192,168,178,11);

char server[] = "192,168,178,7"; // IMPORTANT: If you are using XAMPP you will have to find out the IP address of your computer and put it here (it is explained in previous article).

// Initialize the Ethernet server library
EthernetClient client;

void setup() {
 
  // Serial.begin starts the serial connection between computer and Arduino
  Serial.begin(9600);
 
  // start the Ethernet connection
  Ethernet.begin(mac, ip);
   
}

void loop() {
  // Connect to the server (your computer or web page) 
  if (client.connect(server, 80)) {
    client.print("GET /write_data.php?"); // This
    client.print("value=22"); // This
    client.println(" HTTP/1.1"); // Part of the GET request
    client.println("Host: 192,168,178,7"); // IMPORTANT: If you are using XAMPP you will have to find out the IP address of your computer and put it here (it is explained in previous article). If you have a web page, enter its address (ie.Host: "www.yourwebpage.com")
    client.println("Connection: close"); // Part of the GET request telling the server that we are over transmitting the message
    client.println(); // Empty line
    client.println(); // Empty line
    client.stop();    // Closing connection to server

  }

  else {
    // If Arduino can't connect to the server (your computer or web page)
    Serial.println("--> connection failed\n");
  }
 
  // Give the server some time to recieve the data and store it. I used 10 seconds here. Be advised when delaying. If u use a short delay, the server might not capture data because of Arduino transmitting new data too soon.
  delay(10000);
}


Mochten er eventuele andere fouten zijn, word ik daar ook graag op gewezen, ik ben niet heel erg sterk in het programmeren van arduino's

Advertisement

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: Waarde in database opslaan (localhost) d.m.v. ethernetsh

Berichtdoor Koepel » 01 Dec 2016, 15:54

Vergelijk dit:
Code: Alles selecteren
char server[] = "192,168,178,7";


Met dit: https://www.arduino.cc/en/Reference/ClientConnect

Berichten: 139
Geregistreerd: 28 Jul 2013, 13:30

Re: Waarde in database opslaan (localhost) d.m.v. ethernetsh

Berichtdoor ercmrj » 13 Jan 2017, 16:33

Ik ben hier ook al een tijdje mee aan het stoeien en de sketch van jordi heb ik wel werkende gekregen door de juiste ip adressen in te vullen.

Echter mijn php script ontvangt geen variabele.

Dit is de code die ik geprobeerd heb:

Code: Alles selecteren
#include <Ethernet.h>
#include <SPI.h>

byte mac[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; // RESERVED MAC ADDRESS
EthernetClient client;

long previousMillis = 0;
unsigned long currentMillis = 0;
long interval = 250000; // READING INTERVAL

String data;

void setup() {
 Serial.begin(115200);
 Serial.println("ok");

   if (Ethernet.begin(mac) == 0) {
      Serial.println("Failed to configure Ethernet using DHCP");
   }

   delay(1000);
}

void loop(){
  Serial.println("loop");
   currentMillis = millis();
   if(currentMillis - previousMillis > interval) { // READ ONLY ONCE PER INTERVAL
      previousMillis = currentMillis;
   }

   data = "test" ;

   if (client.connect("192.168.1.105",80)) { // REPLACE WITH YOUR SERVER ADDRESS
      client.println("POST /add.php HTTP/1.1");
      client.println("192.168.1.105"); // SERVER ADDRESS HERE TOO
      client.println("Content-Type: application/x-www-form-urlencoded");
      client.print("Content-Length: ");
      client.println(data.length());
      client.println();
      client.print(data);
    Serial.print("data= ");Serial.println(data);
    Serial.println(Ethernet.localIP());
   }

   if (client.connected()) {
      client.stop();   // DISCONNECT FROM THE SERVER
   }

   delay(3000); // WAIT FIVE MINUTES BEFORE SENDING AGAIN
}


php file
Code: Alles selecteren
<?php
   $temp1=$_POST["temp1"];
      echo '<br />';
    echo '________';
      echo '<br />';
      echo $temp1;
      echo '<br />';
    echo '______';
?>

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Waarde in database opslaan (localhost) d.m.v. ethernetsh

Berichtdoor nicoverduin » 13 Jan 2017, 18:30

Moet "temp1" niet "data" zijn?
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 139
Geregistreerd: 28 Jul 2013, 13:30

Re: Waarde in database opslaan (localhost) d.m.v. ethernetsh

Berichtdoor ercmrj » 14 Jan 2017, 12:47

Code: Alles selecteren
<?php
   $data=$_POST["data"];
      echo '<br />';
    echo '________';
      echo '<br />';
      echo $data;
      echo '<br />';
    echo '_';
?>


Maakt niet uit zo, print nog steeds geen data.

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Waarde in database opslaan (localhost) d.m.v. ethernetsh

Berichtdoor nicoverduin » 14 Jan 2017, 14:15

ff ter controle... Je script heet toch wel add.php en staat in de root van de server?

@edit: Hier staat ook en leuk voorbeeld : http://stackoverflow.com/questions/3902 ... to-website
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 139
Geregistreerd: 28 Jul 2013, 13:30

Re: Waarde in database opslaan (localhost) d.m.v. ethernetsh

Berichtdoor ercmrj » 14 Jan 2017, 15:04

Ik type in de browser mijn ip adres van de nas op + php file: http://192.168.1.105/add.php

de regel echo '_'; gewijzigd en die zie ik wel veranderen.

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Waarde in database opslaan (localhost) d.m.v. ethernetsh

Berichtdoor nicoverduin » 14 Jan 2017, 17:51

Betekent dus dat je het script vind maar de variabele loopt nog niet lekker. Had je die link nog bekeken? Daar controleert de php of de variabele gevuld is.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 139
Geregistreerd: 28 Jul 2013, 13:30

Re: Waarde in database opslaan (localhost) d.m.v. ethernetsh

Berichtdoor ercmrj » 14 Jan 2017, 18:26

Dat is vreemd, ik heb het php script een beetje aangepast en nu lijkt er wel iets binnen te komen want hij print "ok" maar hij geeft nog niet weer wat

<?php
$data="";
if(isset($_POST["data"]));{
echo 'ok';
$data = $_POST['temp'];
}
echo '<br />';
echo '________';
echo '<br />';
echo $data;
echo '<br />';
echo '_';
?>

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Waarde in database opslaan (localhost) d.m.v. ethernetsh

Berichtdoor nicoverduin » 14 Jan 2017, 18:36

Je zoekt op temp maar zo te zien schrijf je hem weg als temp1?
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Volgende

Terug naar Shields

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 9 gasten