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

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

Результаты опроса: Если роутер прошит и настроен под Arduino, Вы купили бы его
Да 53 31.36%
Нет 24 14.20%
Куплю и сам настрою 92 54.44%
Голосовавшие: 169. Вы ещё не голосовали в этом опросе

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 12.10.2012, 23:32   #1
michael_s
Member
 
Регистрация: 28.09.2012
Сообщений: 52
Вес репутации: 0
michael_s is an unknown quantity at this point
По умолчанию

Цитата:
Сообщение от Sirocco Посмотреть сообщение
Здравствуйте!
Введение:
Есть ардуино, есть изернет модуль. Управляю различными вещами. Управление построено так: На адрес изернет модуля ардуины http://192.168.1.7 шлю GET запрос с содержанием Bra=1, или Bra=0. Другими словами вбиваю в адресной строке браузера http://192.168.1.7/?Bra=1 и жму интер, бра загораются, если http://192.168.1.7/?Bra=0 - потушатся.
Есть сервер, поднят на роутере, поддерживается php. Хочу все странички с кнопками управления разместить на нём.
Вопрос:
Как сделать кнопку, или ссылку, чтобы нажав на неё улетел GET запрос (возможно и POST прокатит) на ардуино, но страница не перезагружалась. А ещё лучше, чтобы если нажать "обновить страницу, F5" то она бы просто обновилась без сообщения браузера "на странице используется введённая вами информация, обновление страници приведёт к повторной отсылке данных.... и т.д."
Пока сделал так:
PHP код:
<?php
include('simple_html_dom.php');
$html file_get_html('http://192.168.1.7');

if(isset(
$_POST['execute'])){
        
        
$sURI 'http://192.168.1.7/?'.$_POST['comand'];
        
file_get_contents($sURI);
        
header("Location: {$_SERVER['PHP_SELF']}");
}

$cont .= '<form method="POST">';
$cont .= '<input type="hidden" name="comand" value="Bra=1">';
$cont .= '<input type="submit" name="execute" value="Бра       ON">';
$cont .= '</form>';
$cont .= '<form method="POST">';
$cont .= '<input type="hidden" name="comand" value="Bra=0">';
$cont .= '<input type="submit" name="execute" value="Бра OFF">';
$cont .= '</form>';

echo 
$cont;

?>
Но это не то. Страница перезагружается, и заканчивает перезагрузку только тогда, когда ардуино отработает команду, а это бывает по долгу.
Наверняка в своих проектах этот вопрос как-то решали, подскажите выход, пожалста.
P.S. извините, что не в профильный форум, но в других не помогли. Не смогли понять зачем это всё надо.
Вам нужно пользоваь ajax.
Проще всего пользовать ajax из Jquery , почитайте тут http://codething.ru/ajax.php

Если не разберетесь , пишите , помогу.
michael_s вне форума   Ответить с цитированием
Старый 13.10.2012, 03:04   #2
Sirocco
Senior Member
 
Регистрация: 12.10.2012
Адрес: Moscow-Voronezg
Сообщений: 272
Вес репутации: 0
Sirocco has a brilliant futureSirocco has a brilliant futureSirocco has a brilliant futureSirocco has a brilliant futureSirocco has a brilliant futureSirocco has a brilliant futureSirocco has a brilliant futureSirocco has a brilliant futureSirocco has a brilliant futureSirocco has a brilliant futureSirocco has a brilliant future
По умолчанию Вопрос по web программированию

Цитата:
Сообщение от michael_s Посмотреть сообщение
Вам нужно пользоваь ajax.
Проще всего пользовать ajax из Jquery , почитайте тут http://codething.ru/ajax.php

Если не разберетесь , пишите , помогу.
Спасибо! Отличная ссылка! Не то, чтобы разобрался, что к чему, но работать заставил как нужно, наконец-то!
Вот так работает, но, чувствую, этот код можно оптимизировать ещё очень-очень не слабо. Был-бы рад, если подскажет кто.
PHP код:
<body>  
    <
form id="braON">  
    <
p align="center">  <input type="submit" value="100%">  </p>  
    </
form>
    
    <
form id="Night"
        <
p align="center"><input type="submit" value="25%"></p
    </
form
    
    <
form id="braOFF"
        <
p align="center"><input type="submit" value="Off"></p
    </
form>  
     
    <
script>  
        $(
document).ready(function(){          
            $(
'#braON').submit(function(){  
                $.
ajax({  
                    
type"POST",  
                    
url"http://192.168.1.7/?Bra=1",                      
                });  
                return 
false;  
            });              
        });  

        $(
document).ready(function(){          
            $(
'#Night').submit(function(){  
                $.
ajax({  
                    
type"POST",  
                    
url"http://192.168.1.7/?Night=1",                      
                });  
                return 
false;  
            });              
        }); 
        
        $(
document).ready(function(){          
            $(
'#braOFF').submit(function(){  
                $.
ajax({  
                    
type"POST",  
                    
url"http://192.168.1.7/?Bra=0",                       
                });  
                return 
false;  
            });              
        });
        
    
</script>  
      
</body> 
Тут три кнопки, отсылают команду на контроллер, а тот включает LED ленту на 100%, 10% или выкл.
Sirocco вне форума   Ответить с цитированием
Старый 13.10.2012, 21:36   #3
michael_s
Member
 
Регистрация: 28.09.2012
Сообщений: 52
Вес репутации: 0
michael_s is an unknown quantity at this point
По умолчанию

Цитата:
Сообщение от Sirocco Посмотреть сообщение
Спасибо! Отличная ссылка! Не то, чтобы разобрался, что к чему, но работать заставил как нужно, наконец-то!
Вот так работает, но, чувствую, этот код можно оптимизировать ещё очень-очень не слабо. Был-бы рад, если подскажет кто.
PHP код:
<body>  
    <
form id="braON">  
    <
p align="center">  <input type="submit" value="100%">  </p>  
    </
form>
    
    <
form id="Night"
        <
p align="center"><input type="submit" value="25%"></p
    </
form
    
    <
form id="braOFF"
        <
p align="center"><input type="submit" value="Off"></p
    </
form>  
     
    <
script>  
        $(
document).ready(function(){          
            $(
'#braON').submit(function(){  
                $.
ajax({  
                    
type"POST",  
                    
url"http://192.168.1.7/?Bra=1",                      
                });  
                return 
false;  
            });              
        });  

        $(
document).ready(function(){          
            $(
'#Night').submit(function(){  
                $.
ajax({  
                    
type"POST",  
                    
url"http://192.168.1.7/?Night=1",                      
                });  
                return 
false;  
            });              
        }); 
        
        $(
document).ready(function(){          
            $(
'#braOFF').submit(function(){  
                $.
ajax({  
                    
type"POST",  
                    
url"http://192.168.1.7/?Bra=0",                       
                });  
                return 
false;  
            });              
        });
        
    
</script>  
      
</body> 
Тут три кнопки, отсылают команду на контроллер, а тот включает LED ленту на 100%, 10% или выкл.
Вот быстренько сделал для вас примерчик http://jsfiddle.net/tvsU3/1/
Не обязательно кстати делать кнопкой , можно ссылку или что угодно.

$(document).ready(function(){
достаточно один раз было написать и внутри уже все привязки делать . Это делается для того чтоб JS не пытался запуститься пока не построилось все дерево DOM.

Последний раз редактировалось michael_s; 13.10.2012 в 21:42.
michael_s вне форума   Ответить с цитированием
Старый 14.10.2012, 01:46   #4
Sirocco
Senior Member
 
Регистрация: 12.10.2012
Адрес: Moscow-Voronezg
Сообщений: 272
Вес репутации: 0
Sirocco has a brilliant futureSirocco has a brilliant futureSirocco has a brilliant futureSirocco has a brilliant futureSirocco has a brilliant futureSirocco has a brilliant futureSirocco has a brilliant futureSirocco has a brilliant futureSirocco has a brilliant futureSirocco has a brilliant futureSirocco has a brilliant future
Lightbulb Вопрос по web программированию

Цитата:
Сообщение от michael_s Посмотреть сообщение
Вот быстренько сделал для вас примерчик http://jsfiddle.net/tvsU3/1/
Спасибо!!!
Сделал так:
PHP код:
<script type='text/javascript'>//<![CDATA[ 
$(window).load(function(){
    $(
'.braON').click(function(){  
    $.
ajax({  
            
type"POST",  
            
url"http://192.168.1.7/?Bra=1",                      
        });  
        return 
false;
    });              

    $(
'.Night').click(function(){  
    $.
ajax({  
            
type"POST",  
            
url"http://192.168.1.7/?Night=1",                      
        });  
        return 
false;
    }); 

    $(
'.braOFF').click(function(){  
    $.
ajax({  
            
type"POST",  
            
url"http://192.168.1.7/?Bra=0",                      
        });  
        return 
false;
    }); 

});
//]]>  

</script>
</head>
<body>
<button class="braON">100%</a> 
<button class="Night">10%</a> 
<button class="braOFF">OFF</a> 
</body> 
Теперь попробую заменить кнопки на что-то более симпатичное.
Но! Обнаружилась проблема! (Или фитча) Этот код не работает удалённо. Если я в локалке, то работает без проблем, если захожу из вне, то просто не срабатывает. Что может быть?
Sirocco вне форума   Ответить с цитированием
Старый 12.10.2012, 23:51   #5
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9821
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
По умолчанию

У меня есть пример на Bootstrap, могу завтра выложить
Admin вне форума   Ответить с цитированием
Старый 13.10.2012, 01:11   #6
Sirocco
Senior Member
 
Регистрация: 12.10.2012
Адрес: Moscow-Voronezg
Сообщений: 272
Вес репутации: 0
Sirocco has a brilliant futureSirocco has a brilliant futureSirocco has a brilliant futureSirocco has a brilliant futureSirocco has a brilliant futureSirocco has a brilliant futureSirocco has a brilliant futureSirocco has a brilliant futureSirocco has a brilliant futureSirocco has a brilliant futureSirocco has a brilliant future
По умолчанию

Цитата:
Сообщение от Admin Посмотреть сообщение
У меня есть пример на Bootstrap, могу завтра выложить
Да, было бы не плохо!
Sirocco вне форума   Ответить с цитированием
Старый 13.10.2012, 09:28   #7
Galaxy
Junior Member
 
Регистрация: 27.09.2012
Сообщений: 10
Вес репутации: 0
Galaxy is an unknown quantity at this point
По умолчанию

При включении и первом входе Telnet не получается запустить mc, выдает такое сообщение: /bin/ash: mc: not found

Если выполнить reboot, то после перезагрузки mc загружается.

Как решить эту проблему?
Galaxy вне форума   Ответить с цитированием
Старый 13.10.2012, 10:12   #8
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9821
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
По умолчанию

Флешка смонтирована в системе?
Admin вне форума   Ответить с цитированием
Старый 13.10.2012, 11:31   #9
Galaxy
Junior Member
 
Регистрация: 27.09.2012
Сообщений: 10
Вес репутации: 0
Galaxy is an unknown quantity at this point
По умолчанию

Флешку вижу.
Когда запускается mc выскакивает сообщение:
file /etc/mc/sfs.ini not found
cannot open /usr/lib/mc/extfs.d directory

Последний раз редактировалось Galaxy; 13.10.2012 в 11:35.
Galaxy вне форума   Ответить с цитированием
Старый 14.10.2012, 06:02   #10
andr128
Senior Member
 
Аватар для andr128
 
Регистрация: 16.09.2012
Адрес: Irkutsk
Сообщений: 555
Вес репутации: 1604
andr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond repute
По умолчанию

Цитата:
Сообщение от Galaxy Посмотреть сообщение
Флешку вижу.
Когда запускается mc выскакивает сообщение:
file /etc/mc/sfs.ini not found
cannot open /usr/lib/mc/extfs.d directory
чтоб не ругался
Код:
mkdir -p /usr/lib/mc/extfs.d
touch /etc/mc/sfs.ini
andr128 вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 3 (пользователей: 0 , гостей: 3)
 

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

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

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


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


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