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

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

  1. ИгорьК

    ИгорьК Гуру

    Понятия не имею. И веб сервер и работа с файлами гораздо лучше и проще организуется на Линукс части Yun. Ардуиновая часть нужна исключительно для связи с другими ардуинами, датчиками и т.п.
    Посмотрите - Вы в первом посте видите и веб-сервер и работу с файлами - это Линукс. А Ардуино - читает датчик и передает информацию Линуксу.
    Причем веб-сервер можно сделать не убогий, а нарисовать любой интерфейс, насколько креатива хватит.
    Лучше всего смысл Yun иллюстрирует картинка:
    BridgeInShort.png
    Исходя из нее, становится понятно что где лучше размещать. Для Ардуинки существует много библиотек работы со всяческим железом - там ему и место. Общение между двумя процессорами осуществляется достаточно медленным UARTом. Грузить его проталкиванием серьезных объемов информации не стоит. А вот web и SD надо заталкивать по Линукс - их место там.
     
    Последнее редактирование: 6 мар 2015
  2. asrahmanov

    asrahmanov Нуб

    ИгорьК : Спасибо за интересную статью, очень помогла в понимании озов работы с arduino.

    Подскажите пожалуйста возможно ли отправить несколько переменных обращаясь к sh
    Process mysql;
    mysql.runShellCommand("sh ~/mysql.sh "+distance_s + lamp);

    мучаюсь который день :(
     
  3. ИгорьК

    ИгорьК Гуру

    Ошибок может быть много в любых местах - в доступе к базе, в скрипте sh, в доставке данных этому скрипту.
    Действуйте так:
    1. Убедитесь, что через Putty Ваш скрипт работает верно. То есть вот эта команда sh ~/mysql.sh 100 50 - (любые необходимые цифры) выполняется правильно.
    2. Помните, что в mysql.runShellCommand("sh ~/mysql.sh "+distance_s + lamp); distance_s и lamp - String(и)
    3. Убедитесь, что внутри скетча Ардуино Вы правильно формируете команду, особенно количество пробелов после /mysql.sh. Обычно здесь сидит третья засада.
     
    Последнее редактирование: 18 мар 2015
  4. asrahmanov

    asrahmanov Нуб

    ИгорьК огромное спасибо, sh все правильно . но с пробелами точно беда.
    Думаю поможет. Спасибо Спасибо спасибо
     
  5. ИгорьК

    ИгорьК Гуру

    4. (возможно) mysql.runShellCommand("sh ~/mysql.sh "+distance_s+" "+ lamp);
     
    Последнее редактирование: 18 мар 2015
  6. asrahmanov

    asrahmanov Нуб

    с одной переменной работает:
    const String distance_s=String(distance_sm);
    lamp =50;
    const String lamp_s=String(lamp);

    Process mysql;
    mysql.runShellCommand("sh ~/mysql.sh "+distance_s );

    с двумя не хочет, даже если так
    mysql.runShellCommand("sh ~/mysql.sh "+distance_s + distance_s);
     
  7. ИгорьК

    ИгорьК Гуру

    Пробелы то как? mysql.runShellCommand("sh ~/mysql.sh "+distance_s +" "+ distance_s);
     
  8. asrahmanov

    asrahmanov Нуб

    в sh приходит строковая сумма только в одну переменную $1

    #пример первая переменная = 50 вторая 4 в $1 приходит 504
     
  9. asrahmanov

    asrahmanov Нуб

    .sh
    #!/bin/ash
    mysql -uuser -ppass home -e 'insert into moika set min_2="'$1'", min_15="'$2'";'
    exit 0
     
  10. asrahmanov

    asrahmanov Нуб

    соответственно худо бедно но уходят.
    вопрос как разбить приходящие данные в .sh
    Буду благодарен за ответ, так как для меня sh файлы и их правописание просто темно лес.
     
  11. ИгорьК

    ИгорьК Гуру

    Если приходит 504, то между ними нет пробела во время отправки. Так добавляйте его: еще раз внимательно посмотрите что я написал в посте 47. Или добавляйте пробел в другом месте - при формировании одного из стрингов. Все же работает ;)
     
    Последнее редактирование: 17 мар 2015
  12. asrahmanov

    asrahmanov Нуб


    Огромное спасибо, Все получилось. УРА!
     
  13. ИгорьК

    ИгорьК Гуру

    На вопросы в личку. Коллеги! При добавлении данных в базу mysql вы можете автоматически фиксировать время операции. Для этого достаточно иметь поле TIMESTAMP. Его можно добавить и в существующую базу. Пример создания базы с таким полем:
    Код (SQL):
    CREATE TABLE myhome (
    id INT NOT NULL AUTO_INCREMENT,
    data01 FLOAT,
    data02 FLOAT,
    data03 FLOAT,
    data04 FLOAT,
    data05 FLOAT,
    data06 FLOAT,
    data07 FLOAT,
    whentime TIMESTAMP,
    PRIMARY KEY(id)
    );
     
    Последнее редактирование: 28 апр 2015
  14. asrahmanov

    asrahmanov Нуб

    СПАСИБО
     
  15. asrahmanov

    asrahmanov Нуб

    Подскажите пожалуйста ответ на последний сегодня вопрос
    как к существующей таблице создать дополнительное поле с форматом TIMESTAMP,
     
  16. asrahmanov

    asrahmanov Нуб

    Подскажите пожалуйста ответ на последний сегодня вопрос
    как к существующей таблице создать дополнительное поле с форматом TIMESTAMP.
     
  17. ИгорьК

    ИгорьК Гуру

    Варианты:
    Код (SQL):
    //Изменить существующее поле на TIMESTAMP:
    ALTER TABLE 'myhome' MODIFY 'timewhenadded' TIMESTAMP;

    //Добавить поле TIMESTAMP
    ALTER TABLE `myhome` ADD COLUMN `timewhenadded` TIMESTAMP AFTER `data01`;
     
     
    Последнее редактирование: 28 апр 2015
    asrahmanov нравится это.