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

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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 01.12.2013, 21:16   #1
alexval2007
Member
 
Регистрация: 05.11.2012
Сообщений: 63
Вес репутации: 0
alexval2007 is an unknown quantity at this point
По умолчанию WEB сервер проблемы с кнопками

Поставил на днях свежую прошивку CyberWrt поюзал понравилось ну думаю сейчас я наконец на нормально рабочей прошивке где все настроено запущу и настрою WEB сервер. Установил настроил вроде работает. стал пробовать примеры с кнопками которые управляют ардуинкой. Работают но через одно место. Кнопка отправляет только одно своё значение а должна как я понимаю два. Один раз нажал включил второй выключил. Пришлось добавить вторую кнопку для выключения. Лампочка тоже не загорается хотя в строке значение меняется на http://192.168.1.200:81/index.php?var=Light%20ON при нажатие первой кнопки ВКЛ и на http://192.168.1.200:81/index.php?var=Light%20OFF при нажатии второй кнопки ВЫКЛ
index.php
PHP код:
<!DOCTYPE HTML>
<html lang="ru">

<head>
    <meta charset="UTF-8">
    <title>Buttons</title>
    <link rel="stylesheet" href="main.css" />
</head>

<body>
    <?php
      $lightOne 
'OFF';
      
$lightOne $_GET['var']; //
    
?>
    
    <form method="get" action="serial.php">
        <?php if ($lightOne == 'ON!') { ?>
            <img src="On.png">
        <?php } else { ?>
            <img src="Off.png">
        <?php ?>

        <button class="btn1" button value="<?php if ($lightOne == 'ON!'){ ?>0<?php } else { ?>1<?php ?>
              " type="submit" name="send_m">Свет <?php if ($lightOne == 'ON!'){ ?>включен<?php } else { ?>выключен<?php ?>
              </button>

        <button class="btn2" button value="<?php if ($lightOne == 'ON!'){ ?>0<?php } else { ?>0<?php ?>
              " type="submit" name="send_m">Свет <?php if ($lightOne == 'ON!'){ ?>включен<?php } else { ?>выключен<?php ?>
              </button>

    </form>
</body>
</html>
serial.php
PHP код:
<?php

$bufer 
'';
$ch=' ';
$filename "/dev/ttyUSB0";      //название порта
$fp fopen($filename"w+");  //открыть порт

if ($fp//если порт открыт
{
 
fwrite($fp$_GET['send_m']);  //полать в порт строку

   
while ($ch != chr(0xA)) 
   {
     
$ch fgetc($fp); //прочитать один символ из порта
     
$bufer.=$ch;
   }    
    
//echo "<br>".$bufer; 

fclose($fp); //закрыть порт

} else echo "Не удалось открыть порт" ;

header('Location: /index.php?var='.$bufer); 
?>
ARDUINO.ino
Код:
#define ledPin 13  
#define ledPin1 12
#define ledPin2 11
void setup()  
{   
  Serial.begin(57600);   
  pinMode(ledPin, OUTPUT); 
  pinMode(ledPin1, OUTPUT);
  pinMode(ledPin2, OUTPUT);
}  

void loop()  
{  
  if (Serial.available() > 0)  
  {  
    byte inByte = Serial.read();  
    switch (inByte)  
    {  
        case 49:  
        digitalWrite(ledPin, HIGH);
        delay(50);  
        Serial.println("Light ON");  
        break;  
        
        case 48:  
        digitalWrite(ledPin, LOW); 
        delay(50); 
        Serial.println("Light OFF");  
        break;  
        
        case 51:  
        digitalWrite(ledPin1, HIGH); 
        delay(50); 
        Serial.println("Room ON");  
        break; 
        
        case 50:  
        digitalWrite(ledPin1, LOW); 
        delay(50); 
        Serial.println("Room OFF");  
        break; 

        case 53:  
        digitalWrite(ledPin2, HIGH); 
        delay(52); 
        Serial.println("ON");  
        break;     

        case 52:  
        digitalWrite(ledPin2, LOW); 
        delay(52); 
        Serial.println("OFF");  
        break;     
    }          
  }  
}
Вложения
Тип файла: zip button.zip (12.6 Кб, 199 просмотров)
alexval2007 вне форума   Ответить с цитированием
Старый 01.12.2013, 22:04   #2
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
По умолчанию Re: WEB сервер проблемы с кнопками

Веб сервер в CyberWrt установлен по умолчанию в прошивке
Модуль PHP+Sqlite3 в стадии тестирования, на днях выложим
Для управления ардуинкой в CyberWrt лучше использовать cgi скрипты

Вот так будет выглядеть скрипт
данные для ардуины отправляются из HTML GET запросом
Код:
#!/bin/sh
echo $QUERY_STRING > /dev/ttyUSB0
echo "202"
У Вас кнопки не работают похоже из-за неверных настроек PHP
Admin вне форума   Ответить с цитированием
Старый 01.12.2013, 22:30   #3
alexval2007
Member
 
Регистрация: 05.11.2012
Сообщений: 63
Вес репутации: 0
alexval2007 is an unknown quantity at this point
По умолчанию Re: WEB сервер проблемы с кнопками

Так а подробней пожалуйста как этот скрипт приладить к кнопке то

если на HTML то типа так
index.html
Код HTML:
<!DOCTYPE HTML>
<html lang="en-US">

<head>
	<meta charset="UTF-8">
	<title>Button</title>
</head>

<body>
   <form method="get" action="serial.php"><button value="1" type="submit" name="send_m">Light ON </button></form>
   <form method="get" action="serial.php"><button value="0" type="submit" name="send_m">Light OFF</button></form>

   <form method="get" action="serial.php"><button value="3" type="submit" name="send_m">Room ON </button></form>
   <form method="get" action="serial.php"><button value="2" type="submit" name="send_m">Room OFF</button></form>
</body>
</html>
и опять же
serial.php
PHP код:
 <?php

$bufer 
'';
$ch=' ';
$filename "/dev/ttyUSB0";      //порт
$fp fopen($filename"r+");  //открыть порт

if ($fp//если порт открыт
{
 
fwrite($fp$_GET['send_m']);  //полать в порт строку

   
while ($ch != chr(0xA)) 
   {
     
$ch fgetc($fp); //прочитать один символ из порта
     
$bufer.=$ch;
   }    
    echo 
"<br>".$bufer

fclose($fp); //закрыть порт
} else echo "Не удалось открыть порт" ;
      
?>
а скрипт то куда и зачем

Последний раз редактировалось alexval2007; 01.12.2013 в 22:35.
alexval2007 вне форума   Ответить с цитированием
Старый 01.12.2013, 23:09   #4
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
По умолчанию Re: WEB сервер проблемы с кнопками

нужно вместо serial.php, указать путь к скрипту serial.cgi
попробуйте сначала модуль PHP5 его уже выложили
соответственно он настроен на работу с веб сервером который встроен в прошивку
Admin вне форума   Ответить с цитированием
Старый 02.12.2013, 15:33   #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
По умолчанию Re: WEB сервер проблемы с кнопками

Выложил модуль "HTML Кнопка"
Проверяйте
Admin вне форума   Ответить с цитированием
Старый 02.12.2013, 20:24   #6
alexval2007
Member
 
Регистрация: 05.11.2012
Сообщений: 63
Вес репутации: 0
alexval2007 is an unknown quantity at this point
По умолчанию Re: WEB сервер проблемы с кнопками

Разобрался вроде заработало лампочка включается и выключается светодиод на ардуино тоже.
index.php
PHP код:
<!DOCTYPE HTML>
<html lang="ru">

<head>
    <meta charset="UTF-8">
    <title>Buttons</title>
    <link rel="stylesheet" href="main.css" />
</head>

<body>
    <?php
      $lightOne 
'OFF';
      
$lightOne $_GET['var']; //
    
?>
    
    <form method="get" action="serial.php">

              
              <?php if ($lightOne == 'Light ON'){ 
                  
?><img src="On.png"><?php 
              
} else { 
                  
?><img src="Off.png"><?php 
              
?>

        <button class="btn1" button value="<?php if ($lightOne == 'Light ON'){ ?>0<?php } else { ?>1<?php ?>
              " type="submit" name="send_m">Свет <?php if ($lightOne == 'Light ON'){ ?>включен<?php } else { ?>выключен<?php ?>
              </button>


    </form>
</body>
</html>
serial.php
PHP код:
<?php

$bufer 
'';
$ch=' ';
$filename "/dev/ttyUSB0";      //название порта
$fp fopen($filename"w+");  //открыть порт

if ($fp//если порт открыт
{
 
fwrite($fp$_GET['send_m']);  //полать в порт строку

   
while ($ch != chr(0xA)) 
   {
     
$ch fgetc($fp); //прочитать один символ из порта
     
$bufer.=$ch;
   }    

fclose($fp); //закрыть порт

} else echo "Не удалось открыть порт" ;
header('Location: index.php?var='.$bufer); 
?>

ARDUINO.ino
Код:
#define ledPin 13  
void setup()  
{   
  Serial.begin(57600);   
  pinMode(ledPin, OUTPUT); 
}  

void loop()  
{  
  if (Serial.available() > 0)  
  {  
    byte inByte = Serial.read();  
    switch (inByte)  
    {  
        case 48:  
        digitalWrite(ledPin, LOW); 
        delay(50); 
        Serial.println("Light OFF");  
        break;     

        case 49:  
        digitalWrite(ledPin, HIGH);
        delay(50);  
        Serial.println("Light ON");  
        break;   
    }          
  }  
}
Но это немного не то чего бы хотелось. Хотелось бы разобраться как нормально получать и выводить данные о состоянии входов ардуино на виртуальные лампочки в браузере.
alexval2007 вне форума   Ответить с цитированием
Старый 02.12.2013, 20:28   #7
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
По умолчанию Re: WEB сервер проблемы с кнопками

Для того что бы получить данные с ардуины нужно прочитать порт
В приложенном Вами PHP коде порт читается
Admin вне форума   Ответить с цитированием
Старый 02.12.2013, 20:55   #8
alexval2007
Member
 
Регистрация: 05.11.2012
Сообщений: 63
Вес репутации: 0
alexval2007 is an unknown quantity at this point
По умолчанию Re: WEB сервер проблемы с кнопками

Ну вот в файле serial.php мы прочитали данные из порта сохранили их в $bufer

PHP код:
   while ($ch != chr(0xA)) 
   {
     
$ch fgetc($fp); //прочитать один символ из порта
     
$bufer.=$ch;
   } 
дальше как его из буфера выводить на страницу в свою лампочку допустим получили L1_ON как зажечь лампу номер 1 на экране а если получили L2_ON то надо зажечь лампу номер 2 и тп
alexval2007 вне форума   Ответить с цитированием
Старый 02.12.2013, 21:25   #9
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
По умолчанию Re: WEB сервер проблемы с кнопками

PHP скрипт передал HTML странице переменную
header('Location: index.php?var='.$bufer);

Вот здесь в HTML коде мы получили эту переменную
$lightOne = $_GET['var'];

А дальше, поступайте с этой переменной как угодно.
Admin вне форума   Ответить с цитированием
Старый 02.12.2013, 21:33   #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
По умолчанию Re: WEB сервер проблемы с кнопками

очевидно сформировать html страницу, где будет нарисована зажженная лампа
andr128 вне форума   Ответить с цитированием
Ответ


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

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

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

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


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


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