Malinová PI - uplatňovanie cenovo dostupné Domáce automatizácie systému [Časť II]

V predchádzajúci príspevok o cenovo dostupné Domáce automatizácie na základe Malinová PI, Sme sa dozvedeli, skontrolovať dom zriadenie prípojky z panelu osem relé pripojené k našej Malinová PI.

Capture de pantalla de 2015-02-01 20:20:47Dnes uvidíme, ako ovládať celkovo šestnástich elektrických spotrebičov Vďaka okruh, ktorý sme realizovali vyššie, a umožňuje dosky mi dal Jordi z @electronics.cat a ste už mohli vidieť v prehľade Deň slobody hardvéru; navrhol to isté, a sto percent zadarmo hardvéru.

Pre tento postup, budem používať na PI troch vetiev, ktorý je zodpovedný za úpravu všetky kolíky GPIO z Malinová PI z 3.3V na 5V bi-smerovo a nám umožní Práca s druhým vyhradené na zbernici PiCam I2C; Doska relé optoacoplados použil tiež použijem v predchádzajúcom článku o domácej automatizácie.

Pi3Ramas

OV v troch rozsahoch navrhol @JordiBinefa.

To všetko dáva k dispozícii Celkovo šestnástich domotike zásuvky rozdelená medzi dvoma Malina, a s rozšíriteľnosť o do 128 v prípade potreby PI 3 pobočky, Pretože to umožňuje využiť dva autobusy I2C obetovať možnosť pomocou konektora na PiCam.

Pripojiť tri pobočky pi, Sme musia zvárať šesť zodpovedá druhej bus piny I2C que no vienen soldados de fábrica, v súčasnej dobe Jordi Aktívne pracuje na novú verziu jeho Malinová PI b + a Malinová PI modely 2.

DIGITÁLNY FOTOAPARÁT OLYMPUSMôžeme pomôcť zvárať kolíkov, ktoré držia dva prúžky, pričom mikiny, ale Musíme uistiť, sú viac zladené nás čo najskôr po celú dobu pred spájkovaním je.

Teraz môžeme pripojiť PI troch vetiev na Malina Predtým editovali izolovanie dva taniere, para lo que Jordi Používať separátory takéto plastov.

Pi z troch vetiev a plastové index delič konektor P3.

set05_08_v02_P2P3P4

Schémy konektora P3, ktoré @JordiBinefa.

Uskutočniť spojenie s Doska relé adaptéra, Sme sa ohýbať, piny relé Rady Chcem sa pripojiť k pi troch vetiev, pomáha nám nejaké kliešte; na nasledujúcom obrázku môžete vidieť konečný výsledok.

V závislosti od polohy špendlíky VCC a GND naše relé, Umiestnime to skokan relé v jednom module, alebo inej pozície, investovať ich; treba mať stále na pamäti, že Doska relé musí byť napájané USB.

IN1 IN2 IN3 IN4 VCC GND

IN1 IN2 IN3 IN4 GND, VCC

Teraz sme sa spojiť naše relé výstupov osem dosku adaptéra relé, a je v PI troch vetiev; treba poznamenať, že Tento modul je kompatibilný so štyrmi a osem výstup relé.

Potom môžeme vidieť tabuľku spojenia medzi Relé modul, na PI troch vetiev, a Malinová PI.

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

Teraz ste pripravení pripojiť doska relé optoacoplados priamo na GPIO na strane druhej Malina, na obrázku nižšie môžete vidieť konečný výsledok.

Spojenie medzi GPIO z našich Malina budú rovnaké ako v Predchádzajúci článok, Avšak v tomto prípade som pridal všetky pripojenia tabuľky.

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

Spustiť skripty v Pythone de la web que veremos mas abajo, primero tenemos que dar permisos al usuario www-data Je používateľ na webovom serveri; za čo Najprv sme sa nainštaluje apache web server, ako sme videli v tomto predchádzajúcom článku y escribiremos sudo visudo v termináli a na koniec súboru Pridáme na www-data ako sudoer, konečný výsledok ako je uvedené nižšie.

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

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

Pre všetkých šestnástich GPIO kolíky zamestnancov v tejto praxi, Musíme vytvoriť podadresár, a dos scripts en Python; jednu, obrátiť na, a ďalšie zase relé, Tu je príklad s 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)

V každom Malinová PI Umiestnime vaše Šestnásť skripty Zapnutie relé pripojené k piny zamestnancov v každom, nájdete v predchádzajúcej tabuľke; na skripty zodpovedá Malina pripojený priamo z GPIO relé, doska bude umiestniť do adresára /Domov/pi/relé/gpio.

Vytvoriť hierarchiu priečinkov a podpriečinkov, a kopírovanie súborov naprogramovaný v Python Budeme používať tieto ďalšie dva skripty v Bash; prvý bude, že vykonať PI pripojený k PI troch vetiev.

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

Ostatné Šestnásť skripty zodpovedajúca kontrola Malina pripojený k PI troch vetiev Držíme im v adresári /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/*

V tejto dobe musíme vytvoriť Dvojica kľúčov tak, aby Malinová PI Jedná sa o stránku na spustenie skripty pripojené k PI troch vetiev vzdialene, ako používateľ, ktorý bude robiť musíte priradiť heslo, www-data aby sa prihlásiť a vytvoriť pár kľúčov vo vašom mene.

#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 vytvorení kľúčový pár verejného a súkromného, Skontrolujeme, že môžeme prístup k SSH bez zadania hesla; pre z rovnakého webe rôznych Malina relé v tej istej miestnej sieti, v tomto prípade Mám pripojený ich vďaka malej router zadarmo WRTNode.

WRTNode_ETHPotom vytvoríme našu domovskú stránku, ktorá bude obsahovať vstupné typ tlačidiel budete musieť stlačte tlačidlo Spustiť skripty v Python z webového rozhrania pomocou metódy post; 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
?>

Keď chcete kŕmiť ho všetko z jednej zásuvky, musí obísť všetky negatívne výstupy 220V Relé.

Pripojenie do siete Budeme sa nimi rovnakým spôsobom ako posledný záznam, uzavretý medzi plug a prepínač režimov Miniatúrny istič na uľahčenie sledovania praxe.

Relé enchufe diferencial

V ďalšej splátky na cenovo dostupné Domáce automatizácie Budeme učiť využívať dva autobusy I2C Vďaka PI troch vetiev, a budeme robiť dôkaz konceptu kontroly 128 vymeniteľné LED elektrických spotrebičov.

Ak by ste za mnou na Twitter, Facebook, Google +, LinkedIn, alebo zdieľať pomocou tlačidiel podľa Táto publikácia, Ak máte akékoľvek otázky, alebo návrhy prosím neváhajte komentár.

Pomôžte nám osloviť viac čitateľov Share on LinkedInShare on FacebookTweet about this on TwitterShare on Google+Email this to someone

4 myšlienky na"Malinová PI - uplatňovanie cenovo dostupné Domáce automatizácie systému [Časť II]

  1. Muy buenos posts, sigue así!!
    Otázku, 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, Vďaka za váš komentár.

      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.

Pridaj komentár