Teil 4 – Davis Vantage Pro 2 Wetterstation ohne Konsole und ohne Datenlogger betreiben

Nachdem wir in Teil 3 gesehen haben, dass die gewählte Hardware und die technischen Überlegungen grundsätzlich stimmen, gab es Schwierigkeiten hinsichtlich der Stabilität beim Einsatz des existierenden Github Projektes für das Adafruit Feather M0 Board. In diesem Teil möchte ich euch die Ergebnisse meiner radikalen Einschnitte im Quellcode präsentieren und auch ein paar Details zu kleinen Hardware-Erweiterungen erklären.

DS3231 – Precision RTC FeatherWing

Als ich vor einigen Tagen festgestellt habe, dass so ein Adafruit Board natürlich nicht ohne Weiteres das aktuelle Datum inklusive Uhrzeit ausgeben kann (da es diese Infos schlichtweg nicht hat), habe ich mich dazu entschlossen, die Hardware ein wenig zu erweitern. Die Adafruit Feather Boards lassen sich mit so genannten Wings bestücken. Ein solches ist z.B. die Echtzeituhr.

Solche Wings lassen sich mit den passenden Steckverbindern einfach auf das Feather Board stecken und können dann mit den entsprechenden Bibliotheken aus dem Arduino Sketch angesprochen werden. Kein großer Akt und wenige Minuten später hat man einen Unix Zeitstempel. Wofür eigentlich, fragt sich jetzt der eine oder andere? Ich möchte erreichen, dass der aktuelle Zeitstempel Teil der JSON Nachricht ist, die das fertige Feather Board nach dem Empfang von Datenpaketen der ISS generiert. Zum bisherigen Stand des Datenformats dann weiter unten mehr.

BMP388 – Precision Barometric Pressure

Da sich der Sensor zur Bestimmung des Luftdrucks in der Davis Konsole befindet, brauchen wir einen Sensor, der diese Arbeit für uns übernimmt, denn die Konsole soll ja gerade nicht Bestandteil unseres Aufbaus sein. Ein sehr aktueller und präziser Sensor ist Adafruit BMP388 – Precision Barometric Pressure and Altimeter.

Dieser kleine Sensor lässt sich nicht einfach aufstecken, da die benötigten Pins nicht aufeinander folgend am Feather Board zu finden sind. Ich habe zunächst Jumper Kabel genommen, diese einseitig (am Wing) gelötet und dann auf den Sensor gesteckt. Wieder entsprechende Bibliothek aus dem Arduino Sketch angesprochen und wenige Minuten später hat man den aktuellen Luftdruck. Diese Adafruit Teile sind ein echter “no brainer“ – großartig!

Auf Wunsch kann der Sensor übrigens auch die aktuelle Temperatur ermitteln. Ich gebe diese im ersten Schritt aber nicht aus, da ich noch nicht genau weiß wieviel Sinn es macht die (Innen-)Temperatur dort zu messen, wo ich das ganze später anbringen möchte. Nicht vergessen, wir wollen hier keine Konsole nachbauen. Diese Empfangseinheit kann überall liegen und soll lediglich die Daten im passenden und neutralen Format zur Verfügung stellen. Displays, die diese Daten dann zur Anzeige bringen, sollen völlig dezentral verteilt werden können. Üblicherweise wären das dann auch die Stellen, an denen die Innentemperatur ermittelt werden sollte.

868MHz Antenne & SMA Kabel

Früher oder später wird das alles sicherlich in einem kleinen Gehäuse ggf. sogar auf einer Hutschiene Platz finden müssen. Aus diesem Grund dachte ich mir, dass eine schraubbare 868MHz Antenne Sinn macht. Ich habe diese hier genommen.

Einige Bilder zum aktuellen Stand

Wie sieht denn das Ganze aktuell aus, worüber ich hier nun seit einigen Tagen schreibe? Die Hardware ist weiterhin sehr kompakt und sollte sich später einfach verstauen lassen…

Meine Aufräumaktion im Quellcode von HydroSense hat mir zum einen geholfen, die RFM69 Bibliothek von LowPowerLab im Grundsatz besser zu verstehen, zum anderen konnte ich aber auch über die diversen Implementierungen zur Davis ISS besser nachdenken. Das aktuelle Zwischenergebnis ist eine – für meine eingesetzte Hardware – deutlich stabilere Implementierung.

Ich muss mich allerdings noch um die Tatsache kümmern, dass durchaus auch Mal mehrere Pakete hintereinander verloren gehen können. Im Moment kommt meine Implementierung komplett aus dem Takt, wenn 3 und mehr Pakete am Stück verloren gehen. Das zieht die Statistik extrem nach unten und sollte verhindert werden.

Das JSON Objekt sieht Stand heute wie folgt aus:

Dabei werden die Sensoren für Windgeschwindigkeit, Windrichtung und Luftdruck immer ca. alle 2,5 Sekunden ausgegeben und zusätzlich jeweils ein weiterer Sensor, der durch die Davis ISS Logik bestimmt wird, wie in diesem Fall z.B. die Temperatur. An diesem Zustand habe und will ich auch nichts ändern, denn so ist die natürliche Arbeitsweise der Davis ISS.

openDavisISS v0.5

Nennen will ich das Ergebnis openDavisISS und veröffentlicht wird es natürlich auf Gitlab unter der GNU General Public License v3.0. Doch bevor ich den Quellcode in einer ersten Version 0.5 dort für alle zugänglich hochlade, möchte ich noch das Sync Problem lösen, falls mehrere Pakete in Folge verloren gehen. Außerdem wird der Code noch weiter aufgeräumt und dann denke ich kann dieser erste Teil der Kette als abgeschlossen betrachtet werden. Eine abschließende Einkaufsliste, weitere Hinweise zum Aufbau und den eigentlichen Quellcode gibt es dann also zusammen in Teil 5 dieser Folge von Beiträgen. Bis bald!

Veröffentlicht von

Artur Pajonk

Consultant & Senior Software Engineer

3 Gedanken zu „Teil 4 – Davis Vantage Pro 2 Wetterstation ohne Konsole und ohne Datenlogger betreiben“

  1. Servus Arthur,

    sieht gut aus!
    Ich denke ich werde mal shoppen gehen 🙂

    Eine Frage noch, wie verarbeitetest du die Daten weiter?
    Ich möchte per Wifi (ESP8266 vermutlich) die Daten an eine im Internet befindliche MySQL Datenbank weitersenden und dann auch auf meiner Seite die Visualisierung (Highcharts) machen …

    LG,
    Andi

    1. Hallo Andi,

      das was Du vor hast sollte eigentlich technisch umsetzbar sein. Ich werde mich für die etwas „größere“ und vor allem lokale Variante entscheiden.

      Mein Plan ist, die Daten seriell an einem Raspberry Pi zu empfangen. Dort muss ich dann mal schauen wie es um die Leistung bestellt ist. Eigentlich würde ich darauf dann gerne VerneMQ hosten, für die direkte Datenübertragung an bestimmte Empfänger im Haus und eine PostgreSQL Datenbank für die Langzeit Auswertung von Daten. Diese PostgreSQL Datenbank soll dann auch einer Website als Quelle dienen, um die Wetterdaten in der direkten Nachbarschaft zur Verfügung zu stellen. Bis dahin ist aber glaube ich noch ein ganzer Weg zu gehen 😉

      Beste Grüße,
      Artur

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.