Malina PI - sprovođenju pristupačne home Automatizacija sistem [II dio]

U prethodnom postu o pristupačne kućne automatizacije na temelju Raspberry PI, Naučili smo da provjerite kuću mrežni priključak iz panel osam releja povezan s našim Malina PI.

Snimka ekrana od 2015-02-01 20:20:47Danas ćemo vidjeti kako kontrolirati ukupno šesnaest električnih uređaja Zahvaljujući sklop koji smo implementirali iznad, i Omogućavanje zajednice mi je dao Jordi od @electronics.cat a ti već mogli vidjeti u sažetku na Dan slobode hardvera; dizajniran od strane istog, i sto posto slobodan hardver.

Za tu praksu, 'm gonna koristiti na PI je tri grane, koja je odgovorna za prilagođavanje sve igle GPIO od Malina PI od 3.3V da 5V dvosmjerno i omogućit će nam da rad s drugom rezerviran za PiCam I2C sabirnici; Također će iskoristiti tanjur releji optoacoplados sam koristi u prethodnom članku o home Automatizacija.

Pi3Ramas

IP u tri raspona dizajnirao @JordiBinefa.

Sve to stavlja na raspolaganju Ukupno šesnaest domotična utičnice podijeljena između dva Malina, i s proširivost se za 128 u na PI je 3 grane, Budući da nam omogućava da iskoristite dva autobusa I2C žrtvovanja mogućnost korištenja priključka na PiCam.

Za povezivanje na pi tri grane, Mora variti šest što odgovara drugi autobus igle I2C que no vienen soldados de fábrica, u ovom trenutku Jordi Aktivno radi na novu verziju svoj tanjur za maline PI B + i Raspberry PI modela 2.

OLYMPUS DIGITALNI FOTOAPARATDa pomognemo da vara igle držeći dvije trake s tri Skakači, Ali Moramo osigurati oni su više usklađeni nas što je više moguće u svakom trenutku prije lemljenja ih.

Sada možemo spojiti na PI je tri grane da se Malina Prethodno uredili odvajanje dvije ploče, para lo que Jordi Koristi razdjelnike takve plastike.

Pi tri grane i plastične indeks razdjelnik konektor P3.

set05_08_v02_P2P3P4

Shema priključka P3 izradio @JordiBinefa.

Obavljanje vezu s na Relej adapterom, Mora savijati igle relej odbora Želim se povezati pi je tri grane, pomaže nam s nekim kliješta; u sljedeću sliku možete vidjeti konačni rezultat.

Ovisno o položaju igle VCC i GND u našim relej, Postavit ćemo ovo skakač releji u jedan modul, ili neki drugi položaj ih ulagati; Uvijek Imajući u vidu da Relej ploča mora biti power PC mimo USB.

IN1 IN2 IN3 IN4 VCC GND

IN1 IN2 IN3 IN4 GND VCC

Sada će povezati naše relej od osam izlaza za adapter ploča releji, i u u PI je tri grane; Treba napomenuti da Ovaj modul je kompatibilan sa četiri a osam izlazni releji.

Onda možemo vidjeti tablice veza između na Relej modul, na PI je tri grane, i Malina PI.

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

Sada nastavite za povezivanje na releji optoacoplados ploča izravno na GPIO od drugih Malina, na slici ispod možete vidjeti konačni rezultat.

Veza između na GPIO od naših Malina Oni će biti isti kao u Prethodni članak, Međutim u tom slučaju ste dodali sve veze stol.

Modulo relés optoacoplados Raspberry PI Modelo B
VCC + 5V
U 1 GPIO 3
U 2 GPIO 2
U 3 GPIO 24
U 4 GPIO 25
U 5 GPIO 23
U 6 GPIO 27
U 7 GPIO 22
U 8 GPIO 4
GND GND

Pokrenuti u skripte u python de la web que veremos mas abajo, primero tenemos que dar permisos al usuario www podaci Je korisnik dodijeljen na web server; zbog čega Prvo ćemo instalirati apache web server kao što smo vidjeli u prethodnom članku y escribiremos sudo visudo na terminalu i na kraju datoteke Mi ćemo dodati na www-podataka kao sudoer, što je konačni rezultat kao ispod.

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

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

Za svaku od šesnaest GPIO igle zaposlenih u ovoj praksi, Moramo kreirati poddirektorij, i dos scripts en Python; jedan za uključivanje, a drugi okrenuti relej, Evo primjera s na 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)

U svakoj je Malina PI Postavit ćemo vaš Šesnaest skripte Uključivanje povezani releji i da se igle zaposlenih u svakoj, da se može konzultirati u prethodne tablice; na skripte koja odgovara na Malina Povezivanje izravno from u GPIO da relej ploča će ih staviti u direktorij /Dom/pi/releji/gpio.

Za stvaranje hijerarhije direktorija i poddirektorije, i kopirati programirane datoteke u Python Upotrijebit ćemo ove druge dvije skripte u Paša; prvi bit će to izvršiti u na PI povezani na PI je tri grane.

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

Ostali Šesnaest skripte odgovara za kontrolu u Malina povezani na PI je tri grane Će ih zadržati u direktoriju /var/www/relej/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/*

U ovom trenutku moramo stvoriti na par ključeva Tako da je Malina PI To je stranica pokrenuti na skripte korištenjem da se PI je tri grane daljinski, kao korisnik koji će to učiniti je www-data dodijeliti lozinku Kako bi se prijaviti i stvoriti par ključeva u vaše ime.

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

Jednom stvorena je par ključeva javni i privatni, Čut ćemo da možemo pristupiti ako SSH bez unosa lozinke; za napajati iz iste web različitih malina releji na istoj lokalnoj mreži, u ovom slučaju Sam ih povezao zahvaljujući malom usmjerivač besplatno WRTNode.

WRTNode_ETHOnda ćemo napraviti našu početnu stranicu koja će se sastojati u gumbi unos vrsta Morat ćete pritisnuti da izvrši na skripte u Python from web sučelje pomoću post metode; 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
?>

Ako želite nahrani sve iz jednog struje, Mora zaobići sve negativno izlazi 220V Relej.

Veza na električnu mrežu Mi ćemo ih napraviti na isti način kao i posljednji unos, uokviren utikač i prekidač sheme minijaturni osigurač Kako bi se olakšalo praćenje prakse.

Relé enchufe diferencial

U sljedeći obrok na pristupačne kućne automatizacije Naučit ćete uzeti prednost od dva autobusa I2C Zahvaljujući na PI je tri grane, i mi ćemo napraviti na dokaz koncepta provjere 128 izmjenjivi LEDs do električnih uređaja.

Ako želite možete Slijedite me na Twitter, Facebook, Google +, LinkedIn, ili ga podijeliti s gumbima ispod ove publikacije, Ako imate bilo kakvih pitanja ili prijedloge Molimo ne ustručavajte se komentirati.

Pomažu nam do više čitatelja Share on LinkedInShare on FacebookTweet about this on TwitterShare on Google+Email this to someone

4 misli na"Malina PI - sprovođenju pristupačne home Automatizacija sistem [II dio]

  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, gracias por tu comentario.

      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.

Komentariši