Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Сделай сам > CyberWrt

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 14.03.2014, 10:07   #41
uni
Senior Member
 
Аватар для uni
 
Регистрация: 29.10.2013
Адрес: Екатеринбург, Нижневартовск, Энергодар
Возраст: 43
Сообщений: 573
Вес репутации: 599
uni has a spectacular aura aboutuni has a spectacular aura about
Отправить сообщение для uni с помощью ICQ
По умолчанию Re: CyberWrt модуль "Школьник-4"

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

Добавил вкладку с системным журналом.
Миниатюры
Нажмите на изображение для увеличения
Название: Скриншот 2014-03-14 12.02.12.png
Просмотров: 349
Размер:	113.9 Кб
ID:	1615  
Вложения
Тип файла: zip schoolbell-0.2.5186.21677.zip (393.4 Кб, 799 просмотров)
__________________
Россия навсегда!
uni вне форума   Ответить с цитированием
Старый 14.03.2014, 11:51   #42
Balentin
Junior Member
 
Регистрация: 07.10.2012
Адрес: Тверь
Сообщений: 10
Вес репутации: 0
Balentin is an unknown quantity at this point
По умолчанию Re: CyberWrt модуль "Школьник-4"

Работаю в дворце культуры. Есть площадь перед ним, на ней отдыхают люди. Есть трансляционный усилитель на несколько зон одна из зон выходит на площадь включаю музыку для детей сказки ну всяко разно.Переключал плэйлисты с телефона через скрипты мне то все понятно, но хочется все красиво чтоб обычный пользователь мог переключать. Можно просто расширить сферу применения вашего модуля.
Balentin вне форума   Ответить с цитированием
Старый 14.03.2014, 12:18   #43
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9820
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: CyberWrt модуль "Школьник-4"

Модуль заменил, проверяйте
Admin вне форума   Ответить с цитированием
Старый 14.03.2014, 14:07   #44
uni
Senior Member
 
Аватар для uni
 
Регистрация: 29.10.2013
Адрес: Екатеринбург, Нижневартовск, Энергодар
Возраст: 43
Сообщений: 573
Вес репутации: 599
uni has a spectacular aura aboutuni has a spectacular aura about
Отправить сообщение для uni с помощью ICQ
По умолчанию Re: CyberWrt модуль "Школьник-4"

Цитата:
Сообщение от Admin Посмотреть сообщение
Модуль заменил, проверяйте
Спасибо, вроде работает. Только версию модуля можно убрать из краткого описания, чтобы не вводить в заблуждение, или придумать как обновлять версию автоматом.
__________________
Россия навсегда!
uni вне форума   Ответить с цитированием
Старый 25.03.2014, 13:25   #45
uni
Senior Member
 
Аватар для uni
 
Регистрация: 29.10.2013
Адрес: Екатеринбург, Нижневартовск, Энергодар
Возраст: 43
Сообщений: 573
Вес репутации: 599
uni has a spectacular aura aboutuni has a spectacular aura about
Отправить сообщение для uni с помощью ICQ
По умолчанию Re: CyberWrt модуль "Школьник-4"

Загрузка файла на сервер:

1. Some black magic: bash, cgi and file uploads.
2. Minimalistic Html and JavaScript.
3. How can I upload files asynchronously with jQuery?

Тестовая страничка:
Код:
<!DOCTYPE html>
<html>
<head>
    <title>Upload Files using XMLHttpRequest - Minimal</title>

    <script type="text/javascript">
      function fileSelected() {
        var file = document.getElementById('fileToUpload').files[0];
        if (file) {
          var fileSize = 0;
          if (file.size > 1024 * 1024)
            fileSize = (Math.round(file.size * 100 / (1024 * 1024)) / 100).toString() + 'MB';
          else
            fileSize = (Math.round(file.size * 100 / 1024) / 100).toString() + 'KB';

          document.getElementById('fileName').innerHTML = 'Name: ' + file.name;
          document.getElementById('fileSize').innerHTML = 'Size: ' + fileSize;
          document.getElementById('fileType').innerHTML = 'Type: ' + file.type;
        }
      }

      function uploadFile() {
        var fd = new FormData();
        fd.append("fileToUpload", document.getElementById('fileToUpload').files[0]);
        var xhr = new XMLHttpRequest();
        xhr.upload.addEventListener("progress", uploadProgress, false);
        xhr.addEventListener("load", uploadComplete, false);
        xhr.addEventListener("error", uploadFailed, false);
        xhr.addEventListener("abort", uploadCanceled, false);
        xhr.open("POST", "/cgi-bin/modules/schoolbell/upload.cgi");
        xhr.send(fd);
      }

      function uploadProgress(evt) {
        if (evt.lengthComputable) {
          var percentComplete = Math.round(evt.loaded * 100 / evt.total);
          document.getElementById('progressNumber').innerHTML = percentComplete.toString() + '%';
        }
        else {
          document.getElementById('progressNumber').innerHTML = 'unable to compute';
        }
      }

      function uploadComplete(evt) {
        /* This event is raised when the server send back a response */
        alert(evt.target.responseText);
      }

      function uploadFailed(evt) {
        alert("There was an error attempting to upload the file.");
      }

      function uploadCanceled(evt) {
        alert("The upload has been canceled by the user or the browser dropped the connection.");
      }
    </script>
</head>
<body>
  <form id="form1" enctype="multipart/form-data" method="post" action="/cgi-bin/modules/schoolbell/upload.cgi">
    <div class="row">
      <label for="fileToUpload">Select a File to Upload</label><br />
      <input type="file" name="fileToUpload" id="fileToUpload" onchange="fileSelected();"/>
    </div>
    <div id="fileName"></div>
    <div id="fileSize"></div>
    <div id="fileType"></div>
    <div class="row">
      <input type="button" onclick="uploadFile()" value="Upload" />
    </div>
    <div id="progressNumber"></div>
  </form>
</body>
</html>
Скрипт, принимающий файл:
Код:
#!/bin/sh

LOGFILE=/www/modules/schoolbell/log.txt

# Ведение журнала.
loginfo () {

    lcnt=$(wc -l $LOGFILE | cut -f1 -d' ')
    
    # Ограничиваем размер файла журнала по количеству строк.
    if [ $lcnt -gt 100 ] ; then
    
        start=`expr $lcnt - 50`
        tail +$start $LOGFILE > /tmp/log.txt
        mv /tmp/log.txt $LOGFILE
        
    fi
    
    echo "`date +"%Y.%m.%d %H:%M:%S [INFO]"` $1" >> $LOGFILE
}

echo "Content-type: text/html; charset=utf-8"
echo

if [ "$REQUEST_METHOD" = POST ]; then
     
    read boundary
    read disposition
    read ctype
    read junk
    
    a=${#boundary}
    b=${#disposition}
    c=${#ctype}
    a=$((a*2+b+c+d+10))

    SIZE=$((CONTENT_LENGTH-a))
    
    dir=/www/modules/schoolbell
    file=1.txt
    
    dd ibs=1 obs=512 count=$SIZE of=$dir/$file
    
    echo "$boundary $disposition $ctype $junk"
    
fi
__________________
Россия навсегда!
uni вне форума   Ответить с цитированием
Старый 03.04.2014, 00:08   #46
Boleg2
Junior Member
 
Регистрация: 02.04.2014
Сообщений: 4
Вес репутации: 0
Boleg2 is an unknown quantity at this point
По умолчанию Re: CyberWrt модуль "Школьник-4"

Вячеслав, большое спасибо за модуль, отличная идея и прозрачная реализация.
На днях заводил оный и столкнулся с одной проблемой на почве работы аудиокарты. Подробно описал в посте профильной темы: http://cyber-place.ru/showpost.php?p=12326

Здесь же хотел бы упомянуть, что коли кто столкнется с аналогичной проблемой - править стоит скрипт планировщика по адресу /www/cgi-bin-modules/schoolbell/scheduler.cgi, осуществляющий запись заданий в crontab.
Синтаксис правки прост и очевиден всякому, кто хоть раз видел в глаза линуксовую консоль и имеет под рукой гугл = )

Еще раз хочу выразить благодарность Вячеславу за прозрачный и хорошо документированный код, что позволил разобраться в нём с минимальными знаниями ООП и практически без знаний JS как такового.

uni, я думаю, что подобные правки в том или ином виде можно внести в модуль, дабы отсеять подобную проблему в зачатке. Всё равно ведь предполагается разовое проигрывание отдельных звуковых файлов с интервалом более чем в пол минуты.

Последний раз редактировалось Boleg2; 03.04.2014 в 00:12.
Boleg2 вне форума   Ответить с цитированием
Старый 06.04.2014, 20:44   #47
uni
Senior Member
 
Аватар для uni
 
Регистрация: 29.10.2013
Адрес: Екатеринбург, Нижневартовск, Энергодар
Возраст: 43
Сообщений: 573
Вес репутации: 599
uni has a spectacular aura aboutuni has a spectacular aura about
Отправить сообщение для uni с помощью ICQ
По умолчанию Re: CyberWrt модуль "Школьник-4"

Доброго. Спасибо за отзыв. По поводу изменений в скрипте планировщика, то, думаю, стоит подождать дополнительных отзывов от пользователей. Если будет действительная необходимость добавлять "костыль", то добавлю. Может случиться ещё и так, что найдётся причина такого поведения.

Вообще, рекомендую использовать проверенное железо. Дешево и сердито. Китайские аудио-карты за 150 р. хорошо справляются с поставленной задачей и могут быть аккуратно вставлены в корпус роутера, как показано на фото в первом посте.
__________________
Россия навсегда!
uni вне форума   Ответить с цитированием
Старый 22.04.2014, 04:22   #48
uni
Senior Member
 
Аватар для uni
 
Регистрация: 29.10.2013
Адрес: Екатеринбург, Нижневартовск, Энергодар
Возраст: 43
Сообщений: 573
Вес репутации: 599
uni has a spectacular aura aboutuni has a spectacular aura about
Отправить сообщение для uni с помощью ICQ
По умолчанию Re: CyberWrt модуль "Школьник-4"

Если кому надо, то выкладываю платку преобразователя для подключения к терминальному выходу роутера. Проверено, работает.

Плата собрана на микросхеме MAX232 (в планарном исполнении) и работает либо напрямую с COM-портом, либо через USB-COM переходник (причём не каждый, как оказалось).

Разводка выполнена в Sprint-Layout 6. На плате используется первый канал микросхемы, т.е. схема на самом деле чуть-чуть другая, но это не так важно.

Детальки:

- MAX232 - 1 шт - в поверхностном исполнении;
- 1 мкФ - 4 шт;
- 0,1 мкФ - 1 шт - неполярные конденсаторы также для поверхностного монтажа.

Напоминаю расположение выводов последовательного интерфейса:
1. Tx
2. Rx
3. Gnd
4. Vcc

Параметры соединения с использованием serial интерфейса следующие:

Bits per second: 115200
Data bits: 8
Stop bits: 1
Parity: None
Flow control: None

Размер платки: 25 мм х 15 мм. Изготавливается методом ЛУТа с фольгой. Выводы: Gnd, Rx, Tx - припаиваются к выводам 5, 2, 3 разъёма DB9. Треугольничками на плате помечены первые выводы (ключ для микросхемы).
Крышка у роутера при этом закрывается нормально.

П.С. На фото я использую разъём типа DB9F и подключаюсь к ПК напрямую через удлинитель COM-порта (просто кабель), либо через USB-COM переходник. Если же вы хотите использовать DB9M, как на ПК, то имеет смысл поменять местами 2 и 3 выводы на разъёме, чтобы соединяться при помощи нуль-модемного кабеля.
Миниатюры
Нажмите на изображение для увеличения
Название: Фото.jpg
Просмотров: 533
Размер:	503.1 Кб
ID:	1683   Нажмите на изображение для увеличения
Название: Плата.png
Просмотров: 297
Размер:	55.5 Кб
ID:	1684   Нажмите на изображение для увеличения
Название: Схема преобразователя на MAX232.jpg
Просмотров: 2193
Размер:	43.2 Кб
ID:	1685  
Вложения
Тип файла: rar RS232TTL.rar (2.73 Мб, 104 просмотров)
__________________
Россия навсегда!

Последний раз редактировалось uni; 22.04.2014 в 19:06.
uni вне форума   Ответить с цитированием
Старый 03.11.2014, 21:59   #49
bpgsoft
Junior Member
 
Регистрация: 03.11.2014
Сообщений: 14
Вес репутации: 0
bpgsoft is an unknown quantity at this point
По умолчанию Re: CyberWrt модуль "Школьник-4"

Здравствуйте.
Подскажите 2 вопроса.
1. Можно ли как то настроить авторизацию и разные права доступа в этой прошивке?
(поясню, допустим мы ставим это в школе и админский интерфейс остается админским, а для завуча или диспетчера по расписанию делаем отдельный аккаунт и даем права на доступ только к модулю Звонок)
2. Возможно ли как то сделать так, чтобы например на отдельную страничку html выводилось бы расписание звонков, текущее состояние, например "Идет 2 пара, до окончания осталось 12 минут и т.д." и такжы выводить какую то нужную инфу еще, например мониторинг температуры, дату и время и т.д.?
т.е сделать что то вроде dashboard (информационного табло)?
Заранее спасибо.
bpgsoft вне форума   Ответить с цитированием
Старый 03.11.2014, 22:17   #50
uni
Senior Member
 
Аватар для uni
 
Регистрация: 29.10.2013
Адрес: Екатеринбург, Нижневартовск, Энергодар
Возраст: 43
Сообщений: 573
Вес репутации: 599
uni has a spectacular aura aboutuni has a spectacular aura about
Отправить сообщение для uni с помощью ICQ
По умолчанию Re: CyberWrt модуль "Школьник-4"

Сейчас все настройки может делать любой. Вообще, дополнительную проверку для доступа к интерфейсу сделать можно.

Что касается табло, то это тоже возможно.

Единственное, у меня сейчас ремонт и поправить я ничего не могу.
__________________
Россия навсегда!
uni вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 8 (пользователей: 0 , гостей: 8)
 
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 15:07. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика