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:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Temperatur auf Lan ausgeben
29.12.2013, 17:19
Beitrag #1
Temperatur auf Lan ausgeben
Halli hallo,

erstmal einen schönen guten Abend. Ich muss mal um eure Hilfe bitten.
Ich habe einen Arduino Uno mit 2 Tempsensoren DS18b20.
Schaltung ist aufgebaut und funktioniert.
Seriell kann ich die Temps wunderbar auslesen.
Wie kann ich die Temps über Lan auslesen?
Ethernetshield is natürlich vorhanden.
Ich probier schon länger 2 Sketche zusammen zu fügen.
Aber des will nicht so richtig bei mir. Kann mir jemand helfen?
Im Moment nutze ich diesen Code zum auslesen der Temps:

#include <OneWire.h>

// OneWire DS18S20, DS18B20, DS1822 Temperature Example
//
// http://www.pjrc.com/teensy/td_libs_OneWire.html
//
// The DallasTemperature library can do all this work for you!
// http://milesburton.com/Dallas_Temperatur...ol_Library

OneWire ds(10); // on pin 10

void setup(void) {
Serial.begin(9600);
}

void loop(void) {
byte i;
byte present = 0;
byte type_s;
byte data[12];
byte addr[8];
float celsius;

if ( !ds.search(addr)) {
Serial.println("No more addresses.");
Serial.println();
ds.reset_search();
delay(250);
return;
}

Serial.print("ROM =");
for( i = 0; i < 8; i++) {
Serial.write(' ');
Serial.print(addr[i], HEX);
}

if (OneWire::crc8(addr, 7) != addr[7]) {
Serial.println("CRC is not valid!");
return;
}
Serial.println();

// the first ROM byte indicates which chip
switch (addr[0]) {
case 0x10:
Serial.println(" Chip = DS18S20"); // or old DS1820
type_s = 1;
break;
case 0x28:
Serial.println(" Chip = DS18B20");
type_s = 0;
break;
case 0x22:
Serial.println(" Chip = DS1822");
type_s = 0;
break;
default:
Serial.println("Device is not a DS18x20 family device.");
return;
}

ds.reset();
ds.select(addr);
ds.write(0x44,1); // start conversion, with parasite power on at the end

delay(1000); // maybe 750ms is enough, maybe not
// we might do a ds.depower() here, but the reset will take care of it.

present = ds.reset();
ds.select(addr);
ds.write(0xBE); // Read Scratchpad

Serial.print(" Data = ");
Serial.print(present,HEX);
Serial.print(" ");
for ( i = 0; i < 9; i++) { // we need 9 bytes
data[i] = ds.read();
Serial.print(data[i], HEX);
Serial.print(" ");
}
Serial.print(" CRC=");
Serial.print(OneWire::crc8(data, 8), HEX);
Serial.println();

// convert the data to actual temperature

unsigned int raw = (data[1] << 8) | data[0];
if (type_s) {
raw = raw << 3; // 9 bit resolution default
if (data[7] == 0x10) {
// count remain gives full 12 bit resolution
raw = (raw & 0xFFF0) + 12 - data[6];
}
} else {
byte cfg = (data[4] & 0x60);
if (cfg == 0x00) raw = raw << 3; // 9 bit resolution, 93.75 ms
else if (cfg == 0x20) raw = raw << 2; // 10 bit res, 187.5 ms
else if (cfg == 0x40) raw = raw << 1; // 11 bit res, 375 ms
// default is 12 bit resolution, 750 ms conversion time
}
celsius = (float)raw / 16.0;
fahrenheit = celsius * 1.8 + 32.0;
Serial.print(" Temperature = ");
Serial.print(celsius);
Serial.print(" Celsius, ");


}


Also habt schon mal Dank für eure Hilfe.

iselein
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
29.12.2013, 17:23
Beitrag #2
RE: Temperatur auf Lan ausgeben
Hallo iselein,

was meinst du mit
Zitat:Wie kann ich die Temps über Lan auslesen?

Formuliere dann Ziel ein wenig konkreter!

Grüße Ricardo

Nüchtern betrachtet...ist besoffen besser Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
29.12.2013, 17:32
Beitrag #3
RE: Temperatur auf Lan ausgeben
Naja,

das was ich auf dem SerialMonitor sehe hätte ich gerne über Lan ausgelesen.
Also ich gebe eine IP in meinem Netzwerk ein und es werden die Temps von den Fühlern angezeigt. Ohne Grafikschnickschnack oder so.
Ich habs mit Webserver probiert, aber ich bring die beiden Sketche nicht zusammen zum laufen.

iselein
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
29.12.2013, 17:41
Beitrag #4
RE: Temperatur auf Lan ausgeben
Naja,

"über LAN auslesen" ist was anderes als "über LAN ausgeben" Smile
Das zweite interpretiere ich mal als Anzeige der Werte in einem Browser.
Das projekt hier: http://forum.arduino.cc/index.php/topic,6595.0.html
macht eigentlich genau was du möchtest. Anstatt der Funktion RemoteAnalogRead()
setzt du deine Routine zum auslesen der Sensoren ein.

Grüße Ricardo

Nüchtern betrachtet...ist besoffen besser Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
29.12.2013, 18:24
Beitrag #5
RE: Temperatur auf Lan ausgeben
Ah ja,

ich hab keine Ahnung wie das gehen soll.
Wenn ich den Code von der Website nehme und ihn überprüfe kommt schon Fehlermeldung. Anstatt Funktion analog read soll ich meine Routine zum auslesen einsetzen. Sorry ich weiss nicht mal wo die Routine anfängt und aufhört.
Schlag mich bitte nicht. lol.
Ich hab bis jetzt nur die Temps über seriell ausgelesen. Hatte dafür immer meinen Rechner im Keller angelassen. Nun wollte ich es über LAN machen, daß ich den Rechner nicht immer anlassen muss. Aber wenn das so umständlich ist für einen der keine Ahnung hat, dann hab ich Pech gehabt.
Aber danke trotzdem für die Hilfe.

iselein
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
29.12.2013, 18:40
Beitrag #6
RE: Temperatur auf Lan ausgeben
Nana,

hier wird nicht geschlagenBig Grin

ich bin heute ziemlich ausgelastet. Vllt. morgen versuche ich mal deinen Code und den von der Website zusammenzubringen.

Grüße Ricardo

PS: Wer mit Arduino was machen möchte sollte sich allerdings auch damit beschäftigen Exclamation

Nüchtern betrachtet...ist besoffen besser Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
29.12.2013, 18:47
Beitrag #7
RE: Temperatur auf Lan ausgeben
Ich werd nicht geschlagen? Is ja wie im Paradies hier!!!
Ich weiss das ich mich mit dem Arduino etwas beschäftigen sollte,
aber er hat bis jetzt über seriell immer schön seinen Dienst verrichtet.
Und es geht schon los mit dem Englisch. Bin 45 Jahre und mein Englisch ist
ähhhhh.............
Aber danke schon mal wenn du dir zeitnimmst.

iselein
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
02.01.2014, 18:43
Beitrag #8
RE: Temperatur auf Lan ausgeben
Moin iselein,

etwas verspätet, aber anbei mal ein Code der passen müsste.
Test it. Zeilen mit //*** müssen angepasst werden!

Grüße Ricardo

PS: Ich bin über 50 Jahre Smile
Code:
#include <SPI.h>
#include <Ethernet.h>
#include <OneWire.h> // 1Wire Funktionen
#include <DallasTemperature.h> // Temperaturfühler

//*** MAC und IP-Adresse anpassen
byte mac[] = {  
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(10,1,1,77);
// OneWire Pin
#define ONE_WIRE_BUS 10
// Server initialisieren auf Port 80
EthernetServer server(80);
/*** Dallas Sensoren
Adressen - müssen angepasst werden. Koennen über  http://www.hacktronics.com/Tutorials/arduino-1-wire-address-finder.html ausgelesen werden
Dieser Weg ist notwendig, da alle Sensoren gleichen Types auf einem OneWire-Bus alle mit der gleichen Hauptadresse angesprochen werden
Alle Sensoren müssen vom Typ DS18S20 sein */
DeviceAddress s_aussenl = {
  0x10, 0xEA, 0xA2, 0x77, 0x02, 0x08, 0x00, 0xBA};
DeviceAddress s_innenl = {
  0x10, 0x08, 0x06, 0xC4, 0x02, 0x08, 0x00, 0xC8};
float aussenl;
float innenl;
// OneWire
#define ONE_WIRE_BUS 10 // an Port 10
// OneWire - Instanz erstellen
OneWire oneWire(ONE_WIRE_BUS);
// Ankopplung von Dallas Temperatursensoren an OneWire
DallasTemperature sensors(&oneWire);

void setup()
{
  // Start Ethernetverbindung und -server
  Ethernet.begin(mac, ip);
  server.begin();
  // Sensoren starten
  sensors.begin();
}
void loop()
{
  // auf Clients hören
  EthernetClient client = server.available();
  if (client) {
    // http request endet mit leerer Zeile
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        // bei Zeilenwechsel im Request Antwort senden
        if (c == '\n' && currentLineIsBlank)
        {
          // Standardheader
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println("Connection: close");
          client.println("Refresh: 30");
          client.println();
          client.println("<!DOCTYPE HTML>");
          client.println("<html>");
          // Daten von Sensoren holen
          sensors.requestTemperatures();
          aussenl = sensors.getTempC(s_aussenl);
          innenl = sensors.getTempC(s_innenl);

          
          client.print("<head><title>Temperaturmessung</title></head><body><h1>Office Temperature</h1><p>Aussen - ");
          client.print(aussenl);
          client.print(" Gard Celsius</p>");
          client.print("<p>Innen - ");
          client.print(innenl);
          client.print(" Grad Celsius</p>");
          client.print("<p><em>Page refresh alle 30 Sekunden.</em></p></body></html>");
          break;
        }
        if (c == '\n') {
          // neue Zeile
          currentLineIsBlank = true;
        }
        else if (c != '\r') {
          // Zeichen in der  Zeile
          currentLineIsBlank = false;
        }
      }
    }
    // Zeit zum Datenempfang
    delay(1);
    // Verbindung schließen
    client.stop();
  }
}

Nüchtern betrachtet...ist besoffen besser Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Char Werte ausgeben Scotch 5 232 31.03.2017 15:37
Letzter Beitrag: Scotch
  Zählerstand nur einmal ausgeben Fliega 11 432 21.02.2017 11:21
Letzter Beitrag: SkobyMobil
  Blinkcode in Klartext ausgeben Borderwalker310 20 857 09.02.2017 22:14
Letzter Beitrag: Tommy56
  Temperatur via SMS senden Obermuda 6 556 07.02.2017 12:27
Letzter Beitrag: Tommy56
  DHT22 min max Temperatur 7-Segmentanzeige bastelbert 50 1.678 14.01.2017 11:46
Letzter Beitrag: Tommy56
  Servo über Temperatur steuern querkopf71 3 342 07.12.2016 19:21
Letzter Beitrag: hotsystems
  Temperatur mit nrf24 übertragen jgrothe 17 1.214 09.09.2016 14:01
Letzter Beitrag: jgrothe
  Problem bei Temperatur/volt Ampere Abfrage LCD Flimmern nuernie66 9 782 04.03.2016 19:25
Letzter Beitrag: hotsystems
  Analogspannung ausgeben Rudi 6 840 24.02.2016 14:25
Letzter Beitrag: hotsystems
  Hexzahl immer mit 2 Zeichen ausgeben. arduinofan 11 1.030 12.01.2016 09:00
Letzter Beitrag: arduinofan

Gehe zu:


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