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
  Temperatur mit nrf24 übertragen jgrothe 17 660 09.09.2016 14:01
Letzter Beitrag: jgrothe
  Problem bei Temperatur/volt Ampere Abfrage LCD Flimmern nuernie66 9 642 04.03.2016 19:25
Letzter Beitrag: hotsystems
  Analogspannung ausgeben Rudi 6 635 24.02.2016 14:25
Letzter Beitrag: hotsystems
  Hexzahl immer mit 2 Zeichen ausgeben. arduinofan 11 788 12.01.2016 09:00
Letzter Beitrag: arduinofan
  mehrere Analoge eingänge seriell ausgeben rieders 5 791 28.11.2015 09:55
Letzter Beitrag: Bitklopfer
  Status einer if / else Verknüpfung per client.print ausgeben daruel 8 1.132 20.08.2015 10:11
Letzter Beitrag: daruel
  Temperatur auf 3,2 Zoll TFT Anzeigen jgrothe 12 1.896 04.07.2015 17:06
Letzter Beitrag: jgrothe
  RTC auf LCD ausgeben. Probleme mit der führenden Null Gelegenheitsbastler 6 1.953 15.03.2015 12:18
Letzter Beitrag: tito-t
  Wert auf UTFT Display ausgeben Kurt 11 5.631 15.12.2014 08:56
Letzter Beitrag: rkuehle
  [geteilt] DHT22 Temperatur- / Luftfeuchte-Sensor akrecok 1 1.700 10.11.2014 11:38
Letzter Beitrag: RMR

Gehe zu:


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