Skip to content
This repository has been archived by the owner on Apr 19, 2022. It is now read-only.

Commit

Permalink
Merge pull request #31 from Tronde/v2.x.x-dev
Browse files Browse the repository at this point in the history
v2.0.0 Beta
  • Loading branch information
Tronde authored Feb 5, 2018
2 parents 54f6a94 + af2d4c4 commit cfe4a7a
Show file tree
Hide file tree
Showing 79 changed files with 882 additions and 24,290 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
*.DS_Store
.*.swp
*.out
__pycache__/

# IDE files to ignore (Netbeans, Eclipse)
nbproject/private/
Expand Down
683 changes: 0 additions & 683 deletions LICENSE

This file was deleted.

11 changes: 11 additions & 0 deletions LICENSE-Deutsch
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# Copyright (c) 2015 Martin Steppuhn, www.emsystech.de. Alle Rechte vorbehalten.
#
# Hiermit wird unentgeltlich jeder Person, die eine Kopie der Software und der zugehörigen Dokumentationen (die "Software") erhält, die Erlaubnis erteilt, sie uneingeschränkt zu benutzen, inklusive und ohne Ausnahme dem Recht, sie zu verwenden, kopieren, ändern, fusionieren, verlegen, verbreiten, unterlizenzieren und/oder zu verkaufen, und Personen, die diese Software erhalten, diese Rechte zu geben, unter den folgenden Bedingungen:
#
# Der obige Urheberrechtsvermerk und dieser Erlaubnisvermerk sind in allen Kopien oder Teilkopien der Software beizulegen.
#
# DIE SOFTWARE WIRD OHNE JEDE AUSDRÜCKLICHE ODER IMPLIZIERTE GARANTIE BEREITGESTELLT, EINSCHLIESSLICH DER GARANTIE ZUR BENUTZUNG FÜR DEN VORGESEHENEN ODER EINEM BESTIMMTEN ZWECK SOWIE JEGLICHER RECHTSVERLETZUNG, JEDOCH NICHT DARAUF BESCHRÄNKT. IN KEINEM FALL SIND DIE AUTOREN ODER COPYRIGHTINHABER FÜR JEGLICHEN SCHADEN ODER SONSTIGE ANSPRÜCHE HAFTBAR ZU MACHEN, OB INFOLGE DER ERFÜLLUNG EINES VERTRAGES, EINES DELIKTES ODER ANDERS IM ZUSAMMENHANG MIT DER SOFTWARE ODER SONSTIGER VERWENDUNG DER SOFTWARE ENTSTANDEN.
#
# Historie:
# 24.06.2015 Martin Steppuhn Initiale Version
# 04.02.2016 Jörg Kastning Erste Anpassungen für Raspi-SHT21 Release v2.x.x
777 changes: 0 additions & 777 deletions LICENSE-Deutsch.txt

This file was deleted.

15 changes: 15 additions & 0 deletions LICENSE-English
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Copyright (c) 2015 Martin Steppuhn, www.emsystech.de. All rights reserved.
#
# Redistribution and use in source and binary, must retain the above copyright notice, and the following disclaimer.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
# THE POSSIBILITY OF SUCH DAMAGE.
#
# History:
# 24.06.2015 Martin Steppuhn Initial version
# 04.02.2016 Joerg Kastning First adjustments for the Raspi-SHT21 Release 2.x.x
104 changes: 34 additions & 70 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,16 @@ Raspi-SHT21

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

## Informationen über dieses Repo und die verwendete Software ##
*If you need information on how to use this software in English, please feel free to ask. I will provide english documentation on demand.*

Beim Raspi-SHT21 handelt es sich um eine Sensorerweiterung für den Raspberry Pi. Die Sensorerweiterung und die dazugehörige Software stammt im Original von [www.emsystech.de](http://www.emsystech.de) und wird hier von mir weiterentwickelt. Die für die Visualisierung benötigte Javascript Libary stammt von [www.flotcharts.org](http://www.flotcharts.org)
## Informationen über dieses Repo und die verwendete Software ##

Dieses Repo fast alle Quellen zusammen, die notwenig sind, um die von emsystech [beschriebene Lösung](http://www.emsystech.de/raspi-sht21/ "Raspi-SHT21 Sensorerweiterung für Raspberry Pi UPDATE 2!") zu verwirklichen und weiterzuentwickeln. Der Master-Branch von [flot](https://github.com/flot/flot) wurde als Submodule in dieses Repository integriert, um bei der weiteren Entwicklung stets auf die neueste Version zurückgreifen zu können.
Beim Raspi-SHT21 handelt es sich um eine Sensorerweiterung für den Raspberry Pi. Die Sensorerweiterung und die dazugehörige Software stammt im Original von [www.emsystech.de](http://www.emsystech.de) und wird hier von mir weiterentwickelt.

## Ziele ##

Ich möchte eine Lösung schaffen, die zur Überwachung von Temperatur und Luftfeuchtigkeit in Serverräumen oder ähnlichen Umgebungen wie z.B. Kühlräumen, Terrarien, etc. verwendet werden kann. Bei Erreichen definierter Grenzwerte soll eine E-Mail verschickt werden.

Aktuell entwickle ich allein an diesem Projekt. Unterstützung ist jedoch herzlich willkommen.

Findet ihr einen Fehler, funktioniert etwas nicht wie erwartet, oder wünscht ihr euch eine neue Funktion, so freue ich mich, wenn ihr einen [Issue](https://github.com/Tronde/Raspi-SHT21/issues) eröffnet.

## Funktionen ##
Expand All @@ -31,7 +29,7 @@ Im folgenden findet ihr eine kleine Installationsanleitung für den Raspi-SHT21.

### Voraussetzungen ###

* Raspberry Pi, auf dem vorzugsweise Raspbian läuft
* Raspberry Pi, auf dem Raspbian Stretch läuft
* Das [SHT21 Breakout Board](http://www.emsystech.de/produkt/sht21-breakout-board/)

### Installation aus Archivdatei ###
Expand All @@ -57,81 +55,47 @@ cd Raspi-SHT21

### Erstkonfiguration ###

Zuerst werden nun die gewünschten Grenzwerte definiert. Die dazu benötigte Datei sht21.conf kann mit Hilfe der Datei sht21.muster erstellt werden, indem die Datei kopiert und die enthaltenen Parameter angepasst werden.
Zuerst werden nun die gewünschten Grenzwerte definiert und die benötigten Parameter zum Versand von E-Mail angegeben. Dies geschieht in der Datei `mail_report.py`:

```bash
pi@raspberrypi:~/Raspi-SHT21$ cat sht21.muster
# Variablen ###########################################################

LogInterval=600
maxtemp=38.0 # Grenzwert ab dem eine Temperaturwarnung verschickt wird.
mintemp=-14.0 # Unterer Grenzwert ab dem eine Temperaturwarnung verschickt wird.
minhumidity=28 # Mindestwert fuer die Luftfeuchtigkeit.
maxhumidity=50 # Maximalwert fuer die Luftfeuchtigkeit.
# Unten wird die Empfänger-E-Mail-Adresse für Warnungen und Alarmierungen definiert.
# Für mehrere Empfänger sind die Adressen einfach durch Leerzeichen getrennt anzuhängen. Bsp:
# email="[email protected] [email protected]"
email="[email protected]" # Zieladresse für die E-Mail-Benachrichtigung.
pi@raspberrypi:~/Raspi-SHT21$ cp sht21.muster sht21.conf
pi@raspberrypi:~/Raspi-SHT21$ vim sht21.conf
# Variables ##################################################################
maxtemp=38.0 # upper limit for temperature
mintemp=-14.0 # lower limit for temperature
maxhumidity=40 # upper limit for humidity
minhumidity=28 # lower limit for humidity
fromaddr="[email protected]"
toaddr="[email protected]" # address for email notification
webroot="/var/www/html/sht21.json"
##############################################################################
# Function to edit ###########################################################
def send_mail(string):
msg = MIMEText(string)
msg['Subject'] = string
msg['From'] = fromaddr
msg['To'] = toaddr

s = smtplib.SMTP('smtp.gmail.com', 587)
s.ehlo()
s.starttls()
s.ehlo()
s.login("username", "password") # Set parameter accordingly
s.sendmail(fromaddr, toaddr, msg.as_string())
s.close
##############################################################################
```
Anschließend wird die Software und die benötigten Pakete mit Hilfe des Installationsskriptes installiert:
```bash
sudo bash ./install.sh
sudo bash ./setup.sh
```
Wer bereits einen Webserver auf seinem Pi betreibt, muss das Skript vor der Installation entsprechend anpassen, um zu verhindern, dass evtl. schon vorhandene Dateien auf dem Pi überschrieben werden.

### Programmsteuerung ###
Das Setup-Skript prüft zuerst, ob es über die benötigten Benutzerrechte für die Installation verfügt. Anschließend werden die benötigten Pakete installiert:
Die Messung wird durch ein Start/Stop-Skript gesteuert:
```bash
pi@jk-raspberrypi ~ $ sudo service raspi-sht21.sh
Usage: /etc/init.d/raspi-sht21.sh {start|stop|status|restart}
pi@jk-raspberrypi ~ $
PACKAGE_LIST="lighttpd spawn-fcgi libdbi1 libfam0 php-cgi php-readline php-cli rrdtool librrd8 libterm-readkey-perl libterm-readline-perl-perl python3-rpi.gpio i2c-tools"
```
## Weitere Konfigurationsmöglichkeiten ##
Die für die Anzeige im Webbrowser benötigten Dateien werden direkt in das Webroot des LIGHTTPD unter `/var/www/html` kopiert. Der Pfad der Pfad kann über die Variable `WEBROOT` im Skript `setup.sh` angepasst werden.
### Logrotation ###

Durch das Installationsskript ''install.sh'' wird die Datei:
```bash
/etc/logrotate.d/raspi-sht21
```
erstellt. In der Standardeinstellung werden die Messwerte in der CSV-Datei wöchentlich rotiert. Dieses Verhalten kann in dieser Datei an die persönlichen vorlieben angepasst werden. Weitere Informationen zu logrotate findet man im Artikel [Logdateien](http://wiki.ubuntuusers.de/Logdateien?highlight=logrotate#Logrotate), im Ubuntuusers Wiki.

**/etc/logrotate.d/raspi-sht21:**
```bash
/home/pi/Raspi-SHT21/*csv {
weekly
missingok
notifempty
rotate 7
compress
delaycompress
# mail [email protected]
# mailfirst
sharedscripts
create 0644 pi pi
postrotate
invoke-rc.d rsyslog rotate > /dev/null
endscript
}
```

Man kann sich das jeweils letzte Log automatisch per E-Mail senden lassen. Dazu ist das Kommentarzeichen der beiden Zeilen
```bash
# mail [email protected]
# mailfirst
```
zu entfernen und eine Empfänger-E-Mail-Adresse anzugeben.

Eine weitere Möglichkeit sich die Logs per E-Mail zusenden zu lassen besteht in der Einrichgung eines Cronjobs. Dazu kann folgender Befehl in der crontab genutzt werden:
```bash
mailx -s "Betreff" -a /pfad/zur/logdatei.csv.1 [email protected]
```

Für den E-Mailversand bei Über- bzw. Unterschreitung der definierten Grenzwerte, muss auf dem Pi ein Postfix installiert sein. Eine Beispielkonfiguration findet man auf [My-IT-Brain](http://www.my-it-brain.de) im Artikel [Postfix mit Gmail als Smarthost](http://www.my-it-brain.de/wordpress/postfix-mit-gmail-als-smarthost/).
Wer bereits einen Webserver auf seinem Pi betreibt, muss das Skript vor der Installation entsprechend anpassen, um zu verhindern, dass evtl. schon vorhandene Dateien auf dem Pi überschrieben werden.
22 changes: 22 additions & 0 deletions VERSION.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
Raspi-SHT21 Release 2.x.x _english version below_
=========================

*Achtung: Dieser Branch ist in Entwicklung und bietet noch keine lauffähige Version der Software*

Für das Release v2.x soll das Projekt zuerst auf Python migriert werden und unter eine MIT-Lizenz gestellt werden.

Erweiterung des Raspi-SHT21 um weitere entfernte Sensoren. Als entfernte Sensoren kommen Mikrocontroller-Boards vom Typ esp8266 mit dem Sensor DHT22 zum Einsatz.

Die esp8266-Boards sollen in ein WLAN eingebunden werden, um die am DHT22 gemessenen Werte für Luftfeuchtigkeit und Temperatur per WLAN an den Raspi-SHT21 zu übermitteln. Der Raspi-SHT21 empfängt die Daten und speichert sie. Die gespeicherten Daten sollen auf einer Webseite zur Verfügung gestellt werden.


English version
===============

*Caution: This branch is under heavy development and does not provide a version of the software that is ready to run.*

Release v2.x migrates the project to a Python version, licensed unter an MIT-Licence.

The Raspi-SHT21 will be extended by remote sensors. The remote sensors are based on the Microcontroller _esp8266_ with an DHT22 attached to it.

It should be possible to connect the esp8266 boards to a wifi network to transmit the data measured by the DHT22 sensor to the Raspi-SHT21. The Raspi-SHT21 receives the data and stores it. The stored data should be published on a website.
30 changes: 13 additions & 17 deletions check_raspi-sht21.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,19 +10,13 @@
@author : Jörg Kastning <[email protected]>
@version: 17.07.2014
Die benötigten Messwerte werden aus einer CSV-Datei eingelesen, welche
mit '-d' bzw. '--dir' übergeben wird.
Aus der CSV-Datei wird die jeweils letzte Zeile ausgelesen und zerlegt,
um die Messwerte für die Temperatur und Luftfeuchtigkeit zu extrahieren.
Die benötigten Messwerte werden aus einer JSON-Datei eingelesen, welche
sich im WEBROOT des Raspi-SHT21 befindet.
"""

import sys, argparse, csv
import sys, argparse, json

liste = []
lastitem = -1 # Bestimmt das letzte Element einer Liste
tempitem = 2 # Bestimmt den Temperaturwert innerhalb der Liste
humditem = 3 # Bestimmt den Luftfeuchtigkeitswert innerhalb der Liste
WEBROOT="/var/www/html/sht21.json"
temperature = 0
humidity = 0

Expand All @@ -36,7 +30,7 @@ def debug():

parser = argparse.ArgumentParser(description=" Nagios Raspi-SHT21 Plugin. Dieses Plugin bestimmt die vom Raspi-SHT21 gemessene Temperatur und Luftfeuchtigkeit und vergleicht die gemessenen Werte mit den übergebenen Grenzwerten für Temperatur und Luftfeuchtigkeit.")

parser.add_argument("-d", "--dir", dest="directory", default="/home/pi/Raspi-SHT21/sht21-data.csv", help="Pfad zur CSV-Datei")
parser.add_argument("-d", "--dir", dest="directory", default="/var/www/html/sht21.json", help="Pfad zur JSON-Datei")
parser.add_argument("-t", "--min-temperature", dest="mintemperature", required=True, type=float, help="Untere Temperaturgrenze")
parser.add_argument("-T", "--max-temperature", dest="maxtemperature", required=True, type=float, help="Obere Temperaturgrenze")
parser.add_argument("-l", "--min-humidity", dest="minhumidity", required=True, type=int, help="Untere Grenze der Luftfeuchtigkeit")
Expand All @@ -51,12 +45,14 @@ def debug():
min_humidity = args.minhumidity
max_humidity = args.maxhumidity

with open(sourcefile, 'r') as csvfile:
reader = csv.reader(csvfile, delimiter='\t')
for row in reader:
liste.append(row)
temperature = float(liste[lastitem][tempitem])
humidity = int(liste[lastitem][humditem])
try:
with open(WEBROOT, 'r') as f:
sht21_data = json.load(f)
except:
print("Error: Could not open file sht21.json for reading")

temperature = sht21_data['temp']
humidity = sht21_data['humidity']


if args.verbose:
Expand Down
33 changes: 0 additions & 33 deletions cleanup.sh

This file was deleted.

8 changes: 8 additions & 0 deletions docs/Systemvoraussetzungen.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# Systemvoraussetzungen

## Benötigte Pakete

* lighttpd, spawn-fcgi, libdbi1, libfam0
* php-cgi, php-readline, php-cli
* rrdtool, librrd4, libterm-readkey-perl, libterm-readline-perl-perl
* python3-rpi.gpio, i2c-tools
1 change: 0 additions & 1 deletion flot
Submodule flot deleted from 958e5f
8 changes: 0 additions & 8 deletions function-cosm-push.sh

This file was deleted.

2 changes: 0 additions & 2 deletions function-ftp-upload.sh

This file was deleted.

Loading

0 comments on commit cfe4a7a

Please sign in to comment.