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
15.06.2014, 17:50
Beitrag #41
RE: Arduino mit DS18B20 und MySQL
Hallo MichelB35,
das Problem ist sehr abhängig von der verwendeten MySQL-Version. Das notwendige Format sieht man am besten, wenn man eine Tabelle mit Zeitwerten mal als csv exportiert und guckt wie der Wert zusammengebaut ist.
Dann im Sketch die Funktionen hour(),minute(),second(),day(),month(),year() der Time-Library benutzen und eine Variable entsprechend zusammenbauen und an den Webserver übergeben.

Grüße Ricardo

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

danke dir für die schnelle Hilfe. Jetzt liegt erstmal wieder ne Arbeitswoche vor mir. Mal schauen, ob ich am WE schon etwas mit deinem Tip umsetzen kann.

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

du hast hier vor einiger Zeit mal nach der Bestimmung von Sommer- und Winterzeit gefragt. Das geht so:

Code:
// calculate daylight saving time
  int daylightSaving = 0;
  if ( month() > 10 || month() < 3)
    daylightSaving = 1;
  else if (month() == 10 && day() >= (31 - (1+(year()*5)/4)%7))
    daylightSaving = 1;
  else if (month() == 3  && day() <  (31 - (4+(year()*5)/4)%7))
    daylightSaving = 1;
daylightSaving == 0 ist Sommerzeit, ansonsten Winterzeit.

Gruss Jürgen
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
03.06.2015, 18:41
Beitrag #44
RE: Arduino mit DS18B20 und MySQL
Hallo zusammen

Durch zufall bin ich auf das Forum und dem Tread gestossen.
erstmal danke an Ricardo,Michael und allen anderen die sich mit dem Thema befasst haben.
Vieles konnte ich für mich rausnehmen und umsetzen, nun habe ich ein problem !
ich möchte die werte grafisch darstellen lassen . habe da so das eine oder andere ausprobiert aber ich bekomme immer fehler meldungen.

Derzeit habe ich 2 DS18B20 am Laufen und ein Lichtsensor der in Prozent mist.
diese würde ich gerne grafisch darstellen lassen

hat einer eine IDEE wie ich das einfach umsetzen kann ?

Gruss Thomas ( Sammelbegriff )
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
04.06.2015, 10:22
Beitrag #45
RE: Arduino mit DS18B20 und MySQL
(03.06.2015 18:41)Gandalf schrieb:  Derzeit habe ich 2 DS18B20 am Laufen und ein Lichtsensor der in Prozent mist.
diese würde ich gerne grafisch darstellen lassen

hat einer eine IDEE wie ich das einfach umsetzen kann ?
Hi,
bist Du schon einmal auf FHEM gestoßen? http://www.fhem.de
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.06.2015, 14:18 (Dieser Beitrag wurde zuletzt bearbeitet: 10.06.2015 14:19 von Gandalf.)
Beitrag #46
RE: Arduino mit DS18B20 und MySQL
Hallo Thorsten
danke für den tip und sorry das ich mich jetzt erst melde ... bin noch nicht dazu gekommen aber seite habe ich mir schon mal angesehen.

habe aber leider ein anderes problem zur zeit.
bin gestern nach hause gekommen und habe gesehen das sich das arduino aufgewickelt hat .. nach ursachen vorschung ist mit aufgefallen das es wohl mit der
unsigned long / millis - Funktion zu tun hat

Code:
#include <SPI.h>
#include <Ethernet.h> // library für Internet - Funktionen
#include <DallasTemperature.h> // library für Temperatursensoren
#include <OneWire.h> // library für den OneWire Bus
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

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

//DeviceAdressen der einzelnen ds18b20 Temperatursensoren
DeviceAddress sensor1 = {
  0x28, 0x0E, 0xBB, 0x9D, 0x04, 0x00, 0x00, 0xD0
};
DeviceAddress sensor2 = {
  0x28, 0x09, 0xE3, 0x9C, 0x04, 0x00, 0x00, 0x71
};


//ETHERNET-SETTINGS
byte mac[]     = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };    // MAC-Adresse des Arduino
byte ip[]      = { 192, 167, 222, 177 };                    // IP-Adresse des Arduino
byte gateway[] = { 192, 167, 222, 1 };                      // Gateway
byte subnet[]  = { 255, 255, 255, 0 };                      // SubNet
byte server[]  = { 192, 167, 222, 120 };                     // IP-Adresse des Servers

EthernetClient client;
char host[]    = "mein_hoster.de";              // Domain
char url[]     = "/mein_Link/zurSQL.php";          // Pfad zur PHP-Datei
char key[]     = "dukommsthiernetrein";                              // Kennwort aus PHP-Datei
char c;                                                     // Variable f�r R�ckgabe des Servers

//Displayadressen
LiquidCrystal_I2C lcd1(0x26, 20, 4);
LiquidCrystal_I2C lcd2(0x27, 20, 4);


unsigned long Interval = 20000; //*** Upload-Interval Millisekunden = 5 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;

const int potPin = 0;  // pin fuer den Solarwert

DallasTemperature sensors(&ds);

int numSensors; // Variable zum speichern der Anzahl der Temperatur-Sensoren

float temp1, temp2, opti1, opti2, solar1, opti3, sun1; // Werte der Sensoren


void setup()

{

  // Display Bergruesung

  lcd1.init();
  lcd1.backlight();
  lcd2.init();
  lcd2.backlight();

  lcd1.home();
  lcd2.home();

  // Display 1
  lcd1.setCursor(0, 0);
  lcd1.print("");
  lcd1.setCursor(0, 1);
  lcd1.print("");
  lcd1.setCursor(0, 2);
  lcd1.print("");
  lcd1.setCursor(0, 3);
  lcd1.print("");
  // Display 2
  lcd2.setCursor(0, 0);
  lcd2.print("  ");
  lcd2.setCursor(0, 1);
  lcd2.print("");
  lcd2.setCursor(0, 2);
  lcd2.print("");
  lcd2.setCursor(0, 3);
  lcd2.print("");


  // LEDS zuweisen
  pinMode(13, OUTPUT);
  pinMode(22, OUTPUT);
  pinMode(23, OUTPUT);
  pinMode(24, OUTPUT);
  pinMode(25, OUTPUT);
  pinMode(26, OUTPUT);
  pinMode(27, OUTPUT);
  pinMode(28, OUTPUT);
  pinMode(30, OUTPUT);
  pinMode(32, OUTPUT);

  opti1 = 0;
  opti2 = 0;
  opti3 = 0;

  // LEDS Testen
  digitalWrite(13, HIGH);
  digitalWrite(22, HIGH);
  digitalWrite(24, HIGH);
  digitalWrite(26, HIGH);
  digitalWrite(23, HIGH);
  digitalWrite(25, HIGH);
  digitalWrite(27, HIGH);
  digitalWrite(28, HIGH);
  digitalWrite(30, HIGH);
  digitalWrite(32, HIGH);

  delay(500);
  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.");
  }
  //*** Startzeit des Daten_Senden Timers
// Lastsend = millis();
  Lastsend = 0;
}

int backlightState1 = LOW;
int backlightState2 = LOW;
long previousMillis = 0;
long interval = 1000;

void loop()
{

  //*** Solarernte berechnen in Prozent

  int val;                      // The value coming from the sensor
  int solar1;                   // The mapped value

  val = analogRead(potPin);        // read the voltage on the pot (val ranges
  // from 0 to 1023)
  solar1 = map(val, 0, 680, 0, 100); // percent will range from 0 to 100.
  delay(solar1);                  // On time given by percent value
  delay(100 - solar1);            // Off time is 100 minus On time
  sun1 = solar1;
  Serial.println(sun1);         // show % of pot rotation on Serial Monitor
  Serial.println(millis());

  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(temp2);
  }
  {
    //*** Abfrage ob aktuelle Zeit > letzter Sendezeit + Interval -1 / ohne Abfrage des Status der Sensoren
    lcd2.setCursor(0, 3);
    lcd2.print(Lastsend);
    if (millis() > Lastsend + Interval - 1)
    {

      //*** Wenn ja, letzte Sendezeit auf aktuelle Zeit
      Lastsend = millis();
      //*** und senden
    Daten_Senden(temp1, temp2, solar1); // Temperaturdaten an Server Übertragen
      delay(10000);
      byte maxReads = 10; //Seconds
      while ((maxReads-- > 0) && client.connected()) // Antwort des Servers lesen
           while (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 S1)

{
  if (client.connect(server, 80)) // Verbindung zum Server aufbauen
  {
    digitalWrite(13, HIGH);
    //     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("&S1=");
    //         Serial.print("&S1=");
    client.print(S1);
    //          Serial.println(S1);
    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 *****");
  }

  //*** Display ausgabe

  lcd2.setCursor(0, 0);
  lcd2.print("Innentemp          ");
  lcd2.setCursor(12, 0);
  lcd2.print(temp2);
  lcd2.setCursor(18, 0);
  lcd2.print("C");
  lcd2.setCursor(0, 1);
  lcd2.print("Aussentemp          ");
  lcd2.setCursor(12, 1);
  lcd2.print(temp1);
  lcd2.setCursor(18, 1);
  lcd2.print("C");
  lcd2.setCursor(0, 2);
  lcd2.print("Solarernte          ");
  lcd2.setCursor(12, 2);
  lcd2.print(sun1);
  lcd2.setCursor(18, 2);
  lcd2.print("%");
  lcd2.setCursor(0, 3);
  lcd2.print("                   ");
  lcd1.setCursor(0, 3);
  lcd1.print("  ");


  //*** Trend ausgeben Optisch
  //*** Innen
  if (temp1 < opti1)
  {
    digitalWrite(22, HIGH);
    digitalWrite(24, LOW);
    digitalWrite(26, LOW);

  }
  else if (temp1 == opti1)
  {
    digitalWrite(22, LOW);
    digitalWrite(24, HIGH);
    digitalWrite(26, LOW);

  }
  else if (temp1 > opti1)
  {
    digitalWrite(22, LOW);
    digitalWrite(24, LOW);
    digitalWrite(26, HIGH);

  }
  //*** Ausen

  if (temp2 < opti2)
  {
    digitalWrite(23, HIGH);
    digitalWrite(25, LOW);
    digitalWrite(27, LOW);

  }
  else if (temp2 == opti2)
  {
    digitalWrite(23, LOW);
    digitalWrite(25, HIGH);
    digitalWrite(27, LOW);

  }
  else if (temp2 > opti2)
  {
    digitalWrite(23, LOW);
    digitalWrite(25, LOW);
    digitalWrite(27, HIGH);
  }
  //*** Solar

  if (sun1 < opti3)
  {
    digitalWrite(28, HIGH);
    digitalWrite(30, LOW);
    digitalWrite(32, LOW);

  }
  else if (sun1 == opti3)
  {
    digitalWrite(28, LOW);
    digitalWrite(30, HIGH);
    digitalWrite(32, LOW);

  }
  else if (sun1 > opti3)
  {
    digitalWrite(28, LOW);
    digitalWrite(30, LOW);
    digitalWrite(32, HIGH);

  }

  // Serial.println(" ***** SOLL IST WERT *****");
  // Serial.println(" Temp1 - Ausen ");
  // Serial.println(" *************************");
  // Serial.println(temp1);
  // Serial.println(opti1);
  // Serial.println(" *************************");
  // Serial.println(" Temp2 - Innen ");
  // Serial.println(" *************************");
  // Serial.println(temp2);
  // Serial.println(opti2);
  // Serial.println(" *************************");
  // Serial.println(" Solar1 - Sonnenernte ");
  // Serial.println(" *************************");
  // Serial.println(sun1);
  // Serial.println(opti3);
  // Serial.println(" *************************");

  opti1 = temp1;
  opti2 = temp2;
  opti3 = sun1;
  Lastsend = 0;
  
  
  digitalWrite(13, LOW);

  delay(1000);
}


also einmal am tag muss ich den immer neu starten

Jemand eine Idee ?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.06.2015, 15:14
Beitrag #47
RE: Arduino mit DS18B20 und MySQL
Hi,
also einmal am Tag wundert mich. Normalerweise tritt das Problem nach etwa 40 Tagen auf.
Ändere mal das hier:
Code:
if (millis() > Lastsend + Interval - 1)
So dass es so aussieht:
Code:
if (millis() - Lastsend > Interval)
Mich wundert aber, dass Du in Daten_Senden auch nochmal ein delay hast und außerdem Lastsend auf 0 setzt.
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.06.2015, 20:14 (Dieser Beitrag wurde zuletzt bearbeitet: 10.06.2015 20:15 von Gandalf.)
Beitrag #48
RE: Arduino mit DS18B20 und MySQL
Nabend
danke für deiune antwort habe ich auch ausprobiert, brachte aber nicht so denn efekt denn ich eigendlich haben wollte.

habe das programm umgeschrieben jetzt und soweit läuft es auch
wollte das jetzt auch so machen das meine anzeigen ( display und die tendenz )
so anzeigt das ich alle ca 5 min. auf dem server lade und jede min. oder alle 2,5 min sich das display ändert

hatte da was gefunden das ich das schön gliedern kann
Code:
void loop()
{
    Sensor_lesen();
    Daten_senden();
    delay(900);
   digitalWrite(PowerLED, HIGH);

  if (client.available())
  {
    char c = client.read();
    Serial.print(c);
  }
  delay(899000);
    client.stop();
    client.flush();
}

void Sensor_lesen()
{
}

void Daten_senden()
{
}

Das mit deim "void" habe ich noch nicht so ganz verstanden



ich wollte das jetzt so bei mir machen
void Tendenz
void Daten senden
void Anzeige

aber irgendwie will das noch nicht so

zusatzlich will ich einen taster anschliesen der dann wenn der server aktuallisiert hat das Display ausschaltet

LG
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 670 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.175 07.01.2015 21:28
Letzter Beitrag: ardu_arne
  Arduino Neuling: Zugeklappten Laptop mit Arduino aufwecken + Kiste aufklappen? Ikearegal 2 2.529 02.02.2014 07:59
Letzter Beitrag: Ikearegal

Gehe zu:


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