-
Die Hardware
Das Raspbian Betriebssystem auf die SD Karte schreiben
Der "Headless" Betrieb
Die Verbindung zum RasPi mit putty
Die Konfiguration des Raspi
Webserver lighttpd
Ein ftp Server auf dem RasPi
RasPi als NAS (network attached storage)
Ein Webradio basteln
E-Mails mit dem RasPi versenden (GMX)
Den RasPi per Telegram Messenger steuern und Nachrichten versenden
Temperatur- und Luftfeuchtigkeitssensor DHT22
pi-hole Werbeblocker für das gesamte lokale Netzwerk
Wireless Access Point einrichten
VPN Verbindung zu einer FritzBox
Z-Shell
Temperatur- und Luftfeuchtigkeitssensor DHT22
Update 30.05.2020: getestet in Raspberry Pi OS (Version: May 2020)
Anschluß des DHT22:
Pin 1: VDD, Betriebsspannung 3,3 Volt
Pin 2: DATA, Datenleitung (an GPIO)
Pin 3: bleibt frei
Pin 4: Masse
zwischen Pin 1 (3,3V) und GPIO kommt ein Widerstand 10 KOhm
Installation DHT Python Bibliothek von Adafruit:
sudo apt-get update
sudo apt-get install build-essential python-dev python-openssl git
git clone https://github.com/adafruit/Adafruit_Python_DHT.git
cd Adafruit_Python_DHT
sudo python setup.py install
ein erster Test:
python /home/pi/Adafruit_Python_DHT/examples/AdafruitDHT.py 22 23
22 => Auswahl Sensor: 22 steht für den DHT22; Möglichkeiten siehe die Scripts im Ordner “Adafruit_Python_DHT”
23 => gibt den GPIO an (nicht den Pin!!!)
Die Ausgabe sollte wie folgt sein:
Temp=23.5* Humidity=48.4%
Script für das Auslesen der CPU Temperatur, der Temperatur & Luftfeuchte vom DHT22 Sensor und die Ausgabe in eine csv Datei:
#!/bin/bash
# Erfassung CPU Temperatur Raspi, Raumtemperatur und Luftfeuchtigkeit
# Sensor an GPIO 23
datum=$(date +"%Y-%m-%d %H:%M")
#echo $datum
Raum_Temp=$(python /home/pi/scripts/AdafruitDHT_mod.py 22 23 | sed '2d' | tr '.' ',')
echo $Raum_Temp
sleep 3
Raum_Feuchte=$(python /home/pi/scripts/AdafruitDHT_mod.py 22 23 | sed '1d' | tr '.' ',')
echo $Raum_Feuchte
CPU_TEMP=$(vcgencmd measure_temp | cut -c 6-9 | tr '.' ',')
echo $CPU_TEMP
echo "$datum;$Raum_Temp;$Raum_Feuchte;$CPU_TEMP" >> /var/www/upload/temperatur.csv
Hier noch das angepasste Python Script zum Auslesen der Temperaturen.
Dazu habe ich die Datei AdafruitDHT.py aus dem Ordner examples angepasst. (aus der Ausgabe die Beschriftungen entfernt und einen Carriage Return eingebaut)
import sys
import Adafruit_DHT
sensor_args = { '11': Adafruit_DHT.DHT11,
'22': Adafruit_DHT.DHT22,
'2302': Adafruit_DHT.AM2302 }
if len(sys.argv) == 3 and sys.argv[1] in sensor_args:
sensor = sensor_args[sys.argv[1]]
pin = sys.argv[2]
else:
print('Usage: sudo ./Adafruit_DHT.py [11|22|2302] <GPIO pin number>')
print('Example: sudo ./Adafruit_DHT.py 2302 4 - Read from an AM2302 connected to GPIO pin #4')
sys.exit(1)
humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)
if humidity is not None and temperature is not None:
print('{0:0.1f}\n{1:0.1f}'.format(temperature, humidity))
else:
print('Failed to get reading. Try again!')
sys.exit(1)
Hier noch das zur Abfrage der Werte über den Telegram Messenger angepasste Script von der Seite http://cz6l0chpiqudvyx7.myfritz.net:10102/docs/telegram/
#!/usr/bin/env python
#coding: utf8
import time, datetime
import telepot
from telepot.loop import MessageLoop
import os
import RPi.GPIO as GPIO
import sys
import Adafruit_DHT
time.sleep(10)
def action(msg):
chat_id = msg['chat']['id']
command = msg['text']
print 'Received: %s' % command
if command == '/temp':
humidity, temperature = Adafruit_DHT.read_retry(22,23)
dhtval = ('Temp={0:0.1f}°C Luftfeuchte={1:0.1f}% rel.'.format(temperature, humidity))
telegram_bot.sendMessage (chat_id, str(dhtval))
elif command == '/restart':
os.system("sudo shutdown -r now")
sys.exit()
elif command == '/time':
now = datetime.datetime.now()
telegram_bot.sendMessage(chat_id, str(now.hour)+str(":")+str(now.minute))
elif command == '/hi':
telegram_bot.sendMessage (chat_id, str("Hihoy, Schweinebacke :-)"))
elif command == '/logo':
telegram_bot.sendPhoto (chat_id, photo = "https://jekyllrb.com/img/logo-2x.png")
elif command == '/file':
telegram_bot.sendDocument(chat_id, document=open('/home/pi/telegram.py'))
elif command == '/audio':
telegram_bot.sendAudio(chat_id, audio=open('/home/pi/test.mp3'))
elif command == '/test':
GPIO.setmode(GPIO.BCM)
GPIO.setup(21, GPIO.OUT)
for i in range(5):
GPIO.output(21, GPIO.HIGH)
time.sleep(0.5)
GPIO.output(21, GPIO.LOW)
time.sleep(0.5)
GPIO.cleanup()
telegram_bot = telepot.Bot('123456789:AaFWearrrit9nnbArajrMrELsln7tthnnS4')
print (telegram_bot.getMe())
MessageLoop(telegram_bot, action).run_as_thread()
print 'Up and Running....'
# Keep the program running.
while 1:
time.sleep(10)
- Previous
- Next