14.03.2014, 10:07 | #41 |
Senior Member
|
Re: CyberWrt модуль "Школьник-4"
У меня есть опыт только со школами, не знал, что в детских садах и пр. может найти применение. Если расскажите поподробнее о таком применении, то я подумаю как сделать специальный модуль и для других учреждений.
Добавил вкладку с системным журналом.
__________________
Россия навсегда! |
14.03.2014, 11:51 | #42 |
Junior Member
Регистрация: 07.10.2012
Адрес: Тверь
Сообщений: 10
Вес репутации: 0 |
Re: CyberWrt модуль "Школьник-4"
Работаю в дворце культуры. Есть площадь перед ним, на ней отдыхают люди. Есть трансляционный усилитель на несколько зон одна из зон выходит на площадь включаю музыку для детей сказки ну всяко разно.Переключал плэйлисты с телефона через скрипты мне то все понятно, но хочется все красиво чтоб обычный пользователь мог переключать. Можно просто расширить сферу применения вашего модуля.
|
14.03.2014, 12:18 | #43 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823 |
Re: CyberWrt модуль "Школьник-4"
Модуль заменил, проверяйте
|
14.03.2014, 14:07 | #44 |
Senior Member
|
Re: CyberWrt модуль "Школьник-4"
Спасибо, вроде работает. Только версию модуля можно убрать из краткого описания, чтобы не вводить в заблуждение, или придумать как обновлять версию автоматом.
__________________
Россия навсегда! |
25.03.2014, 13:25 | #45 |
Senior Member
|
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
__________________
Россия навсегда! |
03.04.2014, 00:08 | #46 |
Junior Member
Регистрация: 02.04.2014
Сообщений: 4
Вес репутации: 0 |
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. |
06.04.2014, 20:44 | #47 |
Senior Member
|
Re: CyberWrt модуль "Школьник-4"
Доброго. Спасибо за отзыв. По поводу изменений в скрипте планировщика, то, думаю, стоит подождать дополнительных отзывов от пользователей. Если будет действительная необходимость добавлять "костыль", то добавлю. Может случиться ещё и так, что найдётся причина такого поведения.
Вообще, рекомендую использовать проверенное железо. Дешево и сердито. Китайские аудио-карты за 150 р. хорошо справляются с поставленной задачей и могут быть аккуратно вставлены в корпус роутера, как показано на фото в первом посте.
__________________
Россия навсегда! |
22.04.2014, 04:22 | #48 |
Senior Member
|
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 выводы на разъёме, чтобы соединяться при помощи нуль-модемного кабеля.
__________________
Россия навсегда! Последний раз редактировалось uni; 22.04.2014 в 19:06. |
03.11.2014, 21:59 | #49 |
Junior Member
Регистрация: 03.11.2014
Сообщений: 14
Вес репутации: 0 |
Re: CyberWrt модуль "Школьник-4"
Здравствуйте.
Подскажите 2 вопроса. 1. Можно ли как то настроить авторизацию и разные права доступа в этой прошивке? (поясню, допустим мы ставим это в школе и админский интерфейс остается админским, а для завуча или диспетчера по расписанию делаем отдельный аккаунт и даем права на доступ только к модулю Звонок) 2. Возможно ли как то сделать так, чтобы например на отдельную страничку html выводилось бы расписание звонков, текущее состояние, например "Идет 2 пара, до окончания осталось 12 минут и т.д." и такжы выводить какую то нужную инфу еще, например мониторинг температуры, дату и время и т.д.? т.е сделать что то вроде dashboard (информационного табло)? Заранее спасибо. |
03.11.2014, 22:17 | #50 |
Senior Member
|
Re: CyberWrt модуль "Школьник-4"
Сейчас все настройки может делать любой. Вообще, дополнительную проверку для доступа к интерфейсу сделать можно.
Что касается табло, то это тоже возможно. Единственное, у меня сейчас ремонт и поправить я ничего не могу.
__________________
Россия навсегда! |
Здесь присутствуют: 2 (пользователей: 0 , гостей: 2) | |
|
|