Raspberry PI - genomförande av en prisvärd hemautomation [Del II]

I det tidigare inlägget om prisvärd hemautomation baserat på Raspberry PI, Vi lärde oss att kolla huset strömförsörjningsanslutningar från en panel av åtta relär ansluten till vår Raspberry PI.

Skärmdump av 2015-02-01 20:20:47Idag kommer vi att se hur du styr totalt sexton bruksföremål Tack vare den krets som vi genomfört framför, och aktivera styrelser har gett mig Jordi för @electronics.cat och du redan kan du se i sammanfattningen av den Hårdvara pressfrihetens dag; Designad av samma, och hundra procent fri hårdvara.

Den här övningen kommer jag att använda den PI: s tre grenar, som är ansvarig för att anpassa alla stiften GPIO för Raspberry PI för 3.3V till 5V bi-directionally och gör det möjligt att arbetar med den andra reserverade för PiCam I2C bussen; Jag kommer också att använda plattan reläerna optoacoplados jag använde i den föregående artikeln om hemautomation.

Pi3Ramas

IP i tre spänner designad av @JordiBinefa.

Allt detta ställer till vårt förfogande totalt sexton uttag domotic delat mellan två Hallon, och med utbyggbarhet av upp till 128 för den PI: s 3 grenar, Eftersom det tillåter oss att dra nytta av de två bussarna I2C att offra möjligheten att via-till PiCam.

Att ansluta pi: s tre grenar, Vi måste svetsa de sex motsvarar andra buss stiften I2C som inte är soldater av fabriken, just nu Jordi Det arbetar aktivt på en ny version av sin tallrik för Raspberry PI B + och Raspberry PI modeller 2.

OLYMPUS DIGITALKAMERAVi kan hjälpa till att svetsa stiften håller två remsor av tre med byglar, Men Vi måste se till att de är mer i linje oss som möjligt hela tiden före lödning dem..

Vi kan nu ansluta den PI: s tre grenar till den Hallon Jag har tidigare redigerat isolera de två plattorna, För vad Jordi Använda avgränsare sådan plast.

Pi tre grenar och plast index avdelare connector P3.

set05_08_v02_P2P3P4

Systemet av P3-kontakt av @JordiBinefa.

Genomföra anslutningen med den Relay adapterplatta, Vi måste böja stiften för relay Board Jag vill ansluta till pi: s tre grenar, att hjälpa oss med några tänger; i nästa bild kan du se det slutliga resultatet.

Beroende på placeringen av stiften VCC och GND i vår stafett, Vi kommer att placera detta bygel reläer i en modul, eller en annan läge att investera dem; alltid med ihåg att Relay plattan måste vara driv vid USB.

IN1 IN2 IN3 IN4 VCC GND

IN1 IN2 IN3 IN4 GND VCC

Nu vi kommer att ansluta våra relän av åtta utgångar till adapter plattan av reläer, och i den PI: s tre grenar; bör noteras som Den här modulen är kompatibel med fyra och åtta utgångar reläer.

Då vi kan se i tabellen av anslutningar mellan den Relä modul, den PI: s tre grenar, och Raspberry PI.

Modulen vidarebefordrar optoacoplados Connector P3 Raspberry PI modell B
VCC + 5V + 5V
I 7 Bitars 0 GPIO 29
I 6 Bitars 1 GPIO 28
I 5 Bitars 2 GPIO 18
I 4 Bitars 3 GPIO 7
I 3 Bitars 4 GPIO 8
I 2 Bitars 5 GPIO 10
I 1 Bitars 6 GPIO 9
I 0 Bitars 7 GPIO 11
GND GND GND

Nu fortsätter att ansluta den reläer optoacoplados plattan direkt till den GPIO den andra Hallon, i bilden nedan kan du se det slutliga resultatet.

Anslutningarna mellan den GPIO av våra Hallon de kommer att vara samma som i föregående artikel, Men i detta fall jag har lagt till alla tabellen anslutningar.

Modulen vidarebefordrar optoacoplados Raspberry PI modell B
VCC + 5V
I 1 GPIO 3
I 2 GPIO 2
I 3 GPIO 24
I 4 GPIO 25
I 5 GPIO 23
I 6 GPIO 27
I 7 GPIO 22
I 8 GPIO 4
GND GND

Att köra den skript i python av webben som vi skall se nedan, Först måste vi ge behörigheter till användaren www-data Det är användaren som är tilldelad till webbservern; För vad Först kommer vi att installera apache-webbservern som vi har sett i denna tidigare artikel och vi kommer att skriva sudo visudo i terminalen och i slutet av filen Vi kommer att lägga till www-data som sudoer, att vara det slutliga resultatet enligt nedan.

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

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

För vart och ett av de sexton GPIO stift anställda i den här övningen, Vi behöver skapa en underkatalog, och två skript i Python; en till vända på, och den andra för att aktivera reläet, Här är ett exempel med den PIN-KOD 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)

I varje av de Raspberry PI Vi kommer att placera din Sexton skript slå på de anslutna reläerna eller till den Pins anställda i varje, att du kan rådfråga i tidigare tabeller; den scripts motsvarar den Hallon ansluten direkt från den GPIO att förmedla plattan kommer att placera dem i katalogen /Hem/pi/reläer/gpio.

Att skapa en hierarki av kataloger och underkataloger, och kopiera programmerade filerna i Python Vi kommer att använda dessa två andra scripts i Bash; först kommer att vara att köra i den PI ansluten till den PI: s tre grenar.

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

De andra Sexton skript motsvarande kontroll av den Hallon ansluten till den PI: s tre grenar Vi kommer att hålla dem i katalogen /var/www/relä/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/*

Vid denna tid måste vi skapa en nyckelpar så att den Raspberry PI Det är sidan att köra den scripts av den anslutna till de PI: s tre grenar distans, som den användare som kommer att göra det är www-data måste tilldela ett lösenord för att logga in och skapa nyckelparet för din räkning.

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

En gång skapat den nyckelpar offentliga och privata, Vi kommer att kontrollera att vi kan åt genom SSH utan att ange lösenordet; för manövreras från samma webbplats av olika reläer hallon i samma lokala nätverk, i detta fall Jag har anslutit dem tack vare den små gratis routern WRTNode.

WRTNode_ETHSedan skapar vi vår hemsida som kommer att innehålla de knappar Indatatyp Du måste trycka på för att utföra den scripts i Python från webbgränssnittet genom att använda post-metoden; Det här exemplet kommer att jag Visa på webben med endast fyra starter så att artikeln inte är för lång.

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

Om jag vill mata honom allt från en enda utlopp, måste Bypass alla negativa utgångar 220V Relay.

Anslutningarna till elnätet Vi kommer att göra dem på samma sätt som i den sista posten, mellan de plug och switch system Dvärgbrytare att underlätta spårning av praxis.

Plug differentiell relay

I nästa avbetalning på prisvärd hemautomation Vi lär dig att dra nytta av de två bussarna I2C Tack vare den PI: s tre grenar, och vi kommer att göra en bevis på konceptet kontroll 128 utbytbara lysdioder bruksföremål.

Om du som du kan följa mig på Twitter, Facebook, Google +, LinkedIn, eller dela den med knapparna under denna publikation, Om du har några frågor eller förslag tveka inte att kommentera.

Hjälp oss att nå fler läsare Share on LinkedInShare on FacebookTweet about this on TwitterShare on Google+Email this to someone

4 tankar om"Raspberry PI - genomförande av en prisvärd hemautomation [Del II]

  1. Mycket bra inlägg, fortsätter!!
    En fråga, Jag vill också installera en hemautomation med lätt hallon system, men inte är hur till exempel att veta status för en ljus,blind eller anordning, Om det har aktiverats manuellt.
    Jag säger detta till exempel, Om jag vill slå på en ljus från telefonen men inte vara i är denna stat då.

    Salu2

    • Hej Igor, Tack för din kommentar.

      Det slår mig som du kan använda någon typ av sensor som verifierar den spänning som når belysning du vill styra, och meddela det är webbservern i realtid veta när som helst om det är på eller inte.

Lämna svar