Dieses Projekt verwendet einen Raspberry Pi Zero W, einen Pimoroni Enviro+ und einen Plantower-Luftqualitätssensor, um Luftpartikel, Gase, Temperatur, Luftfeuchtigkeit, Luftdruck, Lichtstärke und Geräuschpegel zu überwachen, anzuzeigen und darüber zu berichten. Es besteht auch die Möglichkeit, die eCO2- und TVOC-Werte durch Hinzufügen eines SGP30-Sensors zu überwachen. Der Code basiert auf vielen der von Pimoroni veröffentlichten Python-Beispiele und -Bibliotheken, mit einer Reihe von Modifikationen und Erweiterungen.
Es wurde eine grundlegende Wettervorhersagefunktion hinzugefügt, die auf Luftdruckniveaus und -änderungen basiert.
Die Anzeige der Lichtstärke im hervorragenden Wetter und Licht wurde geändert, um die Luftqualitätsstufen anzuzeigen. Der Hintergrundton stellt nun die Luftqualität dar und der Sonnenstand wird nun über ein sichtbares Sonnensymbol angezeigt. Es bietet außerdem Informationen zur Wettervorhersage und zum Geräuschpegel (falls aktiviert) und weist einige geringfügige Änderungen an der Luftfeuchtigkeitsanzeige auf.
Die kombinierte Funktion wurde geändert, um die Sichtbarkeit jedes Diagramms zu verbessern. Die Diagrammfarben basieren auf Pegelschwellenwerten für jeden Parameter und es werden nur gemessene Parameter angezeigt. Die Methode „display_everything“ wurde ebenfalls geändert, um nur Luftqualitätsparameter anzuzeigen, um die Lesbarkeit der Anzeige zu verbessern.
Die All-in-One-Funktion wurde geändert, um das Durchlaufen aller Funktionen des Enviro Monitors zu ermöglichen.
Die Genauigkeit der Temperatur- und Feuchtigkeitsmessungen wurde durch umfangreiche Tests und Regressionsanalysen (zwischen 0 und 40 Grad Celsius) verbessert, um effektivere Kompensationsalgorithmen zu entwickeln. Allerdings lieferten selbst diese verbesserten Algorithmen keine ausreichende Genauigkeit und es war notwendig, ein 3D-gedrucktes Gehäuse zu verwenden, um den Enviro+ vom Raspberry Pi Zero W zu trennen und sie über ein Flachbandkabel zu verbinden.
Zusätzlich zur Verbesserung der Temperatur- und Feuchtigkeitsmessungen wurden Tests und Regressionsanalysen durchgeführt, um eine zeitbasierte Drift-, Temperatur-, Feuchtigkeits- und Luftdruckkompensation für die Enviro+-Gassensoren bereitzustellen. Algorithmen und Reinluftkalibrierung werden auch verwendet, um Gassensormesswerte in ppm bereitzustellen. Zur Unterstützung der Regressionsanalyse steht eine Datenprotokollierungsfunktion zur Verfügung. Die Protokolldatei für diese Analyse muss aktiviert und in ein gültiges JSON-Format konvertiert werden, bevor eine weitere Regressionsanalyse durchgeführt werden kann.
Die Genauigkeit der Luftdruckmessungen wird durch Höhenkompensation gewährleistet. Die Höhe wird durch den Parameter „altitude“ in der Datei config.json festgelegt.
Das Gehäuse ist nicht wasserdicht und muss vor Witterungseinflüssen geschützt werden. Der Sockel wird nur benötigt, wenn das Gerät nicht auf einer vertikalen Fläche montiert wird. Für das Indoor Plus-Modell gibt es eine Variante des Gehäuses und der Abdeckung, die den eCO2- und TVOC-Wert überwacht. Diese Gehäusevariante bietet zusätzlichen Platz und Luftstrom für den SGP30-Sensor.
Der Koffer bietet auch die Möglichkeit, eine Wetterschutzhülle hinzuzufügen, um zusätzlichen Schutz vor den Elementen zu bieten. Bei Verwendung dieser Abdeckung ist es notwendig, „enable_display“ in der Datei config.json auf „false“ zu setzen. Dies beschränkt die Anzeigefunktionalität auf den auf der Luftqualität basierenden Farbton und die Seriennummer sowie auf die Änderung der Temperatur- und Feuchtigkeitskompensationsvariablen, um die Auswirkungen der Abdeckung auf den Temperatur- und Feuchtigkeitssensor abzuschwächen.
Basierend auf diesem Repository wurden der Version 6 ungefähre Geräuschpegelmessungen hinzugefügt. Diese Funktion wurde nicht kalibriert und darf nicht für genaue Schallpegelmessungen verwendet werden. Version 6.7 verfügt über eine verbesserte Frequenzkompensation der Geräuschpegelmessfunktion, es sind jedoch noch weitere Arbeiten und Kalibrierungen erforderlich. Diese Funktion zur Geräuschpegelmessung erfordert eine zusätzliche Einrichtung (unten beschrieben) und muss nach der Einrichtung in der Konfigurationsdatei aktiviert werden.
mqtt-Unterstützung wird bereitgestellt, um die Verwendung externer Temperatur- und Feuchtigkeitssensoren (zur Datenprotokollierung und Regressionsanalyse), die Zusammenarbeit zwischen dem Enviro Monitor und einem Hausautomationssystem sowie die Unterstützung der Zusammenarbeit zwischen Enviro Monitoren im Außen- und Innenbereich zu ermöglichen. Durch diese Zusammenarbeit kann die Anzeige eines Enviro-Monitors für den Innenbereich zwischen Innen- und Außenmesswerten wechseln.
Eine Alternative zur Verwendung von mqtt-verknüpften Enviro-Monitoren für den Innen- und Außenbereich, um Außenmesswerte auf einem Enviro-Monitor für den Innenbereich zu erhalten, besteht darin, den Enviro-Monitor für den Innenbereich so zu konfigurieren, dass er Luftdaten-Messwerte oder Adafruit-IO-Feeds von einem anderen Enviro-Monitor erfasst.
Die Zusammenarbeit mit Luftdaten wurde geändert, um die Hinzufügung minimaler, maximaler und mittlerer Geräuschpegelwerte zu unterstützen. Geräuschpegelmesswerte können an Luftdaten gesendet werden, indem „enable_luftdaten_noise“ in der Datei config.json auf „true“ gesetzt wird. Beachten Sie, dass Luftdaten derzeit nicht mit drei Sensoren pro Knoten konfiguriert werden kann. Geräuschpegelwerte können daher nur an Luftdaten gesendet werden, wenn entweder PM- oder Klimawerte deaktiviert sind. Dies kann erreicht werden, indem „disable_luftdaten_sensor_upload“ in der Datei config.json entweder auf „Climate“ oder „PM“ gesetzt wird.
Das gleiche Enviro+-Setup wird zum Einrichten des Enviro Monitors verwendet und die Parameter der Datei config.json werden zum Anpassen seiner Funktionalität verwendet. Eine Beschreibung der Parameter der Datei config.json finden Sie hier.
Das Einrichten der Geräuschpegelmessungen erfordert die folgenden zusätzlichen Schritte:
Die erfolgreiche Ausführung dieses Setups ist erforderlich, bevor die Geräuschmessung in der Konfigurationsdatei aktiviert wird.
Sudo apt-get update
sudo apt-get upgrade
curl -sSL https://get.pimoroni.com/enviroplus | bash
sudo python -m pip Soundgerät deinstallieren
sudo pip3 install sounddevice==0.3.15
Gehen Sie für Versionen 6.7 und höher außerdem wie folgt vor:
sudo apt-get install python3-scipy
sudo pip3 install git+https://github.com/endolith/waveform_analysis.git@master
Befolgen Sie dann die Anweisungen unter: https://learn.adafruit.com/adafruit-i2s-mems-microphone-breakout/raspberry-pi-wiring-test, einschließlich „Hinzufügen einer Lautstärkeregelung“.
Verwenden Sie anstelle des dokumentierten Textes für ~/.asoundrc Folgendes:
Für Versionen vor Version 6.7:
Verwenden Sie alsamixer, um die Adau7002-Erfassungsstufe auf 50 einzustellen
Für Version 6.7 und höher:
Verwenden Sie alsamixer, um die Adau7002-Erfassungsstufe auf 10 zu setzen
Ein Benutzerhandbuch bietet Anleitungen zur Verwendung des Enviro Monitors.
Unterstützt wird das Streamen von Wettervorhersagen, Luftqualität, Temperatur, Luftfeuchtigkeit, Taupunkt, Luftdruck, PM-Konzentration, Gaskonzentration, Lichtstärke, Geräuschpegel und, mit dem optionalen SGP30-Sensor, eCO2- und TVOC-Daten an Adafruit IO. Dies kann wie folgt aktiviert und eingerichtet werden:
Die folgenden Felder in der Datei config.json des Enviro Monitors müssen ausgefüllt werden, um Daten für die Adafruit IO-Feeds bereitzustellen.
„enable_adafruit_io“: Auf „true“ setzen, um Adafruit-IO-Feeds zu aktivieren, und auf „false“, um sie zu deaktivieren.
„aio_user_name“: „Ihr Adafruit IO-Benutzername“,
„aio_key“: „Ihr Adafruit IO-Schlüssel“,
„aio_feed_window“: Wert zwischen 0 und 9. Legt die Startzeit für das einminütige Feedfenster fest (siehe Adafruit Throttling Control). Auf 0 setzen, wenn Sie nur einen Enviro Monitor haben,
„aio_feed_sequence“: Wert zwischen 0 und 3. Legt die Startzeit der Feed-Aktualisierung innerhalb des einminütigen Feed-Aktualisierungsfensters fest (siehe Adafruit Throttling Control). Auf 0 setzen, wenn Sie nur einen Enviro Monitor haben,
„aio_household_prefix“: „Das Adafruit IO-Schlüsselpräfix für den Haushalt, den Sie überwachen (siehe Adafruit IO-Namenskonvention)“,
„aio_location_prefix“: „Das Adafruit IO-Schlüsselpräfix für den Standort dieses bestimmten Enviro-Monitors. Verwenden Sie „indoor“ für einen Innenmonitor oder „outdoor“ für einen Außenmonitor. (siehe Adafruit IO-Namenskonvention)“,
„aio_package“: Auf „Premium Plus“ oder „Premium Plus Noise“ oder „Premium“ oder „Premium Noise“ oder „Basic Air“ oder „Basic Combo“ einstellen
Sie benötigen ein Adafruit IO+-Konto, um die Pakete „Premium Plus“, „Premium Plus Noise“, „Premium“ oder „Premium Noise“ zu nutzen, und einen Enviro Monitor Indoor Plus (ausgestattet mit einem SGP30 eCO2/TVOC-Sensor) für die „ „Premium Plus“- oder „Premium Plus Noise“-Pakete (siehe Adafruit IO-Pakete)“,
Das Skript richtet die Adafruit IO-Feeds, Dashboards und Blöcke des Enviro Monitor wie in diesem Beispiel ein
Das Skript kann mehrere Haushalte und Standorte in einem Lauf einrichten, indem es das Wörterbuch aio_feed_prefix mit den erforderlichen Daten füllt. Das Format für aio_feed_prefix ist:
aio_feed_prefix = {'Household 1 Name': {'key': 'household1key', 'package': 'aio_package', 'locations': {'Location1Name': 'location1key', 'Location2Name': 'location2key'}, 'visibility ': 'public' oder 'private'}, 'Household 2 Name': {'key': 'household2key', 'package': 'aio_package', 'locations': {'Location1Name': 'location1key'}, 'visibility': 'public' oder 'private'}}
Die Haushaltsnamen und Haushaltsschlüssel müssen mit denen übereinstimmen, die in den config.json-Dateien der entsprechenden Enviro Monitors definiert sind.
Wenn Sie beispielsweise nur einen Enviro Monitor für Ihren Haushalt haben und in Ihrer config.json-Datei „aio_household_prefix“ auf „home“, „aio_location_prefix“ auf „outdoor“ und „aio_package“ auf „Premium“ eingestellt haben dass Enviro Monitor, und wenn Sie möchten, dass die Feeds, Dashboards und Blöcke mit privater Sichtbarkeit eingestellt werden:
aio_feed_prefix = {'Home': {'key': 'home', 'package': Premium', 'locations': {'Outdoor': 'outdoor'}, 'visibility': 'private'}}
Wenn Sie zwei Enviro-Monitore für Ihren Haushalt haben und die config.json-Dateien als „aio_household_prefix“ für beide Enviro-Monitore auf „home“ und „aio_location_prefix“ für den Außenmonitor auf „outdoor“ und für „indoor“ festgelegt haben Ihr Innenmonitor, „aio_package“ auf „Premium“ für Ihren Außenmonitor und „Premium Plus“ für Ihren Innenmonitor und ob Sie die Feeds, Dashboards und Blöcke einstellen möchten mit öffentlicher Sichtbarkeit:
aio_feed_prefix = {'Home': {'key': 'home', 'package': Premium Plus', 'locations': {'Outdoor': 'outdoor', 'Indoor': 'indoor'}, 'visibility': 'öffentlich'}}
Die beiden anderen benutzerdefinierten Wörterbücher sind aio_user_name und aio_key. Diese müssen mit demselben Benutzernamen und Schlüssel gefüllt sein, den Sie in der config.json-Datei Ihres Enviro Monitors verwendet haben.
aio_user_name = „Ihr Adafruit IO-Benutzername“
aio_key = „Ihr Adafruit IO-Schlüssel“
Wenn aktiviert, werden Adafruit IO-Feed-Updates alle 10 Minuten generiert. Die Variablen aio_feed_window und aio_feed_sequence der Konfigurationsdatei werden verwendet, um Adafruit-IO-Drosselungsfehler beim Sammeln von Feeds von mehreren Enviro-Monitoren zu minimieren. Die Variable aio_feed_window kann einen Wert zwischen 0 und 9 haben, um die Startzeit für ein einminütiges Feed-Aktualisierungsfenster festzulegen. 0 öffnet das Fenster um 0, 10, 20, 30, 40 und 50 Minuten nach der vollen Stunde, 1 öffnet das Fenster um 1, 11, 21, 31, 41 und 51 Minuten nach der vollen Stunde, 2 öffnet das Fenster um 2, 12, 22, 32, 42 und 52 Minuten nach der vollen Stunde und so weiter. Die Variable aio_feed_sequence kann einen Wert zwischen 0 und 3 haben, um die Startzeit der Feed-Aktualisierung innerhalb des einminütigen Feed-Aktualisierungsfensters festzulegen. 0 startet die Feed-Aktualisierung sofort nach dem Öffnen des Fensters, 1 verzögert den Start um 15 Sekunden, 2 um 30 Sekunden und 3 um 45 Sekunden.
Die Namenskonvention für die Adafruit IO-Feeds, Dashboards oder Blöcke jedes Enviro Monitors besteht darin, den Namen des Haushalts, gefolgt vom Standort des jeweiligen Enviro Monitors innerhalb dieses Haushalts, als Präfix für jeden Feed, jedes Dashboard oder jeden Block zu verwenden. Sie wählen einen passenden Namen für „aio_household_prefix“, und „aio_location_prefix“ kann entweder „indoor“ oder „outdoor“ lauten. Wenn Sie beispielsweise „aio_household_prefix“ auf „home“ und „aio_location_prefix“ auf „outdoor“ setzen, wird das Präfix des Namens jedes Feeds auf „Home Outdoor“ und das Präfix des Schlüssels jedes Feeds auf „home-outdoor-“ festgelegt. Also, die Der Temperatur-Feed hat den Namen „Home Outdoor Temperature“ und den Schlüssel „home-outdoor-temperature“. der Name „Außentemperaturmesser“ und der Schlüssel „Außentemperaturmesser“.
Sechs Adafruit IO-Paketoptionen sind verfügbar: „Premium“ mit 14 Daten-Feeds pro Enviro, „Premium Noise“ mit 17 Daten-Feeds pro Enviro, „Premium Plus“ mit 16 Daten-Feeds pro Enviro (d. h. die Hinzufügung von eCO2 und TVOC durch die optionale Option). SGP30-Sensor), „Premium Plus Noise“ mit 19 Datenfeeds pro Enviro, die alle ein Adafruit IO+-Konto benötigen; „Basic Air“ mit 5 Luftqualitätsdatenströmen (Luftqualitätsniveau, Luftqualitätstext, PM1, PM2,5 und PM10) und „Basic Combo“ mit 5 Luftqualitäts-/Klimaströmen (Luftqualitätsniveau, Wettervorhersagesymbol, Temperatur, Luftfeuchtigkeit und Luftdruck).
Die Verwendung der Adafruit IO-Pakete „Premium Noise“ und „Premium Plus Noise“ erfordert die Konfiguration und Aktivierung von Noise-Messungen im Enviro mithilfe der entsprechenden Setup-Anweisungen. Version 6.5 ändert die Geräusch-Feeds und Dashboards, um die maximalen, minimalen und mittleren Geräuschpegel zwischen Feed-Aktualisierungen anzuzeigen, während in früheren Versionen nur die maximalen Geräuschpegel zwischen Feed-Aktualisierungen angezeigt wurden.
Dieses Projekt ist unter der MIT-Lizenz lizenziert – Einzelheiten finden Sie in der Datei LICENSE.md
Wettervorhersage basierend auf www.worldstormcentral.co/law_of_storms/secret_law_of_storms.html von RJ Ellis