datalog op webserver

Arduino specifieke Software
Berichten: 4
Geregistreerd: 26 Mei 2013, 22:54

datalog op webserver

Berichtdoor beerten » 30 Aug 2015, 18:54

Hoi,

mijnontmaagding op dit forum...

Ik heb een simpele sensor, BMP085 temperatuur en druk.
Op mijn webserver draait een php scriptje dat data in een database stopt.

In onderstaande code wordt de ethernetshield verbonden, de sensor uitgelezen. Die waarden wil ik een url stoppen en de webserver aanroepen. Het lukt bijna.

Hoe krijg ik de waarden van de sensor in de url?
Hoe krijg ik het voor mekaar dat de url in de loop, altijd, wordt aangeroepen? Nu gebeurt it slecht eenmalig. De verbinding blijft open, toch?

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

#include <Wire.h>
#include <Adafruit_BMP085.h>

Adafruit_BMP085 bmp;

// Enter a MAC address for your controller below.
// Newer Ethernet shields have a MAC address printed on a sticker on the shield
byte mac[] = { 0xDE, 0xAD, 0xEE, 0xEB, 0xFE, 0xFD };
char server[] = "www.mywebsite.nl";

// Set the static IP address to use if the DHCP fails to assign
IPAddress ip(192,168,1,177);

// Initialize the Ethernet client library
// with the IP address and port of the server
// that you want to connect to (port 80 is default for HTTP):
EthernetClient client;

void setup()
{
  Serial.begin(9600);
  if (!bmp.begin()) {
  Serial.println("Sensor niet gevonden, check aansluitingen");
  while (1) {}
  }
 // Open serial communications and wait for port to open:
  Serial.begin(9600);

  // start the Ethernet connection:
  if (Ethernet.begin(mac) == 0) {
    Serial.println("Failed to configure Ethernet using DHCP");
    // no point in carrying on, so do nothing forevermore:
    // try to congifure using IP address instead of DHCP:
    Ethernet.begin(mac, ip);
  }
  // give the Ethernet shield a second to initialize:
  delay(1000);
  Serial.println("connecting...");

  // if you get a connection, report back via serial:
  if (client.connect(server, 80)) {
    Serial.println("connected");
  }
  else {
    // if you didn't get a connection to the server:
    Serial.println("connection failed");
  }
}

void loop()
{
    Serial.print("Temperatuur = ");
    Serial.print(bmp.readTemperature());
    Serial.println(" *C");

    Serial.print("Druk = ");
    Serial.print(bmp.readPressure()/100);
    Serial.println(" mBar");
    // Make a HTTP request:
    client.println("GET /trigger.php?temp=220&pressure=1015 HTTP/1.1");
    client.println("Host: www.mywebsite.nl");
    client.println();
    delay(5000);
}

Advertisement

Gebruikers-avatar
Berichten: 116
Geregistreerd: 23 Dec 2011, 00:11
Woonplaats: Enschede

Re: datalog op webserver

Berichtdoor bigred » 03 Sep 2015, 08:05

Je kunt een pagina reloaden met standaard HTML code:
client.println("<meta http-equiv=\"refresh\" url=http://192.168.40.24");

Berichten: 4
Geregistreerd: 26 Mei 2013, 22:54

Re: datalog op webserver

Berichtdoor beerten » 04 Sep 2015, 15:31

Dan beantwoord ikmijn eigen vraag wel ;)


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

#include <Wire.h>
#include <Adafruit_BMP085.h>

Adafruit_BMP085 bmp;

// Enter a MAC address for your controller below.
// Newer Ethernet shields have a MAC address printed on a sticker on the shield
byte mac[] = { 0xBE, 0xCC, 0xEE, 0xEF, 0xFE, 0xED };
char server[] = "www.mijnwebsite.nl";    // name address for Google (using DNS)

// Set the static IP address to use if the DHCP fails to assign
IPAddress ip(192,168,1,98);

// Initialize the Ethernet client library
// with the IP address and port of the server
// that you want to connect to (port 80 is default for HTTP):
EthernetClient client;

void setup() {
 // Open serial communications and wait for port to open:
  Serial.begin(9600);
  if (!bmp.begin()) {
  Serial.println("Could not find a valid BMP085 sensor, check wiring!");
  while (1) {}
  }

  // start the Ethernet connection:
  if (Ethernet.begin(mac) == 0) {
    Serial.println("Failed to configure Ethernet using DHCP");
    // no point in carrying on, so do nothing forevermore:
    // try to congifure using IP address instead of DHCP:
    Ethernet.begin(mac, ip);
  }
  // give the Ethernet shield a second to initialize:
  delay(1000);
  Serial.println("connecting...");
}
void loop()
{
  if (client.connect(server, 80)) {
    Serial.print("Connected...");
    client.print("GET /pagina.php?temperatuur=");
    Serial.print("GET /pagina.php?temperatuur=");
    client.print(bmp.readTemperature());
    Serial.print(bmp.readTemperature());
    client.print("&pressure=");
    Serial.print("&pressure=");
    client.print(bmp.readPressure());
    Serial.print(bmp.readPressure());
    client.println(" HTTP/1.1");
    Serial.println(" HTTP/1.1");
    client.println("Host: www.mijnwebsite.nl");
    Serial.println("Host: www.mijnwebsite.nl");
    client.println("Connection: close");
    Serial.println("Connection: close");
    client.println();
    Serial.println();
    delay(100);
    client.stop();
  }
  else {
    // If you didn't get a connection to the server:
    Serial.println("Connection failed");
  }
  delay(299900); // 5 minuten delay. 100millisec hadden we reeds, dus 5x60x1000-100=299900
}

Berichten: 97
Geregistreerd: 05 Nov 2014, 22:04

Re: datalog op webserver

Berichtdoor MarcelK » 06 Sep 2015, 13:14

Mooi, opslaan op een webserver is dus gelukt, ik neem aan dat je de opgeslagen waardes ook wilt uitlezen ?
Hier een url van een tooltje wat ik gebruik om waardes weer te geven: http://morrisjs.github.io/morris.js/index.html
Dit is open source.
Mocht je nog vragen hebben dan horen we het wel weer.

Bedankt voor het delen van je oplossing trouwens ;)
Ik kom net terug van vakantie, dus zag je vraag pas nadat je zelf de oplossing al had gevonden

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 14 gasten