[PYTHON] Belüftung ist wichtig. Was ich getan habe, um die CO2-Konzentration im Raum aufzuzeichnen

Laut Alterung der Kohlendioxidkonzentration durch die Meteorologische Agentur wird die durchschnittliche CO2-Konzentration in der Welt im Jahr 2018 mit dem Vorjahr verglichen. Es scheint, dass es um 2,3 ppm auf 407,8 ppm gestiegen ist.

Es ist besorgniserregend, dass die CO2-Konzentration aufgrund der globalen Erwärmung weiter zunimmt, aber die derzeitige Besorgnis über die neue Koronavirus-Epidemie ist "besiegelt", "dicht" und "nahe". Die Frage ist, ob der Raum richtig belüftet ist, um das Risiko einer "Abdichtung" in der Dichte zu vermeiden.

Über die CO2-Konzentration im Raum [Https://www.mhlw.go.jp/bunya/kenkou/seikatsu-eisei10/) zeigt 1.000 ppm oder weniger Ministerium für Bildung, Kultur, Sport, Wissenschaft und Technologie, Umwelthygienestandards für Schulen zeigt 1.500 ppm oder weniger Ist der Managementstandard. Auch diese von CHC GROUP zusammengestellte Zahl kann hilfreich sein. image.png (Quelle: http://group.chcsys.net/jp/chcgroup/)

Ich wollte korrekte Daten über die CO2-Konzentration meines Ortes im Vergleich zum Standard haben, deshalb habe ich beschlossen, sie mit einem Sensor zu messen.

Was du vorbereitet hast

Raspberry Pi 3 Model B CO2-Sensor MH-Z19B

OS Debian GNU/Linux Linux raspberrypi 4.19.97-v7+ #1294 SMP Thu Jan 30 13:15:58 GMT 2020 armv7l

Aktivieren Sie die serielle Schnittstelle in der Raspberry Pi-Einstellungsschnittstelle. image.png

Starten Sie den Raspberry Pi neu, nachdem Sie die serielle Schnittstelle aktiviert haben. image.png

Verdrahtung

Das Drahtlöten wird für GND, Vin, TxD und RxD durchgeführt. image.png image.png (Aus dem Schaltplan https://pypi.org/project/mh-z19/)

Verbinden Sie den Raspberry Pi und den CO2-Sensor gemäß Schaltplan. image.png

Paketinstallation

Basierend auf den Informationen unter https://pypi.org/project/mh-z19/. Paketinstallation

$ sudo pip3 install mh-z19
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting mh-z19
  Downloading https://www.piwheels.org/simple/mh-z19/mh_z19-0.4.1-py3-none-any.whl
Collecting argparse (from mh-z19)
  Downloading https://files.pythonhosted.org/packages/f2/94/3af39d34be01a24a6e65433d19e107099374224905f1e0cc6bbe1fd22a2f/argparse-1.4.0-py2.py3-none-any.whl
Requirement already satisfied: pyserial in /usr/lib/python3/dist-packages (from mh-z19) (3.4)
Collecting getrpimodel (from mh-z19)
  Downloading https://www.piwheels.org/simple/getrpimodel/getrpimodel-0.1.15-py3-none-any.whl
Requirement already satisfied: requests in /usr/lib/python3/dist-packages (from mh-z19) (2.21.0)
Installing collected packages: argparse, getrpimodel, mh-z19
Successfully installed argparse-1.4.0 getrpimodel-0.1.15 mh-z19-0.4.1

Test zur Erfassung des Messwerts

~~ Das Modul mh_z19 scheint das Ergebnis im Wörterbuchtyp auszugeben. ~~ Das Modul mh_z19 scheint das Ergebnis in JSON auszugeben. (Wir haben eine Bearbeitungsanfrage von @UedaTakeyuki erhalten. Danke.)

$ sudo python3 -m mh_z19
{"co2": 1456}

Erstellen Sie ein Programm

Der Messwert wird zusammen mit Datum und Uhrzeit ausgegeben.

import datetime
import mh_z19

now = datetime.datetime.now()
now = "{0:%Y-%m-%d %H:%M:%S}".format(now)
value = mh_z19.read().get("co2")  # ex: {"co2": 1456}
out = now + ',' + str(value)
print(out)  #Ausgabe an die Konsole

Ausgabeergebnis

2020-04-15 19:34:01,1950

Erstellen eines Shell-Skripts

Leitet das Ergebnis der Standardausgabe in eine Protokolldatei um. do.sh

#!/bin/sh

cd /home/pi/mh-z19
sudo python3 MeasureAndOutput.py >> ./log/logfile.csv

Versetzen Sie das Shell-Skript in den ausführbaren Modus.

$ chmod +x do.sh

Geplante Ausführungseinstellungen

$ crontab -e

Der Editor wird gestartet. Stellen Sie ihn so ein, dass er jede Minute misst und das Protokoll ausgibt.

# m h  dom mon dow   command
* * * * * mh-z19/do.sh

Starten Sie cron neu, damit die Einstellungen wirksam werden.

$ sudo /etc/init.d/cron restart
[ ok ] Restarting cron (via systemctl): cron.service.

Als ich es einige Minuten später überprüfte, wurde das Protokoll gemäß dem Szenario ausgegeben.

$ cat logfile.csv
2020-04-15 19:34:01,1950
2020-04-15 19:35:02,1957
2020-04-15 19:36:01,1965
2020-04-15 19:37:01,1976
2020-04-15 19:38:02,1983
2020-04-15 19:39:01,1996
2020-04-15 19:40:01,2032

Versuchen Sie, ein Diagramm zu erstellen

Basierend auf der Ausgabeprotokolldatei habe ich vorerst versucht, ein Diagramm manuell zu erstellen. image.png

Was ich danach machen möchte

・ Benachrichtigen Sie den LINE Bot, wenn die Konzentration ein bestimmtes Niveau überschreitet ・ Sprachalarm über Smart Speaker

Qiitas Senior, der hilfreich war

@revsystem https://qiita.com/revsystem/items/76ab1e21d386c5977892 @tororu https://qiita.com/tororu/items/20e8625d3fb24f3e06da @UedaTakeyuki https://qiita.com/UedaTakeyuki/items/c5226960a7328155635f

Recommended Posts

Belüftung ist wichtig. Was ich getan habe, um die CO2-Konzentration im Raum aufzuzeichnen
Was ich getan habe, um die Luftfeuchtigkeit und Temperatur des Archivs zu verfolgen
[Bei Coder] Was ich getan habe, um den grünen Rang in Python zu erreichen
So verfolgen Sie die Arbeit mit Powershell
Was ich getan habe, um eine SSH-Verbindung zur VPS Ubuntu-Umgebung herzustellen
Was tun, wenn der Fortschrittsbalken in tqdm von Python nicht angezeigt wird?
Was ich getan habe, als ich wütend war, es mit der Option enable-shared einzufügen
Ich möchte die LED-Beleuchtung von ErgoDox EZ zum Leuchten bringen, aber sagen Sie mir, was die LED überhaupt ist
Was ich getan habe, um die String-Suchaufgabe zu beschleunigen
Was ich getan habe, um die Python2 EOL mit Zuversicht zu begrüßen
Ich habe versucht, die Zeit und die Zeit der C-Sprache zu veranschaulichen
Bericht von der Website. Was ich für notwendig halte, um AI / IoT in der Fertigungsindustrie einzusetzen
Geben und meinen Sie die Einschränkungsoption in scipy.optimize.minimize
[Einführung in Python] Ich habe die Namenskonventionen von C # und Python verglichen.
Ich habe den Code geschrieben, um den Brainf * ck-Code in Python zu schreiben
Ich möchte die Bevölkerung jedes Landes der Welt kennenlernen.
Was tun, wenn der Werttyp in Python nicht eindeutig ist?
H29.2.27 ~ 3.5 Zusammenfassung meiner Arbeit
[Python] Was tun, wenn beim Importieren aus dem zu sys.path hinzugefügten Verzeichnis gegen PEP8 verstoßen wird?
[Linux] Was ist die Methode zum Lösen von Paketabhängigkeitsfehlern von yum und rpm am tatsächlichen Arbeitsplatz?
Was tun, wenn das über Scrapy heruntergeladene Ergebnis auf Englisch ist?
[C-Sprache] Ich möchte Zufallszahlen im angegebenen Bereich generieren
Ich möchte das Ergebnis von "Zeichenfolge" .split () in Python stapelweise konvertieren
Ich möchte die abstrakte Klasse (ABCmeta) von Python im Detail erklären
Ich möchte eine Liste in der Reihenfolge anderer Listen sortieren
Was für ein Buch ist der meistverkaufte "Python Crash Course" der Welt?
Ich möchte einen beliebigen Befehl im Befehlsverlauf von Shell belassen
Was ist eine C-Sprachbibliothek? Welche Informationen sind für die Öffentlichkeit zugänglich?
Was tun, wenn in der Anaconda-Umgebung die Warnung "Die Umgebung ist konsistent ..." angezeigt wird
Ich habe ein Programm erstellt, um die Größe einer Datei mit Python zu überprüfen
Ich habe versucht, den Höhenwert von DTM in einem Diagramm anzuzeigen
[Einführung in Python] Wie wird mit der continue-Anweisung wiederholt?
Ich habe ein Skript erstellt, um zu überprüfen, ob an der angegebenen Position der JSON-Datei in Python Englisch eingegeben wird.
Implementieren Sie einen Teil des Prozesses in C ++
Was ist die Ursache für den folgenden Fehler?
Was ist "Mahjong" in der Python-Bibliothek? ??
Schriftliche Auswahlsortierung in C.
Was ich getan habe, um Python-Speicher zu speichern
Ich möchte den Pfad des Verzeichnisses abrufen, in dem die laufende Datei gespeichert ist.
Ich möchte den Transferstatus der 2020 J League visualisieren. Was soll ich tun?
Ich möchte Python in der Umgebung von pyenv + pipenv unter Windows 10 verwenden
Ich war in Schwierigkeiten, weil sich das Verhalten des Docker-Containers nicht geändert hat
Was ich getan habe, als ich mit Lambda Python im Zeitlimit steckte
Ich habe einen Appdo-Befehl erstellt, um Befehle im Kontext der App auszuführen
AtCoder AGC 041 C - Ich war süchtig nach der vollständigen Suche nach Domino-Qualität
Ich möchte einen Lebenszyklus in der Aufgabendefinition von ECS festlegen
Ich möchte eine Liste der WebDAV-Dateien im Modul Anfragen anzeigen
Ich möchte die Ergebnisse von% time, %% time usw. in einem Objekt (Variable) speichern.
Hackasons Erfahrung, dass es am wichtigsten ist, die Gefühle des Veranstalters zu verstehen
Was tun, wenn (Basis) am Anfang des Mac-Terminals angezeigt wird?
linux / c> link> Ruft das Ausführungsergebnis des Shell-Befehls im C-Programm ab.> Mir wurde beigebracht, wie man popen () verwendet.
Verwendung der C-Bibliothek in Python
Was ist im Docker Python-Image pfeifend?
[Minecraft] Was sind die wichtigsten Überlebensgegenstände?
Ich habe versucht, die Trapezform des Bildes zu korrigieren
Was ich beim Update von Python 2.6 auf 2.7 gemacht habe
Ich möchte das Erscheinungsbild von zabbix anpassen
Ich möchte den Fortschritt in Python anzeigen!