In diesem Artikel werde ich Ihnen zeigen, wie Sie eine Python -API -basierte Wetterstation -Webanwendung erstellen, indem Sie die verwenden Temperatur, Luftdruck, Und Feuchtigkeit Sensoren des Raspberry Pi Sense Hut. Um diesem Artikel zu folgen, benötigen Sie Folgendes:
NOTIZ: In diesem Artikel werden wir über VNC oder SSH mit dem Kopfless -Setup des Raspberry Pi eine Verbindung zum Raspberry Pi herstellen. Wenn Sie nicht über SSH oder VNC auf Ihr Raspberry Pi zugreifen möchten, müssen Sie einen Monitor, eine Tastatur und eine Maus mit Ihrem Raspberry Pi anschließen.
Um zu erfahren, wie Sie das Raspberry Pi OS -Bild auf eine microSD -Karte blinken, verweisen Sie bitte, wie Sie Raspberry PI Imagator installieren und verwenden können. Wenn Sie Hilfe bei der Installation von Raspberry Pi OS auf Ihrem Raspberry Pi benötigen. Wenn Sie Hilfe bei der kopierlosen Einrichtung von Raspberry Pi benötigen.
Anschließen
Raspberry Pi Sense Hat Kit ist mit dem Raspberry Pi Sense Hut-Add-On-Board, einem 40-poligen Header für Mann zu Frauen und einigen Schrauben und Abstandshaltern geliefert.
Bevor Sie das Sense-Hutbrett dem Raspberry Pi anbringen können, müssen Sie den 40-poligen Header mit dem Sense-Hut verbinden. Verbinden Sie die männlichen Stifte des 40-poligen männlichen Kopfballs mit dem Sinneshut, wie in den folgenden Bildern gezeigt.
Raspberry PI-Single-Board-Computer verfügen über 4 Löcher, mit denen Add-On-Boards oder ein Gehäuse angeschlossen werden können. Um die Add-On-Platine anzubringen, setzen Sie Schrauben von der Rückseite des Raspberry PI ein, wie in den folgenden Bildern gezeigt.
Schließen Sie dann einen Abstandshalter an die Schraube an.
Sobald Sie alle vier Schrauben und Abstandshalter hinzugefügt haben, sollte Ihr Himbeer -Pi wie das im Bild unten gezeigten Aussehen aussehen.
Verbinden Sie den Raspberry Pi Sense-Hut mit dem 40-poligen GPIO-männlichen Header des Himbeer-Pi, wie in den folgenden Bildern gezeigt.
NOTIZ: Seien Sie vorsichtig, während Sie den Himbeer-Sense-Hut vom Himbeer-GPIO-Header trennen, um zu vermeiden.
Befestigen.
Auf dem Raspberry Pi einschalten
Wenn der Raspberry Pi Sense -Hut mit dem Raspberry PI verbunden ist, setzen Sie die microSD -Karte mit Raspberry PI OS in den microSD -Kartensteck.
Installation der Raspberry Pi Sense Hat Python Library
Um Raspberry Pi Sense Hut auf dem Raspberry Pi zu verwenden, die Sinneshut Die Python -Bibliothek muss auf dem Raspberry Pi OS installiert werden. Der Sinneshut Die Bibliothek ist im offiziellen Paketrepository von Raspberry Pi OS erhältlich.
So installieren Sie den Raspberry Pi Sinneshut Python Library auf dem Raspberry Pi -Betriebssystem aktualisieren Sie zuerst den APT -Paket -Repository -Cache mit dem folgenden Befehl:
$ sudo APT UpdateFühren Sie dann den folgenden Befehl aus:
$ sudo apt installierenInstallation der Python -Bibliothek von Flask Micro Web Framework
Wir werden das Flask Python Framework verwenden, um unsere Wetteranwendung zu erstellen. Sie können den Kolben aus dem offiziellen Paket -Repository von Raspberry Pi OS mit dem folgenden Befehl installieren:
$ sudo apt installieren Sie Python3 -Flask -y -yErstellen eines Projektverzeichnisses
Es ist eine gute Idee, ein Projektverzeichnis zu erstellen, um Ihre Projektdateien zu organisieren. Ein Projektverzeichnis erstellen ~/Arbeit, Verwenden Sie den folgenden Befehl:
$ mkdir ~/ArbeitSobald das Projektverzeichnis erstellt wurde, navigieren Sie wie folgt zum Projektverzeichnis:
$ CD ~/ArbeitTesten Sie den Raspberry Pi Sense Hut
Um zu testen, ob der Raspberry Pi Sense -Hut funktioniert, können wir ein einfaches Testpython -Skript schreiben. Sie können ein neues Python -Skript namens erstellen prüfen.py mit dem Nano Texteditor wie folgt:
$ nano test.pyGeben Sie den folgenden Code in den ein prüfen.py Datei. Zeile 1 Importe Sensehat von dem Sense_hat Modul, Zeile 3 erstellt a Sensehat Objekt und speichert eine Referenz in der Sinn Variable und Zeilen 5-6 setzen die Farbe aller 8 × 8 LEDs auf rot. Sobald Sie fertig sind, drücken Sie + X gefolgt von Y Und .
Sie können die ausführen prüfen.py Python -Skript mit dem folgenden Befehl:
$ python3 Test.pyDie 8 × 8 -LED -Matrix sollte in roter Farbe leuchten, wie im Bild unten gezeigt.
Um die LEDs des Sense -Huts auszuschalten, laufen Sie die klar() Methode ohne Farbwert in der prüfen.py Python -Skript, wie im Screenshot unten gezeigt, und führen Sie die aus prüfen.py Python Drehbuch wieder.
Die LEDs des Sense -Hutes sollten nun ausgeschaltet werden, wie im Bild unten gezeigt.
Wenn der Sense -Hut richtig funktioniert, fahren Sie mit dem nächsten Abschnitt fort.
Wetterdaten aus Sense Hut erhalten
Sie können Sensordaten aus dem Sense -Hut sehr leicht erhalten, indem Sie die verwenden Sinneshut Python Library. Um Sensordaten aus dem Sense -Hut abzurufen, können Sie ein neues Python -Skript erstellen read_sensor_data.py folgendermaßen:
$ nano read_sensor_data.pyGeben Sie den folgenden Code in den ein read_sensor_data.py Python -Datei.
von Sense_hat Import SensehatSobald Sie fertig sind, drücken Sie + X gefolgt von Y Und .
Im obigen Code importieren Zeilen 1 und 2 alle erforderlichen Bibliotheken, Zeile 4 erstellt a Sensehat Objekt und Zeile 5 schaltet alle LEDs des Sense -Hutes aus, die mit dem klar() Methode. Die while-Schleife in Zeile 7 ist eine unendliche Schleife, die den Code in den Zeilen 8-16 für immer ausführt.
In Zeile 8 die get_temperature () Die Methode wird verwendet, um die Temperaturdaten (in Grad Celsius) aus dem Feuchtigkeitssensor des Sinneshuts zu lesen. In Zeile 9 werden die Temperaturdaten von Grad Celsius in Grad Fahrenheit umgewandelt. In Zeile 10 die get_pressure () Die Methode wird verwendet, um die Luftdruckdaten (in Millibar) aus dem Drucksensor des Sense -Hutes zu lesen. In Zeile 11 die Get_Heuchtung () Die Methode wird verwendet, um die Feuchtigkeitsdaten (in %) aus dem Feuchtigkeitssensor des Sinneshuts zu lesen.
Zeilen 13-15 werden verwendet, um die Sensordaten in die Konsole zu drucken.
Sie können die ausführen read_sensor_data.py Python -Skript wie folgt:
$ python3 read_sensor_data.pySobald das Skript ausgeführt wird, werden Sensordaten in die Konsole gedruckt.
Nachdem wir die Sensordaten aus dem Sense -Hut lesen können, drücken Sie + C das Programm stoppen.
Erstellen einer Wetterstation Web App
In diesem Abschnitt zeigen wir Ihnen, wie Sie das Web -Framework von Python Flask verwenden, um eine Wetter -API und eine Wetteranwendung zu erstellen. Die Wetteranwendung greift auf die Wetterdaten -API zu und zeigt die Wetterdaten in Echtzeit an. Der gesamte in diesem Abschnitt erörterte Code ist in GitHub unter Shovon8/Himbeer-Pi-Sensse-Hut-Weather-App verfügbar.
Erstellen Sie zunächst a Server.py Python -Skript im Projektverzeichnis wie folgt:
$ nano Server.pyGeben Sie den folgenden Code in den ein Server.py Python -Datei.
aus Flask -ImportkolbenDann drücken + X gefolgt von Y Und um die zu retten Server.py Python -Skript.
Im obigen Code, Zeilen 1-5 importieren alle erforderlichen Bibliotheken, Zeile 7 erstellt eine Flask-App, Zeile 11 erstellt ein SinneHat-Objekt, und Zeile 12 schaltet alle LEDs des Sinneshut. Zeile 8 deaktiviert das Web -Caching für die Flask -App. Da diese App leicht ist, ist kein Zwischenspeichern erforderlich. Wenn Sie die App ändern möchten, erleichtert das Unterlagern von Web -Caching die Tests erheblich.
Zeilen 18-31 Lesen Sie die Sensordaten aus dem Sense Hut und geben Sie die API-Daten im JSON-Format auf HTTP GET-Anforderung in den zurück /API Endpunkt des Webservers. Zeilen 37-39 geben die Weather Web-App-Homepage auf dem / Endpunkt des Webservers. Die Homepage wird von der gerendert heim.html Datei, die in der sein sollte Vorlagen/ Verzeichnis des Projektverzeichnisses.
Zeilen 14-16 werden verwendet, um den Zugriff auf die zu ermöglichen Stil.CSS Und App.JS Statische Dateien. Diese Dateien sollten in der sein statisch/ Verzeichnis des Projektverzeichnisses. Der Stil.CSS Datei wird verwendet, um die zu stylen heim.html Homepage und die App.JS Die Datei wird verwendet, um die API -Daten aus dem anzufordern /API Endpunkt und aktualisieren Sie die Wetterdaten auf der heim.html Seite alle 5 Sekunden.
Erstellen die statisch/ Und Vorlagen/ Verzeichnis im Projektverzeichnis wie folgt:
$ mkdir -v static, templatesEin ... kreieren heim.html Datei in der Vorlagen/ Verzeichnis wie folgt:
$ nano Vorlagen/Zuhause.htmlGeben Sie den folgenden Code in den ein heim.html Datei.
Temperatur
Druck
Feuchtigkeit
Dann drücken + X gefolgt von Y Und um die zu retten heim.html Datei.
Ein ... kreieren Stil.CSS Datei in der statisch/ Verzeichnis wie folgt:
$ nano statisch/stil.CSSGeben Sie die folgenden Codes in die ein Stil.CSS Datei.
@import URL ('https: // Schriftarten.googleapis.com/css2?family = Roboto & display = Swap ');Dann drücken + X gefolgt von Y Und um die zu retten Stil.CSS Datei.
Erstelle ein App.JS Datei in der statisch/ Verzeichnis wie folgt:
$ nano static/App.JSGeben Sie den folgenden Code in den ein App.JS Datei.
Fenster.AddEventListener ('Load', Main);Dann drücken + X gefolgt von Y Und um die zu retten App.JS Datei.
Hier leitet Zeile 1 die hauptsächlich() Funktion, wenn die Webseite das Laden beendet. Im hauptsächlich() Funktion, die Getapidata () Funktion holt die Wetter -API -Daten mit AJAX ab und ruft die auf aktualisieren() Funktion (in Zeile 10), sobald die Daten erfolgreich abgerufen wurden. Der aktualisieren() Funktion aktualisiert das Webseitenelement mit den API -Daten.
In Zeile 20 die dokumentieren.GetElementById () Die Methode wird verwendet, um die Referenz des Webseitenelements mit der ID zu erhalten tempc. Zeile 28 wird verwendet, um den Inhalt des Webseitenelements mit der ID zu ersetzen tempc mit der Temperatur (in Celsius) der API. Auf die gleiche Weise werden der Inhalt aller Webelemente (Zeilen 21-26) durch ihre jeweiligen API-Daten ersetzt.
Im app () Funktion, die Getapidata () wird alle 5 Sekunden (5000 Millisekunden) bezeichnet, um die Wetterdaten in der Wetter -App auf dem neuesten Stand zu halten. Schließlich in Zeile 46 die app () Funktion wird ausgeführt.
Geben Sie den folgenden Befehl ein, um die Web -App zu testen:
$ Flask_app = server.Py Flask Run -Host = 0.0.0.0Die Wetter -App sollte auf Port 5000 ausgeführt werden (standardmäßig).
Um zu testen, ob die Wetter -API funktioniert, führen Sie den folgenden Befehl aus:
$ curl -s http: // localhost: 5000/api | JSON_PPWie Sie sehen können, werden die Wetter -API -Daten in die Konsole gedruckt. Daher funktioniert die API.
Um die Wetter -App zu testen, besuchen Sie http: // localhost: 5000 aus einem Chromium -Webbrowser. Die Wetter -App sollte im Webbrowser geladen werden, aber zunächst sollten keine Wetterdaten angezeigt werden.
Nach einigen Sekunden sollte die Wetter -App die Wetterdaten von der API abrufen und sie anzeigen.
Zu jedem Zeitpunkt können Sie drücken + C So stoppen Sie den Webserver.
Erstellen des Systemd -Dienstes für die Weather Web App
In diesem Abschnitt zeigen wir Ihnen, wie Sie eine Systemd -Dienstdatei für die Wetter -App erstellen, damit sie automatisch mit dem Booten beginnen.
Erstellen Sie zunächst a Wetterstation.Service Datei in Ihrem Projektverzeichnis wie folgt:
$ nano Wetterstation.ServiceGeben Sie die folgenden Codezeilen in die ein Wetterstation.Service Datei.
[Einheit]Dann drücken + X gefolgt von Y Und um die zu retten Wetterstation.Service Datei.
Kopiere das Wetterstation.Service Datei an der /etc/systemd/system/ Verzeichnis mit dem folgenden Befehl:
$ sudo cp -v Wetterstation.Service/etc/systemd/system/Laden Sie die Systemd -Daemons neu, damit die Änderungen wie folgt wirksam werden:
$ sudo systemctl Daemon-ReloadDer Wetterstation Der Systemd -Service sollte momentan inaktiv sein, wie im Screenshot unten gezeigt.
$ sudo systemctl Status Wetterstation.ServiceStarte das Wetterstation Service mit dem folgenden Befehl:
$ sudo systemctl starten wetterstation.ServiceWie Sie sehen können, die Wetterstation Der Service läuft jetzt.
$ sudo systemctl Status Wetterstation.ServiceJetzt, wo die Wetterstation Der Service funktioniert, Sie können ihn zum Systemstart von Raspberry Pi OS mit dem folgenden Befehl hinzufügen:
$ sudo systemCTL Aktivieren Sie die Wetterstation.ServiceStarten Sie Ihren Raspberry Pi mit dem folgenden Befehl neu:
$ sudo NeustartSobald Ihre Raspberry Pi Stiefel, die Wetterstation Der Service sollte ausgeführt werden, wie im Screenshot unten gezeigt.
$ sudo systemctl Status Wetterstation.ServiceZugriff auf die Wetter -App von anderen Geräten aus
Um auf die Wetter -App von anderen Geräten in Ihrem Heimnetzwerk zuzugreifen, müssen Sie die IP -Adresse Ihres Raspberry Pi kennenlernen. Sie finden die IP -Adresse Ihres Raspberry Pi 4 von der Web -Management -Oberfläche Ihres Heimrouters. In unserem Fall ist die IP -Adresse 192.168.0.103, aber diese Adresse wird für Sie unterschiedlich sein. Ersetzen Sie diese Adresse daher in allen nachfolgenden Schritten durch Ihre Adresse.
Wenn Sie Zugriff auf die Raspberry PI -Konsole haben, können Sie den folgenden Befehl ausführen, um auch die IP -Adresse zu finden.
$ hostname -iSobald Sie die IP -Adresse Ihres Raspberry PI kennen, können Sie von jedem Gerät in Ihrem Heimnetzwerk darauf zugreifen. Wie im folgenden Screenshot gezeigt, haben wir auf die Wetter -App von einem Android -Smartphone zugegriffen.
Abschluss
In diesem Artikel haben wir Ihnen gezeigt, wie Sie mit dem Raspberry Pi Sense Hut eine Himbeer -Pi -Wetterstation bauen können. Wir haben die benutzt Sinneshut Python -Bibliothek zum Extrahieren von Wetterdaten aus dem Raspberry Pi Sense Hut. Dann haben wir das Flask Python Micro Web Framework verwendet, um eine Wetter -API und eine Webanwendung zu erstellen. Die Web -App erhält alle 5 Sekunden die Wetterdaten von der Wetter -API, um die Web -App mit den neuesten Wetterdaten auf dem Laufenden zu halten.