thunderbird Geschrieben March 2, 2012 at 16:49 Geschrieben March 2, 2012 at 16:49 Nachdem ich meine erste Wetterstation (www.sven-lindeboom.net) soweit fertig habe und auch schon einige kleinere Schwachstellen wie z.B. den Regensensor festgestellt habe, habe ich nach Hardware und Software gesucht um auch weitere Stationen ohne großen Aufwand aufbauen zu können. Dabei bin ich auf Tinkerforge gestoßen. Außerdem sind Sensoren für Temperatur Luftfeuchtigkeit und Lichtstärke schon vorhanden. Schön ist an diesen Modulen auch das man die Werte der Sensoren mittels eines Callbacks bekommt der nur ausgelöst wird wenn sich der Sensorwert verändert. Dies hat eine geringere Belastung der DSL Leitung zur folge (was heute zwar nicht mehr so wichtig ist aber ein schöner Nebeneffekt ist. ) Außerdem war es wichtig das man die Stationen an einen einfachen DSL Anschluss hängen kann ohne gleich die Routerkonfig ändern zu müssen. Dazu habe ich mir ein Client-Server System überlegt was einen zentralen Server voraussetzt. Die einzelnen Stationen verbinden sich dann einfach automatisch mit dem Server und übergeben die per Callback ermittelten Werte. Sollte die Verbindung einmal nicht klappen wird der Wert auf der Station zwischengespeichert und bei der nächsten Verbindung mit übertragen. Durch meine Hardwareauswahl (Tinkerforge) muss ich an jeder Station einen kleinen PC haben auf dem die Software läuft. Um dies so klein und preisgünstig wie möglich hinzu bekommen, habe ich mich für einen Rasberry Pi entschieden. Die Software ist schon zu großen Teilen fertig aber noch nicht besonders ausgetestet, da ich im Moment noch auf die Hardware warte ;-) . Client und Server habe ich beides in Java geschrieben. Zur Übertragung der Werte habe ich mir ein eigenes Protokoll ausgedacht, welches auf put, get und update Kommandos beruht. Wenn das erst mal soweit läuft möchte ich den Datenstrom gerne noch per AES verschlüsseln. Auf den Client gibt es eine zusätzliche „Updater“ Software über die die Client Software aktualisiert werden kann sollte ich mal was ändern wollen. Als Server möchte ich auch gerne einen Rasberry Pi einsetzen. Alle Werte sollen später über ein Webseite einsehbar sein. Da hab ich mir noch nicht so die Gedanken drum gemacht. Ich habe aber ganz gute Erfahrungen mit der Diagrammbibliothek von JQuery gemacht. Da lassen sich sehr gut übersichtliche und anschauliche Diagramme mit erstellen. Zitieren
borg Geschrieben March 3, 2012 at 00:11 Geschrieben March 3, 2012 at 00:11 Cool! Ich nehme an du packst die Bricks und Bricklets in irgendein Gehäuse? Wie sieht das aus? Wir möchten auf dauer auch gerne Gehäuse und Halterungen und sowas anbieten, wir sind uns aber noch nicht ganz einig wie die aussehen müssten. Auf den Bildern auf deiner Homepage sieht es so aus als würdest du Platinen auf Holzbretter in einem (vermutlich wasserdichten) Gehäuse anschrauben. Das könntest du mit unseren Platinen ja so machen wie sie sind, einfach mit den Löchern in den Ecken. Würden dir irgendwelche zusätzlichen Halterungen oder Gehäuse helfen? Zitieren
Nic Geschrieben March 5, 2012 at 11:57 Geschrieben March 5, 2012 at 11:57 Mir fällt dazu übrigens zum Modulwunsch noch ein, dass Ihr das Sortiment z.B. um kleine Solarpanels erweitert, damit könnte man interne Akkus aufladen bzw. bei kleinen Strömen als Direktversorgung konzipieren. Und die Panels im Formfaktor als umschließendes Gehäuse für die Brick Platinen... Zitieren
thunderbird Geschrieben March 5, 2012 at 15:26 Autor Geschrieben March 5, 2012 at 15:26 Hallo borg, ja du hast recht ich habe dort ein wasserdichtes PVC Gehäuse genommen und eine Holzplatte eingebaut. Das ist soweit auch ganz gut hat aber den Nachteil das man immer die ganze Holzplatte raus nehmen muss um das Modul auszubauen. Bei der neuen Wetterstation werde ich ein ähnliches Gehäuse verwenden ein bisschen kleiner aber auch wasserdicht so das ich die Bricks und den Rasberry da rein bekomme(Ich hoffe ich bekomme keine Probleme mit der Wärme). Um aber diesem Problem mit der Bodenplatte aus dem weg zu gehen habe ich mir eine Adapterholzplatte gebaut. Sie ist 8 x 8 cm groß und ca 1cm dick. In der Mitte habe ich die 4 Löcher für meinen Stapel gemacht. Da das Gewinde von den Brickbefestigungen ca 9mm ist habe ich die Löcher von unten ein bisschen abgesenkt so das ich die Muttern noch aufschrauben kann. Außerdem habe ich in den an allen Seiten überstehenden 2cm Rand noch 4 Löcher gemacht, so das ich den Stapel nun bequem von oben anschrauben kann ohne gleich die ganze Bodenplatte herauszunehmen. Ich denke wenn ihr sowas z.B. nicht aus Holz sondern aus einem Stück gebogenem Blech anbieten würdet dann wären auch alle glücklich bei denen sich der Stapel schon mal auf dem Schreibtisch wegen zu vieler kabel verselbstständigt. Ich denke da an ein ganz einfaches 4 x 6cm Blechstück was an den Seiten jeweils 2mal gebogen ist und natürlich passende Löcher hat. Ich hoffe das war verständlich sonst stell ich gerne noch ein Bild ein ;-) Zitieren
boxi Geschrieben March 9, 2012 at 23:12 Geschrieben March 9, 2012 at 23:12 Salü Hab mir auch schon überlegt eine kleine Wetterstation zu bauen. Bin aber noch nicht so richtig schlau geworden wie ich den Luftdruck mit diesen BauElementen messen kann, hast du da eine Lösung? Und wie wirst du den NiederschlagsMesser bauen. Gruss Boxi Zitieren
thunderbird Geschrieben March 10, 2012 at 12:16 Autor Geschrieben March 10, 2012 at 12:16 Hallo, jaa also den Luftdruck messe ich bei meiner jetzigen Station mit dem MPX_4115A Sensor. Es wäre natürlich schön wenn dieser direkt als Bricklet realisiert werden würde. Sonst kann man ihn aber auch über ein AnalogIn Bricklet nutzen. Niederschlagsmesser habe ich bis jetzt noch nicht realisiert nur ein Regensensor habe ich. Leider ist der nicht besonders zuverlässig wenn der Regen zu sauber ist. Gruß Thunderbird Zitieren
thunderbird Geschrieben March 14, 2012 at 20:41 Autor Geschrieben March 14, 2012 at 20:41 Nachdem ich am Montag meine Lieferung von Tinkerforge bekommen habe, konnte ich heute endlich den ersten Testlauf machen :-) Und ich muss sagen nachdem ich einige Kleinigkeiten geändert hatte lief alles super. Sobald sich ein Wert an den Sensoren ändert wird er an den Client geleitet und dieser schickt ihn dann an den Server und in die Datenbank. Außerdem wird die Tabelle für den entsprechenden Sensor automatisch angelegt wenn diese noch nicht vorhanden ist. Sobald ich wieder ein bisschen Zeit habe geht es weiter :-) Zitieren
thunderbird Geschrieben March 25, 2012 at 13:23 Autor Geschrieben March 25, 2012 at 13:23 Soo nun ist auch der Blog auf dem neusten Stand http://www.sven-lindeboom.net/ Zitieren
thunderbird Geschrieben April 11, 2012 at 16:47 Autor Geschrieben April 11, 2012 at 16:47 Soo nach einigen Tests ist nun auch endlich der merkwürdige Messfehler vom Temperaturbricklet weg :-) http://www.tinkerunity.org/forum/index.php/topic,198.0.html Vielen Dank nochmal Tinkerforge ;-) Außerdem hab ich jetzt in mein WordPress Plugin Diagramme eingebaut, so das man den Verlauf der letzten 24 Stunden immer schön übersichtlich angezeigt bekommt. Zitieren
thunderbird Geschrieben April 22, 2012 at 14:28 Autor Geschrieben April 22, 2012 at 14:28 Ich habe mich heute mal um den Windrichtungssensor gekümmert. Dazu habe ich einen TX23 Windsensor umgebaut. Der eine Teil ist die Windgeschwindigkeit. Der wird über ein IO4 Bricklet und ein Reedkontakt realisiert und ist schon länger in Betrieb. Die Windrichtungsanzeige funktioniert über eine Lochscheibe, die 4 IR Lichtschranken je nach Richtung verdeckt. Das ganze erfasse ich mit einem IO 16 Bricklet. Das ist zwar ein bisschen übertrieben da ich nur 4 Eingänge brauche, hat aber den Vorteil das ich keinen Spannungsteiler verwenden muss um die Lichtschranken mit 5V Spannung zu betrieben. In der Datenbank speichere ich den Dezimalwert der 4 Bits und vor dem Ausgeben wird dieser dann in den Buchstaben für die Richtung umgesetzt. Als nächstes werde ich mich um den Regensensor kümmern. Zitieren
thunderbird Geschrieben May 1, 2012 at 16:22 Autor Geschrieben May 1, 2012 at 16:22 So jetzt gibts auch die WetterPool Anbindung ;-) http://www.wetterpool.de/station-19982.htm Die Daten werden jede halbe Stunde an den WetterPool Server gesendet. Dabei kann man in den Eigentschaften der Station genau einstellen, welche Werte übertragen werden und welche nicht. Da über den Server später auch mehrere Stationen angebunden sein können kann man auch auswählen welche Station ihre Daten überträgt und welche nicht. Außerdem ist das JavaDoc vom Webservice online. http://javadoc.sven-lindeboom.net/index.html Zitieren
thunderbird Geschrieben May 7, 2012 at 17:08 Autor Geschrieben May 7, 2012 at 17:08 Es gibt mal wieder was neues :-) Nachdem ich fast das ganze Wochenende an meinem kleinen Speicherplatzproblem rumprobiert habe und es jetzt endlich sauber läuft, bin ich wieder dabei einen neuen Sensor umzubauen. Ich habe das ganze mal hier -> http://www.sven-lindeboom.net/?page_id=235 mit ein paar Bildern dokumentiert. Und werde das auch noch weiterführen sobald ich wieder ein bisschen was gemacht habe. Es ist übrigens ein Regenmesser ;-) Zitieren
thunderbird Geschrieben May 12, 2012 at 18:00 Autor Geschrieben May 12, 2012 at 18:00 Soo Regenmesser fertig :-) http://www.sven-lindeboom.net/?page_id=235 Wer noch Fragen hat einfach melden ;-) Jetzt fehlt noch die Ausgabe auf der Webseite. Zitieren
Masder Geschrieben May 12, 2012 at 18:17 Geschrieben May 12, 2012 at 18:17 Also ein großes Lob an dich für die super Anleitung Super finden würde ich noch eine Anleitung für den Windrichtungsmesser und Wind geschwindichkeistsmesser Gruß masder Zitieren
thunderbird Geschrieben May 12, 2012 at 18:30 Autor Geschrieben May 12, 2012 at 18:30 DANKE :-) Geht klar :-) Kann aber nen bisschen dauern. Ich hab leider im Moment nur am Wochenende Zeit dafür ;-) Zitieren
thunderbird Geschrieben May 23, 2012 at 19:07 Autor Geschrieben May 23, 2012 at 19:07 Hallo zusammen, hier mal wieder ein bisschen was neues ;-) Oder besser gesagt was ich so als nächstes vor habe die Reihenfolge ist aber nicht unbedingt so wie hier. Wenn ihr noch Ideen oder Anregungen habt immer her damit :-) 1. Updatesystem aus Server und Client löschen Das Updatesystem läuft zwar einigermaßen ist aber recht komplex und sollte später besser in einem eigenen Paket aufgebaut werden. Erstmal fliegt es raus. 2. Client über "get" Befehl mit Sensordaten versorgen (keine Konfig mehr) Dadurch kann man sich das doppelte konfigurieren in der DB und am Client sparen. Könnte sein das in der DB dazu noch ein zusätzliches Feld notwendig ist. 3. Clientkonfig auf Properties umstellen Die verbleibende Konfigdatei wird auf Properties umgestellt, dadurch ist sie viel einfacher zu handhaben. 4. Regensensorseite auf Webseite anpassen (4,5 -> 0,5) Da hat sich doch glatt ein kleiner Fehler bei der Berechnung eingeschlichen. 5. Strahlenschutz 2.0 Webseite fertig machen Dokumentation vom Strahlenschutz fertig machen. Eigentlich wäre das schon längst der Fall wenn ich nicht vergessen hätte, die Speicherkarte wieder in die Kamera zu stecken ;-) 6. Speicherverbrauch reduzieren (Tools : http://openbook.galileocomputing.de/java7/1507_23_002.html#dodtp9a15d8d2-443c-457f-abda-f12703066f86) Nachdem ich vor 2 Wochen Server und Webservice zusammen gelegt habe, steigt der Speicherverbrauch stetig an. Das muss ich mir mal genauer ansehen (ist im Moment aber nicht problematisch) 7. Wetterpool Autoabschaltung bei != 200ok als result Nachdem am Dienstag Wetterpool wohl ganz ausgefallen ist und keine Daten mehr angenommen hat, würde ich gerne eine Autoabschaltung einbauen so das der Server dann nicht immer gegen die wand läuft. 8. Prüfen alternative Möglichkeit zur Webseitenanbindung (Socketanbindung) Da der Webservice der in Java vorhanden ist eigentlich nur ein miniwebservice ist und nicht für den produktiven Einsatz geeignet ist, würde ich mich gerne nach alternativen umsehen. Einen "echten" Webservice dafür aufsetzen ist sicher zu viel des guten, aber es gibt ja auch die Möglichkeit Sockets in php(und anderen Sprachen) zu verwenden. Dadurch spare ich mir den ganze Overhead von xml habe aber auch wieder das Problem das ich ein möglichst flexibles Protokoll brauche. 9. Setzen eines Timeouts für den Serversocket (http://openbook.galileocomputing.de/java7/1507_11_007.html#dodtpca425a6a-db26-414d-b2bd-c23c5f5e283a) Hab ich bis jetzt irgendwie vergessen ;-) 10. Umstellung auf Java 7 prüfen (switch(String)) In Java 7 gibt es einige schöne Neuerungen wie die "switch" Anweisung mit Strings das sollte einiges vereinfachen 11. Dokumentation bau Windrichtungsanzeige jooo das ist wieder nen bisschen mehr arbeit 12. Wetterpooleinstellungen in der DB anpassen Im Moment wäre es nicht möglich eine zweite Station mit Wetterpool zu verbinden. Da muss ich nochmal dran basteln 13. konsistentes Server Konzept Um später mehrere Server untereinander zu verbinden muss ein Konzept und ein Protokoll her. Außerdem soll es eine Backuplösung geben fällt ein Server aus werden die Daten vom Client einfach an einen anderen weiter gereicht. Aber wie das gehen soll .... ;-) 14. Auslieferung Server und Client Quellcode/Jar File Na klar das ganze soll ja jeder benutzen können 15. Dokumentation Drahtprotokoll/e 16. Mail Benachrichtigung bei Fehlern Der Server soll eine Mail mit der Fehlermeldung senden wenn irgendwas nicht mehr geht. Zitieren
thunderbird Geschrieben May 27, 2012 at 16:29 Autor Geschrieben May 27, 2012 at 16:29 Soo hier gibts mal wieder was neues :-) Ich habe mal eine Doku zum Strahlenschutz geschrieben. http://www.sven-lindeboom.net/?page_id=265 Viel Spass beim nachbauen :-) Zitieren
thunderbird Geschrieben June 3, 2012 at 11:18 Autor Geschrieben June 3, 2012 at 11:18 Habe dieses Wochenende mal einiges Vereinheitlicht. Also so sieht jetzt die Struktur meines Servers aus. Configuration: Liest aus einer Datei alle Einstellungen ein, die dann an die einzelnen Klassen und Threads weitergegeben werden. Logger: Ich hab mir nen eigenen Logger geschrieben, der einfach alle Meldungen in eine Datei packt. Datenbank: Das ist ein Interface, dass je nach Konfiguration die Datenbankanbindung implementiert. Das kann MySql sein oder was anderes die Funktionen die benötigt werden sind alle dort hinterlegt. GarbageCl: Das ist ein Thread, der jede Minute den GC aufruft damit der Speicherverbrauch möglichst klein bleibt. Wetterpool Damit werden alle 10 Minuten die aktuellen Werte an Wetterpool gesendet. BackendServer: Ist ein TCP ServerSocket der die Werte der einzelnen Stationen entgegen nimmt. Protokoll: http://www.sven-lindeboom.net/?page_id=326 PresentationServer: Das ist ein TCP ServerSocket über den man Wetterdaten abfragen kann. (z.B. von einer Webseite) Zitieren
Imbafestor Geschrieben June 3, 2012 at 12:43 Geschrieben June 3, 2012 at 12:43 Sieht alles sehr gut organisiert aus Eine Frage wirft sich mir jetzt auf zu: GarbageCl: Das ist ein Thread, der jede Minute den GC aufruft damit der Speicherverbrauch möglichst klein bleibt. Worin besteht der Zweck den Speicher möglichst gering zu halten? Zum einen benötigt der GC ja auch Leistung, zum anderen wird er ja sowieso regelmäßig bzw. spätestens wenn Speicher benötigt wird, automatisch aufgerufen? Fehlt nur noch nen WebService, der alle Informationen zur Verfügung stellen kann für Apps etc Schöne Grüße Zitieren
thunderbird Geschrieben June 3, 2012 at 13:02 Autor Geschrieben June 3, 2012 at 13:02 Hallo, ja du hast natürlich recht. In einen normalen Programm mache ich das natürlich auch nicht aber ich hatte bis vor kurzem einen Webservice eingebaut(Diesen MiniWebserver der schon bei Java dabei ist). Dieser hat den Speicherverbrauch auf dem sheevaplug aber immer so nach oben getrieben, dass das OS mein Programm automatisch beendet hat. Daraufhin habe ich diesen GarbageCl Thread aufgesetzt und seit dem lief es ohne Problem. Scheinbar ist openjre-6 nicht so speicherfreundlich. Seit dem Wochenende habe ich den Webservice aber ganz rausgeschmissen und alle Anfragen laufen jetzt über den PresentationServer das ist einfach ein TCP Socket mit einem eigenen Protokoll. Auf der anderen Seite in der Homepage habe ich eine PHP API geschrieben. So ist es genauso einfach zu nutzen wie ein Webservice und ich spare mir noch den ganzen Overhead von XML. Sobald ich die PHP API ganz fertig habe werde ich die hier auch mal vorstellen. Für Apps wollte ich dann auch eine Java API schreiben. Zitieren
thunderbird Geschrieben June 3, 2012 at 19:00 Autor Geschrieben June 3, 2012 at 19:00 Soo noch ein kurzes Update. Am Wochenende hab ich einiges geschafft. Der Client hat jetzt eine ordentliche Config Datei über die man Server, Port und Stationsnummer eintragen kann. Die Sensoren die an der Station angeschlossen sind werden automatisch vom Server nachgeladen. Außerdem hab ich einiges an Feintuning machen können. Wie zum Beispiel umbenennen von Paketen, Klassen usw. Hier nochmal die schon merklich grüner gewordene ToDo Liste. http://www.sven-lindeboom.net/?page_id=149 Zitieren
thunderbird Geschrieben June 7, 2012 at 14:58 Autor Geschrieben June 7, 2012 at 14:58 Soo habe grade mal die beiden Wordpress Plugins auf das TCP Protokoll und die PHP API umgestellt. Jetzt werden alle Werte und auch die Diagramme etwas schneller angezeigt. Außerdem habe ich angefangen die ganzen Log Einstellungen die man beim Server machen kann zu dokumentieren. Zitieren
FabianB Geschrieben June 7, 2012 at 22:34 Geschrieben June 7, 2012 at 22:34 Ja, Grün überwiegt :-) Ich verfolge deine Wetterstation schon, seit du angefangen hast, hier davon zu berichten. Muss jetzt auch endlich mal sagen: Echt tolles Projekt. Hättest du nicht Interesse, den einen oder anderen Teil deiner Anleitung etc. in die Wiki zu stellen? Oder hast du das schon und ich habs nur nicht gefunden? Zitieren
thunderbird Geschrieben June 8, 2012 at 14:47 Autor Geschrieben June 8, 2012 at 14:47 Moin Moin, klar kann ich das ganze auch ins Wiki packen. Hatte das auch irgendwann schon mal vor das Problem war nur das es für mich nicht intuitiv zu erkennen war, was ich wo machen muss :-). Ist das erste mal das ich so ein Wiki bediene werde mir das aber gerne nochmal ansehen. Zitieren
thunderbird Geschrieben June 9, 2012 at 14:33 Autor Geschrieben June 9, 2012 at 14:33 Soo hab mir heute mal ein paar Gedanken über ein Display für meine Station gemacht. Dabei gibt es meiner Ansicht nach 2 Möglichkeiten: 1: Das LCD 20x4 Display was man irgendwo hin stellen kann und dort die aktuellen Werte anzeigen kann. Das ganze müsste man in den Client integrieren können. 2: Hatte da an was größeres gedacht z.B. ein elektronischer Bilderrahmen mit E-Mail Funktion. Der Server könnte dann aus den Werte eine Grafik zusammen bauen und diese dann per Mail an den Rahmen schicken. Dieser zeigt dann immer das letzte Bild was er bekommen hat an. Dazu muss ich mir son Teil mal besorgen und genauer ansehen :-) Außerdem hab ich die Wetterpool Anbindung so umgebaut das sie jetzt auch mit mehreren Stationen problemlos läuft. Zitieren
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.