Raspberry PI - punerea în aplicare a unui sistem de automatizare acasă la preţuri accesibile [Partea II]

În post anterior despre automatizare a casei accesibile pe baza Raspberry PI, Am învăţat să verificaţi conexiunile de reţea casa dintr-o listă de opt relee conectat la nostru Raspberry PI.

Screenshot de 2015-02-01 20:20:47Astăzi vom vedea cum de a controla un total de șaisprezece aparate electrice Vă mulţumim pentru circuit care am implementat mai sus, şi care să permită placi mi a dat Jordi de @electronics.cat si tu deja ar putea vedea în rezumat al Zi de libertate hardware; proiectat de aceeaşi, si suta la suta hardware-ul gratuit.

Pentru această practică, am de gând să utilizeze The PI pe trei ramuri, care este responsabil pentru adaptarea toate popicele GPIO de Raspberry PI de 3.3V pentru a 5V bi-direcțional şi ne va permite să lucrul cu al doilea rezervate pentru PiCam I2C bus; De asemenea, voi folosi placa relee optoacoplados am folosit în articolul precedent despre domotică.

Pi3Ramas

IP în trei zone proiectat de @JordiBinefa.

Toate acestea îl pune la dispoziţia noastră un total de şaisprezece prize domotice împărţite între două Zmeura, şi cu capacitate de extindere de până la 128 în caz de PI pe 3 sucursale, Deoarece ne permite să profitaţi de două autobuze I2C sacrificându-posibilitatea de a utiliza conectorul sa PiCam.

Pentru a conecta trei ramuri pi, Noi trebuie să suda şase corespund doua ace de autobuz I2C care nu sunt militari din fabrica, în acest moment Jordi Este activ de lucru pe o nouă versiune a sa placa pentru Raspberry PI B + si Raspberry PI modele 2.

OLYMPUS APARAT FOTO DIGITALNoi vă putem ajuta să sudeze pinii deţine două benzi de trei cu jumperi, dar Noi trebuie să asiguraţi-vă că acestea sunt mai aliniate noi posibil în orice moment înainte de a le de lipit.

Acum ne putem conecta PI pe trei ramuri pentru a Zmeura Am editat anterior două plăci de izolare, pentru ce Jordi Folosesc separatoare de plastic astfel.

Pi de trei ramuri şi indicele de plastic separator conector P3.

set05_08_v02_P2P3P4

Schema de conectorul P3 făcute de @JordiBinefa.

Realiza conexiunea cu Placă de adaptor releu, Noi trebuie să îndoiţi pinii releu de bord Vreau să se conecteze la pi trei ramuri, ajuta-ne cu nişte cleşti; în imaginea următoare puteţi vedea rezultatul final.

În funcţie de poziţia de pin VCC şi GND în nostru releu, Vom plasa acest lucru Jumper relee într-un modul, sau o altă poziţie pentru a le investi; întotdeauna ţinând cont de faptul că Placa releu trebuie să fie realizat de USB.

IN1 IN2 IN3 IN4 VCC GND

IN1 IN2 IN3 IN4 GND VCC

Acum ne va conecta noastre releu de opt ieşiri la placa de adaptor de relee, şi este în PI pe trei ramuri; trebuie remarcat faptul că Acest modul este compatibil cu patru şi opt ieşiri de relee.

Apoi putem vedea tabelul de conexiuni între Modul releu, The PI pe trei ramuri, şi Raspberry PI.

Modul de relee optoacoplados Conector P3 Raspberry PI model B
VCC + 5V + 5V
ÎN 7 Bit 0 GPIO 29
ÎN 6 Bit 1 GPIO 28
ÎN 5 Bit 2 GPIO 18
ÎN 4 Bit 3 GPIO 7
ÎN 3 Bit 4 GPIO 8
ÎN 2 Bit 5 GPIO 10
ÎN 1 Bit 6 GPIO 9
ÎN 0 Bit 7 GPIO 11
GND GND GND

Acum începe să se conecteze placa de optoacoplados relee direct la GPIO a altor Zmeura, în imaginea de mai jos puteţi vedea rezultatul final.

Conexiunile dintre GPIO al nostru Zmeura Acestea vor fi la fel ca în articolul precedent, Însă în acest caz am adaugat toate conexiunile de masă.

Modul de relee optoacoplados Raspberry PI model B
VCC + 5V
ÎN 1 GPIO 3
ÎN 2 GPIO 2
ÎN 3 GPIO 24
ÎN 4 GPIO 25
ÎN 5 GPIO 23
ÎN 6 GPIO 27
ÎN 7 GPIO 22
ÎN 8 GPIO 4
GND GND

Pentru a rula script-uri Python de pe web că vom vedea mai jos, În primul rând avem a da permisiuni utilizator www-date Este utilizatorul atribuit la serverul de web; pentru ce În primul rând vom instala serverul apache după cum am văzut în acest articol precedent şi scrie sudo terminalvisudo în terminal şi la sfârşitul fişierului Vom adăuga la www-date ca sudoer, fiind rezultatul final mai jos.

# See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d
pi ALL=(ALL) NOPASSWD: ALL
www-data ALL=(ALL) NOPASSWD: ALL

Pentru fiecare dintre pinii GPIO şaisprezece angajaţi în această practică, Avem nevoie pentru a crea un subdirector, şi două scripturi în Python; unul pentru a activa, şi celălalt pentru a activa releu, Iată un exemplu cu CODUL PIN 11.

#!usr/bin/env/ python
#enciende.py
import RPi.GPIO as GPIO
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(11, GPIO.IN)
#!usr/bin/env/ python
#apaga.py
import RPi.GPIO as GPIO
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(11, GPIO.OUT)

În fiecare dintre Raspberry PI Vom plasa ta Şaisprezece scripturi pentru a activa releu conectat sau la Ace angajaţi în fiecare, că puteţi consulta în tabelul anterior; The script-uri corespunzătoare Zmeura conectat direct la GPIO la releu placa va puneţi-le în directorul /Home/pi/relee/gpio.

Pentru a crea ierarhia de directoare si subdirectoare, şi copiaţi fişierele programate în Python Vom folosi aceste alte două script-uri în Bash; primul va fi care executa în PI conectat la PI pe trei ramuri.

#!/bin/bash
#Raspberry PI con la pi de 3 ramales.

#Creamos la jerarquía de directorios.
mkdir /home/pi/reles/gpio
mkdir /home/pi/reles/gpio/11
mkdir /home/pi/reles/gpio/9
mkdir /home/pi/reles/gpio/10
mkdir /home/pi/reles/gpio/8
mkdir /home/pi/reles/gpio/7
mkdir /home/pi/reles/gpio/18
mkdir /home/pi/reles/gpio/28
mkdir /home/pi/reles/gpio/29
ls /home/pi/reles/gpio

#Y copiamos los scripts
cp enciende.py apaga.py /home/pi/reles/gpio/11
cp enciende.py apaga.py /home/pi/reles/gpio/9
cp enciende.py apaga.py /home/pi/reles/gpio/10
cp enciende.py apaga.py /home/pi/reles/gpio/8
cp enciende.py apaga.py /home/pi/reles/gpio/7
cp enciende.py apaga.py /home/pi/reles/gpio/18
cp enciende.py apaga.py /home/pi/reles/gpio/28
cp enciende.py apaga.py /home/pi/reles/gpio/29
ls /home/pi/reles/gpio/*

Altele Şaisprezece scripturi corespunzătoare pentru controlul Zmeura conectat la PI pe trei ramuri Ne va ţine-le în directorul /var/www/releu/gpio /.

#!/bin/bash
#Raspberry pi con relé compatible con GPIO.

#Creamos la jerarquía de directorios.
mkdir /var/www/rele/gpio
mkdir /var/www/rele/gpio/4
mkdir /var/www/rele/gpio/22
mkdir /var/www/rele/gpio/27
mkdir /var/www/rele/gpio/23
mkdir /var/www/rele/gpio/25
mkdir /var/www/rele/gpio/24
mkdir /var/www/rele/gpio/2
mkdir /var/www/rele/gpio/3
ls /var/www/rele/gpio

#Y copiamos los scripts.
cp enciende.py apaga.py /var/www/rele/gpio/4
cp enciende.py apaga.py /var/www/rele/gpio/22
cp enciende.py apaga.py /var/www/rele/gpio/27
cp enciende.py apaga.py /var/www/rele/gpio/23
cp enciende.py apaga.py /var/www/rele/gpio/25
cp enciende.py apaga.py /var/www/rele/gpio/24
cp enciende.py apaga.py /var/www/rele/gpio/2
cp enciende.py apaga.py /var/www/rele/gpio/3
ls /var/www/rele/gpio/*

În acest moment trebuie să creăm un pereche de chei astfel încât Raspberry PI Acesta este pagina pentru a rula script-uri de conectat la PI pe trei ramuri la distanţă, ca utilizator, care va face acest lucru este www-date trebuie să atribuiţi o parolă în scopul de a conecta şi de a crea cheie pereche în numele dumneavoastră.

#Asignamos un password al usuario www-data
usuario@maquina:~$ passwd www-data

Introduzca la nueva contraseña de UNIX: 
Vuelva a escribir la nueva contraseña de UNIX: 
passwd: contraseña actualizada correctamente

#Creamos el par de claves RSA de 4096 bits
www-data@maquina:~$ ssh-keygen -b 4096 -t rsa

Generating public/private rsa key pair.
Enter file in which to save the key (/var/www/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /var/www/.ssh/id_rsa.
Your public key has been saved in /var/www/.ssh/id_rsa.pub.
The key fingerprint is:
5a:dc:bd:af:0d:ae:9d:9f:bb:c2:d4:5b:dd:67:8d:18 tmo@tmo-K55A
The key's randomart image is:
+--[ RSA 4096]----+
|                 |
|                 |
|                 |
|       . . .E    |
|        S . .+ .+|
|       o    o.o B|
|      .    oo  +.|
|           oo=.. |
|          ..=+Bo |
+-----------------+

#Copiamos la clave pública a la otra raspberry
www-data@maquina:~$ ssh-copy-id pi@192.168.*.***                 
Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'pi@192.168.*.***'"
and check to make sure that only the key(s) you wanted were added.

Odată creat pereche de chei publice si private, Vom verifica că putem acces prin SSH fara a mai introduce parola; pentru operate la acelaşi web de diferite relee de zmeura în aceeaşi reţea locală, în acest caz I le-au conectat datorită mic router gratuit WRTNode.

WRTNode_ETHApoi vom crea pagina noastră de acasă, care va conţine butoane tip de intrare va trebui să apăsaţi pentru a executa script-uri în Python din interfata web utilizând metoda post; pentru acest exemplu am va arăta web cu doar patru începe astfel încât articolul nu este prea lung.

<html>
 <head>
                 <!--/var/www/rele/index.php-->
 </head>
 <body>

 <!--GPIO11--> 
 <form action="" method="post">
 Enchufe 0 [GPIO 11 - P3 Bit 7 - IN1]&nbsp;<input type="submit" name="encender11" value="Encender">
 <input type="submit" name="apagar11" value="Apagar">
 </form>
 &nbsp;&nbsp;

 <!--GPIO04--> 
 <form action="" method="post">
 Electrodomestico 0 [GPIO 04 - P4 Bit 7 - IN1]&nbsp;<input type="submit" name="encender4" value="Encender">
 <input type="submit" name="apagar4" value="Apagar">
 </form>
 <br></br>

 <!--GPIO09--> 
 <form action="" method="post">
 Enchufe 1 [GPIO 09 - P3 Bit 6 - IN2]&nbsp;<input type="submit" name="encender9" value="Encender">
 <input type="submit" name="apagar9" value="Apagar">
 </form>
 &nbsp;&nbsp;

 <!--GPIO22--> 
 <form action="" method="post">
 Electrodomestico 1 [GPIO 22 - P4 Bit 6 - IN2]&nbsp;<input type="submit" name="encender22" value="Encender">
 <input type="submit" name="apagar22" value="Apagar">
 </form>
 </body>
</html>

<?php

// Funciones PHP del pin GPIO 11
 if ($_POST[encender11]) { 
 $a- exec("sudo python /var/www/rele/gpio/11/enciende.py");
 echo $a;
 }

 if ($_POST[apagar11]) { 
 $a- exec("sudo python /var/www/rele/gpio/11/apaga.py");
 echo $a;
 }
// Fin de las funciónes del pin GPIO 11

// Funciones PHP del pin GPIO 9
 if ($_POST[encender9]) { 
 $a- exec("sudo python /var/www/rele/gpio/9/enciende.py");
 echo $a;
 }

 if ($_POST[apagar9]) { 
 $a- exec("sudo python /var/www/rele/gpio/9/apaga.py");
 echo $a;
 }
// Fin de las funciónes del pin GPIO 9

// Funciones PHP del pin GPIO 04

  if ($_POST[encender4]) { 
   $a- exec("ssh root@192.168.*.*** python /home/pi/reles/gpio/4/enciende.py");
   echo $a;
  }

  if ($_POST[apagar4]) { 
   $a- exec("ssh root@192.168.*.*** python /home/pi/reles/gpio/4/apaga.py");
   echo $a;
  }

// Fin de las funciónes del pin GPIO 04

// Funciones PHP del pin GPIO 22

  if ($_POST[encender22]) { 
   $a- exec("ssh root@192.168.*.*** python /home/pi/reles/gpio/22/enciende.py");
   echo $a;
  }

  if ($_POST[apagar22]) { 
   $a- exec("ssh root@192.168.*.*** python /home/pi/reles/gpio/22/apaga.py");
   echo $a;
  }

// Fin de las funciónes del pin GPIO 22
?>

Dacă vreau să-l feed totul, de la o singură priză, trebuie să bypass tot negativ ieşiri 220V Releu.

Conexiunile la reţea Le vom face acelaşi mod ca şi ultima intrare, cuprinsă între sistemele de plug şi comutare întrerupător de circuit miniatură pentru a facilita urmărirea de practică.

Releu diferential plug

În următoarea tranşă pe accesibile domotică Vom învăţa pentru a profita de două autobuze I2C Vă mulţumim pentru PI pe trei ramuri, şi vom face o dovada de conceptul de verificare 128 LED-uri interschimbabile de aparate electrice.

Dacă vă place să urmaţi-mă pe Stare de nervozitate, Facebook, Google +, LinkedIn, sau partajaţi-l cu butoanele de sub această publicaţie, Dacă aveţi orice întrebări sau sugestii vă rugăm să nu ezitaţi să comenteze.

Să ne ajute să ajungă la mai mult de cititori Share on LinkedInShare on FacebookTweet about this on TwitterShare on Google+Email this to someone

4 gânduri pe"Raspberry PI - punerea în aplicare a unui sistem de automatizare acasă la preţuri accesibile [Partea II]

  1. Posturi foarte bune, Deci, încă!!
    O întrebare, I nevoie pentru a asambla, de asemenea, un alt sistem de acasă cu zmeura foarte simplu, dar nu este cum de exemplu să ştiu statutul de o lumină,blind-ul sau unele dispozitiv, În cazul în care a fost activat manual.
    Eu spun asta de exemplu, Dacă doriţi să porniţi o lumina de la mobil, dar nu este în acest stat se află în acel moment.

    Salu2

    • Bună ziua Igor, Vă mulţumim pentru comentariul dvs..

      Aceasta are loc pentru mine că ai putea folosi un fel de senzor care verifică tensiunea care se apropie de iluminat pe care doriţi pentru a controla, şi acesta este raportul la serverul web în timp real să cunoască la timp toate dacă este sau nu.

lasă un răspuns