Bringebær PI - implementering av et rimelig hjemme automasjonssystem [Del II]

I forrige innlegg om rimelig hjemme automasjon basert på bringebær PI, Vi lærte å se huset strømnettet forbindelser fra et panel av åtte reléer koblet til våre Bringebær PI.

Skjermbilde av 2015-02-01 20:20:47I dag vil vi se hvordan å kontrollere totalt seksten hvitevarer Takket være kretsen som vi implementert over, og aktivere styrene har gitt meg Jordi av @electronics.cat og du allerede kan du se Sammendrag av den Maskinvare Freedom Day; designet av samme, og hundre prosent Gratis maskinvare.

I denne øvelsen vil jeg skal bruke den PIS tre grener, Det er ansvarlig for å tilpasse alle pinnene GPIO av Bringebær PI av 3.3V til 5V toveis og vil tillate oss å arbeide med andre forbeholdt PiCam I2C bussen; Jeg vil også bruke platen reléer optoacoplados jeg brukte i forrige artikkel om hjemme automasjon.

Pi3Ramas

IP i tre områder designet av @JordiBinefa.

Alt dette setter til rådighet Totalt seksten socketer domotic delt mellom to Bringebær, og med utvidelsesmuligheter for opptil 128 i tilfelle av den PI 3 grener, Siden det tillater oss å dra nytte av to busser I2C ofre bruke koblingen til PiCam.

Koble pi's tre grener, Vi må sveise seks tilsvarer andre buss pinnene I2C que no vienen soldados de fábrica, for øyeblikket Jordi Det arbeider aktivt med en ny versjon av sin plate for bringebær PI B + og bringebær PI modeller 2.

OLYMPUS DIGITAL CAMERAVi kan hjelpe for å sveise pinnene holder to strimler av tre med jumpere, men Vi må sørge for at de er mer justert oss som mulig til alle tider før lodding dem.

Vi kan nå koble den PIS tre grener til den Bringebær Jeg har tidligere redigert isolere de to platene, para lo que Jordi Bruk skilletegn slik plast.

Pi tre grener og plast indeks delelinje kontakten P3.

set05_08_v02_P2P3P4

Ordningen av P3 kontakten laget av @JordiBinefa.

Gjennomføre forbindelsen med den Relé adapterplate, Vi må bøye pinnene i relé bord Jeg vil koble til pi's tre grener, hjelpe oss med litt tang; i neste bilde kan du se resultatet.

Avhengig av plasseringen av pinnene VCC og GND i vår stafett, Vi vil plassere dette genser releer i en modul, eller en annen posisjon å investere dem; alltid bærer i tankene som Relé plate må være drevet av USB.

1 IN2 IN3 IN4 VCC GND

1 IN2 IN3 IN4 GND VCC

Nå vi vil koble våre videresending av åtte utganger til adapter plate av reléer, og i den PIS tre grener; bemerkes det Denne modulen er kompatibel med fire og åtte utganger reléer.

Da kan vi se tabellen forbindelser mellom de Relé modul, den PIS tre grener, og Bringebær PI.

Modulo relés optoacoplados Likestrømkontakt P3 Raspberry PI Modelo B
VCC + 5V + 5V
I 7 Bit 0 GPIO 29
I 6 Bit 1 GPIO 28
I 5 Bit 2 GPIO 18
I 4 Bit 3 GPIO 7
I 3 Bit 4 GPIO 8
I 2 Bit 5 GPIO 10
I 1 Bit 6 GPIO 9
I 0 Bit 7 GPIO 11
GND GND GND

Nå fortsette å koble den videresender optoacoplados plate direkte til den GPIO de andre Bringebær, i bildet nedenfor kan du se resultatet.

Sammenhengene mellom den GPIO av våre Bringebær de vil være den samme som i forrige artikkel, Men i dette tilfellet jeg har lagt alle tabellen forbindelser.

Modulo relés optoacoplados Raspberry PI Modelo 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

Å kjøre den skript i python de la web que veremos mas abajo, primero tenemos que dar permisos al usuario www-data Det er brukeren som er knyttet til webserveren; for hva Først vil vi installere apache webserver som vi har sett i denne tidligere artikkel y escribiremos sudo visudo i terminalen og på slutten av filen Vi vil legge til www-data som sudoer, blir sluttresultatet idet neden.

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

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

For hver av de seksten GPIO pinnene ansatte i denne praksisen, Må vi opprette en underkatalog, og dos scripts en Python; en aktivere, og den andre slå relé, Her er et eksempel med den 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)

I hver av de Bringebær PI Vi vil plassere din Seksten skript slå på tilkoblet reléer eller den pins ansatte i hver, at du kan se i tabellene tidligere; den skript tilsvarer den Bringebær koblet direkte fra den GPIO å videresende platen skal plassere dem i mappen /Hjem/pi/sendinger/gpio.

Opprette et hierarki av mapper og undermapper, og kopiere de programmerte filene i Python Vi vil bruke disse to andre skript i Bash; Først vil være som kjøres i den PI koblet til den PIS tre grener.

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

Andre Seksten skript tilsvarer kontroll av den Bringebær koblet til den PIS tre grener Vi vil holde dem i katalogen /var/www/videresending/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å må vi opprette en nøkkelparet slik at den Bringebær PI Det er siden for å kjøre den skript til den tilkoblede til den PIS tre grener eksternt, som brukeren som vil gjøre det www-data må angi et passord for å logge inn og lage nøkkelparet på dine vegne.

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

Når laget den nøkkelparet offentlige og private, Vi vil se at vi kan tilgang ved SSH uten å skrive inn passordet; for drives fra samme nettet av forskjellige reléer bringebær i det samme lokale nettverket, i dette tilfellet Jeg har koblet dem takket være små gratis ruteren WRTNode.

WRTNode_ETHDa vil vi lage vår hjemmeside som inneholder den INNDATATYPE for knapper du må trykke for å kjøre den skript i Python fra webgrensesnittet ved hjelp av post-metoden; para este ejemplo voy a mostrar la web con solo cuatro salidas para que el artículo no sea demasiado extenso.

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

Hvis jeg ønsker å mate ham alt fra en enkelt stikkontakt, må omkjøringsvei alle negative utganger 220V Stafett.

Forbindelser til strømnettet Vi vil gjøre dem på samme måte som i den siste posten, omsluttet plug og bytte ordninger miniatyr strømbryter å lette sporing av praksis.

Relé enchufe diferencial

I neste avdrag på rimelig hjemme automasjon Vi vil lære å dra nytte av to busser I2C Takket være den PIS tre grener, og vi vil gjøre en bevis på konsept avmerker 128 utskiftbare led av elektriske apparater.

Hvis du liker du kan følge meg på Twitter, Facebook, Google +, LinkedIn, eller dele det med knappene under denne publikasjonen, Hvis du har spørsmål eller forslag ikke nøl med å kommentere.

Hjelp oss å nå flere lesere Share on LinkedInShare on FacebookTweet about this on TwitterShare on Google+Email this to someone

4 tanker om"Bringebær PI - implementering av et rimelig hjemme automasjonssystem [Del II]

  1. Muy buenos posts, sigue así!!
    Una pregunta, yo quiero montar también un sistema domotico casero con raspberry muy sencillo, pero no se como hacer por ejemplo para saber el estado de una luz,persiana o algún dispositivo, si ha sido activado manualmente.
    Lo digo por ejemplo, si quiero encender una luz desde el movil pero no se en que estado se encuentra en ese momento.

    Salu2

    • Hola Igor, Takk for din kommentar.

      Se me ocurre que podrías utilizar algún tipo de sensor que compruebe la tensión que le está llegando a la iluminación que desees controlar, y se lo notifique a tu servidor web en tiempo real para saber en todo momento si está encendida o no.

Legg inn en kommentar