Raspberry Pi – Thermometer und Web-Steuerung für zu Hause

In diesem Dokument sehen wir die Schritte, die Sie befolgen müssen, um Temperatursensoren auf einem Raspberry Pi zu installieren, die Erstellung einer Datenbank zum Speichern von Temperaturen und eines Skripts, das die Temperatur periodisch misst. Wir werden eine Website erstellen, die es uns ermöglicht, die aktuelle Temperatur sowie eine Grafik mit dem Temperaturverlauf zu erhalten. So locken Sie die Locke, Wir werden Schaltflächen auf der Website platzieren, die Aufgaben wie das Ein- und Ausschalten eines Thermostats ausführen!

Himbeer-DS18B20-Bujarra

Das erste, was wir tun müssen, ist, einen digitalen Temperatursensor wie den DS18B20 zu bekommen, den wir bei eBay für 1€ bekommen, sogar tauchfähig für das Aquarium, Wir werden auch einen Widerstand von 4,7k benötigen. Wir könnten sogar einen Feuchtigkeitssensor bekommen, um beide Diagramme zu erhalten =).

Was wir tun werden, ist, die Module in die Lage zu versetzen, die Thermometer zu verwenden, Wir werden MySQL installieren, um die Historie der Temperaturdiagramme in einer Datenbank zu speichern, Wir werden ein Skript in Python erstellen, um die Datenbank alle 2 Minuten und zum Abschluss werden wir Apache installieren und eine Website erstellen, auf der wir in Echtzeit die Temperaturen sowie eine Grafik mit der Historie sehen können. Und wenn wir auf das vorherige Dokument verlinken, in dem wir gesehen haben, wie man ein Relais mit dem Raspberry verwendet, Wir können auf derselben Website Schaltflächen erstellen, mit denen wir ein Licht ein- oder ausschalten können. Beginnen wir mit der Aktivierung der Module:

[Quellcode]Sudo ModProbe W1-GPIO
Sudo ModProbe W1-Therm[/Quellcode]

Wenn ich die Himbeere wegwerfe, sollte ich sie behalten:

[Quellcode]sudo vim /etc/modules

w1-gpio
W1-therm[/Quellcode]

Und wir versuchen den folgenden Befehl, bei dem wir die Temperatur jedes Sensors sehen:

[Quellcode]cat /sys/bus/w1/devices/ID_SENSOR/w1_slave[/Quellcode]

 

MySQL installieren, Anforderungen und erstellen Sie eine DB,

Nachdem die Thermometer bereits funktioniert haben, Der nächste Schritt wird sein, MySQL und alle Anforderungen zu installieren, um eine Datenbank zu erstellen und die Temperaturen von in meinem Fall zu speichern 2 Temperatursensoren (Umwelt und Aquarium). Bei der Installation des MySQL-Servers werden Sie aufgefordert, das Root-Passwort festzulegen:

[Quellcode]Sudo apt-get install python-pip
apt-get install python-mysqldb
sudo pip-Installationsanforderungen
Sudo Pip PyMySQL installieren
Sudo apt-get install MySQL-Server MySQL-Client PHP5-MySQL[/Quellcode]

Wir gehen in MySQL und erstellen eine Datenbank namens "Temperature", Eine Tabelle mit dem Namen 'temps’ mit 3 'Temp1'-Felder, "Staffel 2’ und "created_at":

[Quellcode]mysql -u root -p

MySQL (Englisch)> DATENBANK ERSTELLEN Temperaturen;
MySQL (Englisch)> VERWENDUNG Temperaturen;
ERSTELLEN VON TEMPS FÜR TABELLEN (
temp1 FLOAT, temp2 FLOAT, created_at ZEITSTEMPEL-STANDARD CURRENT_TIMESTAMP
);[/Quellcode]

Dämon, um Temperatur zu messen,
Wir erstellen weiterhin ein Skript in Python, das die Temperaturen ausliest und in der vorherigen Datenbank speichert, Um dies zu tun, können wir das folgende Skript verwenden, in dem wir mit unseren entsprechenden Sensor-IDs in 'sensorids' modifizieren werden., Wir können es "temperatura_demonio.py" nennen:

[Quellcode]Aufträge importieren
Hashlib importieren
Zeit des Imports

SensorIDs = ["28-00000523e071", "28-0000052391f2"]
Durchschnittliche Temperaturen = []
für Sensor in Reichweite(Len(Sensoride)):
Temperaturen = []
für polltime im Bereich(0,3):
text = ”;
while text.split("n")[0].Finden("JA") == -1:
tfile = offen("/sys/bus/w1/devices/"+ SensorIDs[Sensor] +"/w1_slave")
text = tfile.read()
tfile.close()
Zeit.Schlaf(1)

Zweite Zeile = Text.Split("n")[1]
temperaturedata = zweite Zeile.split(" ")[9]
Temperatur = Schwimmer(Temperaturdaten[2:])
Temperaturen.append(Temperatur / 1000)

avgtemperature.append(Summe(Temperaturen) / schweben(Len(Temperaturen)))

Wassermann = Durchschnittliche Temperaturen[0]
Umgebungstemperatur = durchschnittliche Temperaturen[1]

MySQLdb importieren
db = MySQLdb.connect("localhost","Wurzel","CONTRASENA_DE_ROOT","Temperaturen")
cursor = db.cursor()
cursor.execute("""INSERT INTO temps (Temp1,Temp2) WERTE (%s,%s) """,(Wassermann,Umwelt))
db.commit()[/Quellcode]

 

Wir führen das Skript ein paar Mal aus, um ein paar Datensätze in der DB mit

[Quellcode]Python-temperatura_demonio.py[/Quellcode]

 

Und wir überprüfen einfach, ob die Datenbank, die Daten mit:

[Quellcode]mysql -u root -p
Verwenden Sie Temperaturen;
Auswählen * von temps;[/Quellcode]

 

Wenn alles in Ordnung ist, Wir programmieren das Python-Skript so, dass es alle zwei Minuten ausgeführt wird, Wir fügen die folgende Zeile in unserem Cron mit 'crontab -e hinzu’

[Quellcode]*/2 * * * * /usr/bin/python /home/pi/temperatura_demonio.py[/Quellcode]

 

Installation des Webservers,
Einmal haben wir schon einen Dämon, der unsere Temperatur in einem DB erfasst., Der nächste Schritt wird sein, eine Website mit Apache zu erstellen und ein cooles Portal mit einigen JavaScript-Grafiken zu erstellen. Gestartet:

[Quellcode]sudo apt-get install apache2 php5 libapache2-mod-php5
wget http://iada.nl/en/system/files/tempmon_2_0.zip[/Quellcode]

Entpacken Sie die ZIP-Datei unter '/var/www/temp/’ und wir werden in 'index.php’ Alle korrekten Verbindungsdaten, Außerdem werden wir einige grundlegende Änderungen vornehmen, In diesem Beispiel einige deutsche Wörter, die.

[Quellcode]$mysqli = neues mysqli("GASTGEBER", "BENUTZER", "PASSWORT", "DATENBANK");
Gem laatste 24u –> Strumpf
Sensor Binnen –> Wassermann
Sensor Buiten –> Umwelt[/Quellcode]

Himbeere-Domotica-Bujarra

Und so würde das Web aussehen, wenn wir den Apache-Dienst neu starten! Zuhälter, Nein?, Wir werden auf die HTTP-Site zugreifen://IP_RASPBERRY/temp

 

Hinzufügen zusätzlicher Schaltflächen zur Website,

Wenn wir der Website Schaltflächen hinzufügen möchten, um eine Aktion auszuführen, In diesem Beispiel setzen wir einen Knopf zum Einschalten des Thermostats, der mit der anderen Seite des Relais verbunden ist (termostato_enciende.sh) & ein anderer, um es auszuschalten (termostato_apaga.sh); plus zwei weitere Tasten zum Einschalten & Schalten Sie das Flurlicht aus (pasillo_enciende.sh & pasillo_apaga.sh). Am Ende der Datei 'index.php', Vor dem Ende des Bodys haben wir:

[Quellcode]

<h1>Heizung</h1>

<form id="Relais" action="remote_relay.php" Methode="ABRUFEN">
<input type="Taste" id="Thermostat submitOn" style="Rand:1px massiv #000; font-size:40Pixel;" value="Ein" onClick="TermostatorelayEin()"/>
<input type="Taste" id="ThermostatsubmitAus" style="Rand:1px massiv #000; font-size:40Pixel;" value="Aus" onClick="ThermostatorelaisAus()"/>

<h1>Seitenschiff</h1>
<input type="Taste" id="PasillosubmitOn"" style="Rand:1px massiv #000; font-size:40Pixel;" value="Ein" onClick="PasillorelayEin()"/>
<input type="Taste" id="FlursubmitAus"" style="Rand:1px massiv #000; font-size:40Pixel;" value="Aus" onClick="FlurrelayAus()"/>
</Form>

<?PHP $state = _GET $["Gesamt"]; wenn ($state == "Thermostat"){ Exec("/home/pi/termostato_enciende.sh"); } wenn ($Zustand == "Termostatooff"){ Exec("/startseite/pi/termostato_apaga.sh"); } wenn ($state == "Pasilloon"){ Exec("/startseite/pi/pasillo_enciende.sh"); } wenn ($state == "Pasillooff"){ Exec("/home/pi/pasillo_apaga.sh"); } ?>[/Quellcode]

 

Und wir bearbeiten das Java-Skript, das 'script.js’ Hinzufügen der folgenden Änderungen:

[Quellcode]window.onload = Funktion(){
buttonOn = document.getElementById('ThermostatosubmitmitOn');
buttonOn.onClick = ThermostatorelaisEin;

buttonOff = document.getElementById('ThermostatosubmitOff');
buttonOff.onClick = ThermostatorelaisAus;

buttonOff = document.getElementById('HallwaysubmitOff');
buttonOff.onClick = PasillorelayAus;

buttonOff = document.getElementById('HallwaysubmitOff');
buttonOff.onClick = PasillorelayAus;
}

Funktion TermostatorelayOn(){
versteckt = document.getElementById("Gesamt");
hidden.value="Thermostat";
form = document.getElementById("Relais");
form.method="ABRUFEN";
form.action="index.php";
form.submit();
}
Funktion TermostatorelayOff(){
versteckt = document.getElementById("Gesamt");
hidden.value="Thermostatooff";
form = document.getElementById("Relais");
form.method="ABRUFEN";
form.action="index.php";
form.submit();
}
Funktion FlurrelaisEin(){
versteckt = document.getElementById("Gesamt");
hidden.value="Halle";
form = document.getElementById("Relais");
form.method="ABRUFEN";
form.action="index.php";
form.submit();
}
Funktion FlurrelaisAus(){
versteckt = document.getElementById("Gesamt");
hidden.value="Flurweg";
form = document.getElementById("Relais");
form.method="ABRUFEN";
form.action="index.php";
form.submit();
}[/Quellcode]

Himbeer-Domotica-01-Bujarra

Und das wäre das Ergebnis der Website von einem iPad, auf der wir einerseits die aktuelle Temperatur dieser beiden Sensoren sehen werden, Denken Sie daran, dass weitere hinzugefügt werden können, oder verwenden Sie einen Feuchtigkeitssensor, etc… Und am unteren Rand können wir so einfache Tasten wie diese anbringen, um ein Relais aus- oder einzuschalten und einen Stromkreis zu öffnen oder zu schließen! Oder was auch immer uns einfällt, los… von außen zu verbinden (Internet) auf dieser Website unseres Hauses, Wir können kostenlose Dienste wie DynDNS oder NO-IP nutzen, um jederzeit zu wissen, welche öffentliche IP wir haben, zusätzlich zur Konfiguration eines VPN für den sicheren Zugriff. So können wir von überall aus das Thermostat einschalten, bevor wir nach Hause kommen, oder andere Bedürfnisse, die wir haben, Wie ein Alarm mit einer Kamera…

Empfohlene Beiträge

Verfasser

nheobug@bujarra.com
Autor del blog Bujarra.com Cualquier necesidad que tengas, Zögern Sie nicht, mich zu kontaktieren, Ich werde versuchen, dir zu helfen, wann immer ich kann, Teilen ist Leben ;) . Genießen Sie Dokumente!!!