Originally posted by: <email address deleted>
Hallo zusammen,
ich suche nach einer Möglichkeit* Temperaturdaten,* welche von *DS1820*1-Wire Sensoren erfasst und an ein
*Arduino Ethernet Board* übermittelt werden in *FHEM* einzubinden.
Mir fehlt momentan der* passende Sketch für das Arduino,* sowie der *Code
für FHEM*.
Was ich bereits habe ist die Temperaturübermittlung der Daten der DS1820 an
den seriellen Monitor des Arduino. (das funktioniert einwandfrei)
*Hat jemand schon was ähnliches aufgebaut und kann hier weiterhelfen?!*
Das HowTo (+Sketch): http://www.fhemwiki.de/wiki/Arduino kenne ich bereits,
aber hilft mit irgendwie auch nicht weiter...
Hardware & Software:
- Arduino Ethernet (WizNet W5100 TCP/IP-Ethernet-Controller)
- Temperatur-Sensor Hygrosens Temp.-Sensor DS 1820-BT
- Fhem 5.2 (DEVELOPMENT), $Id: fhem.pl 1996 2012-10-20 07:11:56Z
- FritzBox 7390
*derzeitiger Arduino Sketch: (Ergebnis - siehe Bild)*
#include "Ethernet.h"
#include
#include "OneWire.h"
#include "DallasTemperature.h"
#define ONE_WIRE_BUS 3
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
DeviceAddress insideThermometer = { Adresse Sensor1 };
DeviceAddress outsideThermometer = { Adresse Sensor2 };
void setup(void)
{
Serial.begin(9600);
sensors.begin();
sensors.setResolution(insideThermometer, 10);
sensors.setResolution(outsideThermometer, 10);
}
void printTemperature(DeviceAddress deviceAddress)
{
float tempC = sensors.getTempC(deviceAddress);
if (tempC == -127.00) {
Serial.print("Error getting temperature");
} else {
Serial.print("C: ");
Serial.print(tempC);
}
}
void loop(void)
{
delay(2000);
Serial.print("Getting temperatures...\n\r");
sensors.requestTemperatures();
Serial.print("Inside temperature is: ");
printTemperature(insideThermometer);
Serial.print("\n\r");
Serial.print("Outside temperature is: ");
printTemperature(outsideThermometer);
Serial.print("\n\r\n\r");
}
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Hi Alex,
ich nehme an du willst die Daten über die Ethernet-Schittstelle vom Arduino
an FHEM schicken. korrekt ?
Ich hab auch damit begonnen, allerdings wirds bei mir noch länger dauern,
bis ich was herzeigen kann......
Meine Plan sieht soo aus:
mit dem AVR (Arduino Ethernet) "emuliere" ich einen CUNO. Zumindest in dem
Ausmass, dass ich HMS und CUL_WS messages vom AVR schicken kann. Damit kann
ich Temperature, Luftdruck, Feuchte,.... (egal von welchem Sensor) an FHEM
senden
Ich brauche ich kein neues Modul für FHEM schreiben, sondern kann die
bestehenden CUL, CUL_WS und HMS unverändert verwenden.
Was bisher läuft: auf einem AVR (nicht Arduino), programmiert in MCS-Basic,
läuft das ober beschriebene, allerdings über die serielle Schnittstelle.
Meine Todo's: Arduino Ethernet Schnittstelle (raw-Telnet) zum Laufen
bringen, (da hab ich schon samples gefunden), und den rest des codes von
MCS-basic portieren.....
wie gesagt, wird noch dauern....
l.g. erwin
Am Montag, 22. Oktober 2012 13:58:24 UTC+2 schrieb Alex:
>
> Hallo zusammen,
>
> ich suche nach einer Möglichkeit* Temperaturdaten,* welche von *DS1820*1-Wire Sensoren erfasst und an ein
> *Arduino Ethernet Board* übermittelt werden in *FHEM* einzubinden.
> Mir fehlt momentan der* passende Sketch für das Arduino,* sowie der *Code
> für FHEM*.
> Was ich bereits habe ist die Temperaturübermittlung der Daten der DS1820
> an den seriellen Monitor des Arduino. (das funktioniert einwandfrei)
>
> *Hat jemand schon was ähnliches aufgebaut und kann hier weiterhelfen?!*
>
>
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Originally posted by: <email address deleted>
Hallo Erwin,
ja, ich habe vor die Temperaturdaten über das Netzwerk an FHEM zu
übermitteln und diese dann anzeigen zu lassen.
Dein Lösungsansatz bzgl. des Arduino klingt auch sehr interessant, jedoch
will ich eine möglichst simple Lösung haben, welche hauptsächlich in der
genannten Konfiguration funktioniert.
(Das liegt daran, dass ich noch wenig Erfahrung mit der ganzen Materie
gesammelt habe :-))
Danke für deine Antwort.
Gruß
Alex
Am Montag, 22. Oktober 2012 14:50:34 UTC+2 schrieb Erwin:
> Hi Alex,
>
> ich nehme an du willst die Daten über die Ethernet-Schittstelle vom
> Arduino an FHEM schicken. korrekt ?
>
> Ich hab auch damit begonnen, allerdings wirds bei mir noch länger dauern,
> bis ich was herzeigen kann......
> Meine Plan sieht soo aus:
>
> mit dem AVR (Arduino Ethernet) "emuliere" ich einen CUNO. Zumindest in dem
> Ausmass, dass ich HMS und CUL_WS messages vom AVR schicken kann. Damit kann
> ich Temperature, Luftdruck, Feuchte,.... (egal von welchem Sensor) an FHEM
> senden
> Ich brauche ich kein neues Modul für FHEM schreiben, sondern kann die
> bestehenden CUL, CUL_WS und HMS unverändert verwenden.
>
> Was bisher läuft: auf einem AVR (nicht Arduino), programmiert in
> MCS-Basic, läuft das ober beschriebene, allerdings über die serielle
> Schnittstelle.
> Meine Todo's: Arduino Ethernet Schnittstelle (raw-Telnet) zum Laufen
> bringen, (da hab ich schon samples gefunden), und den rest des codes von
> MCS-basic portieren.....
>
> wie gesagt, wird noch dauern....
> l.g. erwin
>
> Am Montag, 22. Oktober 2012 13:58:24 UTC+2 schrieb Alex:
>>
>> Hallo zusammen,
>>
>> ich suche nach einer Möglichkeit* Temperaturdaten,* welche von *DS1820*1-Wire Sensoren erfasst und an ein
>> *Arduino Ethernet Board* übermittelt werden in *FHEM* einzubinden.
>> Mir fehlt momentan der* passende Sketch für das Arduino,* sowie der *Code
>> für FHEM*.
>> Was ich bereits habe ist die Temperaturübermittlung der Daten der DS1820
>> an den seriellen Monitor des Arduino. (das funktioniert einwandfrei)
>>
>> *Hat jemand schon was ähnliches aufgebaut und kann hier weiterhelfen?!*
>>
>>
>
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Originally posted by: <email address deleted>
Hallo nochmal,
kann hier niemand weiterhelfen?
Mir fehlt mittlerweile nur noch der Teil des Arduino sketches zum
Übertragen der Messwerte und der Code für FHEM zum Einbinden der
empfangenen Daten.
Hier mal der aktuelle Arduino-sketch indem ich mittlerweile einen WebServer
mit eingebunden habe.
Vielen Dank schonmal.
Alex
sketch sieht mittlerweile dann so aus:
/* One Wire Webserver which reads temperature messurements from Arduino
device */
#include
#include
#include "time.h"
#include "OneWire.h"
#include "DallasTemperature.h"
#define ONE_WIRE_BUS 3
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
DeviceAddress insideThermometer = { };
DeviceAddress outsideThermometer = { };
const byte MaxArrayElement=252;
byte mac[] = { MAC };
byte ip[] = {IP};
const byte bPort = 80;
EthernetServer server(80);
char c,cMstRecentCmnd='/';
char cLineBuffer[MaxArrayElement];
byte bPlaceInBuffer;
void setup()
{
Ethernet.begin(mac, ip);
server.begin();
Serial.begin(9600);
sensors.begin();
sensors.setResolution(insideThermometer, 10);
sensors.setResolution(outsideThermometer, 10);
}
void printTemperature(DeviceAddress deviceAddress)
{
float tempC = sensors.getTempC(deviceAddress);
if (tempC == -127.00) {
Serial.print("Error getting temperature");
} else {
Serial.print("C: ");
Serial.print(tempC);
//Serial.print(" F: ");
//Serial.print(DallasTemperature::toFahrenheit(tempC));
}
}
void loop()
{
delay(2000);
Serial.print("Getting temperatures...\n\r");
sensors.requestTemperatures();
Serial.print("Inside temperature is: ");
printTemperature(insideThermometer);
Serial.print("\n\r");
Serial.print("Outside temperature is: ");
printTemperature(outsideThermometer);
Serial.print("\n\r\n\r");
EthernetClient client = server.available();
if (client) {//2
boolean currentLineIsBlank = true;//3
bPlaceInBuffer=0;
char cCmnd='H';
cMstRecentCmnd='H';
while (client.connected()) {//4
if (client.available()) {//5
c = client.read();//6
if ((c!='\n') && (c!='\r')){
cLineBuffer[bPlaceInBuffer]=c;
if (bPlaceInBuffer }
client.println();//10
client.println("");
client.println("");
client.print("ArduinoTemperatur-1Wire");
client.println("");
client.println("");
client.println();
client.println("");
client.println("");
client.print("Temperatur: Messergebnisse");
client.println("
");
client.println("");
client.println();
client.println("
");
DeviceAddress insideThermometer = { 0x10, 0x55, 0xF2, 0x56,
0x02, 0x08, 0x00, 0xF3 };
DeviceAddress outsideThermometer = { 0x10, 0xB5, 0xDB, 0x56,
0x02, 0x08, 0x00, 0xD1 };
float tempI = sensors.getTempC(insideThermometer);
float tempA = sensors.getTempC(outsideThermometer);
client.println("");
client.print("
Temperatur, innen C: ");
client.print(tempI);
client.print("
");
client.println("");
client.print("
Temperatur, aussen C: ");
client.print(tempA);
}
client.println("");
client.println("