Web-интерфейс Умного Дома и разработка домашнего сайта
Re: Web-интерфейс Умного Дома и разработка домашнего сайта
Назначение скриптов не описывал, хотя все собираюсь это сделать.
-
- Сообщения: 17
- Зарегистрирован: 06 мар 2014, 16:28
Re: Web-интерфейс Умного Дома и разработка домашнего сайта
Скрипт Poll.php записывает в SQL значения датчиков с интервалом с которым запускается в cron, получается что база все время увеличивается. Как происходит очистка устаревших значений?
Re: Web-интерфейс Умного Дома и разработка домашнего сайта
Примерно также.
Есть скрипт mod_clear.php, который также запускается из cron. Только один раз в сутки.
Есть скрипт mod_clear.php, который также запускается из cron. Только один раз в сутки.
-
- Сообщения: 17
- Зарегистрирован: 06 мар 2014, 16:28
Re: Web-интерфейс Умного Дома и разработка домашнего сайта
Вот я и узнал про два скрипта, так доберемся до остальных Спасибо, сейчас попробую.
-
- Сообщения: 17
- Зарегистрирован: 06 мар 2014, 16:28
Re: Web-интерфейс Умного Дома и разработка домашнего сайта
Пришла метео-станция Dr.Tech, дебиан опознал ее как:
smirnoff@debian:~$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 002: ID 046d:080f Logitech, Inc. Webcam C120
Bus 008 Device 002: ID 04fc:05d8 Sunplus Technology Co., Ltd Wireless keyboard/mouse
Bus 003 Device 002: ID 0713:0818 Interval Research Corp.
Bus 006 Device 005: ID 0bb4:0ff9 HTC (High Tech Computer Corp.) Desire / Desire HD / Hero (Charge Mode)
на сколько я понял, чтобы записать данные в SQL базу, надо запускать по cron скрипт ws.py, изменив в нем логин и пароль базы данных.
Но ничего не записывается.
По сообщениям об ошибках я понял что надо изменить ID в WeatherStation.py c 1941:8021 на 0713:0818
Тогда я попробовал вывести данные на экран (как в примере на Вашем сайте):
smirnoff@debian:/var/www/libs$ ./test.py
Traceback (most recent call last):
File "./test.py", line 8, in <module>
ws = WeatherStation.weather_station()
File "/var/www/libs/pywws/WeatherStation.py", line 353, in __init__
self.cusb = CUSBDrive(library)
File "/var/www/libs/pywws/WeatherStation.py", line 281, in __init__
self.dev = USBDevice(0x0713, 0x0818)
File "/var/www/libs/pywws/device_pyusb.py", line 98, in __init__
raise IOError("Claim interface failed")
IOError: Claim interface failed
Подскажите что надо сделать чтоб скрипт начал работать?
smirnoff@debian:~$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 002: ID 046d:080f Logitech, Inc. Webcam C120
Bus 008 Device 002: ID 04fc:05d8 Sunplus Technology Co., Ltd Wireless keyboard/mouse
Bus 003 Device 002: ID 0713:0818 Interval Research Corp.
Bus 006 Device 005: ID 0bb4:0ff9 HTC (High Tech Computer Corp.) Desire / Desire HD / Hero (Charge Mode)
на сколько я понял, чтобы записать данные в SQL базу, надо запускать по cron скрипт ws.py, изменив в нем логин и пароль базы данных.
Но ничего не записывается.
По сообщениям об ошибках я понял что надо изменить ID в WeatherStation.py c 1941:8021 на 0713:0818
Тогда я попробовал вывести данные на экран (как в примере на Вашем сайте):
smirnoff@debian:/var/www/libs$ ./test.py
Traceback (most recent call last):
File "./test.py", line 8, in <module>
ws = WeatherStation.weather_station()
File "/var/www/libs/pywws/WeatherStation.py", line 353, in __init__
self.cusb = CUSBDrive(library)
File "/var/www/libs/pywws/WeatherStation.py", line 281, in __init__
self.dev = USBDevice(0x0713, 0x0818)
File "/var/www/libs/pywws/device_pyusb.py", line 98, in __init__
raise IOError("Claim interface failed")
IOError: Claim interface failed
Подскажите что надо сделать чтоб скрипт начал работать?
-
- Сообщения: 17
- Зарегистрирован: 06 мар 2014, 16:28
Re: Web-интерфейс Умного Дома и разработка домашнего сайта
Что ни у кого нет мыслей как опросить метео станцию? Может ссылочку какую подскажете? В каком направлении копать?
Re: Web-интерфейс Умного Дома и разработка домашнего сайта
Вот тоже интересное решение для Web-Интерфейса. Использует NodeJS, как сервер. Если есть желание, то можно создать адаптер для меги и использовать.
viewtopic.php?f=1&t=743&p=13456#p13456
viewtopic.php?f=1&t=743&p=13456#p13456
Re: Web-интерфейс Умного Дома и разработка домашнего сайта
Вопрос по таймерам, может кто подскажет ?
Что необходимо поменять в коде
чтобы он корректно работал не на вкладках, а на отдельных страницах, пробовал по всякому, не могу остановить таймеры при переходе с одной страницы на другую.
Что необходимо поменять в коде
Код: Выделить всё
$('tabs').bind('tabs', function(event, ui) {
$(prevTab).empty();
$(prevTab).stopTime();
prevTab = ui.panel;
});
-
- Сообщения: 6
- Зарегистрирован: 09 окт 2014, 12:52
Re: Web-интерфейс Умного Дома и разработка домашнего сайта
Уважаемые знатоки, помогите, пожалуйста, настроить совместную работу Web интерфейса и Мегадевайса.
Я скачал демо-версию-2 и установил на сервер. Сам интерфейс работает.
Методом научного тыка (правки в mod_megad.php, key.php, админ-панель-устройства-ключи) удалось добиться управления выходами контроллера на странице Свет, при этом контроллер реагирует, становится жирным ВКЛ, пишется время включения и выключения.
НО: если я на самом контроллере включаю соответствующий вход или через базовый интерфейс контроллера, то данные на странице Демо-интерфейса не обновляются.
Если я включаю вход на контроллере, то он обрабатывает выход, который прописан в настройках Action, а не в настройках mod_megad,php, хотя этот скрипт и ip сервера прописаны в настройках контроллера.
Если я ставлю в настройках контроллера скрипт mod_megad2, где обрабатывается долгое нажатие, то все работает: и короткое нажатие и долгое, но данные на основном сайте также не обновляются.
Как сделать так, чтобы на основном веб-интерфейсе обновлялись данные по факту сработки выходов/выходов?
Может у кого-то есть данные по скриптам Web интерфейса? Какой за что отвечает, какие параметры нужно менять под свой контроллер?
Веб интерфейс установлен на Windows 7+OpenServer
Я скачал демо-версию-2 и установил на сервер. Сам интерфейс работает.
Методом научного тыка (правки в mod_megad.php, key.php, админ-панель-устройства-ключи) удалось добиться управления выходами контроллера на странице Свет, при этом контроллер реагирует, становится жирным ВКЛ, пишется время включения и выключения.
НО: если я на самом контроллере включаю соответствующий вход или через базовый интерфейс контроллера, то данные на странице Демо-интерфейса не обновляются.
Если я включаю вход на контроллере, то он обрабатывает выход, который прописан в настройках Action, а не в настройках mod_megad,php, хотя этот скрипт и ip сервера прописаны в настройках контроллера.
Если я ставлю в настройках контроллера скрипт mod_megad2, где обрабатывается долгое нажатие, то все работает: и короткое нажатие и долгое, но данные на основном сайте также не обновляются.
Как сделать так, чтобы на основном веб-интерфейсе обновлялись данные по факту сработки выходов/выходов?
Может у кого-то есть данные по скриптам Web интерфейса? Какой за что отвечает, какие параметры нужно менять под свой контроллер?
Веб интерфейс установлен на Windows 7+OpenServer
-
- Сообщения: 395
- Зарегистрирован: 17 фев 2013, 23:49
- Откуда: Волгодонск, Ростовская обл.
- Контактная информация:
Re: Web-интерфейс Умного Дома и разработка домашнего сайта
Напишите свой mod_megad.php сюда
Re: Web-интерфейс Умного Дома и разработка домашнего сайта
Zaratustra,
1. Если в устройстве прописан правильный IP-адрес сервера и указан скрипт, то сценарий по умолчанию (Action) выполняться не должен.
2. В демо-интерфейсе нет скрипта, который бы периодически опрашивал состояния портов устройств и обновлял информацию в БД. По большому счету (если все происходит через сервер) в таком скрипте нет необходимости. Управление выходами через встроенный Web-интерфейс устройства не совсем штатная с точки зрения серверной автоматизации штука. Тем не менее, такой скрипт можно написать. Он совсем несложный.
1. Если в устройстве прописан правильный IP-адрес сервера и указан скрипт, то сценарий по умолчанию (Action) выполняться не должен.
2. В демо-интерфейсе нет скрипта, который бы периодически опрашивал состояния портов устройств и обновлял информацию в БД. По большому счету (если все происходит через сервер) в таком скрипте нет необходимости. Управление выходами через встроенный Web-интерфейс устройства не совсем штатная с точки зрения серверной автоматизации штука. Тем не менее, такой скрипт можно написать. Он совсем несложный.
-
- Сообщения: 6
- Зарегистрирован: 09 окт 2014, 12:52
Re: Web-интерфейс Умного Дома и разработка домашнего сайта
Вот кодMixman писал(а):Напишите свой mod_megad.php сюда
<?
require_once("ab-cms/class/main_class.php");
$ab = new cms_lib();
function key_update($key_label)
{
global $ab;
$keys_id = $ab->get_id("keys");
$key_tmpID = $ab->mod_read($keys_id, "#tmpID#", "", 1, "key_label='$key_label'");
$key_pio = $ab->mod_read($keys_id, "#key_pio#", "", 1, "tmpID=$key_tmpID");
if ( $key_pio == 1 ) $key_pio = 0; else $key_pio = 1;
$ab->mod_write($keys_id, "key_pio=$key_pio", "tmpID=$key_tmpID");
$ab->mod_write($ab->get_id("keys_journal"), "SYSDATE(), $key_tmpID, $key_pio");
}
// Считываем состояние выхода и записываем значение в БД
if ( !empty($argv[1]) )
{
sleep(2);
$keys_id = $ab->get_id("keys");
$key_tmpID = $ab->mod_read($keys_id, "#tmpID#", "", 1, "key_label='".$argv[1]."'");
$key_addr = $ab->mod_read($keys_id, "#key_addr#", "", 1, "tmpID=$key_tmpID");
list($null, $key_addr, $key_port) = explode(".", $key_addr);
$key_addr = "192.168.1.$key_addr";
$pass = "sec";
$state = file_get_contents("http://$key_addr/$pass/?pt=$key_port&cmd=get");
if ( preg_match("/^ON/", $state) )
$key_pio = 1;
else
$key_pio = 0;
//$key_pio = $ab->mod_read($keys_id, "#key_pio#", "", 1, "tmpID=$key_tmpID");
//if ( $key_pio == 1 ) $key_pio = 0; else $key_pio = 1;
$ab->mod_write($keys_id, "key_pio=$key_pio", "tmpID=$key_tmpID");
$ab->mod_write($ab->get_id("keys_journal"), "SYSDATE(), $key_tmpID, $key_pio");
}
if ( $_SERVER['REMOTE_ADDR'] == "192.168.1.14" )
{
// Выключатель 1 (кухня)
if ( $_GET['pt'] == "0" )
{
echo "9:2";
exec("php mod_megad.php \"test_port\" > /dev/null &");
}
}
?>
-
- Сообщения: 6
- Зарегистрирован: 09 окт 2014, 12:52
Re: Web-интерфейс Умного Дома и разработка домашнего сайта
Андрей, вот что прописано в контроллере:Andrey_B писал(а):Zaratustra,
1. Если в устройстве прописан правильный IP-адрес сервера и указан скрипт, то сценарий по умолчанию (Action) выполняться не должен.
2. В демо-интерфейсе нет скрипта, который бы периодически опрашивал состояния портов устройств и обновлял информацию в БД. По большому счету (если все происходит через сервер) в таком скрипте нет необходимости. Управление выходами через встроенный Web-интерфейс устройства не совсем штатная с точки зрения серверной автоматизации штука. Тем не менее, такой скрипт можно написать. Он совсем несложный.
IP: 192.168.1.14 (адрес контроллера)
GW: 192.168.1.7 (адрес компьютера с ВЕБ интерфейсом, пробовал разные варианты 255.255.255.255, 255.255.255.0, 192.168.1.1-это роутер)
SRV: 192.168.1.7:80 (компьютер с ВЕБ интерф.)
Script: mog_megad.php
Preset: 7I7O
Mega ID: megad
srv loop: yes
Сценарий Action выполняется с небольшой задержкой, секунда-две, при этом мигает желтый светодиод на сетевом разъёме.
Если удалить название скрипта или вписать скрипт mod_megad2.php, то реакция заметно быстрее (по сценарию Action или сценарию megad2 соответственно, оба быстрее).
Чего я хочу добиться от системы: чтобы при срабатывании входа (кнопка-выключатель света, геркон, любой другой датчик) передавалась информация на компьютер, где она регистрировалась бы в базе данных и давался ответ согласно установленного сценария. Например, сработал датчик движения в подвале - включить свет. При этом чтобы в Веб интерфейсе правильно отображалось состояние выходов, то есть чтобы в закладке "Свет" в строке "Свет в подвале" появилось ВКЛ.
PS: Провел эксперимент: в файле mod_megad.php вместо адреса мегадевайса прописал IP телефона и в браузере телефона ввел запрос http://192.168.1.7/mod_megad.php?pt=0, на что через секунду получил ответ 9:2, как настроено в скрипте. При этом на странице Свет состояние выхода не поменялось (в админке в ключах также поменял IP порта на телефонный)
Аналогично буду хотеть и с вкладкой "Климат", но до неё я еще не дошел, хотя купил десяток DHT11, так что подскажите, пожалуйста, какой скрипт и в каких местах редактировать.
Последний раз редактировалось Zaratustra 10 окт 2014, 03:07, всего редактировалось 2 раза.
Re: Web-интерфейс Умного Дома и разработка домашнего сайта
Добрый вечер,
помогите пожалуйста разобраться...
подключил к АЦП порту интерфейсного модуля датчик MQ4
на команду
http://192.168.100.20/sec/?pt=A6&cmd=get
Девайс отвечает "OFF/2", где цифра меняется в зависимости от числа включений на порте "P0"
на команду
http://192.168.100.20/sec/?pt=14&cmd=get
Девайс отвечает значениями 0/1/2...5
Пускание газа и дыма ситуацию не меняют.
Подскажите, что я делаю не так?
помогите пожалуйста разобраться...
подключил к АЦП порту интерфейсного модуля датчик MQ4
на команду
http://192.168.100.20/sec/?pt=A6&cmd=get
Девайс отвечает "OFF/2", где цифра меняется в зависимости от числа включений на порте "P0"
на команду
http://192.168.100.20/sec/?pt=14&cmd=get
Девайс отвечает значениями 0/1/2...5
Пускание газа и дыма ситуацию не меняют.
Подскажите, что я делаю не так?
-
- Сообщения: 395
- Зарегистрирован: 17 фев 2013, 23:49
- Откуда: Волгодонск, Ростовская обл.
- Контактная информация:
Re: Web-интерфейс Умного Дома и разработка домашнего сайта
перемудрили.Zaratustra писал(а):Mixman писал(а):Напишите свой mod_megad.php сюда
if ( $_SERVER['REMOTE_ADDR'] == "192.168.1.14" )
{
// Выключатель 1 (кухня)
if ( $_GET['pt'] == "0" )
{
echo "9:2";
exec("php mod_megad.php \"test_port\" > /dev/null &");
}
}
?>
Проверьте адрес меги в строке
if ( $_SERVER['REMOTE_ADDR'] == "192.168.1.14" )
По умолчанию мега 192.168.0.14
Если все правильно, то двигаемся дальше.
if ( $_GET['pt'] == "0" )
{
echo "9:2"; \\ можно заменить на file_get_contents("http://192.168.1.14/sec/?cmd=9:2"); - так в 99,9% случаех работает
exec("php mod_megad.php \"test_port\" > /dev/null &"); // это зачем?
key_update("light_room"); // тут указываем Label ключа, который прописываете в админке ([ip-server]/ab-cms/)
}
Re: Web-интерфейс Умного Дома и разработка домашнего сайта
Zaratustra,
Если сценарий выполняется с задержкой - это означает, что устройство пытается связаться с сервером, но по каким-то причинам у него это не получается. Проверьте (отключите на время) настройки брандмауэра.
Чтобы убедиться, в том - пытается ли устройство отправлять сообщения на сервер, необходимо смотреть логи Web-сервера на компьютере.
Надеюсь это "Script: mog_megad.php" - опечатка?
Не совсем понятно это: "Если удалить название скрипта или вписать скрипт mod_megad2.php, то реакция заметно быстрее". Эту фразу можно понять так - если указать имя другого скрипта, то все работает. Это так?
Скрипт mod_megad.php работает следующим образом. На тот или иной сработавший вход скрипт сразу отвечает командой смены состояния выхода (например, 9:2), а спустя некоторое время отправляет устройству запрос на получение текущего состояния выхода. И только тогда меняет состояние порта в БД. Вот поэтому в случае с телефоном вы в БД не увидели изменения.
Если сценарий выполняется с задержкой - это означает, что устройство пытается связаться с сервером, но по каким-то причинам у него это не получается. Проверьте (отключите на время) настройки брандмауэра.
Чтобы убедиться, в том - пытается ли устройство отправлять сообщения на сервер, необходимо смотреть логи Web-сервера на компьютере.
Надеюсь это "Script: mog_megad.php" - опечатка?
Не совсем понятно это: "Если удалить название скрипта или вписать скрипт mod_megad2.php, то реакция заметно быстрее". Эту фразу можно понять так - если указать имя другого скрипта, то все работает. Это так?
Скрипт mod_megad.php работает следующим образом. На тот или иной сработавший вход скрипт сразу отвечает командой смены состояния выхода (например, 9:2), а спустя некоторое время отправляет устройству запрос на получение текущего состояния выхода. И только тогда меняет состояние порта в БД. Вот поэтому в случае с телефоном вы в БД не увидели изменения.
Re: Web-интерфейс Умного Дома и разработка домашнего сайта
Shtil, прежде всего, убедитесь в том, что все в порядке с подключением. Обратите внимание, что распиновка датчиков от DFRobot не соответствует распиновке разъема (это, надеюсь, будет исправлено в аппаратной ревизии 5.2).
http://ab-log.ru/forum/viewtopic.php?f=1&t=757
http://ab-log.ru/forum/viewtopic.php?f=1&t=757
Re: Web-интерфейс Умного Дома и разработка домашнего сайта
Mixman,
exec("php mod_megad.php \"test_port\" > /dev/null &");
Это не код Zaratustra, это мой код.
Это как раз и сделано для того, чтобы точно знать состояние порта на случай, если устройство управляется не только сервером.
exec("php mod_megad.php \"test_port\" > /dev/null &");
Это не код Zaratustra, это мой код.
Это как раз и сделано для того, чтобы точно знать состояние порта на случай, если устройство управляется не только сервером.
Re: Web-интерфейс Умного Дома и разработка домашнего сайта
Андрей, спасибо, помогло. Дело было в распиновке.
Re: Web-интерфейс Умного Дома и разработка домашнего сайта
Здравствуйте!
Помогите пожалуйста решить проблему с выводом графиков.
Следуя инструкциям с обзора JpGraph. Рисуем графики температуры пытаюсь вывести графики и обновлять их с заданным интервалом.
Вывести получается, но вот с обновлением, без перезагрузки страницы проблема.
Вот что у меня имеется:
Исходная страница (привожу полностью, т.к. и не знаю где ошибка может быть) "svet.php":
И страница с php скриптом "gaz.php", который это дело обрабатывает:
Буду очень признателен за помощь!
Помогите пожалуйста решить проблему с выводом графиков.
Следуя инструкциям с обзора JpGraph. Рисуем графики температуры пытаюсь вывести графики и обновлять их с заданным интервалом.
Вывести получается, но вот с обновлением, без перезагрузки страницы проблема.
Вот что у меня имеется:
Исходная страница (привожу полностью, т.к. и не знаю где ошибка может быть) "svet.php":
Код: Выделить всё
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<meta http-equiv="Content-Type" Content="text/html; Charset=utf-8">
<title></title>
<head>
<script type="text/javascript" src="jquery-2.1.1.js"></script>
<script type="text/javascript">
$(document).ready(
function()
{
window.setInterval(
function()
{
$('#timeandstring').attr('src', '/gaz.php');
}, 3000);
}
)
</script>
</head>
<body>
<img id="timeandstring" src="/gaz.php">
</body>
</html>
Код: Выделить всё
<?php
error_reporting(0);
$hostname = "127.0.0.1";
$username = "root";
$password = "";
$dbName = "ua";
$userstable = "DatMegaD";
mysql_connect($hostname,$username,$password) OR DIE("Соединение с БД не удалось");
mysql_select_db($dbName) or die(mysql_error());
$query = "SELECT Time, Gaz, Temp FROM $userstable";
$res = mysql_query($query) or die(mysql_error());
$countRows= mysql_num_rows ($res)-1;
$countRowsMin=$countRows-20;
$countRowsMax=$countRows;
$query ="SELECT Time, Gaz, Temp FROM $userstable LIMIT $countRowsMin,$countRowsMax";
$res = mysql_query($query) or die(mysql_error());
$i=0;
while ($i<20)
{
$myrow = mysql_fetch_array($res);
$xdata[]=$myrow['Time'];
$ydata[]=$myrow['Gaz'];
$ydata1[]=$myrow['Temp'];
$i++;
}
include_once ("/jpgraph-3.5.0b1/src/jpgraph.php");
include_once ("/jpgraph-3.5.0b1/src/jpgraph_line.php");
$graph = new Graph(500,350);
$graph->SetScale('textlin');
$graph->SetMarginColor('white');
$graph->SetFrame(true,'#B3BCCB', 1);
$graph->SetTickDensity(TICKD_DENSE);
$graph->SetMargin(50,5,5,50);
$graph->xgrid->Show();
$graph->xaxis->SetTickLabels($xdata);
$graph->xaxis->SetLabelAngle(45);
$graph->xaxis->SetPos('min');
$my_interval = ceil(5);
$graph->xaxis->SetTextTickInterval($my_interval);
$p1 = new LinePlot($ydata);
$p2 = new LinePlot($ydata1);
$graph->Add($p1);
$graph->Add($p2);
$graph->Stroke();
mysql_close();
?>