INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 1 Bewertungen - 3 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Arduino mit DS18B20 und MySQL
13.01.2014, 12:22
Beitrag #9
RE: Arduino mit DS18B20 und MySQL
Hallo Michael,

bin gerade auf Arbeit, daher nur ganz kurz:
Schau mal hier: http://playground.arduino.cc/Learning/OneWire
Der Abschnitt "Example Code" nach "History" ab der Zeile "ds.reset()" und der Abschnitt "Converting HEX to something meaningful " sollten die Lösung bringen.

Was die Anbindung an Webserver angeht, kannst du hier gucken: http://www.arduinoforum.de/arduino-Threa...rver-eMail (okay, ist Eigenwerbung Big Grin )

Grüße Ricardo

Nüchtern betrachtet...ist besoffen besser Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
13.01.2014, 17:50
Beitrag #10
RE: Arduino mit DS18B20 und MySQL
Hallo Ricardo,

deine Eigenwerbung? Da sag ich mal Respekt!!!Tongue

Die Datenbanken mit PHP und deren Verarbeitung auf meiner Webseite, das klappt bei mir, da mache ich mir keine Sorgen.

Ich möchte doch nur 10 Sensoren auslesen und an meinen Webserver schicken. Der Sketch macht mich noch wahnsinnig. Da sitze ich schon seit Tagen dran, Kaffee und Zigaretten satt. Meine Nerven liegen blank und meine Frau nervt auch schon.
Ich bin schon 50+ und meine freien Tage hatte ich mir anders vorgestellt.

Ich vermute jetzt, ich sehe den Wald vor lauter Bäumen nicht. Ich drehe mich im Kreis, es geht nicht voran. Ich brauche Hilfe, ich kann nicht mehr.AngryAngryAngry

Grüße
Michael
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
13.01.2014, 21:11
Beitrag #11
RE: Arduino mit DS18B20 und MySQL
Hallo Michael,

damit deine Frau nicht mehr nervt und du nicht gegen die Bäume rennst Big Grin , probiere mal folgenden Code.

Grüße Ricardo

Code:
#include <SPI.h>
#include <Ethernet.h> // library for ethernet functions
#include <DallasTemperature.h> // library for temperature sensors
#include <OneWire.h> // library for the onewire bus

OneWire ds(7); // pin für Temperatursensoren

//DeviceAdressen der einzelnen ds1820 Temperatursensoren.
DeviceAddress sensor1 = {
  0x28, 0x2D, 0x6D, 0x3C, 0x5, 0x0, 0x0, 0x70 };
DeviceAddress sensor2 = {
  0x28, 0xE2, 0x86, 0x3C, 0x5, 0x0, 0x0, 0x61 };

//ETHERNET-SETTINGS
byte mac[] = {
  0x88, 0x87, 0x17, 0x87, 0xD6, 0x67 }; // MAC-Adresse des Arduino
byte ip[] = {
  192, 168, 178, 28 }; // IP-Adresse des Arduino
//byte gateway[] = { 192, 168, 178, 1 }; // Gateway
//byte subnet[] = { 255, 255, 255, 0 }; // SubNet
byte server[] = {
  95, 143, 172, 134 }; // IP-Adresse des Servers

EthernetClient client;
char host[] = "ihrewaesche.de"; // Domain
char url[] = "/ARDUINO/Temperatur/SaveTempToMySQL.php"; // Pfad zur PHP-Datei
char key[] = "MEINPASSWORT123"; // Kennwort aus PHP-Datei
char c; // Variable für Rückgabe des Servers

long Interval = 60; // Upload-Interval in Minuten
DallasTemperature sensors(&ds);
int numSensors; // Variable zum speichern der Anzahl der Temperatur-Sensoren
float temp1,temp2; // Temperaturwerte der Sensoren

void setup()
{
  delay(1000);
  Serial.begin(9600);
  Serial.flush();
  delay(200);
  Serial.println("Arduino TemperaturLogger");
  Serial.println("Ethernet initialisieren...");
  Ethernet.begin(mac, ip);
  Interval = Interval * 1000 * 60; // Das in Minuten angegebene Interval in Millisekunden umrechnen
  delay(1000); // warten, bis Ethernet gestartet
  //Sensoren abfragen
  sensors.begin();
  Serial.println("Temperatur-Sensoren ermitteln...");
  numSensors = sensors.getDeviceCount(); // Anzahl der angeschlossenen Sensoren in numSensors speichern
  if(numSensors > 0) // Es wurde mindestens 1 Sensor gefunden
  {
    Serial.print(numSensors);
    Serial.println( " Temperatur-Sensoren gefunden.");
    sensors.setResolution(sensor1, 10);
    sensors.setResolution(sensor2, 10);
  }
  else // Es wurde kein Sensor gefunden
  {
    Serial.println("Keine Temperatur-Sensoren gefunden.");
  }
}
void loop()
{
  sensors.requestTemperatures();
  temp1 = sensors.getTempC(sensor1);
  temp2 = sensors.getTempC(sensor2);
  if (temp1 == -127.00) Serial.print("Fehler Sensor1");
  else {
    Serial.print("Temp1: ");  
    Serial.println(temp1);
  }
  if (temp2 == -127.00) Serial.print("Fehler Sensor2");
  else {
    Serial.print("Temp2: ");  
    Serial.println(temp1);
  }
  if (temp1!= -127.00 && temp2!=-127.00)  Daten_senden(temp1, temp2); // Temperaturdaten an Server übertragen
  delay(700);
  byte maxReads = 10; //Seconds
  while ((maxReads-- > 0) && client.connected()) // Antwort des Servers lesen
  {
    delay(1000);
    while (client.available())
    {
      char response = client.read();
      Serial.print(response);
    }
  }
  client.stop();
  Serial.println("Done.");
  client.flush();
  delay(Interval);
}
/******************************
*
* Daten an Server schickenn *
*
*******************************/
void Daten_senden(float T1, float T2)
{
  if (client.connect(server, 80)) // Verbindung zum Server aufbauen
  {
    Serial.println("Verbunden, Sende Daten...");
    client.print("GET " + String(url));
    Serial.println("GET " + String(url));
    client.print("?T1=");
    Serial.print("?T1=");
    client.print(T1);
    Serial.println(T1);
    client.print("&T2=");
    Serial.print("&T2=");
    client.print(T2);
    Serial.println(T2);
    client.print("&key=" + String(key));
    Serial.print("&key=" + String(key));
    client.println(" HTTP/1.1");
    Serial.println(" HTTP/1.1");
    client.print("Host: " + String(host));
    Serial.print("Host: " + String(host));
    client.println();
    Serial.println();
    client.println("User-Agent: Arduino");
    Serial.println("User-Agent: Arduino");
    client.println("Connection: close");
    Serial.println("Connection: close");
    client.println();
    Serial.println();
  }
  else
  {
    Serial.println(" ***** VERBINDUNG KANN NICHT HERGESTELLT WERDEN *****");
  }
}

Nüchtern betrachtet...ist besoffen besser Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.01.2014, 08:27 (Dieser Beitrag wurde zuletzt bearbeitet: 14.01.2014 08:35 von Fried22.)
Beitrag #12
RE: Arduino mit DS18B20 und MySQL
Hallo Ricardo,

dein Sketch funktioniert. Das heißt, die Temperaturen werden richtig angezeigt. Egal ob parasitär oder parallel angeschlossen. Dafür vielen, vielen Dank.

Nun habe ich den natürlich für 10 Sensoren verändert, und nun kommen Fehler beim Kompilieren.

[quote]
#include <SPI.h>
 #include <Ethernet.h> // library for ethernet functions
 #include <DallasTemperature.h> // library for temperature sensors
 #include <OneWire.h> // library for the onewire bus

 OneWire ds(7); // pin für Temperatursensoren

 //DeviceAdressen der einzelnen ds1820 Temperatursensoren.
 DeviceAddress sensor1 = {
   0x28, 0x2D, 0x6D, 0x3C, 0x5, 0x0, 0x0, 0x70 };
 DeviceAddress sensor2 = {
   0x28, 0xE2, 0x86, 0x3C, 0x5, 0x0, 0x0, 0x61 };
 DeviceAddress sensor3 = {
   0x28, 0x32, 0x8D, 0x3C, 0x5, 0x0, 0x0, 0xD5 };
 DeviceAddress sensor4 = {
   0x28, 0xC8, 0x76, 0x3C, 0x5, 0x0, 0x0, 0xBE };  
 DeviceAddress sensor5 = {
   0x28, 0x1F, 0x81, 0x3C, 0x5, 0x0, 0x0, 0x8 };
 DeviceAddress sensor6 = {
   0x28, 0x19, 0x92, 0x3C, 0x5, 0x0, 0x0, 0x88 };  
 DeviceAddress sensor7 = {
   0x28, 0xB, 0x7C, 0x3C, 0x5, 0x0, 0x0, 0xC5 };
 DeviceAddress sensor8 = {
   0x28, 0x9C, 0x83, 0x3C, 0x5, 0x0, 0x0, 0x38 };
 DeviceAddress sensor9 = {
   0x28, 0xEB, 0x86, 0x3C, 0x5, 0x0, 0x0, 0xF7 };
 DeviceAddress sensor0 = {
   0x28, 0x9D, 0x83, 0x3C, 0x5, 0x0, 0x0, 0xF };
   
//ETHERNET-SETTINGS
 byte mac[] = {
   0x88, 0x87, 0x17, 0x87, 0xD6, 0x67 }; // MAC-Adresse des Arduino
 byte ip[] = {
   192, 168, 178, 28 }; // IP-Adresse des Arduino
 //byte gateway[] = { 192, 168, 178, 1 }; // Gateway
 //byte subnet[] = { 255, 255, 255, 0 }; // SubNet
 byte server[] = {
   95, 143, 172, 134 }; // IP-Adresse des Servers

 EthernetClient client;
 char host[] = "ihrewaesche.de"; // Domain
 char url[] = "/ARDUINO/Temperatur/SaveTempToMySQL.php"; // Pfad zur PHP-Datei
 char key[] = "MEINPASSWORT123"; // Kennwort aus PHP-Datei
 char c; // Variable für Rückgabe des Servers

 long Interval = 60; // Upload-Interval in Minuten
 DallasTemperature sensors(&ds);
 int numSensors; // Variable zum speichern der Anzahl der Temperatur-Sensoren
 float temp1,temp2,temp3,temp4,temp5,temp6,temp7,temp8,temp9,temp10; // Temperaturwerte der Sensoren

 void setup()
 {
   delay(1000);
   Serial.begin(9600);
   Serial.flush();
   delay(200);
   Serial.println("Arduino TemperaturLogger");
   Serial.println("Ethernet initialisieren...");
   Ethernet.begin(mac, ip);
   Interval = Interval * 1000 * 60; // Das in Minuten angegebene Interval in Millisekunden umrechnen
   delay(1000); // warten, bis Ethernet gestartet
   //Sensoren abfragen
   sensors.begin();
   Serial.println("Temperatur-Sensoren ermitteln...");
   numSensors = sensors.getDeviceCount(); // Anzahl der angeschlossenen Sensoren in numSensors speichern
   if(numSensors > 0) // Es wurde mindestens 1 Sensor gefunden
   {
     Serial.print(numSensors);
     Serial.println( " Temperatur-Sensoren gefunden.");
     sensors.setResolution(sensor1, 10);
     sensors.setResolution(sensor2, 10);
     sensors.setResolution(sensor3, 10);
     sensors.setResolution(sensor4, 10);
     sensors.setResolution(sensor5, 10);
     sensors.setResolution(sensor6, 10);
     sensors.setResolution(sensor7, 10);
     sensors.setResolution(sensor8, 10);
     sensors.setResolution(sensor9, 10);
     sensors.setResolution(sensor0, 10);
   }
   else // Es wurde kein Sensor gefunden
   {
     Serial.println("Keine Temperatur-Sensoren gefunden.");
   }
 }
 void loop()
 {
   sensors.requestTemperatures();
   temp1 = sensors.getTempC(sensor1);
   temp2 = sensors.getTempC(sensor2);
   temp3 = sensors.getTempC(sensor3);
   temp4 = sensors.getTempC(sensor4);
   temp5 = sensors.getTempC(sensor5);
   temp6 = sensors.getTempC(sensor6);
   temp7 = sensors.getTempC(sensor7);
   temp8 = sensors.getTempC(sensor8);
   temp9 = sensors.getTempC(sensor9);
   temp10 = sensors.getTempC(sensor0);
   
   
   if (temp1 == -127.00) Serial.print("Fehler Sensor1");
   else {
     Serial.print("Temp1: ");
     Serial.println(temp1);
   }
   if (temp2 == -127.00) Serial.print("Fehler Sensor2");
   else {
     Serial.print("Temp2: ");
     Serial.println(temp2);
   if (temp1 == -127.00) Serial.print("Fehler Sensor3");
   else {
     Serial.print("Temp3: ");
     Serial.println(temp3);
   }
   if (temp2 == -127.00) Serial.print("Fehler Sensor4");
   else {
     Serial.print("Temp4: ");
     Serial.println(temp4);
   if (temp1 == -127.00) Serial.print("Fehler Sensor5");
   else {
     Serial.print("Temp5: ");
     Serial.println(temp5);
   }
   if (temp2 == -127.00) Serial.print("Fehler Sensor6");
   else {
     Serial.print("Temp6: ");
     Serial.println(temp6);
   if (temp1 == -127.00) Serial.print("Fehler Sensor7");
   else {
     Serial.print("Temp7: ");
     Serial.println(temp7);
   }
   if (temp2 == -127.00) Serial.print("Fehler Sensor8");
   else {
     Serial.print("Temp8: ");
     Serial.println(temp8);
   if (temp1 == -127.00) Serial.print("Fehler Sensor9");
   else {
     Serial.print("Temp9: ");
     Serial.println(temp9);
   }
   if (temp2 == -127.00) Serial.print("Fehler Sensor0");
   else {
     Serial.print("Temp10: ");
     Serial.println(temp10);
   }
   if (temp1!= -127.00 && temp2!=-127.00) Daten_senden(temp1, temp2, temp3, temp4, temp5, temp6, temp7, temp8, temp9, temp10); // Temperaturdaten an Server übertragen
   delay(700);
   byte maxReads = 10; //Seconds
   while ((maxReads-- > 0) && client.connected()) // Antwort des Servers lesen
   {
     delay(1000);
     while (client.available())
     {
       char response = client.read();
       Serial.print(response);
     }
   }
   client.stop();
   Serial.println("Done.");
   client.flush();
   delay(Interval);
 }
 /******************************
 *
 * Daten an Server schickenn *
 *
 *******************************/
 void Daten_senden(float T1, float T2, float T3, float T4, float T5, float T6, float T7, float T8, float T9, float T10);
 
 {
   if (client.connect(server, 80)) // Verbindung zum Server aufbauen
   {
     Serial.println("Verbunden, Sende Daten...");
     client.print("GET " + String(url));
     Serial.println("GET " + String(url));
     client.print("?T1=");
     Serial.print("?T1=");
     client.print(T1);
     Serial.println(T1);
     client.print("&T2=");
     Serial.print("&T2=");
     client.print(T2);
     Serial.println(T2);
     client.print("&T3=");
     Serial.print("&T3=");
     client.print(T3);
     Serial.println(T3);
     client.print("&T4=");
     Serial.print("&T4=");
     client.print(T4);
     Serial.println(T4);
     client.print("&T5=");
     Serial.print("&T5=");
     client.print(T5);
     Serial.println(T5);
     client.print("&T6=");
     Serial.print("&T6=");
     client.print(T6);
     Serial.println(T6);
     client.print("&T7=");
     Serial.print("&T7=");
     client.print(T7);
     Serial.println(T7);
     client.print("&T8=");
     Serial.print("&T8=");
     client.print(T8);
     Serial.println(T8);
     client.print("&T9=");
     Serial.print("&T9=");
     client.print(T9);
     Serial.println(T9);
     client.print("&T10=");
     Serial.print("&T10=");
     client.print(T10);
     Serial.println(T10);
     client.print("&key=" + String(key));
     Serial.print("&key=" + String(key));
     client.println(" HTTP/1.1");
     Serial.println(" HTTP/1.1");
     client.print("Host: " + String(host));
     Serial.print("Host: " + String(host));
     client.println();
     Serial.println();
     client.println("User-Agent: Arduino");
     Serial.println("User-Agent: Arduino");
     client.println("Connection: close");
     Serial.println("Connection: close");
     client.println();
     Serial.println();
   }
   else
   {
     Serial.println(" ***** VERBINDUNG KANN NICHT HERGESTELLT WERDEN *****");
   }
 }   



Nun kommt der Fehlerbericht:
In der Funktion "void loop() :
174 error: Daten senden - was not declared in this scope
179 error: T1 was not declared in this scope - Das betrifft dann T1 - T10
236 error: expected `}' at the end of input


Das verstehe ich nun gar nicht. Siehst du die Lösung.

Grüße
Michael
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.01.2014, 10:11
Beitrag #13
RE: Arduino mit DS18B20 und MySQL
Hallo Michael,

in dem Sketch warenb ein paar Syntaxfehler drin. Habe ich korrigiert.

Grüße Ricardo

Code:
#include <SPI.h>
#include <Ethernet.h> // library for ethernet functions
#include <DallasTemperature.h> // library for temperature sensors
#include <OneWire.h> // library for the onewire bus

OneWire ds(7); // pin für Temperatursensoren

//DeviceAdressen der einzelnen ds1820 Temperatursensoren.
DeviceAddress sensor1 = {
  0x28, 0x2D, 0x6D, 0x3C, 0x5, 0x0, 0x0, 0x70 };
DeviceAddress sensor2 = {
  0x28, 0xE2, 0x86, 0x3C, 0x5, 0x0, 0x0, 0x61 };
DeviceAddress sensor3 = {
  0x28, 0x32, 0x8D, 0x3C, 0x5, 0x0, 0x0, 0xD5 };
DeviceAddress sensor4 = {
  0x28, 0xC8, 0x76, 0x3C, 0x5, 0x0, 0x0, 0xBE };  
DeviceAddress sensor5 = {
  0x28, 0x1F, 0x81, 0x3C, 0x5, 0x0, 0x0, 0x8 };
DeviceAddress sensor6 = {
  0x28, 0x19, 0x92, 0x3C, 0x5, 0x0, 0x0, 0x88 };  
DeviceAddress sensor7 = {
  0x28, 0xB, 0x7C, 0x3C, 0x5, 0x0, 0x0, 0xC5 };
DeviceAddress sensor8 = {
  0x28, 0x9C, 0x83, 0x3C, 0x5, 0x0, 0x0, 0x38 };
DeviceAddress sensor9 = {
  0x28, 0xEB, 0x86, 0x3C, 0x5, 0x0, 0x0, 0xF7 };
DeviceAddress sensor10 = {
  0x28, 0x9D, 0x83, 0x3C, 0x5, 0x0, 0x0, 0xF };

//ETHERNET-SETTINGS
byte mac[] = {
  0x88, 0x87, 0x17, 0x87, 0xD6, 0x67 }; // MAC-Adresse des Arduino
byte ip[] = {
  192, 168, 178, 28 }; // IP-Adresse des Arduino
//byte gateway[] = { 192, 168, 178, 1 }; // Gateway
//byte subnet[] = { 255, 255, 255, 0 }; // SubNet
byte server[] = {
  95, 143, 172, 134 }; // IP-Adresse des Servers

EthernetClient client;
char host[] = "ihrewaesche.de"; // Domain
char url[] = "/ARDUINO/Temperatur/SaveTempToMySQL.php"; // Pfad zur PHP-Datei
char key[] = "MEINPASSWORT123"; // Kennwort aus PHP-Datei
char c; // Variable für Rückgabe des Servers

long Interval = 60; // Upload-Interval in Minuten
DallasTemperature sensors(&ds);
int numSensors; // Variable zum speichern der Anzahl der Temperatur-Sensoren
float temp1,temp2,temp3,temp4,temp5,temp6,temp7,temp8,temp9,temp10; // Temperaturwerte der Sensoren

void setup()
{
  delay(1000);
  Serial.begin(9600);
  Serial.flush();
  delay(200);
  Serial.println("Arduino TemperaturLogger");
  Serial.println("Ethernet initialisieren...");
  Ethernet.begin(mac, ip);
  Interval = Interval * 1000 * 60; // Das in Minuten angegebene Interval in Millisekunden umrechnen
  delay(1000); // warten, bis Ethernet gestartet
  //Sensoren abfragen
  sensors.begin();
  Serial.println("Temperatur-Sensoren ermitteln...");
  numSensors = sensors.getDeviceCount(); // Anzahl der angeschlossenen Sensoren in numSensors speichern
  if(numSensors > 0) // Es wurde mindestens 1 Sensor gefunden
  {
    Serial.print(numSensors);
    Serial.println( " Temperatur-Sensoren gefunden.");
    sensors.setResolution(sensor1, 10);
    sensors.setResolution(sensor2, 10);
    sensors.setResolution(sensor3, 10);
    sensors.setResolution(sensor4, 10);
    sensors.setResolution(sensor5, 10);
    sensors.setResolution(sensor6, 10);
    sensors.setResolution(sensor7, 10);
    sensors.setResolution(sensor8, 10);
    sensors.setResolution(sensor9, 10);
    sensors.setResolution(sensor10, 10);
  }
  else // Es wurde kein Sensor gefunden
  {
    Serial.println("Keine Temperatur-Sensoren gefunden.");
  }
}
void loop()
{
  sensors.requestTemperatures();
  temp1 = sensors.getTempC(sensor1);
  temp2 = sensors.getTempC(sensor2);
  temp3 = sensors.getTempC(sensor3);
  temp4 = sensors.getTempC(sensor4);
  temp5 = sensors.getTempC(sensor5);
  temp6 = sensors.getTempC(sensor6);
  temp7 = sensors.getTempC(sensor7);
  temp8 = sensors.getTempC(sensor8);
  temp9 = sensors.getTempC(sensor9);
  temp10 = sensors.getTempC(sensor10);
  if (temp1 == -127.00) Serial.print("Fehler Sensor1");
  else {
    Serial.print("Temp1: ");
    Serial.println(temp1);
  }
  if (temp2 == -127.00) Serial.print("Fehler Sensor2");
  else {
    Serial.print("Temp2: ");
    Serial.println(temp2);
    if (temp1 == -127.00) Serial.print("Fehler Sensor3");
    else {
      Serial.print("Temp3: ");
      Serial.println(temp3);
    }
    if (temp2 == -127.00) Serial.print("Fehler Sensor4");
    else {
      Serial.print("Temp4: ");
      Serial.println(temp4);
    }
    if (temp1 == -127.00) Serial.print("Fehler Sensor5");
    else {
      Serial.print("Temp5: ");
      Serial.println(temp5);
    }
    if (temp2 == -127.00) Serial.print("Fehler Sensor6");
    else {
      Serial.print("Temp6: ");
      Serial.println(temp6);
    }
    if (temp1 == -127.00) Serial.print("Fehler Sensor7");
    else {
      Serial.print("Temp7: ");
      Serial.println(temp7);
    }
    if (temp2 == -127.00) Serial.print("Fehler Sensor8");
    else {
      Serial.print("Temp8: ");
      Serial.println(temp8);
    }
    if (temp1 == -127.00) Serial.print("Fehler Sensor9");
    else {
      Serial.print("Temp9: ");
      Serial.println(temp9);
    }
    if (temp2 == -127.00) Serial.print("Fehler Sensor10");
    else {
      Serial.print("Temp10: ");
      Serial.println(temp10);
    }
    if (temp1!= -127.00 && temp2 != -127.00 && temp3 != -127.00 && temp4 != -127.00 && temp5 != -127.00 && temp6 != -127.00 && temp7 != -127.00 && temp8 != -127.00 && temp9 != -127.00 && temp10 != -127.00)
    {
      Daten_Senden(temp1, temp2, temp3, temp4, temp5, temp6, temp7, temp8, temp9, temp10); // Temperaturdaten an Server übertragen
      delay(700);
      byte maxReads = 10; //Seconds
      while ((maxReads-- > 0) && client.connected()) // Antwort des Servers lesen
      {
        delay(1000);
        while (client.available())
        {
          char response = client.read();
          Serial.print(response);
        }
      }
      client.stop();
      Serial.println("Done.");
      client.flush();
      delay(Interval);
    }
  }
}
/******************************
*
* Daten an Server schickenn *
*
*******************************/
void Daten_Senden(float T1, float T2, float T3, float T4, float T5, float T6, float T7, float T8, float T9, float T10)
{
  if (client.connect(server, 80)) // Verbindung zum Server aufbauen
  {
    Serial.println("Verbunden, Sende Daten...");
    client.print("GET " + String(url));
    Serial.println("GET " + String(url));
    client.print("?T1=");
    Serial.print("?T1=");
    client.print(T1);
    Serial.println(T1);
    client.print("&T2=");
    Serial.print("&T2=");
    client.print(T2);
    Serial.println(T2);
    client.print("&T3=");
    Serial.print("&T3=");
    client.print(T3);
    Serial.println(T3);
    client.print("&T4=");
    Serial.print("&T4=");
    client.print(T4);
    Serial.println(T4);
    client.print("&T5=");
    Serial.print("&T5=");
    client.print(T5);
    Serial.println(T5);
    client.print("&T6=");
    Serial.print("&T6=");
    client.print(T6);
    Serial.println(T6);
    client.print("&T7=");
    Serial.print("&T7=");
    client.print(T7);
    Serial.println(T7);
    client.print("&T8=");
    Serial.print("&T8=");
    client.print(T8);
    Serial.println(T8);
    client.print("&T9=");
    Serial.print("&T9=");
    client.print(T9);
    Serial.println(T9);
    client.print("&T10=");
    Serial.print("&T10=");
    client.print(T10);
    Serial.println(T10);
    client.print("&key=" + String(key));
    Serial.print("&key=" + String(key));
    client.println(" HTTP/1.1");
    Serial.println(" HTTP/1.1");
    client.print("Host: " + String(host));
    Serial.print("Host: " + String(host));
    client.println();
    Serial.println();
    client.println("User-Agent: Arduino");
    Serial.println("User-Agent: Arduino");
    client.println("Connection: close");
    Serial.println("Connection: close");
    client.println();
    Serial.println();
  }
  else
  {
    Serial.println(" ***** VERBINDUNG KANN NICHT HERGESTELLT WERDEN *****");
  }
}

Nüchtern betrachtet...ist besoffen besser Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.01.2014, 11:35
Beitrag #14
RE: Arduino mit DS18B20 und MySQL
Hallo Ricardo,

da sag ich einfach mal Hut ab. So funktioniert das.

Nur 2 Sachen noch:

1. Nun sendet er das ja ununterbrochen (die Zeile: Interval = Interval... habe ich ausgeklammert). Wenn ich alle 2 Minuten die Datenbank mit neuen Daten füttern möchte, wo muss ich das delay(120000) einfügen. Ich vermute im void loop oberhalb von : sensors.requestTemperatures(); , oder nicht?
Das mit dem Interval verstehe ich nicht, wo ist das denn eingebunden?Huh
Der Arduino ist für mich Neuland, daher manche Verständnisfragen.Blush

2.Wenn ich das richtig verstanden habe, überprüft er ja alle Sensoren auf Werteausgabe. Nur wenn alle Sensoren korrekte Werte liefern, sendet er an den Webserver. Das wäre aber nicht in meinem Sinne. Dann würde die Datenbank, bei Ausfall eines Sensors, gar keine Daten bekommen.
Es sollte sein: alle Werte werden der Datenbank gesendet, der defekte Sensor schickt z.B. 127.
Oder habe ich das jetzt falsch verstanden?

Grüße
Michael
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.01.2014, 12:02
Beitrag #15
RE: Arduino mit DS18B20 und MySQL
Hallo Michael,

deine Fragen / Punkte sind im Code angepasst. Suche nach den Zeilen die mit //*** beginnen.

Grüße Ricardo

Code:
#include <SPI.h>
#include <Ethernet.h> // library for ethernet functions
#include <DallasTemperature.h> // library for temperature sensors
#include <OneWire.h> // library for the onewire bus

OneWire ds(7); // pin für Temperatursensoren

//DeviceAdressen der einzelnen ds1820 Temperatursensoren.
DeviceAddress sensor1 = {
  0x28, 0x2D, 0x6D, 0x3C, 0x5, 0x0, 0x0, 0x70 };
DeviceAddress sensor2 = {
  0x28, 0xE2, 0x86, 0x3C, 0x5, 0x0, 0x0, 0x61 };
DeviceAddress sensor3 = {
  0x28, 0x32, 0x8D, 0x3C, 0x5, 0x0, 0x0, 0xD5 };
DeviceAddress sensor4 = {
  0x28, 0xC8, 0x76, 0x3C, 0x5, 0x0, 0x0, 0xBE };  
DeviceAddress sensor5 = {
  0x28, 0x1F, 0x81, 0x3C, 0x5, 0x0, 0x0, 0x8 };
DeviceAddress sensor6 = {
  0x28, 0x19, 0x92, 0x3C, 0x5, 0x0, 0x0, 0x88 };  
DeviceAddress sensor7 = {
  0x28, 0xB, 0x7C, 0x3C, 0x5, 0x0, 0x0, 0xC5 };
DeviceAddress sensor8 = {
  0x28, 0x9C, 0x83, 0x3C, 0x5, 0x0, 0x0, 0x38 };
DeviceAddress sensor9 = {
  0x28, 0xEB, 0x86, 0x3C, 0x5, 0x0, 0x0, 0xF7 };
DeviceAddress sensor10 = {
  0x28, 0x9D, 0x83, 0x3C, 0x5, 0x0, 0x0, 0xF };

//ETHERNET-SETTINGS
byte mac[] = {
  0x88, 0x87, 0x17, 0x87, 0xD6, 0x67 }; // MAC-Adresse des Arduino
byte ip[] = {
  192, 168, 178, 28 }; // IP-Adresse des Arduino
//byte gateway[] = { 192, 168, 178, 1 }; // Gateway
//byte subnet[] = { 255, 255, 255, 0 }; // SubNet
byte server[] = {
  95, 143, 172, 134 }; // IP-Adresse des Servers

EthernetClient client;
char host[] = "ihrewaesche.de"; // Domain
char url[] = "/ARDUINO/Temperatur/SaveTempToMySQL.php"; // Pfad zur PHP-Datei
char key[] = "MEINPASSWORT123"; // Kennwort aus PHP-Datei
char c; // Variable für Rückgabe des Servers

unsigned long Interval = 120000; //*** Upload-Interval Millisekunden = 2 Minuten
//*** Zeitpunkt zu dem die letzte Sendung an Server erfolgte.
//*** Aber Achtung: millis() läuft nach 50 Tagen über und beginnt wieder bei 0 //*** wegen der max. Zahl eines long-Wertes. Abhilfe schafft hier nur Zeit holen //*** über UDP/NTP bzw. RTC-Chip.
unsigned long Lastsend = 0;
DallasTemperature sensors(&ds);
int numSensors; // Variable zum speichern der Anzahl der Temperatur-Sensoren
float temp1,temp2,temp3,temp4,temp5,temp6,temp7,temp8,temp9,temp10; // Temperaturwerte der Sensoren

void setup()
{
  delay(1000);
  Serial.begin(9600);
  Serial.flush();
  delay(200);
  Serial.println("Arduino TemperaturLogger");
  Serial.println("Ethernet initialisieren...");
  Ethernet.begin(mac, ip);
  //***  Interval = Interval * 1000 * 60; // Das in Minuten angegebene Interval in Millisekunden umrechnen
  delay(1000); // warten, bis Ethernet gestartet
  //Sensoren abfragen
  sensors.begin();
  Serial.println("Temperatur-Sensoren ermitteln...");
  numSensors = sensors.getDeviceCount(); // Anzahl der angeschlossenen Sensoren in numSensors speichern
  if(numSensors > 0) // Es wurde mindestens 1 Sensor gefunden
  {
    Serial.print(numSensors);
    Serial.println( " Temperatur-Sensoren gefunden.");
    sensors.setResolution(sensor1, 10);
    sensors.setResolution(sensor2, 10);
    sensors.setResolution(sensor3, 10);
    sensors.setResolution(sensor4, 10);
    sensors.setResolution(sensor5, 10);
    sensors.setResolution(sensor6, 10);
    sensors.setResolution(sensor7, 10);
    sensors.setResolution(sensor8, 10);
    sensors.setResolution(sensor9, 10);
    sensors.setResolution(sensor10, 10);
  }
  else // Es wurde kein Sensor gefunden
  {
    Serial.println("Keine Temperatur-Sensoren gefunden.");
  }
  //*** Startzeit des Daten_Senden Timers
  Lastsend=millis();
}
void loop()
{
  sensors.requestTemperatures();
  temp1 = sensors.getTempC(sensor1);
  temp2 = sensors.getTempC(sensor2);
  temp3 = sensors.getTempC(sensor3);
  temp4 = sensors.getTempC(sensor4);
  temp5 = sensors.getTempC(sensor5);
  temp6 = sensors.getTempC(sensor6);
  temp7 = sensors.getTempC(sensor7);
  temp8 = sensors.getTempC(sensor8);
  temp9 = sensors.getTempC(sensor9);
  temp10 = sensors.getTempC(sensor10);
  if (temp1 == -127.00) Serial.print("Fehler Sensor1");
  else {
    Serial.print("Temp1: ");
    Serial.println(temp1);
  }
  if (temp2 == -127.00) Serial.print("Fehler Sensor2");
  else {
    Serial.print("Temp2: ");
    Serial.println(temp2);
    if (temp1 == -127.00) Serial.print("Fehler Sensor3");
    else {
      Serial.print("Temp3: ");
      Serial.println(temp3);
    }
    if (temp2 == -127.00) Serial.print("Fehler Sensor4");
    else {
      Serial.print("Temp4: ");
      Serial.println(temp4);
    }
    if (temp1 == -127.00) Serial.print("Fehler Sensor5");
    else {
      Serial.print("Temp5: ");
      Serial.println(temp5);
    }
    if (temp2 == -127.00) Serial.print("Fehler Sensor6");
    else {
      Serial.print("Temp6: ");
      Serial.println(temp6);
    }
    if (temp1 == -127.00) Serial.print("Fehler Sensor7");
    else {
      Serial.print("Temp7: ");
      Serial.println(temp7);
    }
    if (temp2 == -127.00) Serial.print("Fehler Sensor8");
    else {
      Serial.print("Temp8: ");
      Serial.println(temp8);
    }
    if (temp1 == -127.00) Serial.print("Fehler Sensor9");
    else {
      Serial.print("Temp9: ");
      Serial.println(temp9);
    }
    if (temp2 == -127.00) Serial.print("Fehler Sensor10");
    else {
      Serial.print("Temp10: ");
      Serial.println(temp10);
    }
    //*** Abfrage ob aktuelle Zeit > letzter Sendezeit + Interval -1 /  ohne Abfrage des Status der Sensoren
    if (millis() > Lastsend + Interval -1)
    {
      //*** Wenn ja, letzte Sendezeit auf aktuelle Zeit
      Lastsend=millis();
      //*** und senden
      Daten_Senden(temp1, temp2, temp3, temp4, temp5, temp6, temp7, temp8, temp9, temp10); // Temperaturdaten an Server übertragen
      delay(700);
      byte maxReads = 10; //Seconds
      while ((maxReads-- > 0) && client.connected()) // Antwort des Servers lesen
      {
        delay(1000);
        while (client.available())
        {
          char response = client.read();
          Serial.print(response);
        }
      }
      client.stop();
      Serial.println("Done.");
      client.flush();

      //*** mittels Lastsend und Interval ersetzt delay(Interval);
    }
  }
}
/******************************
*
* Daten an Server schickenn *
*
*******************************/
void Daten_Senden(float T1, float T2, float T3, float T4, float T5, float T6, float T7, float T8, float T9, float T10)
{
  if (client.connect(server, 80)) // Verbindung zum Server aufbauen
  {
    Serial.println("Verbunden, Sende Daten...");
    client.print("GET " + String(url));
    Serial.println("GET " + String(url));
    client.print("?T1=");
    Serial.print("?T1=");
    client.print(T1);
    Serial.println(T1);
    client.print("&T2=");
    Serial.print("&T2=");
    client.print(T2);
    Serial.println(T2);
    client.print("&T3=");
    Serial.print("&T3=");
    client.print(T3);
    Serial.println(T3);
    client.print("&T4=");
    Serial.print("&T4=");
    client.print(T4);
    Serial.println(T4);
    client.print("&T5=");
    Serial.print("&T5=");
    client.print(T5);
    Serial.println(T5);
    client.print("&T6=");
    Serial.print("&T6=");
    client.print(T6);
    Serial.println(T6);
    client.print("&T7=");
    Serial.print("&T7=");
    client.print(T7);
    Serial.println(T7);
    client.print("&T8=");
    Serial.print("&T8=");
    client.print(T8);
    Serial.println(T8);
    client.print("&T9=");
    Serial.print("&T9=");
    client.print(T9);
    Serial.println(T9);
    client.print("&T10=");
    Serial.print("&T10=");
    client.print(T10);
    Serial.println(T10);
    client.print("&key=" + String(key));
    Serial.print("&key=" + String(key));
    client.println(" HTTP/1.1");
    Serial.println(" HTTP/1.1");
    client.print("Host: " + String(host));
    Serial.print("Host: " + String(host));
    client.println();
    Serial.println();
    client.println("User-Agent: Arduino");
    Serial.println("User-Agent: Arduino");
    client.println("Connection: close");
    Serial.println("Connection: close");
    client.println();
    Serial.println();
  }
  else
  {
    Serial.println(" ***** VERBINDUNG KANN NICHT HERGESTELLT WERDEN *****");
  }
}

Nüchtern betrachtet...ist besoffen besser Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.01.2014, 12:36
Beitrag #16
RE: Arduino mit DS18B20 und MySQL
Hallo Ricardo,

Mann, bist du schnell.

Ich habe schnell mal den Uno angestellt und serial Monitor geöffnet.
Er kommt aus der Schleife Temperaturen lesen nicht raus.

Grüße
Michael
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Arduino+Ethernet+RFID+MySQL RonSH 12 672 13.10.2016 22:32
Letzter Beitrag: Tommy56
Lightbulb LED Thermometer über WS2812b LED und Dallas DS18B20 Wampo 2 1.736 15.03.2015 17:45
Letzter Beitrag: Wampo
Star ATTINY85 mit DS18B20 Temperatursensor und echtem Analogausgang ardu_arne 0 4.186 07.01.2015 21:28
Letzter Beitrag: ardu_arne
  Arduino Neuling: Zugeklappten Laptop mit Arduino aufwecken + Kiste aufklappen? Ikearegal 2 2.536 02.02.2014 07:59
Letzter Beitrag: Ikearegal

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste