Pages: [1]   Go Down
Author Topic: Mein neuestes Projekt - Temperaturlogger - Temperatur in Datenbank speichern  (Read 2612 times)
0 Members and 1 Guest are viewing this topic.
Munich
Offline Offline
Newbie
*
Karma: 0
Posts: 37
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ich habe gerade im FLUUUX-TechBlog mein neues Projekt "Arduino, MySQL - Temperatur-Sensoren über Webserver auslesen" veröffentlicht, in dem ich zeige wie man mit einem Arduino, zwei ds18s20 Temperatursensoren und einem EthernetShield die ermittelten Temperaturen in einer MySQL-Datenbank speichern und diese anschließend wieder auslesen kann.

Ich habe einen Temperatur-Sensor im Wohnzimmer und einen im Schatten auf dem Balkon angebracht. Die Sensoren werden einmal jede Stunde abgefragt und die ermittelten Werte in einer MySQL-Datenbank gespeichert.
Auf http://www.ihrewaesche.de/ARDUINO/Temperatur/ kann man den zuletzt gespeicherten Wert der beiden Sensoren als Text sehen. Außerdem kann man sich die Werte der letzten 12 Stunden, der letzten 7 Tage und des letzten Monats in einem Diagram anzeigen lassen.



 


* 7TageSplineAnsicht.jpg (111.28 KB, 895x612 - viewed 74 times.)

* AktuelleAnsicht.jpg (109.59 KB, 895x612 - viewed 64 times.)

* 12StundenAreaSlineAnsicht.jpg (115.4 KB, 895x612 - viewed 50 times.)

* 12StundenColumnAnsicht.jpg (134.73 KB, 895x612 - viewed 43 times.)
« Last Edit: September 27, 2012, 04:03:55 am by profwebapps » Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 249
Posts: 21183
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Schönes Projekt, gratuliere.
Nur eine Kritik: mißt Du wirklich die Temperaturen mit 1/100 Grad Genauigkeit. Das wäre ein max Fehler unter 0,05% Skalenendwert im Bereich von -20 bis 50 Grad.
Grüße Uwe
Logged

Munich
Offline Offline
Newbie
*
Karma: 0
Posts: 37
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Vielen Dank.
Das werde ich noch anpassen. Ich denke das die volle Gradzahl ausreichen sollte.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 3
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo profwebapps,

ich habe mir das angeschaut, Toll gemacht das Projekt.

Nun wollte ich das für mich selbst nutzen, nur habe ich DS18 B 20 Sensoren. Da funktioniert dein Sketch nicht, das heißt, die Temperaturwerte stimmen natürlich nicht.

Hast du den Sketch vieleicht auch für meine Sensoren, bzw.wo muss ich was verändern?

Grüße
Michael
Logged

Cloppenburg
Offline Offline
Edison Member
*
Karma: 27
Posts: 1005
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Hast du ein Mega im Einsatz? Der gleiche Sketch sollte auch mit 18B20 funktionieren.
Schau mal hier: http://arduino-info.wikispaces.com/Brick-Temperature-DS18B20
Logged

Nicht Mensch, nicht Tier: Programmierer halt...

Germany
Offline Offline
Edison Member
*
Karma: 46
Posts: 2310
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Hast du den Sketch vieleicht auch für meine Sensoren, bzw.wo muss ich was verändern?
Hast du auch deine Sensoradressen angepasst, also diese Codezeilen geändert:
Code:
DeviceAddress sensor1 = { 0x10, 0x98, 0x46, 0x57, 0x2, 0x8, 0x0, 0xF9 };
DeviceAddress sensor2 = { 0x10, 0x59, 0x4B, 0xC0, 0x1, 0x8, 0x0, 0x3E };
 
Logged

Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

Offline Offline
God Member
*****
Karma: 13
Posts: 837
ATmega 2560
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo,

wirklich mal ein richtig cooles Projekt. Respekt.   smiley

Läuft die Datenbank auf dem Arduino oder auf einem anderen Rechner im Netz?
Wenn alles auf dem Arduino läuft wäre das gut. Das wäre ähnlich dem was ich später brauche bzw. vor habe.
Bis zum Sensoren auslesen und per Webserver die aktuellen Werte abrufen/anzeigen könnte ich bestimmt alleine schaffen. Es gibt dafür genügend Beispiele. Jedoch die Daten in eine Datenbank für immer zu speichern und in einem Verlauf darstellbar zu machen wäre das Optimum hoch 3.
Zur Zeit kann ich nur Daten in eine Textdatei auf die SDcard schreiben.

Ich habe einen Mega2560 und ein WiFi-Shield mit SDcard.

Logged

Tschau
Doc Arduino

Offline Offline
Newbie
*
Karma: 0
Posts: 3
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hast du ein Mega im Einsatz? Der gleiche Sketch sollte auch mit 18B20 funktionieren.
Schau mal hier: http://arduino-info.wikispaces.com/Brick-Temperature-DS18B20

Das im Link funktioniert bei mir auch. Nur wenn ich den Sketch von  profwebapps nehme und meinen Gegebenheiten anpasse, passen meine Temperaturdaten nicht. Und ich bekomme es einfach nicht umgestellt. Im Serial Monitor werden mir Zimmertemps von über 50° ausgegeben. Ich habe schon viel versucht (3,3V, parasitär, parallel, anderen Widerstand), und im Sketch rumgespielt. Nicht funzt, mir gehen die Ideen aus und meine Nerven sind nicht mehr die besten. Ich habe einen Uno, sollte aber trotzdem gehen, theoretisch zumindest.

Grüße
Michael
« Last Edit: January 13, 2014, 11:15:21 am by Fried22 » Logged

Offline Offline
Jr. Member
**
Karma: 1
Posts: 89
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo profwebapps,

ich habe mal eine Frage zur Datenbank. Wenn ich 6 Sensoren habe, die jeweils Temperatur und Luftfeuchte messen in eine Datenbank schreibe, bei einem Intervall von sagen wir jede Minute, wie groß wird die Datenbank im einem Jahr?  Wie berechnet man da eigentlich? Hast Du da irgendwelche Erfahrungswerte?

Cooles Projekt  smiley
Logged

Cloppenburg
Offline Offline
Edison Member
*
Karma: 27
Posts: 1005
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

So schnell braucht ihr keine Antwort von ihm erwarten:
Letztes mal Online: 05-06-2013

Besser auf der fluux website melden
Logged

Nicht Mensch, nicht Tier: Programmierer halt...

Offline Offline
Newbie
*
Karma: 0
Posts: 10
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@Fried22

poste doch mal deinen Sketch, ich hab den auch mal für einen Uno und DS18B20 angepaßt, daß hat auch gut funktioniert...
Du ja nen ganzen Teil aus dem Sketch weglassen, wenn mich grad nicht alles täuscht...

@Doc

Er schickt die Daten an einen Server in eine SQL Datenbank...Und liest sie zur Darstellung von dort aus.
Noch etwas besser als "Vorlage" finde ich
http://jleopold.de/2011/03/16/arduino-daten-logger-mysql-php/

Mfg
Dominik
« Last Edit: January 14, 2014, 02:26:12 pm by Isy81 » Logged

Offline Offline
God Member
*****
Karma: 13
Posts: 837
ATmega 2560
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo,

Danke für den Link, ist gespeichert.   smiley

Logged

Tschau
Doc Arduino

Switzerland
Offline Offline
Newbie
*
Karma: 5
Posts: 33
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Cooles Projekt.

Ich habe was ähnliches gebaut um die Temp. unseres Warmwasser-Boilers zu messen. Dazu habe ich ein ENC28J60 an ein Nano gehängt und einen MiniWebserver geschrieben der auf HTTP requests mit den Werten der analogen Temperaturfühler (LM35)  antwortet. Die Werte hab ich mittels Linux Befehl "curl" abgefragt und an MRTG übergeben, der mir die Graphs erstellt hat.
Hier der Code:

Code:
/*
BoilMonDuino 1.0
================
Designed and programmed by ReDiculum (Roland Hansmann)
 
This is an active heat monitor for our warm water boiler.
There is an LM35 analog temp sensor attached on a outbound
tube attached to the boiler.
Thresholds and alerting is handled by external tools querying
the temperature over periodical HTTP requests.

Example MRTG UNIX subcommand:
`curl IPAddress`

The basic code is provided from the Arduino Forum sample
for a basic web server using EtherShield and EHTER_28J60
libraries from
http://trollmaker.com/article11/arduino-1-0-with-enc28j60-ethernet-shield-v1-1

CS = D10 (brown)
SI = D11 (orange)
SO = D12 (purple)
SCK = D13 (grey)
RST = RESET (white)
VCC = 3.3V (red)
GND = GND (black)
 
Use at your own risk!
*/

// Libraries
#include "etherShield.h"
#include "ETHER_28J60.h"

// ethernet interface mac address, must be unique on the LAN
static uint8_t mac[6] = {0x54, 0x55, 0x58, 0x10, 0x00, 0x24};
static uint8_t ip[4] = {10,0,72,72}; // IP address for the webserver
static uint16_t port = 80; // Use port 80 - the standard for HTTP

// Declarations
#define TEMP_SENSOR_WARMWASSER_PIN 0      // Analog Input 0
#define TEMP_SENSOR_ERWAERMER_PIN 1 // Analog Input 1
unsigned int tempWarmwasser;
unsigned int tempErwaermer;


ETHER_28J60 e;  // Create object

void setup () {
  Serial.begin(57600);
  
  e.setup(mac, ip, port);
}


void loop () {
  
  // Softreset every 30min  
  if (millis() >= 1800000) {
     asm volatile ("  jmp 0"); // Soft Reset
  }
  
  char* params;
  if (params = e.serviceRequest())
  {
    tempWarmwasser = (4.2 * analogRead(TEMP_SENSOR_WARMWASSER_PIN) * 100.0) / 1024;
    tempErwaermer = (4.2 * analogRead(TEMP_SENSOR_ERWAERMER_PIN) * 100.0) / 1024;
    e.print(tempWarmwasser);
    e.print("\r\n");
    e.print(tempErwaermer);
    e.print("\r\n");
    e.respond();
  }
}
« Last Edit: January 15, 2014, 10:36:03 am by rediculum » Logged

Regards
ReDiculum

Project:
LASERino

Offline Offline
God Member
*****
Karma: 13
Posts: 837
ATmega 2560
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo,

MRTG sieht fast wie ntop aus.  smiley  ntop läuft auf meinem Linuxrechner, jedoch mehr zum Spass.

Logged

Tschau
Doc Arduino

Switzerland
Offline Offline
Newbie
*
Karma: 5
Posts: 33
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ntop nutzt die RoundRobinDatabase von Tobi Oetiker, der Autor von MRTG smiley
Also eher umgekehrt, ntop sieht aus wie MRTG
Logged

Regards
ReDiculum

Project:
LASERino

Pages: [1]   Go Up
Jump to: