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

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

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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 03.04.2015, 04:28   #1
stD
Senior Member
 
Аватар для stD
 
Регистрация: 02.04.2012
Адрес: Питер
Сообщений: 1,125
Вес репутации: 1312
stD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant future
По умолчанию Re: Ставим OpenWrt на миниатюрный WiFi роутер TP-LINK TL-MR3020

Цитата:
Вот нарисовал что хочу:
Задача у Вас в общем-то тривиальная и примеров на форуме полно. Но, вряд ли кто-то согласится всё писать за Вас, поэтому могу посоветовать, потратить пару недель на изучение основ php, html и аякс (это языки для детей), тогда многое станет очевидным.
...
Просто в данный момент, Ваши вопросы порождают другие вопросы)
Вот например:
Цитата:
Полученные переменные сохранялись "куда то".
На это, в свою очередь, возникает второй вопрос:
Зачем сохранять данные?
Если хотите хранить их (например показания датчиков температуры с последующим построением графиков), то лучше в базу (но можно и в файл записывать).
Если нет, то зачем их сохранять, можно просто запрашивать состояние.

Например:
Цитата:
Жена открыла на своем телефоне страницу, там показано что свет выключен. Она включила свет в комнате. Но при этом у меня на телефоне отобразилось что свет включился.
Для этого достаточно, чтоб Ваша страничка, раз в сек. запрашивала состояние у датчиков, а не лезла "куда-то".
...
Иными словами:
Цитата:
Написал на Delphi приложение для опроса датчиков через COM порт.
Всё, что сейчас делает делфи на компе, должна делать связка из сервер + php + html + ajax на роутере.

То есть:
1. Вы запрашиваете у роутера страничку (например с телефона).
2. Сервер отправляет html-страницу на телефон.
3. Страница, через ajax-запрос (ajax нужен чтоб не перегружать страницу) делает запрос к php-скрипту расположенному на роутере.
4. Php-скрипт опрашивает датчики и отправляет их значения Вам обратно на телефон.
5. Профит.

Последний раз редактировалось stD; 03.04.2015 в 04:57.
stD вне форума   Ответить с цитированием
Старый 03.04.2015, 09:11   #2
mr_smit
Member
 
Регистрация: 30.12.2014
Адрес: Самара
Сообщений: 45
Вес репутации: 0
mr_smit is an unknown quantity at this point
По умолчанию Re: Ставим OpenWrt на миниатюрный WiFi роутер TP-LINK TL-MR3020

Цитата:
Сообщение от mebitek Посмотреть сообщение
Для этого достаточно, чтоб Ваша страничка, раз в сек. запрашивала состояние у датчиков, а не лезла "куда-то".
А если на 5 телефонах открыт интерфейс "умного дома"? Все 5 страниц будут опрашивать все датчики? На RS485 будет каша.

Либо вы меня не понимаете, либо я вас. У lvovitch одно устройство, которое можно опросить 1 раз и успокоиться. У меня же много. И я не понимаю как можно показывать данные (суммарные данные со всех устройств) каждому клиету не имея прослойки в виде какого либо промежуточного сборщика данных.

Открыли страницу на компьютере. Надо, например, отобразить состояние 3 модулей. В каждом модуле 4 параметра. PHP делает запрос по 1 адресу (1 модуль) - получает ответ - отображает. Дальше PHP делает запрос по 2 адресу (2 модуль) - получает ответ - отображает. По 3 адресу (3 модуль) - отображает. И всё по кругу. Первый, второй, третий,первый второй, третий.

Не закрывая страницы на компьютере, открываем страницу на телефоне. При этом PHP начинает посылать запрос первому модулю, потом второму, потом третьему. При этом с компьютера тоже идут запросы. Не успел 1-й датчик ответить первому клиенту, тут уже летит запрос 2-му датчику от второго клиента. Я не понимаю как это всё будет работать если все "клиенты" будут хаотично посылать запросы датчикам. На линии RS485 черте что будет твориться.

Я наверное не понимаю как php работает, но действие выполняется на сервере по нашему запросу. Т.е. опять же страница должна быть инициатором действия. А страниц открыто много. И все хаотично будут требовать этого действия.

Цитата:
Сообщение от mebitek Посмотреть сообщение
и примеров на форуме полно
Везде народ подключает одну ардуйну и с ней работает. Мне же надо опрашивать много "ардуйн" по заданным адресам. И в web отдавать суммарные показания. Я уже весь гугл перерыл. Нет ничего подобного.

Цитата:
Сообщение от mebitek Посмотреть сообщение
Но, вряд ли кто-то согласится всё писать за Вас
Не надо за меня писАть. Я просто никак сути не пойму. Дальше бы уж сам.
mr_smit вне форума   Ответить с цитированием
Старый 03.04.2015, 11:27   #3
lvovitch
Senior Member
 
Регистрация: 14.04.2010
Сообщений: 239
Вес репутации: 0
lvovitch has a reputation beyond reputelvovitch has a reputation beyond reputelvovitch has a reputation beyond reputelvovitch has a reputation beyond reputelvovitch has a reputation beyond reputelvovitch has a reputation beyond reputelvovitch has a reputation beyond reputelvovitch has a reputation beyond reputelvovitch has a reputation beyond reputelvovitch has a reputation beyond reputelvovitch has a reputation beyond repute
По умолчанию Re: Ставим OpenWrt на миниатюрный WiFi роутер TP-LINK TL-MR3020

Ну так я ведь написал, что лучше всего использовать демона.

Тоесть на роутере есть два скрипта. Один из них работает с шиной, другой с клиентами. Между ними связь - оперативка.

Демон каждую секунду (либо можно придумать более хитрый способ) спрашивает датчки:
- 1-й - сколько градусов?
- 25
- 2-й - сколько градусов?
- 14
...
дальше создаем в tmp файл. вида:
d1=25
d2=14

Все, на этом миссия демона закончена.

Клиентский скрипт обращается к файлу в tmp, считывает его и показывает клиенту. В этом случая клиентов может быть много и на шине не будет хаоса.
lvovitch вне форума   Ответить с цитированием
Старый 03.04.2015, 12:14   #4
mr_smit
Member
 
Регистрация: 30.12.2014
Адрес: Самара
Сообщений: 45
Вес репутации: 0
mr_smit is an unknown quantity at this point
По умолчанию Re: Ставим OpenWrt на миниатюрный WiFi роутер TP-LINK TL-MR3020

Цитата:
Сообщение от lvovitch Посмотреть сообщение
Ну так я ведь написал, что лучше всего использовать демона.
...

Клиентский скрипт обращается к файлу в tmp, считывает его и показывает клиенту. В этом случая клиентов может быть много и на шине не будет хаоса.
Вот об этом и разговор. А в чем этого демона писать? Какой софт?
mr_smit вне форума   Ответить с цитированием
Старый 03.04.2015, 12:59   #5
lvovitch
Senior Member
 
Регистрация: 14.04.2010
Сообщений: 239
Вес репутации: 0
lvovitch has a reputation beyond reputelvovitch has a reputation beyond reputelvovitch has a reputation beyond reputelvovitch has a reputation beyond reputelvovitch has a reputation beyond reputelvovitch has a reputation beyond reputelvovitch has a reputation beyond reputelvovitch has a reputation beyond reputelvovitch has a reputation beyond reputelvovitch has a reputation beyond reputelvovitch has a reputation beyond repute
По умолчанию Re: Ставим OpenWrt на миниатюрный WiFi роутер TP-LINK TL-MR3020

ставьте cyber-wrt
оттуда проще поставить пхп, крон и т.д.
на каком языке писать демона - Вам решать. Можно на том же пхп. Можно на shell. Суть от этого не изменится. И вешайте его в автозагрузку.
lvovitch вне форума   Ответить с цитированием
Старый 03.04.2015, 16:18   #6
mr_smit
Member
 
Регистрация: 30.12.2014
Адрес: Самара
Сообщений: 45
Вес репутации: 0
mr_smit is an unknown quantity at this point
По умолчанию Re: Ставим OpenWrt на миниатюрный WiFi роутер TP-LINK TL-MR3020

php установлен и работает. А что такое крон и shell я не знаю. Думал можно как в windows просто приложение написать и всё. Ладно, буду думать.
mr_smit вне форума   Ответить с цитированием
Старый 03.04.2015, 17:32   #7
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9824
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: Ставим OpenWrt на миниатюрный WiFi роутер TP-LINK TL-MR3020

Для Windows приложения используйте ser2net, я уже писал Вам об этом
Admin вне форума   Ответить с цитированием
Старый 03.04.2015, 18:01   #8
mr_smit
Member
 
Регистрация: 30.12.2014
Адрес: Самара
Сообщений: 45
Вес репутации: 0
mr_smit is an unknown quantity at this point
По умолчанию Re: Ставим OpenWrt на миниатюрный WiFi роутер TP-LINK TL-MR3020

Цитата:
Сообщение от Admin Посмотреть сообщение
Для Windows приложения используйте ser2net, я уже писал Вам об этом
Я не понимаю как мне может помочь ser2net.
mr_smit вне форума   Ответить с цитированием
Старый 03.04.2015, 18:43   #9
mr_smit
Member
 
Регистрация: 30.12.2014
Адрес: Самара
Сообщений: 45
Вес репутации: 0
mr_smit is an unknown quantity at this point
По умолчанию Re: Ставим OpenWrt на миниатюрный WiFi роутер TP-LINK TL-MR3020

Да мне не надо на ПК. Я не собираюсь под это выделять отдельный компьютер в режиме 24/7. Поэтому и рассматриваю вариант с роутером.

А можно сделать AJAX запрос к php скрипту который крутится в бесконечном while ? Примерно таком:
PHP код:
require("php_serial.class.php");  

$serial = new phpSerial();
       
$serial->deviceSet("/dev/ttyATH0");     
     
$serial->confBaudRate(9600); //Baud rate: 9600  
$serial->confParity("none");  //Parity (this is the "N" in "8-N-1")
$serial->confCharacterLength(8); //Character length     (this is the "8" in "8-N-1")
$serial->confStopBits(1);  //Stop bits (this is the "1" in "8-N-1")
$serial->confFlowControl("none");
$serial->deviceOpen();

$temp 0;
$hud 0;
$rele1 0;
$rele2 0;

while (
1) {
  
$data 0;
  
$info[];
  
$serial->sendMessage("AB CD 01 FF F8");
  while (
$data 5) {
    
$info[data] = $serial->readPort();   // как то надо записать что пока меньше 5 байт в приемном буфере
    
$data++;                             // читать порт
    
}
  
$hud = (info[3]<<8) + info[4];
  
$temp = (info[5]<<8) + info[6];
  
$rele1 info[7] & (1<<0);
  
$rele2 info[7] & (1<<1);  

Или он не будет отвечать?

Последний раз редактировалось mr_smit; 03.04.2015 в 18:46.
mr_smit вне форума   Ответить с цитированием
Старый 05.04.2015, 21:19   #10
mr_smit
Member
 
Регистрация: 30.12.2014
Адрес: Самара
Сообщений: 45
Вес репутации: 0
mr_smit is an unknown quantity at this point
По умолчанию Re: Ставим OpenWrt на миниатюрный WiFi роутер TP-LINK TL-MR3020

Подскажите как отправить 5 байт AB CD 01 01 F8 при помощи функции sendMessage из php_serial.class.php? Как их передать в функцию?
PHP код:
function sendMessage ($str$waitForReply 0.1)
    {
        
$this->_buffer .= $str;

        if (
$this->autoflush === true$this->flush();

        
usleep((int) ($waitForReply 1000000));
    } 
mr_smit вне форума   Ответить с цитированием
Ответ


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

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

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

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


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


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