Малина PI – Реализация системы доступной домашней автоматизации [Часть III]

После нескольких месяцев я решил вернуться в Этот проект с которой я намерен создать Бесплатные домашней автоматизации системы, и экономически доступным; Это низкое потребление на базе микрокомпьютера, но кросс платформенная и Портативный для любого устройства с ОС GNU/Linux доступно с Порт GPIO.В Предыдущие должности Мы научились управлять модули реле optoacoplados с Малина PI по Баш, PHP, и Python; на этот раз Я была оптимизирована система автоматизации, и кстати я его к мигрировали Малина PI 3 распоряжаться Беспроводная связь, Но если вы хотите, вы можете использовать любой предыдущей модели.

В аппаратное обеспечение Он состоит из двух модулей по восьми реле Каждый, которые составляют в общей сложности Шестнадцать выходов для управления Приборы, Тали электрические, освещение; и без конца устройства что он быть преобразованы в этот маленький Малина PI 3, все, что вам нужно для Дом домовой Управление u обычные.

Схема автоматизации здания

Автоматический выключатель выключатель диаграмма домовой DIY.

Панели управления программируется в PHP, и оптимизация кода Предыдущая версия но предназначен для управления GPIO непосредственно через Баш которое значительно ускоряет процесс; необходимо, Поскольку мы будем служить это через страницу Wi-Fi.

FremooticsPI

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

Факт без дополнительных файлов для управления выходами порта GPIO из Малина по Python; Преобразует этот простой веб-страница, один файл, значение true, отправной точкой которого стал когда-нибудь в Полная автоматизация системы что я будет развиваться Вместе.

<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, и заменить в код числа PIN-КОД Сотрудники.

Малина 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
ЗАЗЕМЛЕНИЕ ЗАЗЕМЛЕНИЕ
Малина 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
ЗАЗЕМЛЕНИЕ ЗАЗЕМЛЕНИЕ

После подключения все Контакты из Малина для соответствующих VCC, ЗАЗЕМЛЕНИЕ, 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

В конце концов Мы кормить с реле 230В как мы видели в предыдущие статьи что делает мост между входом и другие положительные поляков, чтобы использовать единый Вилка, или переключатель Миниатюрный выключатель; Но если мы хотим подключить Шестнадцать устройства высокое потребление рекомендуется использовать два, или больше пробки.

relespuenteados

Схема моста между полюсами положительные релейного модуля.

Оставшиеся провода, которые соответствуют отрицательный полюс и к принимает Земля, Мы подключим их непосредственно на устройство хотите контролировать через Релейный модуль, в моем случае Подключите домовой DIY; Мы должны также иметь в виду, для безопасности наших реле должны иметь выхода 1A, Таким образом, для 16 мероприятия необходимо будет реле 16Кому.

Вилка схема реле

Схема подключения домовой DIY.

В следующем видео Вы можете видеть производительность этого Шестнадцать выходов системы проверив их, через демонстрацию с лампой низкой энергии; Не забывайте, если вам нравится Следуй за мной на YouTube чтобы не пропустить ни одного из неопубликованные видео Я буду публиковать.

Если вы хотите, вы можете следовать за мной Щебетать, Facebook, Google +, LinkedIn, Feedly, или поделиться ею с помощью кнопок под этой публикации, Если у вас есть какие-либо вопросы или предложения, пожалуйста, не стесняйтесь комментировать.

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

15 мысли о»Малина PI – Реализация системы доступной домашней автоматизации [Часть III]

  1. Peatonet вопрос, Я скопировал код как есть, и все работает корректно, Кроме этого идти назад кнопки, Включите shut вниз и наоборот.

    Спасибо вам за все блестящий блог.

    • Здравствуйте XuFLeS, Спасибо за ваш комментарий.

      Вероятно связано с реле для подключения к электросети; Было бы полезно проверить, если вы подключили его нормально открытый (НЕ) вместо нормально закрыт (NC).

      Скоро увидимся.

      • Я тестирование перед подключением контакты 230 V и красный светодиод реле включается на когда выключить пульс. Я слегка изменил код, чтобы отменить его и хорошо выглядеть, но сомневаюсь, что истина появились меня. Спасибо за ваш ответ.

  2. Хороший вклад. Я нуждается в нечто похожее на контроль орошения, но с условием: Если n выходы находятся в 1 Тогда GPIOx будет в 1. Кость GPIO = 0, если только, если все выходы = 0. Любая идея?? Когда выходы являются электромагнитные клапаны и GPIOx насос. Из уже большое спасибо.

    • Привет Edu,

      В зависимости от числа конечных результатов, Используйте один или несколько Малина PI; было бы просто, несколько следует рейтинга, что является наиболее оптимальным из консультируйтесь с информацией между устройствами.

      Спасибо за комментариями.

  3. Привет, Я заинтересован в этом, потому что я хотел бы контролировать некоторые огни иностранных с мобильного.
    Это будет первый раз вы пытались что-то с малиной.
    Но возникает сомнение меня при вызове этой должности “часть третья”.
    PHP-код с только что, как не хватает будет использовать что-нибудь из первой и второй частей?
    Я понимаю, что этот код будет index.php, где размещены iria?
    Большое спасибо!

    • Привет Paul,

      Только с этим кодом PHP может реализовать версию наиболее ' текущий’ Системы.

      В предыдущих учебниках и обзоры их Объясните, где находится файл (index.php), как давать правильные разрешения, и т.д.…

      Спасибо за комментарий.

      • Большое спасибо за ваш быстрый ответ.
        Подключил с одной пластиной из восьми реле.
        Но я передает вещь редко которой не найти решение.
        Давая ей кнопки веб, что я активировал GPIO идеально, давать их соответствующее напряжение и удерживая ее до этого выключения, но с другой стороны реле делает его “Нажмите кнопку” операции, но не включен. Звук, как будто реле activase и деактивации, Это так быстро, что тестер не обнаруживает каких-либо изменений.
        Для может быть связано??
        Спасибо.

        [object Window]!

        • Уже нашли ошибку.
          В PHP-коде, в отключить команду, Удалите код $a- исп(“Эхо 18 > /sys/класса/gpio/unexport”); , как вы в первый переключатель и теперь уже я работает.
          Теперь что делает, первый раз, включите малина; Это свет восемь светодиодов для средней интенсивности, нужно повернуть дальше и закрыл время и затем уже фары СИД хорошо и уже работает правильно.

          [object Window]!

          • Я чувствую быть настолько тяжелым, с так много комментариев, но это первый проект, который я с моим raspery и является последним и очень просто! Этот учебник.
            И мир, который открывается с этой командой inmeso!
            На веб-, не выходя из PHP, Вы могли видеть, что переключатель активен?
            Переключатели, может достигать обрабатываются с временной график и сроки?
            Истины,Я открыл новый мир, очень развлекательный и экономичный.

            Salu2 и спасибо!

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

            Я думаю, что в комментарии я объяснил, как проверить что переключатель активное чтение через PHP состояние GPIO.

            Для элемента управления путем программирования времени более легким использовать демон системы CRON для выполнения чего хотят, время в котором le Marquis.

            Спасибо вам большое за комментарий.

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

            Нумерация gpio чтения не соответствует нумерации портов gpio, Если вы хотите, чтобы я положил здесь таблицу эквивалентности для каждого порта с его нумерации читать, что я сделал.

            Единственное, что до сих пор не пойму, потому что 1 Он выключен и 0 Он находится на.
            и тем самым включить малина, Все выходы являются лицами без гражданства, оставляя выходы среднего напряжения и без работы asta, что их отключить два раза.

            Создание сайта сброс, что она делает, это дать приказ всех выходов, a “Сон” и снова, чтобы дать приказ погасить их всех, После этого процесса уже все функциональные.

            Может быть, что они проходят эти две вещи?

            [object Window]!

          • Привет Paul, Извините за задержку, но я в последнее время очень мало времени между работой и исследования.

            Во-первых, я хочу поблагодарить вас, что вы поделились ваш прогресс с другими читателями блога, Когда есть свободное время, у меня есть ожидающие продолжить этот раздел руководства по домашней автоматизации, простой и доступный, но на самом деле гордость за мой взгляд как вы сами следуют вперед с проектом и это происходит превращение каждого из них в вашей системе пользовательских.

            Связи, чтобы превратить эти реле путем присвоения значения логического low (0), и превратить их с высоким логическим значением (1) возможно, что необходимо подключение реле цепь 230В как обычно открытые вместо нормально закрытый, как я сказал читатель XuFLes первый комментарий этой статьи; Если вы попробуете это и проблема, не стесняйтесь комментировать и стараюсь думать о любой другой возможности.

            Чтобы не иметь, что сделать сброс выходов после каждого на Raspbian, Можно создать простой сценарий, экспортировать и настраивать их контакты, которые хотят начать систему, и запустите его, например, от rc.local.

          • Привет!
            Не прошло ничего на тот же день в ответ!
            Это логично принять вас время и особенно в эти даты.
            Зажигания и выключение, Он работает наоборот, Эти реле, которые они хорошо связаны.

            И это rc.local, чтобы избежать того перейти на страницу сброса, как бы.

            [object Window]!

  4. Хороший пешеходный, Я был чтении 3 учебники по части домашней автоматизации, но в ее программирования будет очень быстро для моего, Тема кажется супер интересно, но я думаю, что мы нужны детали в систему домашней автоматизации и получить входные данные от снаружи, ( кнопки, датчики света, и т.д.). Я хотел бы сотрудничать и думаю, что в части электрических вы можете помочь и изменить вы спросите помогает понять все части программирования. Моя электронная почта Tecnico.antono.Raya@Gmail.com

    Приветствие и поздравления на веб-

Оставь ответ