PI Gerd - implantació d'un sistema d'automatització de casa assequible [Segona part]

En el post anterior sobre Automatització de casa assequible basat en Lleida, Hem après a comprovar les connexions de xarxa de casa des del quadre de vuit relés connectats a nostres Raspberry PI.

Captura de pantalla 2015-02-01 20:20:47Avui veurem com controlar un total de setze electrodomèstics Gràcies al circuit que hem implementat sobre, i permetent juntes m'ha donat Jordi de @electronics.cat i ja podia veure en el resum de la Dia de la llibertat maquinari; dissenyat per la mateixa, i cent per cent maquinari lliure.

Per a aquesta pràctica, vaig a utilitzar la Tres branques de PI, que s'encarrega d'adaptar tots els pins GPIO de Raspberry PI de 3.3V a 5V bidireccionalment i ens permetrà treballant amb el segon reservat per a l'autobús PiCam I2C; També utilitzarà placa relleus optoacoplados utilitzava en l'article anterior sobre Domòtica.

Pi3Ramas

IP en tres rangs dissenyat per @JordiBinefa.

Tot això posa a la nostra disposició un total de setze sòcols domòtica dividit entre dos Gerd, i amb expandability de fins a 128 en el cas de la De PI 3 branques, Ja que permet aprofitar els dos autobusos I2C sacrificar la possibilitat d'utilitzar el connector a la PiCam.

Per connectar-se a les tres branques del pi, Ens cal soldar els sis corresponent a la segona passadors d'autobús I2C que no són soldats de fàbrica, en el moment Jordi Està treballant activament en una nova versió del seu plat de gerds PI B + i models a Lleida 2.

CÀMERA DIGITAL OLYMPUSEns pot ajudar a soldar els pins aguantant les dues tires de tres amb jerseis, però Hem d'assegurar que estan més alineats nosaltres com sigui possible en tot moment abans de soldar-los.

Ara podem connectar la Tres branques de PI a la Gerd Prèviament he editat les dues plaques d'aïllament, per a què Jordi Servir els separadors del tals plàstics.

Pi de les tres branques i connector de plàstic índex divisor P3.

set05_08_v02_P2P3P4

Esquema del connector P3 realitzada per @JordiBinefa.

Dur a terme la connexió amb la Placa d'adaptador de relleus, Ens cal doblegar els pins del relè Junta Vull connectar-se a les tres branques del pi, ajudant-nos amb unes tenalles; en la següent imatge es pot veure el resultat final.

Depenent de la posició dels pins VCC i GND en nostres relleus, Posarem aquesta Jersei Relés d'un mòdul, o una altra posició per invertir-los; sempre tenint en compte que Relleus placa ha alimentat per USB.

IN1 IN2 IN3 IN4 VCC GND

IN1 IN2 IN3 IN4 GND VCC

Ara ens connectarà nostres relleus de vuit sortides a la placa d'adaptador de repetidors, i és en el Tres branques de PI; Cal assenyalar que Aquest mòdul és compatible amb quatre i vuit sortides relés.

Aleshores podem veure la taula de les connexions entre la Mòdul de relleus, la Tres branques de PI, i Raspberry PI.

Mòdul relés optoacoplados Connector P3 Model de PI Gerd B
VCC + 5V + 5V
EN 7 Mica 0 GPIO 29
EN 6 Mica 1 GPIO 28
EN 5 Mica 2 GPIO 18
EN 4 Mica 3 GPIO 7
EN 3 Mica 4 GPIO 8
EN 2 Mica 5 GPIO 10
EN 1 Mica 6 GPIO 9
EN 0 Mica 7 GPIO 11
GND GND GND

Ara procedir a connectar el relleus optoacoplados plat directament a la GPIO de l'altre Gerd, en la imatge de sota podeu veure el resultat final.

Les connexions entre la GPIO dels nostres Gerd serà el mateix com a l'article anterior, No obstant això en aquest cas he afegit tots de la taula de connexions.

Mòdul relés optoacoplados Model de PI Gerd B
VCC + 5V
EN 1 GPIO 3
EN 2 GPIO 2
EN 3 GPIO 24
EN 4 GPIO 25
EN 5 GPIO 23
EN 6 GPIO 27
EN 7 GPIO 22
EN 8 GPIO 4
GND GND

Per executar la escriptures en python de la web que veurem a continuació, Primer hem de donar els permisos a l'usuari www-dades És l'usuari assignat al servidor web; per a què Primer anem a instal lar el servidor web apache com hem vist en aquest article anterior i escriurem sudo visudo a la terminal i al final de l'arxiu Afegirem a www-dades com sudoer, el resultat final com per sota.

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

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

Per a cadascun dels setze pins GPIO empleats en aquesta pràctica, Hem de crear un subdirectori, i dos scripts en Python; a engegar, i l'altre per girar el relleu, Heus aquí un exemple amb la 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)

En cadascuna de les Raspberry PI Posarem el seu Escriptures de setze per activar els relleus connectats o a la agulles de cap empleats en cada, que es pot consultar a les taules anteriors; la seqüències d'ordres corresponent a la Gerd connectat directament des de la GPIO retransmetre placa situar-los en el directori /Inici/pi/relleus/gpio.

Crear la jerarquia de directoris i subdirectoris, i copiar els arxius programades en Python Utilitzarem aquests altres dos seqüències d'ordres en Colpejar; el primer serà perquè s'executi en la PI connectat a la Tres branques de PI.

#!/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/*

Els altres Escriptures de setze corresponen al control de la Gerd connectat a la Tres branques de PI Anem a mantenir-los en el directori /var/www/relleus/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/*

En aquest moment hem de crear una parell de claus manera que la Raspberry PI És la pàgina per executar el seqüències d'ordres de la connexió a la Tres branques de PI remotament, com és l'usuari que ho farà www-dades d'assignar una contrasenya per tal de connectar i crear el parell clau en el seu nom.

#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.

Una vegada creada la parell de claus pública i privada, Es comprovarà que podem accedir a SSH sense introduir la contrasenya; per a Relés de gerds operats des del mateix web de diferents a la mateixa xarxa local, en aquest cas Que he connectat-los gràcies a l'encaminador lliure petita WRTNode.

WRTNode_ETHLlavors crearem la nostra pàgina d'inici que contindrà la tipus d'entrada de botons vostè haurà de prémer per executar el seqüències d'ordres en Python des de la interfície web utilitzant el mètode post; per a aquest exemple es mostren al web amb només quatre obertures per tal que l'article no és massa llarg.

<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
?>

Si vull menjar-se tot d'un únic emissari, s'ha Derivació tot negatiu produccions 220V Relleus.

Les connexions a la xarxa Anem a fer-los la mateixa manera que en l'última entrada, tancada entre els esquemes d'endoll i interruptor interruptor de circuit en miniatura per facilitar el seguiment de la pràctica.

Diferencial d'endoll de relleus

En la pròxima entrega a Automatització de casa assequible Aprendrem a aprofitar els dos autobusos I2C Gràcies a la Tres branques de PI, i farem una prova de concepte comprovar 128 LEDs intercanviables per electrodomèstics.

Si us agrada podeu segueix-me a Refilar, Facebook, Google +, LinkedIn, o compartir-lo amb els botons sota aquesta publicació, Si vostè té alguna pregunta o suggeriment no dubtis a comentar.

Ajuda'ns a arribar a més lectors Share on LinkedInShare on FacebookTweet about this on TwitterShare on Google+Email this to someone

4 Reflexions sobre la"PI Gerd - implantació d'un sistema d'automatització de casa assequible [Segona part]

  1. Molt bons llocs, continua!!
    Una pregunta, Vull instal·lar també una automatització de la llar amb sistema fàcil de gerds, però no és com per exemple per saber l'estat d'una llum,cec o un dispositiu, Si això s'ha activat manualment.
    Ho dic per exemple, Si vull encendre una llum del telèfon però no estar en aquest estat és en aquell moment.

    Salu2

    • Hola Igor, Gracias por tu comentario.

      Això m'acut que podria utilitzar algun tipus de sensor que verifica la tensió que és arribar a la il·luminació que vol control, i avisa que és el seu servidor web en temps real per saber en qualsevol moment si que està encès o no.

Deixa un comentari