Giter Site home page Giter Site logo

tronde / raspi-sht21 Goto Github PK

View Code? Open in Web Editor NEW
10.0 10.0 2.0 692 KB

Überwachung von Temperatur und Luftfeuchtigkeit mit dem Raspberry Pi und dem SHT-21 Sensor

License: Other

Python 70.00% Shell 9.96% PHP 10.99% CSS 1.76% HTML 3.14% JavaScript 4.15%

raspi-sht21's People

Contributors

tronde avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

Forkers

spookb jsebastin

raspi-sht21's Issues

Sensorseite sht21.php erstellen

Es ist eine Datei sht21.php zu erstellen. Diese Datei generiert eine HTML-Seite, welche die aktuell gemessene Temperatur und Luftfeuchtigkeit des SHT21 Sensors sowie ein dazu passendes RRDtool-Diagramm anzeigt.

Auf dem Dashboard ist ein Link auf diese Seite zu setzen.

Erweiterung für SHT31 möglich?

Leider gibt es den SHT21 nicht mehr zu kaufen, ich habe daher den SHT31. Leider schaffe ich es nicht das Skript anzupassen. Gibt es eine Möglichkeit dieses super Skript zu verändern? An welcher Stelle müsste das geschehen?
Vielen Dank!

Belastbare Mailserverkonfiguration erstellen

Der RASPI-SHT21 soll bei Grenzwertüberschreitung Warnungen und Alarmierungen per E-Mail versenden.

Es ist eine robuste Postfix-Konfiguration zu implementieren.

Benötigte Pakete:

  • postfix
  • mailutils

Hinweis zur Postfixkonfiguration auf www.my-it-brain.de beachten.

Wie damit umgehen, wenn nur Temperaturalarm gewünscht ist.

Wenn nur eine Alarmierung für die Temperatur gewünscht ist, gibt es zwei Möglichkeiten die Luftfeuchtigkeitswarnung auszuschalten.

  1. Extremwerte in einer Konfigurationsdatei eintragen, so dass keine Warnung ausgelöst wird. Vorteile: Individuelle Konfiguration pro Sensor möglich. sht21.sh bleibt deploybar.
  2. Funktion humidityalarm() auskommentieren. Vorteil: Übewachung kann einfach aktiviert und deaktiviert werden. Nachteil: Einstellung wird bei jedem Deployment des Scripts sht21.sh überschrieben.

Welche Alternative soll umgesetzt werden?

Integration eines Wassersensors

Funktionswunsch

Es wird die Integration eines Wassersensors gewünscht, um Überschwemmungen, defekte Wasserzuleitungen usw. erkennen zu können.

Vorgehen

  1. Passenden Rauchmelder eruieren, der über den Pi gesteuert werden kann.
  2. Evaluierung einer Lösung mit Prüfung, ob Komponetnen zu geringen Kosten beschafft werden können.
  3. Prototypenschaltung erstellen und nötigen Programmcode schreiben.

Risiken

  1. Kein passender Sensor verfügbar / fehlendes Wissen, um Sensor anzubinden
  2. Sensor zu teuer
  3. Sensor nicht wiederverwendbar; dadurch wird ein Testszenario erschwert

Zu Testen

Es ist zu evaluieren, ob evlt. schon der SHT21 zu diesen Zwecken taugt. In jedem Fall sollte aber nach einem besser geeigneten Sensor geschaut werden. Da eine integrierter Temperatursensor für diesen Einsatzzweck nicht benötigt wird.

Integration eines Rauchmelders

Funktionswunsch

Integration eines Rauchmelders in die Lösung. Bei Auslösung des Sensors, soll eine E-Mail an einen definierten Empfängerkreis versendet werden.

Vorgehen

  1. Passenden Rauchmelder eruieren, der über den Pi gesteuert werden kann.
  2. Evaluierung einer Lösung mit Prüfung, ob Komponetnen zu geringen Kosten beschafft werden können.
  3. Prototypenschaltung erstellen und nötigen Programmcode schreiben.

Risiken

  1. Kein passender Sensor verfügbar / fehlendes Wissen, um Sensor anzubinden
  2. Sensor zu teuer
  3. Sensor nicht wiederverwendbar; dadurch wird ein Testszenario erschwert

Validierung der Eingabewerte

Vor der Verarbeitung sind die per POST-Request übermittelten Eingabewerte zu validieren. Es dürfen nur gültige Werte durch die Datei import.php verarbeitet werden.

Udpateskript erstellen

Es ist ein Updateskript zu erstellen, dass eine vorhandene Raspi-SHT21 Installation aktualisieren kann und die aktuelle Version von Github deployed.

E-Mailversand an mehrere Empfänger

Funktionswunsch

Es soll möglich sein die Alarm-E-Mails an mehrere Emfänger versenden zu können. Dazu sollen Empfangsadressen für die Felder AN, CC und BCC konfiguriert werden können. Pro Feld sollen mehrere Empfänger eingetragen werden können.

Failed to open I2C-Port

Fehlerbeschreibung

Nach der Installation kann das Programm offenbar nicht auf den I2C-Bus zugreifen. Es können keine Daten vom Sensor gelesen werden.

Vermutlich wird das benötigte Kerlenmodul nicht geladen.

Workaround

Der I2C-Bus kann über das Tool raspi-config aktiviert werden. Es ist dann ein Neustart des Pi erforderlich.

Lösungsweg

Das Installationsskript install.sh ist zu überarbeiten. Es muss sicherstellen, dass das Kernelmodul für den I2C-Bus geladen wird.

Entwurf eines Dashboards

Raspi-SHT21 Dashboard

Für das Release 2.x des Projekts ist ein Dashboard zu entwerfen.

Anforderungen

  1. Übersichtliche Darstellung der gemessenen Daten pro Sensor auf einem Dashboard
  2. Darstellung passt sich automatisch der Fenstergröße des Clients an
  3. Über das Dashboard gelangt man zu Detailseiten der einzelnen Sensoren

Konfiguration der Grenzwerte in Config-File auslagern

Bisher werden die Grenzwerte für Temperatur und Luftfeuchtigkeit im Shell-Script sht21.sh definiert. Dadurch werden sie bei jedem neuen Deployment überschrieben.

Um die Software deploymentsicher zu gestalten, sind diese Parameter in eine Konfigurationsdatei auszulagern.

Bash Fehler in nohup.out

Die Überwachung funktioniert und mir werden im Browser auch die Werte angezeigt.
Aber in der nohup.out Datei erscheint folgende Meldung bei jedem Intervall:

(standard_in) 1: syntax error
./sht21.sh: Zeile 19: [: -eq: Einstelliger (unärer) Operator erwartet.
./sht21.sh: Zeile 30: [: 51: Einstelliger (unärer) Operator erwartet.
./sht21.sh: Zeile 35: [: 51: Einstelliger (unärer) Operator erwartet.

Kann mit symbolischen Links gearbeitet werden?

Aktuell werden durch das Installationsskript folgende Dateien in die entsprechenden Verzeichnisse kopiert.

  • /var/www
  • /etc/init.d/raspi-sht21.sh
  • /etc/logrotate.d/raspi-sht21
  • /etc/modprobe.d/raspi-blacklist.conf

Es ist zu prüfen, an welchen Stellen stattdessen mit symbolischen Verknüpfungen gearbeitet werden kann.

Unterer Grenzwert für Temperatur

Der Benutzer "megazocker" hat mir auf der Plattform Ubuntuusers.de einen Verbesserungsvorschlag unterbreitet:

Es kann ja auch zu kalt werden im Kühlschrank also ein unterer Grenzwert für Temperatur wäre toll.

Diese Erweiterung sollte sich integrieren lassen und wird in Version 1.3.0 einfließen.

Nur korrekte Werte in die CSV-Datei schreiben

Der SHT-21 Sensor hat beim Abruf der Werte einen Fehler zurückgeliefert. Dieser wurde in die Datei sht21-data.csv geschrieben. Die Folge war, dass auf der Webseite kein Diagramm mehr angezeigt wurde.

Im Shellscript ist eine Überprüfung zu implementieren, die Fehler abfängt und nur gültige Werte in die sht21-data.csv schreibt.

E-Mail Versand von Logdaten implementieren

Versand der Logdaten kann z.B. in das logrotate Script (raspi-sht21) integriert werden.

Der Versand der Logdaten sollte nach Wunsch des Auftraggebers konfiguriert werden.

Anbindung eines SMS-Moduls

Es ist zu eruieren, ob sich ein SMS-Modul an den Pi anbinden lässt.

Vorgehen

  1. Zum Pi passendes SMS-Modul eruieren
  2. Integrationsmöglichkeiten in die bestehende Lösung prüfen

Anmerkungen

Ich habe bisher noch keine Idee, wie dies umgesetzt werden kann. Mal schauen, wie man die Sache am besten angeht.

sht21.sh durch sht21.php ersetzen.

Um nicht so viele verschiedene Technologien zu verwenden ist zu überlegen, dass Script sht21.sh in PHP neu zu schreiben.

Diese Überlegung hat keine Priorität. So kann ich aber ein wenig PHP üben, wenn ich dafür Zeit finde.

Ausgabe des Datums bei Minimal- und Maximalwert

Zusätzlich zu den reinen Minimal- und Maximalwerten soll auch der Timestamp mit ausgegeben werden, an dem diese Werte gemessen wurden.

Dies sollte mit in der Datei calc_avgminmax.py passieren.

kleiner Fehler im Installationskript

Wenn ich setup.py per sudo aufrufe bekomme ich folgende Fehlermeldung:

Place files in webroot
cp: der Aufruf von stat für 'www/*' ist nicht möglich: Datei oder Verzeichnis nicht gefunden

im richtigen Verzeichnis habe ich nun nachträglich

sudo cp -rpv www/* /var/www/html

ausgeführt und schon sind die Dateien wo sie hingehören.
Danke für das tolle Skript!

Cleanup-Script erstellen

Es ist ein Cleanup-Script zu erstellen, welches alle durch das Script install.sh vorgenommenen Änderungen und Konfigurationen rückgängig macht und installierte Pakete entfernt.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.