Raspberry PI - uitvoering van een betaalbaar domoticasysteem [Deel II]

In de vorige post over betaalbare huisautomatisering op basis van Raspberry PI, We hebben geleerd om te controleren het huis lichtnet verbindingen van een panel van acht Relais verbonden met onze Raspberry PI.

Screenshot van 2015-02-01 20:20:47Vandaag zullen we zien hoe u kunt besturen van een totaal van zestien elektrische apparaten Dankzij het circuit dat we geïmplementeerd boven, en waardoor planken heeft mij Jordi van @electronics.cat en u al kon u zien in de samenvatting van de Hardware Freedom Day; ontworpen door dezelfde, en honderd procent gratis hardware.

Voor deze oefening ga ik gebruiken de PI's drie takken, dat is verantwoordelijk voor de aanpassing van alle pins GPIO van Raspberry PI van 3.3V Aan 5V bi-gericht en zal ons toelaten om werken met de tweede gereserveerd voor de PiCam I2C-bus; Ik zal ook gebruik maken van plaat Relais optoacoplados ik gebruikte in het vorige artikel over Domotica.

Pi3Ramas

IP in drie reeksen ontworpen door @JordiBinefa.

Dit alles brengt ons ter beschikking staan een totaal van zestien Sockets domotic verdeeld over twee Framboos, en met uitbreidbaarheid van tot 128 in het geval van de PI's 3 takken, Omdat het ons om te profiteren van de twee bussen toelaat I2C offeren de mogelijkheid van het gebruik van de connector naar de PiCam.

Aansluiten van de pi drie takken, We moeten de zes die overeenkomt met de tweede bus pinnen lassen I2C die zijn niet soldaten van fabriek, op dit moment Jordi Het werkt actief aan een nieuwe versie van de plaat voor Raspberry PI B + en Raspberry PI modellen 2.

OLYMPUS DIGITALE CAMERAWij kunnen helpen bij het lassen van de spelden die houden de twee strips van drie met jumpers, maar We moeten ervoor zorgen dat ze zijn ons meer uitgelijnd mogelijk te allen tijde voordat ze solderen.

We kunnen nu verbinden de PI's drie takken aan de Framboos Ik heb eerder bewerkt de twee platen isoleren, Waarvoor Jordi Scheidingstekens gebruiken dergelijke kunststoffen.

De pi van de drie takken en kunststof index divider connector P3.

set05_08_v02_P2P3P4

Regeling van de P3-connector gemaakt door @JordiBinefa.

Verrichten van de verbinding met de Relay adapter plaat, We moeten buigen de pinnen voor de relay Board Ik wil verbinding maken met de drie takken van de pi, helpt ons met een enkele Tang; in de volgende afbeelding ziet u het eindresultaat.

Afhankelijk van de positie van de pinnen VCC en GND onze estafette, Wij zullen dit plaatsen jumper Relais in één module, of een andere positie te investeren ze; altijd rekening houdend met het feit dat Relay plaat moet worden aangedreven door USB.

IN1 IN2 3 IN4 VCC GND

IN1 IN2 3 IN4 GND VCC

Nu we verbinden onze doorsturen van acht uitgangen aan de adapter plaat van Relais, en is in de PI's drie takken; dient te worden opgemerkt dat Deze module is compatibel met vier en acht relais uitgangen.

Dan wij in de tabel van verbindingen tussen zien kunnen de Relais module, de PI's drie takken, en Raspberry PI.

Module Relais optoacoplados Connector P3 Raspberry PI model B
VCC + 5V + 5V
IN 7 Bits 0 GPIO 29
IN 6 Bits 1 GPIO 28
IN 5 Bits 2 GPIO 18
IN 4 Bits 3 GPIO 7
IN 3 Bits 4 GPIO 8
IN 2 Bits 5 GPIO 10
IN 1 Bits 6 GPIO 9
IN 0 Bits 7 GPIO 11
GND GND GND

Gaan nu over tot het verbinding maken met de Relais optoacoplados plaat direct naar de GPIO van de andere Framboos, in de afbeelding hieronder ziet u het eindresultaat.

De verbindingen tussen de GPIO van onze Framboos zullen zij hetzelfde als in het vorige artikel, Maar in dit geval ik alle hebt toegevoegd de verbindingen tabel.

Module Relais optoacoplados Raspberry PI model B
VCC + 5V
IN 1 GPIO 3
IN 2 GPIO 2
IN 3 GPIO 24
IN 4 GPIO 25
IN 5 GPIO 23
IN 6 GPIO 27
IN 7 GPIO 22
IN 8 GPIO 4
GND GND

Om uit te voeren de scripts in python van het web die we verderop zullen zien, Eerst moeten we geven machtigingen aan de gebruiker www-data Het is de gebruiker die is toegewezen aan de webserver; Waarvoor Eerst zullen we de apache webserver installeren, zoals we hebben gezien in dit eerdere artikel en we zullen schrijven sudo visudo in de terminal en aan het einde van het bestand Wij zullen toevoegen aan www-data als sudoer, het uiteindelijke resultaat zoals hieronder wordt.

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

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

Voor elk van de zestien GPIO pinnen werknemers in deze praktijk, We moeten een submap maken, en twee scripts in Python; een inschakelen, en de andere om te zetten van de estafette, Hier is een voorbeeld met de 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)

In elk van de Raspberry PI We plaatsen uw Zestien scripts om te schakelen op de aangesloten Relais of aan de pinnen werknemers in elk, dat kunt u in de vorige tabellen raadplegen; de scripts overeenkomt met de Framboos aangesloten rechtstreeks vanaf de GPIO om te sturen plaat zal hen plaatsen in de map /Home/pi/Relais/gpio.

De hiërarchie van mappen en submappen maken, en kopieer de geprogrammeerde bestanden in Python We zullen deze andere twee gebruiken scripts in Bash; de eerste zal zijn dat uit te voeren de PI aangesloten op de PI's drie takken.

#!/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 anderen Zestien scripts overeenkomt met de controle van de Framboos aangesloten op de PI's drie takken Wij houden hen in de directory /var/www/Relais/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/*

Op dit moment moeten we creëren een sleutelpaar zodat de Raspberry PI Het is de pagina uit te voeren de scripts van het aangesloten aan de PI's drie takken op afstand, Als de gebruiker die het zal doen www-data moet een wachtwoord toewijzen inloggen te maken namens u het sleutelpaar.

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

Eenmaal gemaakt de sleutelpaar met openbare en particuliere, Wij zullen nagaan dat wij kunnen toegang door SSH zonder het invoeren van het wachtwoord; voor bediend vanuit hetzelfde web van verschillende Relais framboos op hetzelfde lokale netwerk, in dit geval Ik heb ze aangesloten dankzij de kleine gratis router WRTNode.

WRTNode_ETHDan zullen we het creëren van onze home-page waarin de knoppen invoertype u zult moeten druk op te voeren de scripts in Python vanuit de webinterface met behulp van de POSTmethode; in dit voorbeeld zal ik laten zien van het web met slechts vier begint zodat het artikel niet te lang.

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

Als ik wil om te voeden hem alles uit een enkele stopcontact, moet Rondweg allemaal negatief uitgangen 220V Estafette.

De aansluitingen op het lichtnet We maken ze de dezelfde manier als in de laatste post, ingesloten tussen de regelingen stekker en schakelaar miniatuur circuit breaker ter vergemakkelijking van het volgen van de praktijk.

Plug differentiële estafette

In de volgende aflevering op betaalbare huisautomatisering We zullen leren om te profiteren van de twee bussen I2C Dankzij de PI's drie takken, en zullen we een bewijs van concept controleren 128 Verwisselbare LEDs door elektrische apparaten.

Als je net als u me kunt volgen op Twitter, Facebook, Google +, LinkedIn, of het te delen met de knoppen onder deze publicatie, Als u vragen hebt of suggesties gelieve te niet aarzelen om commentaar te.

Help ons te bereiken meer lezers Share on LinkedInShare on FacebookTweet about this on TwitterShare on Google+Email this to someone

4 gedachten over"Raspberry PI - uitvoering van een betaalbaar domoticasysteem [Deel II]

  1. Zeer goede posten, blijft!!
    Een vraag, Ik wil ook een domotica met easy raspberry systeem installeren, maar niet is hoe bijvoorbeeld te weten van de status van een licht,blinde of een apparaat, Als het is handmatig geactiveerd.
    Ik zeg dit bijvoorbeeld, Als ik wil inschakelen een licht van de telefoon maar niet is die staat op dat moment.

    Salu2

    • Hallo Igor, Bedankt voor uw reactie.

      Het komt mij die u kon gebruiken een soort van sensor die controleert de spanning die is het bereiken van de verlichting die u bedienen wilt, en het is uw webserver in echt-tijd op elk moment weten, als het aanstaat of niet op de hoogte.

Laat een antwoord achter