Inhaltsverzeichnis
Als eines Tages die analoge Zeitschaltuhr meines Aquariums kaputtging, ich keine Lust hatte sie zu reparieren oder eine neue zu kaufen, überlegte ich, ob man das nicht auch anders realisieren kann. Eventuell was was auch Spaß macht, mit einem Raspberry zum Beispiel. Erfahrungen mit Steckdosen über den Raspberry Pi steuern waren dank meines Magic Mirrors Projekt vorhanden, die Planung ging also los. Inspiriert durch andere Projekte im Internet stand der erste Plan recht schnell, ein Raspberry Pi 3 mit Touch-Display, 433MHZ Sendern und Temperatur-Sensoren sollten es zum Anfang sein.
Die Amazon Einkaufsliste war schnell erstellt und dank Prime war alles nach wenigen Tagen vorhanden. Der Plan: als Erstes das Touchscreen über die GPIO´s zum Laufen bekommen und danach Funksteckdosen mit den Sendern über mehrere Cronjobs steuern, damit die defekte Zeitschaltuhr ersetzt werden kann und ich es nicht mehr manuel regeln muss.
Welche Bauteile wurden verwendet?
- Raspberry Pi 3 Model B
- Raspberry Pi 7″ Touchscreen
- Raspberry Gehäuse
- Demiawaking Wasserdichte Temperatur Sensoren (5er Pack, war günstiger)
- Rydges 5V 3A Netzteil für den Raspberry
- Brennenstuhl Funksteckdosen
- 433MHZ Sender und Empfänger hatte ich noch
- Speicherkarte, Widerstand(4.7k Ω) und Jumper-Kabel waren noch vorhanden
Das Touchscreen war schnell angeschlossen und in das Gehäuse eingebaut. Die Funksender dank Anleitung im Internet schnell gelötet und passten noch super mit in das Gehäuse.
….demnächst mehr….
Temperaturfühler auslesen und die Werte in die Datenbank schreiben
Als nächstes musste ich dann auch die Temperatur von beiden Sensoren auslesen und in die Datenbank schreiben. OK, ich gebe zu, ich bin kein Python Gott und musste mich auch bei Google etwas belesen, aber hey genau das ist es doch was den Spaß ausmacht. Kein fertiges Produkt kaufen, etwas Basteln und Technologien/Sprachen kennenlernen. Mir gefällt die sehr einfache Syntax, was für „faule“ Entwickler ;-)
Hier mein Script, welches nun also die zwei Sensoren ausliest und die Ergebnisse in die lokale MySQL Datenbank schreibt.
#!/usr/bin/python
# coding=utf-8
# messprogramm.py
#----------------
import os, sys, time
import mysql
import mysql.connector
import urllib2
try:
connection = mysql.connector.connect(host = "localhost", user= "myuser", passwd = "mypassword", db = "mydb")
except:
print "Keine Verbindung zum Server"
exit(0)
# Aquarium Temperatur auslesen
def aktuelleTemperatur():
# 1-wire Slave Datei lesen 28-0416c4de55ff
file = open('/sys/bus/w1/devices/28-0416c4de55ff/w1_slave')
filecontent = file.read()
file.close()
# Temperaturwerte auslesen und konvertieren
stringvalue = filecontent.split("\n")[1].split(" ")[9]
temperature = float(stringvalue[2:]) / 1000
# Temperatur ausgeben
rueckgabewert = '%6.2f' % temperature
return(rueckgabewert)
# Raum Temperatur auslesen
def aktuelleTemperatur2():
# 1-wire Slave Datei lesen 28-0416c4d03fff
file = open('/sys/bus/w1/devices/28-0416c4d03fff/w1_slave')
filecontent = file.read()
file.close()
# Temperaturwerte auslesen und konvertieren
stringvaluee = filecontent.split("\n")[1].split(" ")[9]
temperaturee = float(stringvaluee[2:]) / 1000
# Temperatur ausgeben
rueckgabewert2 = '%6.2f' % temperaturee
return(rueckgabewert2)
schleifenZaehler = 0
schleifenAnzahl = 1
while schleifenZaehler < schleifenAnzahl:
messdaten = aktuelleTemperatur()
messdaten2 = aktuelleTemperatur2()
# Schleifenzähler erhöhen
schleifenZaehler = schleifenZaehler + 1
# Temperatur in lokale Datenbank schreiben
cursor = connection.cursor()
cursor.execute("INSERT INTO data (temp1, temp2) VALUES (%s, %s)",(messdaten, messdaten2,))
cursor.close
connection.commit()
Kommentare
Geschlossen wegen DSGVO, Artikel 13 Gedöns