PHP Dashboard für HmIP Smartmeter
09.10.2024
Elektronik | Funk | Software
Der Technik-Blog
Auf dieser Seite zeigen wir, wie eine professionelle Arduino Wetterstation gebaut wird. Die Wetterstation kann folgende Parameter erfassen: Temperatur, Luftdruck, Feuchtigkeit und Windgeschwindigkeit. Über das Ethernet Shield werden die Wetterdaten jede Minute mittels HTTP/HTTPS POST Request an den Server gesendet. Am Server läuft ein PHP Script, der die empfangenen Daten in ein Textfile speichert. Am Ende des Beitrags gibt es eine genaue Materialliste.
Die große LoRa Wetterstation 2020
Die kleine LoRa Wetterstation 2019
Anemometer selber bauen
Wie funktionieren externe Interrupt
Das Grundgerüst der Arduino Wetterstation besteht großteils aus Metall. Dazu werden Aluprofile verwendet, welche in jedem Baumarkt erhältlich sind. Der Messkopf mit den BME280 Sensor besteht aus einer Wandkapsel und einem Wandfutter Ofenrohr. Das Windrad wir auf ein rundes Alu-Profil mit 25 mm Durchmesser gesteckt. Mit dem flachen Alu-Profil wird das Rohr für das Windrad auf dem Vierkantrohr befestigt. Das gesamte System ist genietet und wird ganz zum Schluss weiß lackiert. Als Werkzeug sind eigentlich nur ein Metall-Bohrer, Metallsäge und eine Nietzange notwendig. Eine genaue Materialliste mit den richtigen Maßen findet man hier.
Nachdem die Alu-Konstruktion fertig gebohrt ist, und noch nicht vollständig zusammen genietet ist, werden die Kabel eingezogen. Als Erstes wird ein 2-poliges Kabel vom Rohr für das Windrad durch das Vierkantrohr bis in den Kunststoff-Zylinder eingezogen. Zwischen den Messkopf und den Kunststoff-Zylinder wird ein 8-poliges Kabel (übliches LAN-Kabel) eingezogen. Die Kabel sollten an jedem ende mindestens 30 cm herausragen, dadurch hat man genug Freiraum. Anschließend wird das 8-polige Kabel im Kunststoff-Zylinder so weit abisoliert, dass die Doppeladern mindestens 15 cm frei sind. Danach wird das Kabel so weit hinterzogen, dass nur die Adern des LAN-Kabels im Zylinder sind. Jetzt kann die Bohrung mit der Heißklebepistole wetterfest abgedichtet werden.
Das Mainboard besteht aus einem Arduino Uno Board mit einem aufgesteckten Ethernet-Shield und einer Lochrasterplatine. Auf der Lochrasterplatine befindet sich die Vorschaltung für das Windrad sowie ein Vorwiderstand für die LED-Leuchte und die restlichen 4 Drähte für den BME280. Die Stromversorgung und das Netzwerkkabel werden über den passiven POE-Adapter verbunden. Dadurch kommt die Stromversorgung sowie die Internetverbindung über eine Leitung.
Das Mainboard befindet sich im Zylinder. Stromversorgung und LAN-Kabel werden direkt vom POE-Adapter verbunden. Die LED wird neben den POE-Adapter platziert und ebenfalls mit der Heißklebepistole fixiert. Die Library und weitere Informationen zum BME280 gibt es hier. Jetzt sollten alle Komponenten (Windrad, BME280, LED) verbunden sein. Der Hardware-Check kann durchgeführt werden. Dazu wird das Arduino-File auf das Board geladen. Über den Serial Monitor sollten jetzt alle Sensor-Daten angezeigt werden und die LED blinkt. Falls die Daten des BME280 nicht angezeigt werden, ist möglicherweise die I2C-Adresse falsch. Diese kann mittels Scanner gefunden werden. Den I2C-Scanner findet man hier. Damit das Projekt richtig funktioniert, müssen jetzt alle Werte richtig angezeigt werden. Ist dies der Fall, kann das Projekt weiter fortgesetzt werden.
Download Hardware Check File
Wenn der Hardware-Check erfolgreich war, kann die eigentliche Software installiert werden. Auch hier muss gegebenenfalls die Adresse des Sensors im Code geändert werden. Die wichtigsten Einstellungen werden unter "---BASIC SETTINGS---" erstellt. Weiter unten im Code muss noch die Domain des PHP Servers geändert werden. Auch der Serverpfad ist zu ändern. Wurde der Quellcode richtig editiert, so kann der Code an den Arduino gesendet werden. Ab sofort muss auch das LAN-Kabel angeschlossen werden. Die Station versucht jetzt eine IP-Adresse zu bekommen und das Ethernet-Shield zu konfigurieren. Sollte ein Fehler bei der Netzwerkkarte sein, so fängt die LED nach etwa einer Minute dauerhaft zu blinken an. Hat die Wetterstation eine IP-Adresse bekommen, so wird versucht, nach etwa 30 Sekunden die Wetterdaten an den Server zu senden. War die Datenübertragung erfolgreich, so blinkt die LED alle 30 Sekunden zweimal kurz auf. Es besteht auch die Möglichkeit, vorerst keine Änderungen an der Serverkonfiguration vorzunehmen. Die Station wird dann die Wetterdaten an unseren Testserver (testserver.aeq-web.com) senden. Hier können Sie auch sofort testen, ob die Daten am Server ankommen. Unser Server hostet fast den gleichen PHP-Script wie der, der unten als Download zu Verfügung steht.
Falls man keinen eigenen Server haben will, gibt es exklusiv die Möglichkeit, die Wetterdaten an ein fertiges System mit Apps und Auswertungstools zu senden. Einer unserer Partner stellt ein solches System kostenlos für unsere Leser zur Verfügung. Bei Interesse melden Sie sich bitte über das Kontaktformular bei uns. In späterer Folge haben wir vor, auch ein kleines eigenes CMS-System zu schreiben, was die Wetterdaten in eine Datenbank speichert und auswertet. Mit diesem System wird es auch möglich sein, Verlaufskurven und Grafiken zu erstellen und zu speichern.
Der PHP-Server für die Arduino Wetterstation ist ein einfaches Beispiel, wie die Daten über den HTTP-POST Request an einen Webserver gesendet werden. Kommen die Daten beim PHP-Script (uplink.php) an, so erstellt dieser ein Textfile mit den Wetterdaten und der Uhrzeit, wann die Daten am Server angekommen sind. Die Index-Datei liest nur das Textfile aus und zeigt es an. Wird also die Domain des Scriptes aufgerufen, so werden die Wetterdaten angezeigt. Der ganze PHP-Code wurde unter PHP7 entwickelt und getestet. Ganz wichtig ist es, dass die Daten für den Server auch im Arduino-Sketch geändert werden!
Produktlink | Anzahl |
---|---|
Arduino Uno R3 | 1 |
Ethernet Shield | 1 |
BME280 | 1 |
Anemometer | 1 |
10 K Widerstand | 1 |
100nF Kondensator | 1 |
Pin Header | 1 |
Loch Platine | 1 |
PoE-Kabel | 1 |
PT1000 Sensoren können nicht direkt analog mit einem Mikrocontroller gemessen werden. Wie baut man einen Messwandler mit dem LM358 für den PT1000 und Arduino?
WeiterlesenDer PT100 ist ein sehr präziser industrieller Temperatursensor. In diesem Artikel geht es um den Bau eines Messverstärkers zum Einlesen eines PT100 am Arduino
WeiterlesenAEQ-WEB © 2015-2024 All Right Reserved