Веб-контроль Raspberry Pi GPIO

Original author: drcurzon
  • Translation
  • Tutorial
Доброго времени суток! В этом посте я хочу показать, как управлять электроникой через Интернет используя Raspberry Pi. Выглядеть это будет примерно вот так.



Краткое описание:
  • Серверная программа, которая работает на Raspberry Pi, для того чтобы читать переменные
  • Базы данных MySQL для хранения переменных
  • Веб-страница Apache2, для того чтобы контролировать переменные




Шаг 1. База знаний



Это уже должно быть на вашем Raspberry Pi:
  • Веб-сервер Apache
  • PHP5
  • Сервер MySQL
  • phpMyAdmin


Если хотите узнать, как всё это настроить, вам сюда (инструкция на английском языке).

Шаг 2. Создание root аккаунта



Пропустите это, если у вас уже есть аккаунт, а если нет — продолжайте прочтение :)

Войдите в Raspberry Pi используя следующую команду:
sudo -i
passwd root

Теперь введите и подтвердите пароль для учётной записи.
Затем нужно закрыть SSH сессии и перезапустить его, войдя в систему как root.



Шаг 3. Настройка баз данных и phpMyAdmin



Это решение основано на базах данных MySQL, сейчас мы их и настроем.

Итак, для начала скачайте этот файл.

Залогиньтесь в панели управления phpMyAdmin и нажмите кнопку "Import" в верхнем меню.
Теперь, в пункте "File to Import", нажмите кнопку "Choose File" и выберите файл, который скачали до этого (gpio.sql).
И в завершении нажмите кнопку "Go" внизу страницы.
Это позволит создать все необходимые таблицы.




Теперь вам нужно добавить нового пользователя в базы данных используя phpMyAdmin. Для того чтобы это сделать, вам следует:
  • Кликнуть на "Users" вверху страницы.
  • Теперь жмите на ссылку "Add User".
  • В поле "User name" введите нужное вам имя пользователя. У ввёл "gpio".
  • В поле "Host" введите "localhost".
  • Затем в двух полях введите подходящие пароли. (Без пробелов, переносов или специальных символов). Я ввёл "pr03ND2".
  • Все остальное остальное оставьте по умолчанию, а затем нажмите кнопку "Add User" кнопку в правом нижнем углу.




В заключительной части этого шага нужно дать пользователю нужные привилегии.
  • Нажмите на кнопку "Users" в верхнем меню, затем пролистывайте вниз до тех пор, пока вы не увидете только что добавленного вами пользователя в таблице "Users Overview".
  • Напротив имени пользователя нажмите на ссылку "Edit Privileges".
  • Листайте внизу к пункту "Database-specific privileges" и выберите "gpio" из выпадающего списка, нажмите кнопку "Go".
  • Отметьте ВСЕ флажки и нажмите кнопку "Go" слева снизу.






Шаг 4. Shell Script



Это та часть, которая запускает проверку значений в базе данных MySQL на Raspberry Pi.
Этот сценарий довольно прост, но требует настройки.

Сперва скачайте скрипт, введя следующие команды (на Raspberry Pi):
  • sudo -i и нажмите Return / Enter
  • wget raspberrypi-gpio.googlecode.com/files/GPIOServer.sh и нажмите Return / Enter


После того, как он это скачает, введите
  • chmod +x GPIOServer.sh и нажмите Return / Enter
  • nano GPIOServer.sh и нажмите Return / Enter

Это позволит вам изменить сценарий.



Вы должны изменить следующие переменные в начале файла:
  • mysqlusername="ЗДЕСЬ ИМЯ ПОЛЬЗОВАТЕЛЯ"
  • mysqlpassword="ЗДЕСЬ ПАРОЛЬ"

Их нужно изменить на имя пользователя и пароль, которые вы создавали ранее в phpMyAdmin.



После того как всё изменили, удерживайте клавишу Ctrl и нажмите X, затем отпустите Ctrl и нажмите Y. Нажмите Return / Enter.

Шаг 5. Настройка веб-страницы



Финальный шаг, перед тем как вы сможете использовать это, — настройка веб-страницы.

Для этого, напишите следующие команды, убедившись, что вы залогинены (если нет — напечатайте sudo -i).:
  • wget raspberrypi-gpio.googlecode.com/files/control.php и нажмите Return / Enter
  • wget raspberrypi-gpio.googlecode.com/files/off.jpg и нажмите Return / Enter
  • wget raspberrypi-gpio.googlecode.com/files/on.jpg и нажмите Return / Enter




Когда они скачаются, напишите вот это:
  • mv control.php /var/www/control.php и нажмите Return / Enter.
  • chmod 755 /var/www/control.php и нажмите Return / Enter.
  • mv off.jpg /var/www/off.jpg и нажмитеReturn / Enter.
  • chmod 755 /var/www/off.jpg и нажмите Return / Enter.
  • mv on.jpg /var/www/on.jpg и нажмите Return / Enter.
  • chmod 755 /var/www/on.jpg и нажмите Return / Enter.




Теперь вам нужно изменить пару переменных перед использованием файла, поэтому напишите nano /var/www/control.php и нажмите Return / Enter.

Измените следующие переменные:
  • $MySQLUsername = "ЗДЕСЬ ИМЯ ПОЛЬЗОВАТЕЛЯ";
  • $MySQLPassword = "ЗДЕСЬ ПАРОЛЬ";




Сейчас через браузер зайдите на страницу control.php (у меня raspberryPi/control.php, где raspberryPi — имя хоста.)

Там потребуется ввести следующие данные:
Имя пользователя: admin
Пароль: gpio



Я рекомендую нажать на ссылку «Change Password» сверху страницы и сменить пароль по очевидным причинам.




Шаг 6. Использование



Чтобы запустить программы GPIO, сделайте следующее:
Начните SSH сессию на Raspberry Pi и залогиньтесь как root, затем напечатайте ./GPIOServer.sh и нажмите Return / Enter.

Он попросит ввести время ожидания, оно будет зависеть от потребностей ваших приложений. Но, чем короче время ожидания, тем больше ресурсов сценарий будет использовать (я обычно использую 5).



Готово! Теперь войдите в панель управления (http://ИМЯ ХОСТА/control.php) и наслаждайтесь!

Для безопасности следует удалить root аккаунт.

Similar posts

Ads
AdBlock has stolen the banner, but banners are not teeth — they will be back

More

Comments 11

    +7
    Мне кажется, MySQL + MySQLAdmin для этих целей уж очень монстраузно. Если уж нужна база данных, можно заюзать какую нибудь sqlite3. Да и зачем здесь база данных вообще? Читать/писать в GPIO напрямую из PHP гораздо проще.
      +3
      Да вообще можно на том же баше сразу же веб-сервер сделать. Либо его в режиме cgi к какому-нибудь lighttpd подключить. В последнем можно легко и просто, в одну строчку http-пароль на доступ сделать.
        0
        Кнопки переключать да, но можно температуру, влажность и т.д. сохранять.
        +2
        Сначала не увидел, что это перевод.
        Пойду отпишусь в топике автора.
        Действие setPassword не требует текущего пароля? Привет, CSRF.
        Да и как все другие действия. Советуем знакомым поставить эту панель и щелкаем у них лампочками.

        upd: без регистрации коммент не оставить, а жаль.
          +1
          Непонятно зачем вообще root-аккаунт создавался. sudo -s же.

          Скриншоты лучше бы в PNG.
            +1
            Мегамонструозно для такой наипростейшей задачи.
              0
              А еще можно твиттер бутстрап какой прикрутить, если есть возможность, всяко посимпатявее будет.
                0
                Ага… поедем на Белазе, там где можно проехать на фольцвагене.
                Что за мода прикручивать монструозные библиотеки ради того что бы использовать 1% их потенциала?
                  0
                  На перспективу.
                0
                Инструкция по установке более легкого варианта
                dxing.ru/images/fbfiles/files/webiopi.pdf
                  0
                  Подскажите, как сделать так, чтобы после перезагрузки Raspberry, этот скрипт запускался автоматически, а то он работает только до тех пор, пока активна сессия SSH root'a.
                  Пробовал добавлять запуск sh скрипта в /etc/rc.local, не работает. Проверил возможность запуска его через sudo, тоже не получается, много ошибок выдает связанных с правами доступа (при этом, на сам скрипт установлен владелец и группа root|root, и права доступа 777). Запускается только от пользователя root, таким образом система функционирует только тогда, когда рядом стоит комп с запущенным putty :(
                  Извините за ламерский вопрос, но правда уже весь интернет перекопал — не нашел ответа, а интуиция подсказывает что там все просто… Что я делаю не так?

                  Only users with full accounts can post comments. Log in, please.