Arduino Yún: азы. Основы построения монитора умного дома.

Тема в разделе "Глядите, что я сделал", создана пользователем ИгорьК, 11 сен 2014.

  1. ИгорьК

    ИгорьК Гуру

    UPD: Дальнейшее развитие темы здесь: http://forum.amperka.ru/threads/esp8266-raspberry-pi-2-азы-построения-управления-умным-домом.5043/

    Эта тема больше не поддерживается - поддерживается та, что приведена по ссылке выше. Причину смотреть здесь.

    Как обычно, сначала видео. На нем сервер на Arduino Yún показывает температуру (analogRead пустой ноги Ардуинки) и состояние светодиода на ноге 13.
    Температура показывается в режиме реального времени, видим что цифра постоянно обновляется. Светодиодом идет управление через веб-интерфейс.



    Пример реального применения Arduino Yun смотрим здесь.

    Хочу в общих чертах рассказать об опыте общения с этой, мне кажется, незаслуженно обойденной вниманием платой.

    Первый вопрос - почему не малина? Все ниже сказанное, лишь ИМХО.

    Малина известна давно, но мне показалась очень специфичной вещью: недокомпьютер но переардуино.
    Единственно полезной в домашнем хозяйстве поделкой на малине , которая мне попалась на глаза, был сетевой радиоприемник, но глядя на то, как его надо "пилить" энтузиазм не появился.
    В общем, в домашних самоделках вполне хватало Ардуино, поскольку суть этих самоделок всегда приблизительно одна: что-то произошло на входе -> по некоторому алгоритму сработал выход. Ардуино имеет широкую гамму дополнительных плат и библиотек на все случаи жизни.
    Следующий этап автоматизации привел к логическому выводу о необходимости объединения самостоятельных элементов "умного дома(?)" в одно место. А место это потребовало представленности в сети.
    Вот здесь то и пришла мысль о недокомпьютере Малине. Посчитал деньги. Увидел, что есть варианты. Решился на Yun.
    Кто хочет более глубокого сравнения малины с Yún - загляните сюда. В целом, сравнение не в пользу Yún, однако у этой штуки все таки есть ряд удобств, а именно.
    - Yún работает "из коробки", где уже установлена ОС OpenWrt с веб-сервером. То есть не нужны никакие пляски с мышками, клавиатурами, мониторами, SD-картами с операционной системой.
    - Налажены "железные" связи с Ардуино, подключение к сети - элементарное, причем и через wi-fi, что само по себе отдельное удобство.
    - Простое удобство - ардуинка и Линукс процессор питается от одного источника питания.
    - Все это, включая Ардуинную часть, программируется по сетке.
    (А при легких ударах в бубен Ардуинку можно программировать и через интернет!).
    Линуксная часть, естественно, программируется только по сети.
    Мы имеем процессор, в два раза менее мощный (по частоте) чем на Малине. Но одновременно мы имеем операционку в самом контроллере, а не на карточке. Важно ли ДЛЯ НАШЕГО СЛУЧАЯ это отставание в скорости? Полагаю нет.

    И, наконец, для тех, кто "не в теме" на тему Линукса, типа меня, разницы между Малиной и Yún - никакой.

    Есть одно различие, которое не устранимо в Yún - отсутствие GCC, и, следовательно, возможности программировать на языке С(С++). Важно ли это? Для нашего случая тоже - нет. Потому что нам будут нужны, web-сервер, PHP, MySql, jQuery, Python - а они есть.
    Кто не знает что это за зверинец - не отчаивайтесь. Я тоже не знаю точно.

    UPD. 10/11/2014. GCC есть! А инструкции по установке смотреть здесь, здесь и здесь.

    Итого. Цель этих постов - пробить окошко от Ардуино в среду Линукс. Небольшое окошко. Чтобы вы потом расширили его сами по своему размеру, опыту и терпению.
    До покупки Yún этого опыта у меня не было. Опишу свои начальные шаги, которые обычно и являются самыми трудными: главное знать куда идти, а остальное подскажет Гугл ;)
    Кстати, вот как, ИМХО, должна выглядеть правильная Arduino Yun. Модуль nRF24L01+ на ней и больше ничего. Плата собирает и коммутирует информацию с различных устройств в обе стороны. И все. Одной такой штуковины вполне хватит для дома. Больше не надо. А опыт работы с ней 100% пригодится для дальнейших экспериментов с малиной.
    000234.jpg
    (Да можно к ней все что угодно приколхозить, nRF24L01+ - это минимум :))
    Вот, кстати, реально работающий на Yun прототип отражения температуры в сети: через nRF24L01+ идет прием показаний датчика DS18B20 с другой Ардуино и отражение на странице.
    Адрес, конечно, я вам не дам, только скриншот :)
    0023238.jpg
     
    Последнее редактирование: 3 дек 2015
    acos нравится это.
  2. ИгорьК

    ИгорьК Гуру

    До Yun все злодейства с Ардуиной проводились в среде CodeBlocks. Yun она, к сожалению, не поддерживает. Но возвращаться к родной IDE очень не хотелось, и нашелся вариант.

    В среде Ардуино, в настройках, есть опция "Использовать внешний редактор". Если ее выбрать, экран среды Ардуино становится серым и ничего печатать уже нельзя. Длительное время эта опция ставила меня в тупик. Оказалось все просто.
    Снимаем флажок и обычным путем создаем скетч с необходимым нам названием. Сохраняем. Ставим флажок, экран становится серым.
    Тот же файл открываем внешним редактором (не закрывая в Ардуино), тем же CodeBlocks, и работаем с ним.
    После внесения изменений - сохраняем, переходим в среду Ардуино и нажимаем значок проверки или загрузки в плату. IDE Ардуино перезагружает файл и действует в соответствии с указаниями.
    Не очень удобно, конечно, но все зависит от "любви" к родной IDE.
     
    Последнее редактирование: 12 сен 2014
  3. ИгорьК

    ИгорьК Гуру

    Нулевое, что можно сделать в Yun, - расширить ее память путем добавления микро-СД карточки. После этого расширения все вновь добавляемые пакеты будут устанавливаться на карточку. На нее же будут помещаться файлы вашего веб-сервера.

    Нулевое, потому что можно этого и не делать. Внутренней памяти для заявленных нами целей ей и так хватит, но вот потом - кто знает. В общей сложности в Yun памяти 16 ГБ, 1/3 занято операционкой, ну пусть еще пакетами 2-3 займем.
    Заметим, что для Малины применяют карты 4-8 гб и все прекрасно работает.

    В общем, я сделал. Делать или нет вам - не знаю.
    Руководство на эту тему находится здесь. Там все предельно ясно, кроме одного забавного момента ;)
    Когда операция прошла успешно, нужно нажать кнопку сброса, не отключая сериал-монитора компьютера. Тогда Yun перезагрузится с отражением в сериале лога свой загрузки, после чего можно будет через потребовать отчет о проделанной работе путем набора и отправки команды df-h//mnt/sda1
    Прикол заключается в том, что кнопок сброса в Yun три. Нажмете не ту - отчета не получите, хотя, конечно, ничего страшного не случится (этот отчет получим затем по-другому). Какую точно кнопку нажимать и где искать - смотреть на картинке.
    [​IMG]
     
    Последнее редактирование: 15 сен 2014
  4. ИгорьК

    ИгорьК Гуру

    Ну а первое - завести плату в сетку. Инструкция по этому действу находится здесь.
    Общий смысл в том, что будучи включенной впервые, Yun создает свою собственную сетку wi-fi, с соответствующим названием, к которой можно подключиться с компьютера, и заглянуть в Yun путем набора адреса 192.168.240.1 в браузере и набрав пароль [arduino].
    Находясь внутри, выбираете новое название для платы, устанавливаете свой пароль доступа, выбираете свою w-fi сетку, вводите ее пароль сохраняетесь и после чего плата сама перегружается. Поскольку Yun выключает свою сеть, ваш компьютер автоматом вернется в домашнюю сеть.
    Теперь надо найти Yun и запомнить ее адрес в сети. Делается это так.
    Убедились, что через некоторое время на плате зажглась и светится белая лампочка - зашла в сеть. Запускаете среду Ардуино и открываете вкладку Port. Вот там и будет описание адреса и нового названия вашей платы. Запоминаем.

    UPD. А можно поиграть вот этой очень полезной утилитой.

    А затем две опциональные, но очень важные вещи.
    1. Следует задать постоянный IP адрес для платы в вашем роутере. Очень полезное дело, иначе периодически, хотя и не часто, придется его "ловить" для связи с платой. Не знаете как - расспросите Гугл поиском "установка статического ip адреса на роутере" + [название вашего роутера]. Никогда не делали? Не стесняемся. Это еще цветочки.
    2. К этому надо добавить и переадресацию портов в роутере. Действуем также через Гугл. Переадресация портов позволит смотреть вашу Yun через интернет, а не только через локальную сеть, что является очень важным для управления домом вне дома. Побеждайте этот вопрос сами.

    В общем, плата в сети и можно с ней работать. Причем выбирать в настройках порта сетевой порт и грузить ее через сетку. При этом плата будет первый раз запрашивать пароль - не забудем.
    Ну а если забыли и вообще что-то пошло косяком?
    Возвращаем плату к заводским настройкам, путем удержания более 30 секунд кнопки Wi-Fi Reset. Плата как новая.
    А если держать эту кнопку от 5 до 30 секунд - плата сбрасывает только сетевые настройки и ее можно завести в другую сеть так как описано в этом посте сначала.

    На сайте и в IDE дано много примеров работы с Yun. Но все они страдают существенным (?) недостатком: нет примера системного взаимодействия Ардуино и Линукс частей.
    Поэтому все что есть официального вы рассмотрите сами, а здесь будем решать следующую задачу: создать прототип сайта, который в состоянии динамически отражать информацию с платы, а также передавать ей команды, что собственно и показано в первом посте.
    Кому это кажется простым - велкам сюда. Там красиво и сложно.

    Работа на вечер: установить программу WinSCP, PuTTy и Notepad++. Если решились на Yun - теперь это наши основные инструменты. (И для Малины, видимо, тоже.)
     
    Последнее редактирование: 19 мар 2015
  5. ИгорьК

    ИгорьК Гуру

    Продолжим подготовительные работы. Запускаем WinSCP заполняем первое окошко:
    Drawing00 1.png
    Нажимаем Save. Ставим галочку "Save Password", хотя и не рекомендуется, но кулхакеров по Yun пока еще не много - бояться не стоит. Потом это избавит вас от необходимости вводить пароль и в терминальном соединении чере PuTTy.
    После чего нажимаем кнопку Login.
    Дальше пройдет диалог на тему, что там проблемы с сертификатами - соглашаемся на все условия, и мы вошли в Yun. Увидим типа такого:
    12424.jpg
    Продолжим настройку. Options -> Preferences -> Applications ставим галку в поле "Remember session password and pass it to PuTTY". "Ок".
    Нажимаем на кнопочку в верхнем ряду, где изображены два монитора и молния, и через некоторое время у нас должно появиться вот такое окно:
    Drawing2.png
    Ок, шаг сделан.
    Если окно не открылось - у вас проблемы с путями к файлу PuTTy. Исправляем их в той вкладке, что было указано ранее.
    А если все нормально, набираем команду df -h и видим свою раскладку по памяти в Yun:
    Drawing3.png
    И последнее - в WinSCP заходим в Опции, вкладка Editors и добавляем путь к исполняемому файлу Notepad++ и поднимаем его наверх. Выбираем Default editor encoding - UTF-8.
    234.jpg
    Заходим в программу Notepad++, Опции -> Настройки -> Новый документ выбираем кодировку UTF-8 без метки BOM.
    45223.jpg
    Подготовительные работы для связи с Yun закончены!
    Продолжение...
     
    Последнее редактирование: 15 сен 2014
  6. ИгорьК

    ИгорьК Гуру

    Теперь пора зарядить Yun. Для этого установим LAMP. Это такой комплект web-сервера, php и MySql.
    Как это делается. (Не боимся! В случае ошибки держим больше 30 секунд кнопу сброса Wi-Fi и начинаем все заново. Хоть сто раз!)
    Заходим через WinSCP в нашу плату, затем жмем кнопку PuTTY (та что два монитора и молния между ними).
    Начинаем передавать команды Yun путем копирования их в буфер обмена с сайта, и вставления их в PuTTY терминал правой кнопкой мыши и подтверждения ввода (ох и непривычно сначала). Это все что здесь выделено красным цветом.
    Если все происходит правильно - то в терминале в итоге НИЧЕГО НЕ ПРОИСХОДИТ. К этому тоже придется привыкнуть. Во многих случаях передав команду вы не получите никакого подтверждения - значит все идет как надо. Иногда вы увидите некоторые действия. Главное, чтобы не выскакивало Error.
    Первое. Допиливаем web-сервер uHTTPd. То есть передаем плате все команды от секции
    opkg update
    opkg install uhttpd

    до секции включительно.
    /etc/init.d/uhttpd restart
    Теперь в корне нашей платы появилась папка /srv/www , где будут лежать наши файлы сервера, включая php и слушаться через 81 порт.
    Проверяем работу:
    echo "<P>Hello, this web server runs on OpenWrt!!</P>" > /srv/www/index.html
    А теперь заходим браузером по адресу Yun и 81 порту (http://192.168...:81/index.html)) и должны увидеть надпись: "Hello, this web server runs on OpenWrt!!"

    Второе. Устанавливаем PHP следующими командами:
    opkg update
    opkg install php5 php5-cgi
    opkg install zoneinfo-core
    opkg install zoneinfo-europe
    opkg install php5-mod-json
    opkg install php5-mod-hash
    opkg install php5-mod-session

    Третье. Конфигурируем uHTTPd. (лучше взять эти команды со страницы а не отсюда!)
    uci add_list uhttpd.llmp.interpreter=".php=/usr/bin/php-cgi"
    uci set uhttpd.llmp.index_page="index.html index.htm default.html default.htm index.php"
    uci commit uhttpd
    sed -i 's,doc_root.*,doc_root = "",g' /etc/php.ini
    sed -i 's,;short_open_tag = Off,short_open_tag = On,g' /etc/php.ini
    /etc/init.d/uhttpd restart

    Проверяем работу PHP:
    echo "<?php phpinfo(); ?>" > /srv/www/index.php
    Заходим по адресу http://192.168...:81/index.php) и видим много полезной информации, и кроме того сообщение об ошибке во временной зоне - исправим чуть позже.
    Четвертое. Устанавливаем MySql.
    Нет смысла переписывать всю секцию MySql. Последовательно вставляете и исполняете команды.
    Однако в конце будет необходимо править файл php.ini по адресу /etc/php.ini
    Как это делать лучше всего? Не так как предлагают на сайте, а через WinSCP. Прямо заходим в папку, щелкаем по файлу и, если вы все сделали ранее правильно, он откроется у вас в Notepad++. Внесли изменения - нажали кнопочку сохранения и исправленный файл сохранился в Yun.
    Выполняем все необходимые операции, а также заходим в секцию [Date] и раскомментируем и правим строку:
    date.timezone = "Europe/Moscow"
    ...или где вы, там, живете...
    Все, Yun подготовлена к работе с сервером, PHP и базой данных. Все что будет происходить дальше - это:
    - программирование Ардуино скетчами,
    - работа с базой данных через PuTTy,
    - загрузка через WinSCP файлов сервера в папку /srv/www.

    UPD: А еще нам потребуется Mosquitto. Смотреть здесь.
     
    Последнее редактирование: 4 сен 2015
    ALev нравится это.
  7. ИгорьК

    ИгорьК Гуру

    Разберемся с тем, что мы будем делать дальше. Вот картинка:
    Concept.png
    Скетч Ардуино подает команды системе Линукс на отправку в базу данных (MySql) информации о температуре и запрашивает из нее информацию о том, в каком состоянии должен находиться светодиод. Получив данные, действует в соответствии с ними.

    Веб-сервер показывает нам страничку index.html, которая отражает текущую ситуацию. На страничке внедрен код JavaScript (jQuery.js), который два раза в секунду обращается к страничке mysql.php, которая, в свою очередь, читает и отображает информацию из базы данных.

    Если на страничке пользователь нажимает на кнопку - команда передается другой страничке - click.php, которая пишет в базу данных информацию о необходимом состоянии светодиода. Ее, в свою очередь, считывает Arduino через Shell и управляет ногой 13. Одновременно информация возвращается на страницу через mysql.php.

    Все это выглядит запутанно, но скоро все станет ясно. Причем, помним, в нашу задачу не входит глубинное изучение MySql, PHP и JavaScript. Мы лишь собираем инструменты для управления домом. А их надо не так много: отобразить что есть и передать команду на изменение.
    Разберемся с каждым из этих элементов.
     
    Последнее редактирование: 23 сен 2014
    aivashchenko нравится это.
  8. ИгорьК

    ИгорьК Гуру

    Начнем с создания базы данных. Для освоения элементарных навыков обращаемся сюда. А именно сразу к главе 8. Там на пальцах все рассказано. (Все ознакомительные версии литературы, на которую я ссылаюсь, присутствуют в Интернете.)
    Табличка будет иметь следующие поля:
    id - уникальный ТАБЛИЧНЫЙ идентификатор записи;
    stuffName - как оно называется;
    stuffId - то же, что и название, но для использования в скетчах (назначение зарезервировано для Ваших будущих творений);
    arduStatus - число, описывающее состояние объекта, сюда Ардуино вносит свои данные, а мы их читаем;
    webStatus - число - цель, сюда вы из web-морды пишите свои пожелания.​
    Как это работает. Ардуино в строку, принадлежащую, например, лампочке, в поле arduStatus пишет цифру "1", и вы видите, что лампочка включена. В поле webStatus вы пишите цифру "0". Ардуино читает ее, выключает лампочку и в свое поле arduStatus записывает теперь "0". Прочитав его, вы узнаете что команда исполнена.
    Ну а если у вас строка принадлежит термометру, то Ардуино просто пишет данные в поле arduStatus, а вы их считываете.
    Вот что должно получиться:
    table02.jpg
     
    Последнее редактирование: 30 сен 2014
    aivashchenko нравится это.
  9. ИгорьК

    ИгорьК Гуру

    А как мы это получим?
    Заходим в PuTTy через WinSCP.
    Код (Text):
    mysql -pВАШПАРОЛЬбезПРОБЕЛА

    CREATE DATABASE home;

    USE home;

    CREATE TABLE homeStuff (
    id INT NOT NULL AUTO_INCREMENT,
    stuffName VARCHAR(15),
    stuffId INT,
    arduStatus INT,
    webStatus INT,
    PRIMARY KEY(id)
    );

    INSERT INTO
        homeStuff (stuffName, stuffId, arduStatus, webStatus )
    VALUES
        ("Switch", "100", "0", "0"),
        ("Thermo", "200", "268", "0");

    SELECT * FROM homeStuff;
    И теперь выполним команду
    GRANT ALL ON home.* TO 'user'@'localhost' IDENTIFIED BY 'pass';
    Эта команда создаст пользователя user с паролем pass. Этот товарищ потребуется нам в дальнейшем.
     
    Последнее редактирование: 30 сен 2014
  10. aivashchenko

    aivashchenko Нуб

    скажите а phpmyadmin запихнуть можно для удобства?
     
  11. ИгорьК

    ИгорьК Гуру

    Я не нашел такого. Не думаю что овчинка стоит выделки - не так много придется работать с базой, чтобы этот огород городить, вполне хватает командной строки создать простую табличку с несколькими строками.
     
  12. ИгорьК

    ИгорьК Гуру

    Пора написать скетч для Ардуино Yun. Вот он. Постарался объяснить все.
    Код (C):
    #include <Process.h>
    int inPin = A0;    // Нога типа измеряем температуру
    int outPin = 13;  // Управляем светодиодом
    int thermo;        // Здесь получается "температура"
    int lamp;          // Здесь узнаем что надо делать со светодиодом на ноге 13

    void setup() {
      Bridge.begin();  // Запускам Мост к Линуксу
                        // Делаем  13 ногу выходjм, чтобы светить
      pinMode(outPin, OUTPUT);

    }

    void loop()
    {
        // Тайная функция получения температуры
        thermo = analogRead(inPin);
        // Превращаем температуру в стринг
        const String temperature=String(thermo);

        // Запускаем процесс, который в свою очередь
        // запускает Shell команду Yun и вносит температуру в базу MySql
        Process mysql;
        mysql.runShellCommand("sh ~/mysql.sh "+temperature);

        // Узнаем из базы MySql что требуется сделать с 13 ногой
        lamp = getMySqlStatus();
        // Если там единица - зажечь диод
        if (lamp == 1) {
            digitalWrite(outPin, 1);
        }
        // А нет - погасить
        else {
            digitalWrite(outPin, 0);
        }
        // Пару секунд не мучить железяку - пусть подумает над своим поведением
        delay(2000);
    }
        // Функция вызывает Shell команду и возвращает знчение из таблицы MySql
    int getMySqlStatus(){
        Process lampstatus;
        lampstatus.runShellCommand("sh ~/lampstatus.sh");
        while(lampstatus.running());
        int lamp_status = lampstatus.parseInt();
        return lamp_status;
    }
     
    Строки
    mysql.runShellCommand("sh ~/mysql.sh "+temperature);
    lampstatus.runShellCommand("sh ~/lampstatus.sh");

    Вызывают shell команды Линукс с соответствующими названиями. О них мы поговорим позже.

    UPD 15.12.2014. Скетч ниже ничем не отличается от предыдущего, но работать будет устойчивее.

    Код (C):
    #include <Process.h>
    int inPin = A0;    // Нога типа измеряем температуру
    int outPin = 13;  // Управляем светодиодом
    int thermo;        // Здесь получается "температура"
    int lamp;          // Здесь узнаем что надо делать со светодиодом на ноге 13

    void setup() {
      Bridge.begin();  // Запускам Мост к Линуксу
                        // Делаем  13 ногу выходjм, чтобы светить
      pinMode(outPin, OUTPUT);

    }

    void loop()
    {
        // Тайная функция получения температуры
        thermo = analogRead(inPin);
     
        // Узнаем из базы MySql что требуется сделать с 13 ногой
        lamp = getMySqlStatus();
        // Если там единица - зажечь диод
        if (lamp == 1) {
            digitalWrite(outPin, 1);
        }
        // А нет - погасить
        else {
            digitalWrite(outPin, 0);
        }
        // Пару секунд не мучить железяку - пусть подумает над своим поведением
        delay(2000);
    }
        // Функция вызывает Shell команду и возвращает знчение из таблицы MySql
    int getMySqlStatus(){
        Process lampstatus;
        lampstatus.runShellCommand("sh ~/lampstatus.sh");
        while(lampstatus.running());
        int lamp_status = lampstatus.parseInt();
        return lamp_status;
    }

    void func_thermo(int){
        // Запускаем процесс, который в свою очередь
        // запускает Shell команду Yun и вносит температуру в базу MySql
        Process mysql;
        // Превращаем температуру в стринг
        const String tempNow=String(thermo);
        mysql.runShellCommand("sh ~/mysql.sh "+tempNow);
    }
     
     
    Последнее редактирование: 15 дек 2014
    aivashchenko и Catkaa нравится это.
  13. ИгорьК

    ИгорьК Гуру

    Следующий шаг - в директорию root при помощи программы WinSCP поместим три файла - lampstatus.sh, mysql.sh, restart_uhttpd.sh, которые в приложении. Выглядеть это должно вот так:
    winscp01.jpg
    Первые два файла - это файлы, к которым обращается скетч Ардуино, с целью получить или загрузить данные в базу home в таблицу homeStuff.
    А вот третий файл непосредственного отношения к нашему скетчу не имеет, но может оказаться очень полезным. Иногда сервер зависает. Делаем две вещи.
    Один раз: правая кнопка мыши - свойства - там где "Разрешения" напротив "Владелец" поставить галочку в "Х".
    Потом каждый раз как сервер ведет себя неправильно: правая кнопка мыши, Пользовательские команды, Выполнить.
     

    Вложения:

    • Files01.zip
      Размер файла:
      659 байт
      Просмотров:
      475
    Последнее редактирование: 13 окт 2014
    aivashchenko нравится это.
  14. ИгорьК

    ИгорьК Гуру

    А теперь идем в директорию /srv/www, кладем туда прилагаемые файлы, и должны получить такую картину:
    winscp03.jpg
    Если все до этого было сделано правильно, то по адресу http://192.168. ... . ...:81/ вы должны получить данные с вашего условного термометра, а при работе с соответствующими кнопками красный светодиод на ноге 13 должен включаться и выключаться.

    Не исключаю, что с первого раза это не получится. Почему? Потому что в таком большом повествовании я мог где-то ошибиться и что-то перепутать. А могли и вы не усмотреть.
    В любом случае, я показал лишь путь, по которому следует идти, а не написал пошаговое руководство.
    Смысла в пошаговом руководстве нет - у всех для решения разные задачи.
    Тот кто с нуля, как я, решит его пройти, должен самостоятельно освоить несколько вещей, которые в основной части не сложны.
    Сначала надо создать html страничку - смотрите на мой файл index.html. Для понимания азов вполне достаточно ресурса htmlbook.ru.
    Затем следует разобраться с тремя php файлами, к которым идет обращение с этой страницы. Ничего сложного в них нет. Эти файлы работают с базой данных. Ресурс для понимания - php.su.
    И последнее - в index.html включаются скрипты JQuery. Это безумно глубокая тема, но есть выход. Просто обратиться к книге Геннадия Самкова "jQuery. Сборник рецептов." Не вникая в суть работы с JavaScript при помощи этой книги можно найти пример решения любой вашей любительской задачи.
    Успехов!
     

    Вложения:

    • www.zip
      Размер файла:
      52,1 КБ
      Просмотров:
      542
    aivashchenko и acos нравится это.
  15. antonim

    antonim Нуб

    может кому-то пригодиться.
    Повторил эту красивую работу (огромное спасибо ИгорьК).

    в моем случае в файле "/srv/www/login.php" пришлось заменить строку $db_hostname = 'localhost';
    на строку $db_hostname = '127.0.0.1';
    не знаю почему но без этого БД не находилась (учтем что я полный чайник).
     
  16. ИгорьК

    ИгорьК Гуру

    Интересно, сколько России продано Arduino Yun. Две или три? :)
     
  17. antonim

    antonim Нуб

    Я покупал в России :cool:
    Вопрос по существу - почему может не моргать 13-я нога ?
    Дергаем ее через сайт - картинка на сайте меняется на зажженную лампу - в DB значение arduStatus меняется 0->1 - а светодиод на 13 ноге не реагирует. Значение webStatus не меняется.
    Может быть такое, что Вы выложили промежуточную версия скетча (пока не успеваю вникнуть до конца в код).
     
  18. ИгорьК

    ИгорьК Гуру

    Посмотрите сами, (1.) что пишет в базу click.php, (2.) что читает из базы файл lampstatus.sh и (3.) вызывается ли именно он из скетча Ардуино. В этой цепочке может быть ошибка.
    Коль скоро лампочка на страничке реагирует - запись в базу происходит успешно. Ну а дальше по цепочке. Будет время - проверю.
     
    antonim нравится это.
  19. ИгорьК

    ИгорьК Гуру

    Ошибка была в файле lampstatus.sh. Файлы заменил. В них неверно были указаны юзер и пароль для доступа к mysql.
     
    Последнее редактирование: 13 окт 2014
  20. antonim

    antonim Нуб

    да. я увидел. начал тестировать в PuTTy но не хватило времени пришлось прерваться.
    вообще не здорово у меня получилось с правами GRANT ALL ON home.* TO 'user'@'localhost' IDENTIFIED BY 'pass'; - не понимаю почему - Не могу войти в mysql под этим юзером, могу только под root. Буду читать.