Малина PI – Прилагането на система за достъпни домашна автоматизация [Част III]

След няколко месеца са решили да се върнете към Този проект с която възнамерявам да се създаде Свободен домашно огнище автоматичен система, and икономически достъпни; Тази ниска консумация на микрокомпютър базирани, Но кръст-платформа and Преносим за всяко устройство с операционна система ГНУ/Линукс налични от порт GPIO.В предишни постове Ние научихме да контролират модули на релета optoacoplados с Малина PI от Баш, PHP, and питон; по този повод Аз имам оптимизирана система за автоматизация, и между другото аз съм да мигрират Малина PI 3 да се разпорежда с безжична връзка, Но ако желаете, можете да използвате предишния модел.

The хардуер Тя се състои от два модула от осем релета всеки, които съставляват общо Шестнадесет аут за контрол на уреди, Тали електрически, осветление; и без край на устройства че тя се превръща в този малък Малина PI 3, във всичко, което ви трябва за domotic къща u офис конвенционални.

Сграда автоматизация схема

Прекъсвач switch диаграма domotic DIY.

Контролният панел е програмиран в PHP, и е оптимизиране на кода на предишната версия но да се управляват GPIO директно чрез Баш която значително ускорява процеса; трябва да, Тъй като ние ще послужи това чрез страницата WiFi.

FremooticsPI

Автоматизация система уеб контролен панел.

Фактът, че без допълнителни файлове за управление на пристанището резултати GPIO на Малина от Питон; Преобразува този прост уеб страница, един файл, в истинска начална точка на която е станал някой ден в система за пълно домашна автоматизация че аз ще бъде разработването заедно.

<html>
<head>
<title>Panel de control - Sistema domotico libre</title>
</head>

<body>
<div align="center">
<br></br>

 <!--GPIO4/IN1-->
 <form action="" method="post">
 Interruptor 01 &nbsp;<input type="submit" name="encender4" value="Encender">
 <input type="submit" name="apagar4" value="Apagar">

 <!--GPIO17/IN2-->
 <form action="" method="post">
 &nbsp; Interruptor 02 &nbsp;<input type="submit" name="encender17" value="Encender">
 <input type="submit" name="apagar17" value="Apagar">

<br></br>

 <!--GPIO27/IN3-->
 <form action="" method="post">
 Interruptor 03 &nbsp;<input type="submit" name="encender27" value="Encender">
 <input type="submit" name="apagar27" value="Apagar">

 <!--GPIO22/IN4-->
 <form action="" method="post">
 &nbsp; Interruptor 04 &nbsp;<input type="submit" name="encender22" value="Encender">
 <input type="submit" name="apagar22" value="Apagar">

<br></br>

 <!--GPIO18/IN5-->
 <form action="" method="post">
 Interruptor 05 &nbsp;<input type="submit" name="encender18" value="Encender">
 <input type="submit" name="apagar18" value="Apagar">

 <!--GPIO23/IN6-->
 <form action="" method="post">
 &nbsp; Interruptor 06 &nbsp;<input type="submit" name="encender23" value="Encender">
 <input type="submit" name="apagar23" value="Apagar">

<br></br>

 <!--GPIO24/IN7-->
 <form action="" method="post">
 Interruptor 07 &nbsp;<input type="submit" name="encender24" value="Encender">
 <input type="submit" name="apagar24" value="Apagar">

 <!--GPIO25/IN8-->
 <form action="" method="post">
 &nbsp; Interruptor 08 &nbsp;<input type="submit" name="encender25" value="Encender">
 <input type="submit" name="apagar25" value="Apagar">

<br></br>

 <!--GPIO5/IN1-->
 <form action="" method="post">
 Interruptor 09 &nbsp;<input type="submit" name="encender5" value="Encender">
 <input type="submit" name="apagar5" value="Apagar">

 <!--GPIO6/IN2-->
 <form action="" method="post">
 &nbsp; Interruptor 10 &nbsp;<input type="submit" name="encender6" value="Encender">
 <input type="submit" name="apagar6" value="Apagar">

<br></br>

 <!--GPIO13/IN3-->
 <form action="" method="post">
 Interruptor 11&nbsp;<input type="submit" name="encender13" value="Encender">
 <input type="submit" name="apagar13" value="Apagar">

 <!--GPIO12/IN4-->
 <form action="" method="post">
 &nbsp; Interruptor 12 &nbsp;<input type="submit" name="encender12" value="Encender">
 <input type="submit" name="apagar12" value="Apagar">

<br></br>

 <!--GPIO19/IN5-->
 <form action="" method="post">
 Interruptor 13 &nbsp;<input type="submit" name="encender19" value="Encender">
 <input type="submit" name="apagar19" value="Apagar">

 <!--GPIO16/IN6-->
 <form action="" method="post">
 &nbsp; Interruptor 14 &nbsp;<input type="submit" name="encender16" value="Encender">
 <input type="submit" name="apagar16" value="Apagar">

<br></br>

 <!--GPIO20/IN7-->
 <form action="" method="post">
 Interruptor 15 &nbsp;<input type="submit" name="encender20" value="Encender">
 <input type="submit" name="apagar20" value="Apagar">

 <!--GPIO21/IN8-->
 <form action="" method="post">
 &nbsp; Interruptor 16 &nbsp;<input type="submit" name="encender21" value="Encender">
 <input type="submit" name="apagar21" value="Apagar">

</div>
</body>
</html>

<?php

// Funciones PHP del pin GPIO 4

 if ($_POST[encender4]) {
 $a- exec("echo 4 > /sys/class/gpio/export");
 $a- exec("echo out > /sys/class/gpio/gpio4/direction");
 $a- exec("echo 1 > /sys/class/gpio/gpio4/value");
 echo $a;
 }

 if ($_POST[apagar4]) {
 $a- exec("echo 0 > /sys/class/gpio/gpio4/value");
 echo $a;
 }

// Fin de las funciónes del pin GPIO 4

// Funciones PHP del pin GPIO 17

 if ($_POST[encender17]) {
 $a- exec("echo 17 > /sys/class/gpio/export");
 $a- exec("echo out > /sys/class/gpio/gpio17/direction");
 $a- exec("echo 1 > /sys/class/gpio/gpio17/value");
 echo $a;
 }

 if ($_POST[apagar17]) {
 $a- exec("sudo echo 0 > /sys/class/gpio/gpio17/value");
 $a- exec("echo 17 > /sys/class/gpio/unexport");
 echo $a;
 }

// Fin de las funciónes del pin GPIO 17

// Funciones PHP del pin GPIO 27

 if ($_POST[encender27]) {
 $a- exec("echo 27 > /sys/class/gpio/export");
 $a- exec("echo out > /sys/class/gpio/gpio27/direction");
 $a- exec("echo 1 > /sys/class/gpio/gpio27/value");
 echo $a;
 }

 if ($_POST[apagar27]) {
 $a- exec("sudo echo 0 > /sys/class/gpio/gpio27/value");
 $a- exec("echo 27 > /sys/class/gpio/unexport");
 echo $a;
 }

// Fin de las funciónes del pin GPIO 27

// Funciones PHP del pin GPIO 22

 if ($_POST[encender22]) {
 $a- exec("echo 22 > /sys/class/gpio/export");
 $a- exec("echo out > /sys/class/gpio/gpio22/direction");
 $a- exec("echo 1 > /sys/class/gpio/gpio22/value");
 echo $a;
 }

 if ($_POST[apagar22]) {
 $a- exec("sudo echo 0 > /sys/class/gpio/gpio22/value");
 $a- exec("echo 22 > /sys/class/gpio/unexport");
 echo $a;
 }

// Fin de las funciónes del pin GPIO 22

// Funciones PHP del pin GPIO 18

 if ($_POST[encender18]) {
 $a- exec("echo 18 > /sys/class/gpio/export");
 $a- exec("echo out > /sys/class/gpio/gpio18/direction");
 $a- exec("echo 1 > /sys/class/gpio/gpio18/value");
 echo $a;
 }

 if ($_POST[apagar18]) {
 $a- exec("sudo echo 0 > /sys/class/gpio/gpio18/value");
 $a- exec("echo 18 > /sys/class/gpio/unexport");
 echo $a;
 }

// Fin de las funciónes del pin GPIO 18

// Funciones PHP del pin GPIO 23

 if ($_POST[encender23]) {
 $a- exec("echo 23 > /sys/class/gpio/export");
 $a- exec("echo out > /sys/class/gpio/gpio23/direction");
 $a- exec("echo 1 > /sys/class/gpio/gpio23/value");
 echo $a;
 }

 if ($_POST[apagar23]) {
 $a- exec("sudo echo 0 > /sys/class/gpio/gpio23/value");
 $a- exec("echo 23 > /sys/class/gpio/unexport");
 echo $a;
 }

// Fin de las funciónes del pin GPIO 23

// Funciones PHP del pin GPIO 24

 if ($_POST[encender24]) {
 $a- exec("echo 24 > /sys/class/gpio/export");
 $a- exec("echo out > /sys/class/gpio/gpio24/direction");
 $a- exec("echo 1 > /sys/class/gpio/gpio24/value");
 echo $a;
 }

 if ($_POST[apagar24]) {
 $a- exec("sudo echo 0 > /sys/class/gpio/gpio24/value");
 $a- exec("echo 24 > /sys/class/gpio/unexport");
 echo $a;
 }

// Fin de las funciónes del pin GPIO 24

// Funciones PHP del pin GPIO 25

 if ($_POST[encender25]) {
 $a- exec("echo 25 > /sys/class/gpio/export");
 $a- exec("echo out > /sys/class/gpio/gpio25/direction");
 $a- exec("echo 1 > /sys/class/gpio/gpio25/value");
 echo $a;
 }

 if ($_POST[apagar25]) {
 $a- exec("sudo echo 0 > /sys/class/gpio/gpio25/value");
 $a- exec("echo 25 > /sys/class/gpio/unexport");
 echo $a;
 }

// Fin de las funciónes del pin GPIO 25

// Funciones PHP del pin GPIO 5

 if ($_POST[encender5]) {
 $a- exec("echo 5 > /sys/class/gpio/export");
 $a- exec("echo out > /sys/class/gpio/gpio5/direction");
 $a- exec("echo 1 > /sys/class/gpio/gpio5/value");
 echo $a;
 }

 if ($_POST[apagar5]) {
 $a- exec("sudo echo 0 > /sys/class/gpio/gpio5/value");
 $a- exec("echo 5 > /sys/class/gpio/unexport");
 echo $a;
 }

// Fin de las funciónes del pin GPIO 5

// Funciones PHP del pin GPIO 6

 if ($_POST[encender6]) {
 $a- exec("echo 6 > /sys/class/gpio/export");
 $a- exec("echo out > /sys/class/gpio/gpio6/direction");
 $a- exec("echo 1 > /sys/class/gpio/gpio6/value");
 echo $a;
 }

 if ($_POST[apagar6]) {
 $a- exec("sudo echo 0 > /sys/class/gpio/gpio6/value");
 $a- exec("echo 6 > /sys/class/gpio/unexport");
 echo $a;
 }

// Fin de las funciónes del pin GPIO 6

// Funciones PHP del pin GPIO 13

 if ($_POST[encender13]) {
 $a- exec("echo 13 > /sys/class/gpio/export");
 $a- exec("echo out > /sys/class/gpio/gpio13/direction");
 $a- exec("echo 1 > /sys/class/gpio/gpio13/value");
 echo $a;
 }

 if ($_POST[apagar13]) {
 $a- exec("sudo echo 0 > /sys/class/gpio/gpio13/value");
 $a- exec("echo 13 > /sys/class/gpio/unexport");
 echo $a;
 }

// Fin de las funciónes del pin GPIO 13

// Funciones PHP del pin GPIO 12

 if ($_POST[encender12]) {
 $a- exec("echo 12 > /sys/class/gpio/export");
 $a- exec("echo out > /sys/class/gpio/gpio12/direction");
 $a- exec("echo 1 > /sys/class/gpio/gpio12/value");
 echo $a;
 }

 if ($_POST[apagar12]) {
 $a- exec("sudo echo 0 > /sys/class/gpio/gpio12/value");
 $a- exec("echo 12 > /sys/class/gpio/unexport");
 echo $a;
 }

// Fin de las funciónes del pin GPIO 12

// Funciones PHP del pin GPIO 19

 if ($_POST[encender19]) {
 $a- exec("echo 19 > /sys/class/gpio/export");
 $a- exec("echo out > /sys/class/gpio/gpio19/direction");
 $a- exec("echo 1 > /sys/class/gpio/gpio19/value");
 echo $a;
 }

 if ($_POST[apagar19]) {
 $a- exec("sudo echo 0 > /sys/class/gpio/gpio19/value");
 $a- exec("echo 19 > /sys/class/gpio/unexport");
 echo $a;
 }

// Fin de las funciónes del pin GPIO 19

// Funciones PHP del pin GPIO 16

 if ($_POST[encender16]) {
 $a- exec("echo 16 > /sys/class/gpio/export");
 $a- exec("echo out > /sys/class/gpio/gpio16/direction");
 $a- exec("echo 1 > /sys/class/gpio/gpio16/value");
 echo $a;
 }

 if ($_POST[apagar16]) {
 $a- exec("sudo echo 0 > /sys/class/gpio/gpio16/value");
 $a- exec("echo 16 > /sys/class/gpio/unexport");
 echo $a;
 }

// Fin de las funciónes del pin GPIO 16

// Funciones PHP del pin GPIO 20

 if ($_POST[encender20]) {
 $a- exec("echo 20 > /sys/class/gpio/export");
 $a- exec("echo out > /sys/class/gpio/gpio20/direction");
 $a- exec("echo 1 > /sys/class/gpio/gpio20/value");
 echo $a;
 }

 if ($_POST[apagar20]) {
 $a- exec("sudo echo 0 > /sys/class/gpio/gpio20/value");
 $a- exec("echo 20 > /sys/class/gpio/unexport");
 echo $a;
 }

// Fin de las funciónes del pin GPIO 20

// Funciones PHP del pin GPIO 21

 if ($_POST[encender21]) {
 $a- exec("echo 21 > /sys/class/gpio/export");
 $a- exec("echo out > /sys/class/gpio/gpio21/direction");
 $a- exec("echo 1 > /sys/class/gpio/gpio21/value");
 echo $a;
 }

 if ($_POST[apagar21]) {
 $a- exec("sudo echo 0 > /sys/class/gpio/gpio21/value");
 $a- exec("echo 21 > /sys/class/gpio/unexport");
 echo $a;
 }

// Fin de las funciónes del pin GPIO 21

?>

За извършване на връзките между Малина и реле, Вие трябва да отидете до подножието на писмото следните таблици въз основа на схемата GPIO BCM; защото в противен случай ще трябва да модифицирате редовете във файла PHP, и да се замени в код номерата на ПИН служители.

Малина PI модел B + / 2/3 Релеен модул 1
+ 5V + 5V
GPIO 4
В 1
GPIO 17
В 2
GPIO 27 В 3
GPIO 22
В 4
GPIO 18 В 15
GPIO 23
IN1 6
GPIO 24
IN1 7
GPIO 25
IN1 8
GND GND
Малина PI модел B + / 2/3 Релеен модул 2
+ 5V + 5V
GPIO 5
В 1
GPIO 6
В 2
GPIO 13
В 3
GPIO 12
В 4
GPIO 19
IN1 5
GPIO 16
IN1 6
GPIO 20
IN1 7
GPIO 21
IN1 8
GND GND

След като всички свързани щифтове на Малина към съответните VCC, GND, e входове на Реле; остава само Копирайте файла PHP за да Малина PI, това, което използвам SCP Това ще ни позволи да го направи дистанционно.

usuario@maquina:~ $ scp index.php pi@192.168.1.*:/home/pi/
usuario@maquina:~ $ ssh pi@192.168.1.* -C sudo mv /home/pi/index.php /var/www/html/

Също така дистанционно Ние ще преместите файла в директорията на уеб сървъра, и ние ще определям както от собствениците SSH за да потребител и група www-данни; ще го добавите към Група gpio, и след това Ние рестартирате, за да приложите промените.

usuario@maquina:~ $ ssh pi@192.168.1.* -C sudo chown www-data:www-data /var/www/html/index.php
usuario@maquina:~ $ ssh pi@192.168.1.* -C sudo usermod -a -G gpio www-data
usuario@maquina:~ $ ssh pi@192.168.1.* -C sudo reboot

Най-сетне Храним с 230V реле както видяхме в Предишни статии вземане на мост между входа и на други положителни полюси, за да използвате един Щепсел, или комутатор миниатюрни прекъсвач; Но ако искаме да се свърже Шестнадесет устройства висока консумация е препоръчва да се използват два, или повече свещи.

relespuenteados

Схема на моста между положителните полюси на релеен модул.

Останалите проводници, които съответстват на отрицателния полюс и до отнема на Земята, Ние ще ги свърже директно към устройството искате да контролирате чрез Релеен модул, в моя случай Включете domotic DIY; Ние също трябва да имат предвид че за безопасността на нашите реле трябва да имат 1а излизане, така че за 16 резултатите ще трябва реле на 16ЗА ДА.

Щепсел реле диаграма

Диаграма plug domotic DIY.

В следните видео Можете да видите изпълнението на това Шестнадесет изходи система от тях контрол, чрез демонстрация с ниска енергия лампа; Ако ви харесва, не забравяйте Следвайте ме на YouTube да не пропуснете някоя от непубликувани видео Аз отивам да публикувате.

Ако ви харесва можете да следвате ме на Twitter, Facebook, Google +, LinkedIn, Feedly, или я споделете с бутоните под тази публикация, Ако имате някакви въпроси или предложения, моля не се колебайте да коментират.

Помогнете ни да достигнат до повече читатели Share on LinkedInShare on FacebookTweet about this on TwitterShare on Google+Email this to someone

16 мисли за"Малина PI – Прилагането на система за достъпни домашна автоматизация [Част III]

  1. Peatonet въпрос, Аз сте копирали кода както си е и всичко работи правилно, Освен това отидете назад бутони, включване на shut надолу и обратно.

    Благодаря ви за всички от брилянтна блог.

    • Здравейте XuFLeS, Gracias por ТУ comentario.

      Вероятно е да се направи с реле на захранващи връзки; Би било полезно да се провери дали сте свързани в нормално отворен (НЕ) вместо нормално затворен (NC).

      До скоро виждане.

      • Аз съм тестване преди да свържете контактите към 230 V и led червено на релето е включено при пулс на свой ред разстояние. Аз съм промяна малко код, за да промени това и изглежда добре, но истината се очертава ми се съмнявам. Благодаря ви х вашия отговор.

  2. Добър принос. Аз съм in нужда на нещо подобно на контрола на напояване, но с условие: Ако един от n изходи са в 1 тогава GPIOx ще бъде в 1. Костни GPIO = 0, ако само ако всички изходи = 0. Всяка идея?? Където n изходи са Електромагнитни вентили и GPIOx помпата. От вече ви благодаря.

    • Здравейте Обн,

      Според броя на изходите окончателен, Използвайте един или повече Малина PI; Той ще бъде проста, с няколко трябва да рейтинг, който е другото най-оптимално информация между устройства.

      Благодаря за коментара.

  3. Здравейте, Аз съм се интересуват от това, защото бих искал да контролира външни светлини от телефона.
    Тя ще бъде за първи път сте опитвали нещо с малини.
    Но съмнение ме възниква, когато се обаждате този пост “трета част”.
    PHP код със само, че като не липсва ще използва всичко от една и две части?
    Аз разбирам, че този код ще бъде index.php, където поставени iria?
    Благодаря много!

    • Здравей Павел,

      Само с този код PHP може да изпълнява версията най-"Текущи’ Система.

      В предишните ръководства и рецензии на тях обясни къде е файлът (index.PHP), като дава правилните разрешения, и т.н.…

      Благодаря за коментар.

      • Благодаря ви много за бързата си реакция.
        Вече са свързани с една плоча осем релета.
        Но рядко нещо се случва с мен, че не може да се намери решение.
        Даване на уеб бутоните, GPIO са активирани ме перфектно, даване си съответното напрежение и да бъдат пазени до това да го изключите, но от друга страна прави релето му “Щракнете върху” работи, но не преминат. Звукът е както ако релето е activase и е деактивиран, Тя е толкова бързо, че броячът не открива никаква промяна.
        Това може да се дължи на?
        Благодаря.

        Salu2!

        • Намерих бъг.
          В PHP код, в изключване команда, премахване на $a код- Exec(“ехо 18 > /sys/клас/gpio/отмяна на експортирането”); , както вие го има на първата ключа и сега тя работи.
          Сега какво прави, при първото включване на Малина; осем светодиоди за среден интензитет на светлината, Вие трябва да включите и да затвори веднъж и след това включване на светодиод добре и сега работи правилно.

          Salu2!

          • За съжаление да бъде толкова тежък, с толкова много коментари, но това е първият проект, който аз правя с моите raspery и това е невероятно и много, много прост! Е този урок.
            И светът, който се отваря с това оборудване е inmeso!
            В web, без да се оставят на PHP, Можете да видите този превключвател е активен?
            Ключове, може да достигне обработени с времеви график и времето?
            Наистина,Аз имам откри нов свят, много забавен и икономично.

            Salu2 и благодаря!

          • Здравейте Пол GC.

            Мисля, че в коментар обясних както проверете този превключвател е активен четене чрез PHP състояние на GPIO.

            Да контролират времето програмно-простото нещо е да се използва системата CRON демон да изпълни това, което искате, пъти в които le Marquis.

            Благодаря ви много за коментиране.

          • вече доста тента проект, за да прочетете за състоянието на gpio е достатъчно, за да използвате
            Exec ( “GPIO прочетете 29”, $status21 );
            Ако ($status21[0] == 0) {
            }
            и сложи скобите, които искате да покажете, ако е включен, или == статут на 1 за изключване.

            Номерирането на gpio четене не съответства на gpio порт номерирането, Ако искате да сложих тук таблицата на съответствията за всяко пристанище с неговата номерация на четене, направих.

            Единственото нещо, което все още не разбирам, е защото 1 Той е изключен and 0 Тя е на.
            и защо на Малина, всички изходи са лица без гражданство, оставяйки на средно напрежение и изходи не работи докато ги превърне два пъти.

            Създаване на сайт нулиране, Какво го прави е изпускат поръчката до всички изходи, a “сън” и отново да даде на поръчката да загасят всички тях, След този процес вече са всички функционални.

            Тя може да бъде, че те преминават тези две неща?

            Salu2!

          • Здравей Павел, Съжалявам за закъснението, но аз съм напоследък много малко време между работа и проучвания.

            Първо искам да благодаря ви че сте споделили своя напредък с останалите читатели на блога, Когато имам свободно време имам Чакащи продължи този раздел уроци по Начало автоматизация, лесна и достъпна, но това е наистина гордост за мен да видите, като следвате себе си напред с проекта и ще направи всеки един свой собствен потребителски система.

            Свързване на реле чрез присвояване на логическа ниска стойност (0), и да ги превърнат с логическа стойност високо (1) Това е възможно, че поради това сте свързали релето към 230V като обикновено отворен вместо нормално затворен кръг, както казах читателя XuFLes първия коментар на тази статия; Ако го опитате и проблемът продължава, Чувствайте се свободни да коментират и се опитайте да се мисли за никаква друга възможност.

            За да избегнете да направи изхода проучване след всяка Raspbian запалване, Можете да създадете прост скрипт, който експортирате и да зададете щифтове, които искате да рестартирате, и да го стартирате за пример от rc.local.

          • Здравейте!
            Нищо в този следобед в отговор!
            Логично е да ви отнеме време и особено в тези дати.
            Запалване и изключване, Тя работи по друг начин, Имам релета свързани.

            И какво от rc.local, да не се налага да отидете на страницата на нулиране, както бихте.

            Salu2!

  4. Добър пешеходец, Аз бях четене 3 уроци за домашна автоматизация части, но в неговите програмиране става много бързо за моя, Темата изглежда супер интересно, но аз мисля, че ние трябва подробно да система за пълна автоматизация на дома и е да получите информация от външната страна, ( бутони, светлинни сензори, и т.н.). Бих искал да си сътрудничат и да мисля за електрическата част може да помогне и в замяна да попитам помощ да разбере цялата програмиране. Моят имейл е Tecnico.antono.Raya@Gmail.com

    Поздрави и поздравления за уеб

  5. Здрасти, какво правиш, Аз съм заинтересована в проекта, но аз не виждам на github хранилище, Бих искал да си сътрудничат, Аз съм на път да ми купи Малина pi за домашна автоматизация базирани проекти, Въпреки, че аз не знам много за електроника… Ние се учим, Много поздрави.

Вашият коментар