Raspberry Pi – Thermometer und Web-Steuerung des Hauses

In diesem Dokument werden wir die Schritte für die Installation von Temperatursensoren in einem Raspberry Pi sehen, Schaffung einer DB für die Temperaturen und ein Skript speichern, die uns die Temperatur nimmt periodisch. Wir erstellen eine Website, die es uns ermöglichen, die aktuelle Temperatur und eine Grafik mit historischen Temperatur zu bekommen. Vergolden die Lilie, die Website wird Tasten setzen, die Aufgaben wie Ein- / Aus-Thermostat durchführen!

Himbeer-DS18B20-bujarra

Die erste wird uns mit einem noch Submersibles machen Sie es auf eBay aus für 1 € digitale Temperatursensor DS18B20 Typ für Aquarium, Auch brauchen wir einen Widerstand 4,7k. Wir konnten uns auch bei auch ein Feuchtigkeitssensor beide Graphen zeigt =).

Was wir tun, ist es, die Module ermöglichen Thermometer zu verwenden,, MySQL installiert in einer BD historischen Graphen von Temperaturen zu speichern, Wir erstellen ein Python-Skript uns Informationen BD füllen jeden 2 Minuten zu beenden Apache installieren und erstellen eine Website, wo wir die Temperaturen als auch eine grafische Darstellung mit der Geschichte in Echtzeit sehen können. Und wenn wir Verbindung mit dem vorherigen Dokument, das wir sahen, wie ein Relais mit Himbeere verwenden, wir können die gleichen Web-Buttons erstellen, die uns an oder aus einem Licht einzuschalten erlauben. Starten Sie Module ermöglichen:

sudo modprobe w1-gpio
sudo modprobe w1-therm

Botee die Himbeere, wenn Sie es speichern:

sudo vim /etc/modules

w1-gpio
w1-therm

Und wir mit folgendem Befehl getestet, wo wir die Temperatur jeden Sensor sehen:

cat /sys/bus/w1/devices/ID_SENSOR/w1_slave

 

instalar MySQL, Anforderungen anzupassen und BD,

Nach Thermometer verlassen und läuft, Folgendes wird installieren MySQL und alle Anforderungen einer DB und Speichertemperaturen in meinem Fall zu schaffen 2 Temperatursensoren (Umwelt und Aquarium). MySQL Server installieren aufgefordert, das Passwort für ‚root‘ zu setzen:

sudo apt-get install python-pip
apt-get install python-mysqldb
sudo pip install requests
sudo pip install pymysql
sudo apt-get install mysql-server mysql-client php5-mysql

Wir geben MySQL und erstellen Sie eine BD genannte ‚Temperaturen‘, eine Tabelle ‚temps genannt’ mit 3 Fields 'temp1', ‚temp2’ y ‚created_at‘:

mysql -u root -p

mysql> CREATE DATABASE Temperaturas;
mysql> USE Temperaturas;
CREATE TABLE temps (
temp1 FLOAT, temp2 FLOAT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

Daemon Temperatur zu nehmen,
Wir werden weiterhin einen Python-Skript erstellen Temperaturen zu lesen und speichern in der vorherige BD, So können wir das folgende Skript utlizar, die unsere jeweiligen IDs der Sensoren sensorids 'ändern wird, wir können ‚temperatura_demonio.py‘ nennen:

import requests
import hashlib
import time

sensorids = ["28-00000523e071", "28-0000052391f2"]
avgtemperatures = []
for sensor in range(len(sensorids)):
temperatures = []
for polltime in range(0,3):
text = '';
while text.split("n")[0].find("YES") == -1:
tfile = open("/sys/bus/w1/devices/"+ sensorids[sensor] +"/w1_slave")
text = tfile.read()
tfile.close()
time.sleep(1)

secondline = text.split("n")[1]
temperaturedata = secondline.split(" ")[9]
temperature = float(temperaturedata[2:])
temperatures.append(temperature / 1000)

avgtemperatures.append(sum(temperatures) / float(len(temperatures)))

acuario = avgtemperatures[0]
ambiente = avgtemperatures[1]

import MySQLdb
db = MySQLdb.connect("localhost","root","CONTRASENA_DE_ROOT","Temperaturas")
cursor = db.cursor()
cursor.execute("""INSERT INTO temps (temp1,temp2) VALUES (%s,%s) """,(acuario,ambiente))
db.commit()

 

Führen Sie das Skript ein paar Mal ein paar Datensätze in der Datenbank erstellen mit

python temperatura_demonio.py

 

Und einfach überprüfen die Daten BD mit:

mysql -u root -p
use Temperaturas;
select * from temps;

 

Wenn alles korrekt ist, Python-Programm das Skript alle zwei Minuten laufen, Fügen Sie die folgende Zeile in unsere cron mit ‚crontab -en’

*/2 * * * * /usr/bin/python /home/pi/temperatura_demonio.py

 

Installieren des Web-Servers,
Sobald wir einen Dämon, dass sie die Temperatur in einem BD aufnimmst, Folgendes wird eine Website mit Apache setzen und eine coole Seite mit Grafiken von JavaScript setzen. wir begonnen:

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

Descomprimimos der ZIP-in „/ var / www / temp /’ und bearbeiten in index.php’ alle Daten korrekt Verbindung, und wir werden einige grundlegende Änderungen vornehmen, in diesem Beispiel ein paar Worte auf Deutsch, Brings.

$mysqli = new mysqli("HOST", "USER", "PASSWORD", "DATABASE");
Gem laatste 24u --> Media
Sensor Binnen --> Acuario
Sensor Buiten --> Ambiente

Himbeer-domotica-bujarra

Und dies würde das Erscheinungsbild der Bahn sein, wenn wir den Apache-Dienst neu starten! Zuhälter, Nein?, wird Zugriff auf die Website http://IP_RASPBERRY / temp

 

Hinzufügen von zusätzlichen Tasten auf der Website,

Wenn die Website möchten Sie eine Schaltfläche hinzufügen jede Aktion auszuführen, In diesem Beispiel werden wir eine Taste legen Sie den Thermostat drehen über das Relais angeschlossen (termostato_enciende.sh) & ein anderer, um sie auszuschalten (termostato_apaga.sh); auch zwei weitere Tasten drehen & schalten Sie das Licht aus Halle (pasillo_enciende.sh & pasillo_apaga.sh). Al final del fichero ‚index.php‘, vor dem Ende des Körpers add:


<h1>Calefaccón</h1>

<form id="relay" action="remote_relay.php" method="GET">
<input type="button" id="TermostatosubmitOn" style="border:1px solid #000; font-size:40px;" value="On" onClick="TermostatorelayOn()"/>
<input type="button" id="TermostatosubmitOff" style="border:1px solid #000; font-size:40px;" value="Off" onClick="TermostatorelayOff()"/>

<h1>Pasillo</h1>
<input type="button" id="PasillosubmitOn" style="border:1px solid #000; font-size:40px;" value="On" onClick="PasillorelayOn()"/>
<input type="button" id="PasillosubmitOff" style="border:1px solid #000; font-size:40px;" value="Off" onClick="PasillorelayOff()"/>
</form>

<?php $state = $_GET["total"]; if ($state == "Termostatoon"){ exec("/home/pi/termostato_enciende.sh"); } if ($state == "Termostatooff"){ exec("/home/pi/termostato_apaga.sh"); } if ($state == "Pasilloon"){ exec("/home/pi/pasillo_enciende.sh"); } if ($state == "Pasillooff"){ exec("/home/pi/pasillo_apaga.sh"); } ?>

 

Und bearbeiten Sie die Java-Script Laden ‚script.js’ Hinzufügen der folgenden Modifikationen:

window.onload = function(){
buttonOn = document.getElementById('TermostatosubmitOn');
buttonOn.onClick = TermostatorelayOn;

buttonOff = document.getElementById('TermostatosubmitOff');
buttonOff.onClick = TermostatorelayOff;

buttonOff = document.getElementById('PasillosubmitOff');
buttonOff.onClick = PasillorelayOff;

buttonOff = document.getElementById('PasillosubmitOff');
buttonOff.onClick = PasillorelayOff;
}

function TermostatorelayOn(){
hidden = document.getElementById("total");
hidden.value = "Termostatoon";
form = document.getElementById("relay");
form.method = "GET";
form.action = "index.php";
form.submit();
}
function TermostatorelayOff(){
hidden = document.getElementById("total");
hidden.value = "Termostatooff";
form = document.getElementById("relay");
form.method = "GET";
form.action = "index.php";
form.submit();
}
function PasillorelayOn(){
hidden = document.getElementById("total");
hidden.value = "Pasilloon";
form = document.getElementById("relay");
form.method = "GET";
form.action = "index.php";
form.submit();
}
function PasillorelayOff(){
hidden = document.getElementById("total");
hidden.value = "Pasillooff";
form = document.getElementById("relay");
form.method = "GET";
form.action = "index.php";
form.submit();
}

Himbeer-domotica-01-Bujar

Und das wäre das Ergebnis der Website von einem iPad, wo wir die aktuelle Temperatur der beiden Sensoren auf einer Seite zu sehen, denken Sie daran, dass Sie können hinzufügen mehr, oder einen Feuchtigkeitssensor verwenden, etc… Und am Ende können wir so einfach setzen, wie diese Tasten oder Ausschalten eines Relais schalten und öffnen oder eine elektrische Schaltung schließen! Oder was kommt in den Sinn, gehen… eine Verbindung von außerhalb (Internet) Diese Website unseres Haus, Wir können freie Dienste wie DynDNS oder NO-IP Öffentlichkeit verwenden, um alle IP-Moment zu wissen, haben wir auch eine VPN für sicheren Zugriff einrichten. So überall können wir den Thermostat einschalten, bevor die Ankunft zu Hause, oder jede andere Bedürfnisse haben wir, als Alarm mit einer Kamera,…