Malina PI - wdrażanie systemu niedrogie automatyki domowej [Część II]

W poprzednim poście o niedrogie automatyki domowej oparte na Raspberry PI, Dowiedzieliśmy się sprawdzić połączenia sieci dom z panelu osiem przekaźniki podłączone do naszego Malina PI.

Zrzut ekranu 2015-02-01 20:20:47Dziś zobaczymy jak kontrolować w sumie szesnaście urządzeń elektrycznych Dzięki do układu, który realizowaliśmy powyżej, i włączenie płyty dał mi Jordi z @electronics.cat i już widział w podsumowanie Dzień wolności sprzętu; zaprojektowany przez to samo, i sto procent wolny sprzęt.

Dla tej praktyki mam zamiar korzystać z The Trzy oddziały PI, który odpowiada za dostosowanie wszystkich pinów GPIO z Malina PI z 3.3V do 5V dwukierunkowa i pozwoli nam na Praca z druga zarezerwowana dla magistrali PiCam I2C; Będzie również użyć płytki przekaźników optoacoplados, którą kiedyś w poprzednim artykule na temat automatyki domowej.

Pi3Ramas

IP w trzech zakresach zaprojektowany przez @JordiBinefa.

Wszystko to oddaje do naszej dyspozycji w sumie szesnastu gniazd domotic podzielony pomiędzy dwa Malina, i z rozbudowy do 128 w odniesieniu do PI 3 oddziały, Ponieważ dzięki niemu możemy skorzystać z dwóch autobusów I2C utraty możliwości za pomocą łącznika do PiCam.

Aby połączyć trzy oddziały pi, Musi spawamy sześciu odpowiadające drugiej szpilki autobus I2C że nie są żołnierze fabryki, w tej chwili Jordi Aktywnie pracuje nad nową wersją jego płyty Raspberry PI b + i modeli z Raspberry PI 2.

APARAT CYFROWY OLYMPUSMożemy pomóc w spawaniu szpilki gospodarstwa dwa paski o trzech z Bluzy, ale My musi upewnić się, że one są bardziej wyrównane nas jak to możliwe przez cały czas przed lutowaniem je.

Możemy teraz połączyć Trzy oddziały PI do Malina Wcześniej były edytowane Izolowanie dwie płyty, Niby dlaczego Jordi Używać separatorów takich tworzyw sztucznych.

Pi trzy oddziały i plastikowe indeks divider złącze P3.

set05_08_v02_P2P3P4

Schemat złącza P3, wykonane przez @JordiBinefa.

Wykonać połączenia z Przekaźnik adapterze, My musi zginać szpilki przekaźnik pokładzie Chcę się połączyć trzy oddziały pi, pomaga nam w niektórych szczypce; na następnym zdjęciu można zobaczyć końcowy wynik.

W zależności od położenia styków VCC i GND w naszych przekaźnik, Będziemy się tego skoczek przekaźniki w jednym module, lub inne miejsce do inwestowania ich; zawsze biorąc pod uwagę że Przekaźnik płyta musi być zasilany przez USB.

IN1 IN2 IN3 IN4 VCC GND

IN1 IN2 IN3 IN4 GND VCC

Teraz będziemy łączyć nasze Przekaźnik osiem wyjść na płytkę adaptera przekaźników, i jest w Trzy oddziały PI; należy zauważyć, że Moduł ten jest zgodny z czterech i osiem wyjść przekaźników.

Wtedy możemy zobaczyć spis połączeń między Moduł przekaźnikowy, The Trzy oddziały PI, i Malina PI.

Moduł przekaźników optoacoplados Złącze P3 Malina PI model B
VCC + 5V + 5V
W 7 Nieco 0 GPIO 29
W 6 Nieco 1 GPIO 28
W 5 Nieco 2 GPIO 18
W 4 Nieco 3 GPIO 7
W 3 Nieco 4 GPIO 8
W 2 Nieco 5 GPIO 10
W 1 Nieco 6 GPIO 9
W 0 Nieco 7 GPIO 11
GND GND GND

Teraz przejdę do łączenia przekaźniki optoacoplados płyta bezpośrednio do GPIO z drugiej strony Malina, na obrazku poniżej można zobaczyć końcowy wynik.

Połączenia między GPIO z naszych Malina będą one takie same jak w Poprzedni artykuł, Jednak w tym przypadku dodałem wszystkie połączenia tabeli.

Moduł przekaźników optoacoplados Malina PI model B
VCC + 5V
W 1 GPIO 3
W 2 GPIO 2
W 3 GPIO 24
W 4 GPIO 25
W 5 GPIO 23
W 6 GPIO 27
W 7 GPIO 22
W 8 GPIO 4
GND GND

Aby uruchomić skrypty w języku python w Internecie, że zobaczymy poniżej, Najpierw musimy dać uprawnienia dla użytkownika www dane To użytkownik przypisany do serwera sieci web; Niby dlaczego Po raz pierwszy będziemy instalować serwera www apache podobnie jak to widzieliśmy w poprzednim artykule tej i napisze terminalvisudo sudo w terminalu, a na koniec pliku Dodamy do www dane jako sudoer, jest ostateczny wynik jak poniżej.

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

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

Dla każdego z szesnastu Piny GPIO pracownicy w tej praktyki, Musimy utworzyć podkatalog, i dwa skrypty w języku Python; do kogo się zwrócić, i z drugiej strony do kolei przekaźnik, Tutaj jest przykład z KOD 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)

W każdym z Malina PI Będziemy się twój Szesnaście skrypty Aby włączyć połączenia przekaźników lub do szpilki pracowników w każdym, że można zapoznać się w poprzednich tabelach; The skrypty odpowiadającej Malina połączony bezpośrednio z GPIO do przekazywania że płyta będzie umieścić je w katalogu /Strona główna/pi/przekaźniki/gpio.

Do tworzenia hierarchii katalogów i podkatalogów, i skopiuj pliki z zaprogramowaną Python Będziemy używać tych dwóch innych skrypty w Bash; pierwszy będzie, że wykonanie w PI podłączony do Trzy oddziały 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/*

Inni Szesnaście skrypty odpowiednie do kontroli Malina podłączony do Trzy oddziały PI Będziemy na bieżąco je w katalogu /var/www/przekaźnik/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/*

W tej chwili musimy stworzyć pary kluczy tak, że Malina PI To jest strona do uruchomienia skrypty podłączonych do Trzy oddziały PI zdalnie, jako użytkownik, który zrobi to jest www dane należy przypisać hasło Aby zalogować się i Utwórz parę kluczy w Twoim imieniu.

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

Po utworzeniu para kluczy publicznych i prywatnych, Sprawdzimy, że możemy dostęp przez SSH bez wprowadzania hasła; dla działał od samej sieci web różnych malina przekaźniki w tej samej sieci lokalnej, w tym przypadku Podłączyłem je dzięki małych router wolna WRTNode.

WRTNode_ETHNastępnie tworzymy nasza strona, która będzie zawierać Typ danych wejściowych przyciski będziesz musiał nacisnąć, aby wykonać skrypty w Python z poziomu interfejsu sieci web przy użyciu metody post; na przykład wola uwidocznić ten tkanina rezygnować tylko cztery zaczyna się tak, że artykuł nie jest zbyt długi.

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

Jeśli chcę go karmić wszystko z jednego gniazdka, musi Pomiń wszystkie negatywne wyprowadza 220V Przekaźnik.

Połączenia do sieci zasilającej My zrobimy je tak samo jak w ostatnim wpisie, ujęte w systemy wtyczkę i przełącznik miniaturowy wyłącznik w celu ułatwienia śledzenia praktyki.

Wtyczka przekaźnik różnicowy

W kolejnej odsłonie na niedrogie automatyki domowej Nauczymy się skorzystać z dwóch autobusów I2C Dzięki Trzy oddziały PI, i zrobimy dowód koncepcji kontrolnych 128 wymienne diody przez urządzenia elektryczne.

Jeśli chcesz, możesz się do mnie na Twitter, Facebook, Google +, LinkedIn, lub podzielić się nim z przycisków w tej publikacji, Jeśli masz jakiekolwiek pytania lub sugestie prosimy o komentarz.

Pomóż nam dotrzeć do czytelników więcej Share on LinkedInShare on FacebookTweet about this on TwitterShare on Google+Email this to someone

4 myśli na"Malina PI - wdrażanie systemu niedrogie automatyki domowej [Część II]

  1. Bardzo dobre posty, w dalszym ciągu!!
    Pytanie, Chcę również instalacja automatyki domowej z malin system easy, ale nie jest jak na przykład aby poznać stan światła,w ciemno lub urządzenie, Jeśli został ręcznie aktywowany.
    Mówię to na przykład, Jeśli chcesz włączyć światło od telefonu, ale nie być w tym państwie jest w tym czasie.

    Salu2

    • Witam Igor, Dziękujemy za twój komentarz.

      Przychodzi do mnie, że można użyć jakiś czujnik, który sprawdza napięcie, które jest dotarcie do oświetlenia, które chcesz kontrolować, i informuje, że serwer sieci web w czasie rzeczywistym wiedzieć w każdej chwili, jeśli jest na nie.

Dodaj komentarz