Die beschriebene Reihenfolge einhalten, sonst funktioniert es nicht.

Download des Sketch WeatherStation 2.00

Der Sketch liegt im Downloadbereich unter

http://www.kriwanek.de/download/category/28-weatherstation.html

als ZIP-Datei. Auf den PC herunterladen und mit 7ZIP in ein neues Verzeichnis WS_2_00 auf dem PC entpacken:

Arduino-Sketch entpackt

Der rot markierte Sketch WS_2_00.ino ist das Hauptprogramm, die gelb markierten sind zugehörige Funktionen. Das Verzeichnis, in welchem sich die Dateien befinden, muß den gleichen Namen haben, wie der Sketch: WS_2_00.

 

Parameter im Sketch anpassen

Er besteht aus 4 einzelnen Programmdateien. Mit der Arduino-IDE wird WS_2_00.ino geöffnet, die restlichen Sketche werden automatisch mit geladen. Im Sketch sind wichtige Parameter abgelegt, welche sich auf meine Umgebung beziehen. Diese sind auf Eure Netzwerkumgebung anzupassen.

Sketch WS_2_00.ino - Netzwerk-Parameter

Ziemlich am Anfang des Sketch stehen die LAN-Parameter:

// ANDREAS PROD UNIT:
byte mac[]         = {0x90, 0xA2, 0xDA, 0x0D, 0xBC, 0x09 };  // YOUR MAC-Address of Arduino Ethernet
byte arduinoip[]   = {10, 0, 0, 12};                         // For fixed Arduino IP without DHCP
byte dnssrv[]      = {10, 0, 0, 253};                        // For fixed Arduino IP without DHCP
byte gateway[]     = {10, 0, 0, 253};                        // For fixed Arduino IP without DHCP
byte subnet[]      = {255, 255, 0, 0};                       // For fixed Arduino IP without DHCP
byte server[]      = {10, 0, 0, 10};                         // YOUR OpenHAB webserver IP-Address
char host[]        = "OPENHAB";                              // YOUR OpenHAB Webserver hostname
unsigned int port  = 8080;                                   // YOUR OpenHAB Webserver port
char url[]         = "/CMD?";                                // Path to OpenHAB Interface program
String modID       = "WS_01_";                               // First WeatherStation, increase number if using more identical modules
byte LANMode       = 1;                                      // 0=DHCP or 1=STATIC

Die Parameter müssen an Eure Konfiguration angepasst werden:

Arduino-Parameter
mac[] Die MAC-Adresse ist auf dem Arduino Ethernet aufgeklebt. Sie ist hier einzutragen. Wenn die MAC-Adresse fehlt, könnt Ihr es auch mit der im Sketch eingetragenen Adresse versuchen. Die MAC-Adresse wird für statische und DHCP-IP-Adressen benötigt.

arduinoip[]

dnssrv[]

gateway[]

subnet[]

Diese vier Parameter müssen für den Betrieb mit einer statischen IP-Adresse mit gültigen Werten belegt werden. Ich verwende zu Hause ein privates Class-A-Netz 10.0.0.0 bis 10.255.255.255. Ihr habt vielleicht an Class-C-Netz mit 192.168.0.0/16 und müsst die Parameter daran anpassen.

  • dnssrv[] ist die IP Eures DSL-/Kabel-Routers
  • gateway[] ist die IP Eures DSL-/Kabel-Routers
  • subnet[] ist die Subnetzmaske: 255.0.0.0 bei Class A, 255.255.255.0 bei Class C
OpenHAB-Parameter  

server[]

Hier ist die IP-Adresse des OpenHAB-Servers im Haus-LAN einzutragen. Diese Adress muß statisch sein, sonst findet die WeatherStation den Server nicht!

host[]

Hostnamen des OpenHAB Servers eintragen

port

Port des OpenHAB-Servers eintragen. Per Voreinstellung ist das immer Port 8080

url[]

"/CMD?" ist der Name des Verarbeitungsskriptes auf dem OpenHAB-Server. Nicht ändern!

modID

wird erst in einer Folgeversion verwendet. Wert belassen.
 

LANMode

Hier wird entschieden, mit welchem LAN-Modus der Arduino betrieben wird:
0 = DHCP
1 = statische IP-Adresse

Messintervall anpassen

unsigned long transmitTime = 60;                // Transmit interval in seconds

Hier kann der Abstand der einzelnen Datenübertragungen zu OpenHAB angepasst werden. Die gewünschte Zeit in Sekunden eingeben (10min. = 600).

Sketch subs.ino - OpenHAB Itemnamen anpassen

Die Itemnamen für OpenHAB sind direkt in der Funktion codiert:

void sendData()
{
  Serial.println("-----------------------------------------");
  setTxDLED(1);                                                        // Switch on TxD LED
  TxDTime = millis();                                                  // Set time of actual transmission
  Serial.println("");
  // For sensor S300TH address 0...7 send temperature and humidity:
  for (int n=0; n < 8; n++){
    if(bitRead(SPresent, n)==1 && bitRead(STimeout, n)==0) {
      sendHTTP("WS_01_Temp" + n, Temp[n]);
      sendHTTP("WS_01_Hum" + char(n), Hygro[n]);
    }
  }
  if(bitRead(SPresent, 8)==1 && bitRead(STimeout, 8)==0) {             // KS300 weather sensor:
    sendHTTP("WS_01_Temp", Temp[8]);                                   // Outside temperature
    sendHTTP("WS_01_Hum", Hygro[8]);                                   // Outside humidity
    sendHTTP("WS_01_WSpeed", Speed);                                   // Windspeed in km/h
    sendHTTP("WS_01_RAmount", Rain);                                   // Rain amount in l/m²
    sendHTTP("WS_01_RFlag", RainFall);                                 // Rainfall yes/no
    Rain = 0;                                                          // Reset rain amount after transmission
  }
  sendHTTP("WS_01_LDTemp", TemperatureBMP085);                         // Temperature BMP085
  sendHTTP("WS_01_LDruck", PressureBMP085);                            // Air pressure BMP085
    
  sendHTTP("WS_01_LumDigits", LDRdigits);                              // Luminance LDR
  sendHTTP("WS_01_KTY", TRGdigits);                                    // Temperature raingauge
  sendHTTP("WS_01_HtWS", pwmHTWS/255*12.0);                            // Heatage WeatherStation, max.12 Watt
  sendHTTP("WS_01_HtRM", pwmHTRG/255*9.6);                             // Heatage raingauge, max.9.6 Watt
  setTxDLED(0);
  Serial.println("");
}

 Wenn Ihr hier Anpassungen vornehmt, müssen diese im OpenHAB-File weatherstation.items ebenfalls angepasst werden. Sollte eine zweite WeatherStation zum Einsatz kommen, so muß in derem Sketch der Itemname WS_01_xxx nach WS_02_xxx geändert werden. Im weatherstation.items File sind die Items entsprechend nachzutragen.

 

Inbetriebnahme

Voraussetzungen:

  • OpenHAB Server konfiguriert und betriebsbereit (Items, Sitemap und Rules für WeatherStation installiert)
  • Arduino WeatherStation wurde konfiguriert und der Sketch hochgeladen

Schritte:

  • Die WeatherStation kann für den ersten Test mit einem LAN-Kabel ans Hausnetz angeschlossen werden
  • Die WeatherStation wird über USB-Wandler mit dem Rechner verbunden
  • Die Arduino-IDE ist zu öffnen ("Arduino Ethernet" und entsprechenden COM-Port einstellen)
  • Der Serial Monitor der IDE ist zu öffnen und die WeatherStation einzuschalten.

Jetzt sollte folgende Meldung zu sehen sein:

Startmeldung WeatherStation

Die WeatherStation ist gestartet und hat die statische Adresse 10.0.0.12. Etwa eine Minute nach dieser Meldung sollte die erste Datenübertragung zu sehen sein:

Erste Datenübertragung

In diesem Fall sind noch keine Werte des Wettersensors KS300 vorhanden. Nur die Werte der internen Sensoren sind zu sehen. Nach einer weiteren Minute erfolgt die nächste Übertragung:

Vollständige Datenübertragung

Jetzt sind auch die Werte des KS300 zu sehen (Temperatur, Luftfeuchte, etc.). Die IP-Adresse kann bei Euch andere Werte (z.B. 192.168....) haben. Sieht man die Meldung, läuft die WeatherStation und man kann den Access-Point konfigurieren und anschließen. Ruft man die OpenHAB-Website auf, sieht man die übermittelten Messwerte:

OpenHAB Anzeige der WeatherStation

 

Fehlersuche

Sieht man dagegen diese Fehlermeldung:

WS Fehlermeldung

dann konnte der OpenHAB-Server nicht erreicht werden. Jetzt wird alles überprüft:

  • LAN-Kabel an WeatherStation und OpenHAB-Server eingesteckt?
  • Ist der OpenHAB-Server eingeschaltet?
  • Stimmt die IP-Adresse des OpenHAB-Servers?

Man kann zum Testen mit dem Webbrowser eine URL an den OpenHAB-Server senden. In den meisten Fällen sind es einfache Fehler, die schnell behoben sind.