Hallo ,
mein Projekt soll eine Luftfilteranlage für mein Schlafzimmer werden, da ich durch die Minimierung der Pollen und der Steuerung der Temperatur und Luftfeuchtigkeit einen Besseren Schlaf und einen viel besseren Start in den Tag habe.
Setup:
Breadboard
5v 8x Relais??
433 MHZ Sender
BME280 Bosh
USB 8GB
SD 8GB
WLAN Stick
Netzteil 5V 2,5A Raspberry Pi
FRITZ.BOX NAS Festplatte
Plan:
Sensordaten Einlesen und in Datenbank auf USB schreiben
- 1x im Txt File alle 1 sec und
- 1x in der Datenbank alle 1 min
- Backup der Datenbank und des Txt File auf das NAS
Relais anhand Python Script durch die Daten vom Txt File steuern.
- Temperatur Beibehalten + Steuern
- Luftfeuchtigkeit steuern mit 433 MHZ Sensor an Funksteckdose
- Nachrichten Verschicken bei Temperaturüberschreitung (Damit ich
beispielsweiße weiß ob ich das Fenster schließen soll oder die Heizung aufdrehen
soll)
- Daten aus der Datenbank und aus dem Txt File (= 4 Graphen (Tag,
Woche, Monat)
Aktueller Stand:
Mariadb/Mysql Datenbank auf USB
Txt File auf USB
Python Script schreibt Daten von BME280 in Datenbank 1 x alle 1 min
Python Script schreibt Daten von BME280 in Txt File 1 x alle 1 min
Ziel:
Python Script schreiben das 1. Daten von BME280 in Datenbank schreibt alle 1 min (erledigt)
2. Daten von BME280 in Txt File Schreiben alle 1 sec
3. Daten aus Datenbank und von Txt File Visualisieren + Steuern (Button für 80V falls ichs leise will)
4. 433 MHZ Steckdose schalten kann
5. Relais nach Plan schalten kann
Plan:
Ein paar Worte dazu. Ich kenne mich leider in Python noch nicht aus, weswegen mir 2 Freunde helfen werden den Code zu schreiben. Ich poste hier nur alles mit der Hoffnung jemanden zu finden der mir bei der Visualisierung und dem Steuerbutton hilft.
(es sei denn er oder andere haben gerade lust mir bei dem Pythonscript zu helfen. Ich habe schon ein paar fragen Stellen können und das was ich will lässt sich nur mit so etwas wie Verbreiterten Übergängen schreiben , also dass ich kein dauerhaftes Relais klackern habe wenn der Wert im Txt File auf der Kippe (z.b. 26,9°C-27°C) steht.)
Der gesamte Plan ist eine Steuerung aus Relais Stufentrafo und Lüfter zusätzlich Luftbefeuchter mit 433MHZ Steckdose und das Python Script das alles regelt.
So habe ich meine Datenbank aufgesetzt:
sudo apt-get update
sudo apt-get install build-essential python-pip python-dev python-smbus git
git clone https://github.com/adafruit/Adafruit_Python_GPIO.git
cd Adafruit_Python_GPIO
sudo python setup.py install
git clone https://github.com/adafruit/Adafruit_Python_BME280.git
Alles anzeigen
sudo mysql -u root
CREATE DATABASE RaspberryPi;
USE RaspberryPi;
CREATE TABLE BME280_Data (date_time VARCHAR(50), temperature FLOAT, humidity FLOAT);
DESCRIBE BME280_Data;
CREATE USER 'RaspiUser'@'localhost' IDENTIFIED BY '3518';
GRANT ALL PRIVILEGES ON *.* TO 'RaspiUser'@'localhost';
Alles anzeigen
sudo apt-get install python-mysqldb
python Adafruit_BME280_Example.py
sudo nano /media/usb0/BME280CSV
python BME280_Custom.py
mysql Datenbank aufrufen
SELECT * FROM BME280_Data;
Mein script sieht im Moment so aus:
from Adafruit_BME280 import *
import time
import datetime
import csv
import MySQLdb
db = MySQLdb.connect(host="localhost",user="RaspiUser", passwd="3518",db="RaspberryPi") #connects to MySQL/MariaDB
cur = db.cursor() #creates cursor to pass on demands to MySQL/MariaDB
sensor = BME280(t_mode=BME280_OSAMPLE_8, h_mode=BME280_OSAMPLE_8)
with open(r'/media/usb0/BME280CSV','w') as f: #w means write to file
writer = csv.writer(f)
writer.writerow(['Date Time (YYYY-MM-DD HH:MM:SS','Temperature (deg C)','Humidity (%)']) #CSV file headers
while True: #collects data indefinitely
degrees = sensor.read_temperature()
humidity = sensor.read_humidity()
timenow = datetime.datetime.utcnow()
#executes the SQL command in MySQL/MariaDB to insert data.
cur.execute('''INSERT INTO BME280_Data(date_time, temperature, humidity) VALUES(%s,%s,%s);''',(timenow,degrees,humidity))
db.commit() #commits the data entered above to the table
# print 'Time = ' + str(timenow)
# print 'Temp = {0:0.3f} deg C'.format(degrees)
# print 'Humidity = {0:0.2f} %'.format(humidity)
with open(r'/media/usb0/BME280CSV', 'a') as f: #a means append to file
writer = csv.writer(f)
writer.writerow([timenow,degrees,humidity])
time.sleep(60) #waits for 60 seconds to collect data again
Alles anzeigen
Falls ihr fragen habt, einfach in die Kommentare oder per PN.
Ich freue mich schon auf eure Antworten.
Gerne auch Webseiten oder Artikel die Teile behandeln.
Gruß