SmartLiving.ru

Обсуждение проекта
 
Текущее время: Сб фев 24, 2018 8:53 pm

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 79 ]  На страницу 1, 2, 3, 4, 5 ... 8  След.
Автор Сообщение
СообщениеДобавлено: Пн дек 10, 2012 11:58 pm 
Не в сети

Зарегистрирован: Чт ноя 29, 2012 4:13 pm
Сообщения: 79
Благодарил (а): 0 раз.
Поблагодарили: 6 раз.
Две недели назад с подачи Хабра познакомился с MajorDoMo и данным форумом.
До этого больше года имел стабильно работающую систему под Ubuntu, реализованную на 960 Grid System и давно хотелось оптимизировать интерфейс для просмотра на мобильных устройствах.
А тут еще помимо мобильного интерфейса заполучил и бесплатную настроенную CMS, которую Сергей изначально разрабатывал в коммерческих целях судя по всему. Так что ему и всем разработчикам большой респект за проделанную и проделываемую работу.
Итак, для начала, что получилось:

ИзображениеИзображение

"Пульт управления" - дешевый планшет типа ePad 7-дюймов с Android 2.2. Заказывал за ~50 фунтов на amazon.co.uk по "подарочным" купонам.

Теперь распишу, что устанавливал, что дорабатывал (может встречаться "быдло-код" :) ). Такая шпаргалка мне бы очень помогла, когда я только начинал свои изыскания в данной теме.

"Сервер": Intel D945GCZ, Celeron 2.8Ghz, 1Gb RAM, 80Gb HDD, сеть/аудио/видео интегрированное, мастер шины 1-wire DS9097 (на COM-порт), плата видеозахвата AverMedia EZCapture (низкопрофильная, чтобы влезала в Slim Desktop корпус).
Ubuntu 12.04.1 Server. При инсталляции из дополнительных пакетов выбрал LAMP (Apache, MySQL, PHP).
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install mc (Midnight Commander)
sudo apt-get install php5-curl (необходимый модуль для системы)
sudo apt-get install phpmyadmin (админка для mysql)
sudo apt-get install owfs (пакет для работы с 1-wire)
sudo apt-get install motion (пакет для видеонаблюдения)
sudo apt-get install lm-sensors (пакет для мониторинга температуры системы, частоты вращения кулеров ...)
sudo apt-get install hddtemp (пакет для мониторинга температуры жесткого диска)
для нормальной работы в дальнейшем необходимо дать команду sudo chmod u+s /usr/sbin/hddtemp

установил статический адрес в /etc/network/interfaces:
Код:
auto eth0
iface eth0 inet static
    address 192.168.1.222
    netmask 255.255.255.0
    network 192.168.1.0
    broadcast 192.168.1.255
    gateway 192.168.1.1
    dns-nameservers 192.168.1.1
#iface eth0 inet dhcp


в случае использования статического адреса необходимо указать dns-сервер в файле в /etc/resolvconf/resolv.conf.d/head:
Код:
nameserver 192.168.1.1


в случае наличия 1-wire адаптера необходимо поправить /etc/owfs.conf:
раскомментарить server: device = /dev/ttyS0 (для COM1, для USB будет немного по-другому)
закомментарить server: FAKE = DS18B20, DS2405
по желанию можно убрать из автозапуска owftpd и owhttpd, а оставить только owserver

в /etc/php5/apache2/php.ini и /etc/php5/cli/php.ini установить
error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED
чтобы не заваливало ненужными сообщениями в логах

в /etc/apache2/sites-enabled/@000-default изменить
AllowOverride all для /var/www
/etc/apache2/mods-available/rewrite.load перенести в /etc/apache2/mods-enabled

Далее по очереди по пунктам:

1. Заголовок заглавной страницы menu.html

Вместо фразы MajorDoMo по совету супруги добавил туда часы, потому что на "пульте управления" я использую браузер Dolphin Mini в полноэкранном режиме и часов в трее не видно, а часы у входной двери перед глазами не помешают.
В каталоге /js разместил файл date.js, который можно найти в аттаче:
В файле /templates/menu.html добавил на него ссылку в самом начале:
<script type="text/javascript" src="/js/date.js"></script>
В файле /templates/commands/commands_search_pda.html заменил сам заголовок
<h1 id="label_[#PARENT_ID#]">[#if PARENT_TITLE!=""#][#PARENT_TITLE#][#else#]MajorDoMo[#endif#]</h1>
на
<h1 id="label_[#PARENT_ID#]">[#if PARENT_TITLE!=""#][#PARENT_TITLE#][#else#]<span id="clock">MajorDoMo</span>[#endif#]</h1>
Кстати, на втором скрине ошибка в месяце. В js-скрипте месяцы считались от 0 до 11, а не от 1 до 12 по умолчанию. Поправил.

2. Климат

Изображение

У меня 4 1-wire термометра ds18b20. Для них в CMS создан класс tempSensors со свойством temp и методом tempChanged, созданы 4 объекта Kitchen, Room, Outside, Balcony, в разделе 1-Wire в CMS для каждого термометра DS18B20 в соответствующем сценарии прописал callMethod("Balcony.tempChanged",array('t'=>$params['temperature12']['VALUE']));
Balcony - это имя объекта соответственно. temperature12 - это единственное правильное значение для моих термометров.
Метод tempChanged выглядит так:
Код:
if (is_numeric($params['t']) and ($params['t'] <> 85)) {
$t=round($params['t']*2)/2;
$this->setProperty('temp',$t);
$this->setProperty('updated',time());
$this->setProperty('updatedTime',date("H:i d-m-Y",time()));
};

Иногда из-за паразитного питания датчики выдают температуру 85, а иногда в tempChanged приходят нецифровые значения (не изучал какие), поэтому я добавил такое условие. Ну и округлил.
Прогноз погоды пока оставил по умолчанию, какой был в дистрибутиве. Только изменил город на Москву.
Коды для графиков вида: <img src="/pChart/?p=Outside.temp&title=Улица (%Outside.temp%°C)&type=24h&width=200&height=160&gtype=curve&px=15&%rand%">
Заголовок меню управления выглядит так:
Климат ( %Outside.temp%°C / %Room.temp%°C )

Графики пока работают ужасно: тормозят, не отображаются, срезаются ... но ребята активно борются с этой проблемой - ждем результатов.

3. Пробки

Изображение

В объекте ThisComputer создал два свойства: ProbkiText и Probki, cделал две веб-переменные: YandexProbkiText и YandexProbki
Ссылка для Москвы: http://export.yandex.ru/bar/reginfo.xml?ncrnd=2789
Кодировка: utf-8
Шаблоны поиска: hint lang="ru"\>(.+?)\<\/hint для ProbkiText и level\>(.+?)\<\/level\> для Probki
Заголовок меню управления выглядит так:
%ThisComputer.ProbkiText% (%ThisComputer.Probki%)
При входе в данный пункт меню попадаем в HTML-блок с кодом:
<iframe src="/ya.php" border=0 frameborder=0 width="260"/>
Код страницы ya.php положил в аттач. Код написал на основе какого-то примера и все заработало без всяких API-ключей и вроде во всех браузерах. Чисто из php без участия браузера Яндекс не даёт получать маршруты, поэтому пришлось использовать javascript. В результате времена маршрутов отображаются не моментально. Они просчитываются каждый раз при открытии страницы.
Наверное, круто было бы парсить сразу несколько веб-переменных за одно скачивание страницы и раскладывать в разные свойства.

4. Видеонаблюдение

Изображение

Пока опишу алгоритм работы данного модуля, потому что описание настроек пакета motion довольно комплексное, надо этому посвятить отдельную тему. Если будут заинтересованные, то я сделаю.
Итак: после обнаружения движения в камере пакет motion, во-первых, создает две записи (для фотки и для видео) в специальной таблице mySQL, которую я добавил в базу db_terminal, а, во-вторых, запускает сценарий MajorDoMo, который берет последние 10 событий из вышеуказанной таблицы, создает картинки-превьюшки для новых событий в отдельной папке и потом формирует кусок html-кода, который записывается в глобальную переменную в объекте ThisComputer. Содержимое этой переменной и отображается при входе в раздел Видеонаблюдение.
Для просмотра увеличенных фотографий используется шаблонный файл showimage.php, которому передается имя фотки. Синий кружочек с белой стрелочкой в правом столбце это ссылка на видеофрагмент.
Для примера приведу сценарий, который отрабатывает при обнаружении движения:
Код:
include("./simpleimage.php");
//say("Обнаружено движение в камере");
$sql=SQLSelect("SELECT * FROM security where file_type=1 order by time_stamp DESC limit 10");
$result='<ul data-role="listview" class="ui-listview">';
foreach($sql as $row) {
   $shortname = substr($row[filename],strripos($row[filename],'/'));
   $webname = substr($row[filename],8);
   $resultname = '/var/www/camsjpg/cam1/thumbs/'.$shortname;
   $sql1=SQLSelect("SELECT * FROM security where file_type=8 and text_event=\"".$row['text_event']."\"");
   $videoname = substr($sql1[0]['filename'],8);
if (!file_exists($resultname)) {
   $image = new SimpleImage();
   $image->load($row[filename]);
   $image->resizeToHeight(70);
   $image->save($resultname);
};
$result = $result.'<li><a href="/showimage.php?img='.$webname.'&date='.$row[time_stamp].'" rel="external" style="padding-right:0px;"><img src="/camsjpg/cam1/thumbs/'.$shortname.'" style="position:absolute;top:0;bottom:0;margin:auto;" class="image">'.substr($row[time_stamp],11,8).'<br>'.substr($row[time_stamp],0,10).'</a><a href="'.$videoname.'" data-rel="dialog" data-transition="slideup" rel="external">Видео</a></li>';
};
$result = $result.'</ul>';
sg('ThisComputer.security',$result);

Файлы showimage.php и simpleimage.php также положил в аттач.

5. История событий
Практически всё штатно. Я только поправил /modules/shoutbox/shouts_search.inc.php строку 129, где выводилось имя пользователя, который что-либо сообщает в чате. Мне это не нужно.

6. Архив событий

Изображение

С помощью Сергея пришёл к такому порядку действий:
Сначала создаём домашнюю страницу с кодом
Код:
<div style="text-shadow:none;font-weight:normal;">[#module name="shoutbox" limit="100" reverse="1" mobile="1"#]</div>

Потом создаем подраздел меню типа HTML-блок с кодом
Код:
<iframe src="/page/14.html" border=0 frameborder=0  width="260" height="800"/>

где 14.html - это название домашней страницы, созданной на предыдущем шаге.

7. Балансы мобильных телефонов

Изображение

Раз в полчаса по крону запускается php-скрипт, получающий балансы мобильников из личных кабинетов на сайтах операторов.
Код:
0-59/30 * * * * php /var/www/scripts/balance.php 2>/dev/null

Данный скрипт был написан уже довольно давно Егором Зюскиным. Изначально он представлял из себя очень универсальный API для получения балансов у всех операторов по всем регионам. Какое-то время он очень неплохо работал, но потом начали возникать постоянные сбои. В результате я убрал кэширование значений баланса, поправил параметры curl на предмет запроса в нужных кодировках, еще немного побыдлокодил в направлении защиты от сбоев на сайтах операторов и теперь вроде всё довольно стабильно.
Итак, создаем класс объектов MobilePhone со свойством balance и методом balanceChanged:
Код:
$this->setProperty('balance',$params['balance']);

Создаем объекты класса MobilePhone для каждого телефона. В начале файла balance.php заполняем массив мобильных телефонов и указываем оператора связи для каждого телефона. В результате у нас по расписанию выполняются запросы на изменение баланса типа
Код:
wget http://127.0.0.1/objects/?object=andy\&op=m\&m=balanceChanged\&balance=".$balance." -O \/dev\/null"

Потом выводим все наши объекты в табличку в HTML-коде типа:
Код:
<table data-role="table" id="my-table" data-mode="reflow">
  <tbody>
    <tr>
      <th style="width:160px;">Андрей</th>
      <td>%andy.balance%</td>
    </tr>
    <tr>
      <th>Ольга</th>
      <td>%olga.balance%</td>
    </tr>
    </tbody>
</table>


balance.php положил в аттач

8. Доступность устройств

Изображение

Тут опять же всё довольно штатно. Добавляем наши объекты в разделе CMS "Устройства Online", прописываем для них действия при переходе в онлайн/оффлайн по необходимости типа
Код:
say("Интернет не доступен");

и добавляем в меню управления новый HTML-блок [#module name="pinghosts" mobile="1"#]
Я для себя немного поправил шаблон для отображения состояний. Он находится в /templates/pinghosts/pinghosts_search_site_mobile.html:
Код:
<table>
[#begin RESULT#]
<tr>
<td>
<a href="#" data-role="button" data-icon="info" style="background:
  [#if STATUS="0"#]unknown[#endif#]
  [#if STATUS="1"#]green[#endif#]
  [#if STATUS="2"#]red[#endif#]
; color: white;">[#if TITLE!=""#][#TITLE#][#endif#]</a></td>
<td>[#CHECK_LATEST#]</td>
</tr>
[#end RESULT#]
</table>


9. Информация

Изображение

Данная информация собирается при помощи линуксовых программ sensors, hddtemp, uptime ... Предварительно я создал несколько свойств у объекта ThisComputer: system_temp1, system_temp3, system_mbtemp, system_fan1, system_hdd1temp, system_uptime, system_freespace. В зависимости от материнской платы и её средств мониторинга полезных датчиков может быть другое количество или немного могут меняться их названия. Раз в минуту в методе OnNewMinute вызывается сценарий sensors: RunScript('sensors');. Он выглядит следующим образом:
Код:
exec("sensors",$asensors);
for($i=0;$i<count($asensors);$i++) {
   ereg("[^:]*\:[ ]*([0-9+-.]*)",$asensors[$i],$arr);
   $temp = trim($arr[1]);
   $temp = str_replace('+','',$temp);
   switch (substr($asensors[$i],0,5)) {
    case 'fan1:':
        sg('system_fan1',$temp);
        break;
    case 'temp1':
        sg('system_temp1',$temp);
        break;
    case 'temp3':
        sg('system_temp3',$temp);
        break;
    case 'M/B T':
        sg('system_mbtemp',$temp);
        break;
    };
};
$temp=exec("\/usr\/sbin\/hddtemp \/dev\/sda1");     
ereg("[^:]*\:[ ]*[^:]*\:[ ]*([0-9+-.]*)",$temp,$arr);
$temp = trim($arr[1]);
$temp = str_replace('+','',$temp);
sg('system_hdd1temp',$temp);
       
$data = shell_exec('uptime');
$uptime = explode(' up ', $data);
$uptime = explode(',', $uptime[1]);
sg('system_uptime',trim($uptime[0]));
       
$bytes = disk_free_space(".");
$si_prefix = array( 'B', 'KB', 'MB', 'GB', 'TB', 'EB', 'ZB', 'YB' );
$base = 1024;
$class = min((int)log($bytes , $base) , count($si_prefix) - 1);
$temp = round($bytes / pow($base,$class)) . ' ' . $si_prefix[$class];
sg('system_freespace',$temp);

Тут может потребоваться, во-первых, поменять имена сенсоров, которые выводятся по команде sensors, а также девайс жесткого диска. У меня это /dev/sda1.
Соответственно эти данные добавляем в таблицу в HTML-блок в очередном разделе в меню управления:
Код:
<table>
<tr>
<td>
Свободное место на диске: </td><td>%ThisComputer.system_freespace%</td></tr>
<tr><td>
Время непрерывной работы: &nbsp;&nbsp;&nbsp;</td><td>%ThisComputer.system_uptime%</td></tr>
<tr><td>
Температура системы 1: </td><td>%ThisComputer.system_temp1%</td></tr>
<tr><td>
Температура системы 3: </td><td>%ThisComputer.system_temp3%</td></tr>
<tr><td>
Температура мат. платы:  </td><td>%ThisComputer.system_mbtemp%</td></tr>
<tr><td>
Температура жесткого диска: </td><td>%ThisComputer.system_hdd1temp%</td></tr>
<tr><td>
Скорость вращения кулера: </td><td>%ThisComputer.system_fan1%</td></tr>
</table>


10. Сервис

Изображение

В этом разделе остались штатные пункты меню типа Календарь, GPS ..., а также я добавил несколько кнопок для управления внешними устройствами. В данный момент активны две первые кнопки, включающие и выключающие большой домашний компьютер. Команды от кнопок посылаются на Arduino-контроллер с Ethernet-шилдом.
Код для кнопки "Выключить компьютер":
Код:
$url='http://192.168.1.223/command?3=LCLICK';
getURL($url,0);

Код для кнопки "Включить компьютер":
Код:
$url='http://192.168.1.223/command?3=CLICK';
getURL($url,0);

Это означает, что на 3-й цифровой ноге Arduino у меня висит самодельный relay-модуль, релюха которого подключена к кнопке Power компьютера.
Вот список того, что используется для компиляции "серверной" прошивки Arduino.
DallasTemperature library: https://github.com/milesburton/Arduino-Temperature-Control-Library
OneWire library: http://www.pjrc.com/teensy/td_libs_OneWire.html
WebServer library: https://github.com/sirleech/Webduino
MajorDomo Control Server: https://github.com/sochkasov/majordomo-arduino
В Control Server я правда для себя закомментарил всё, относящееся к протоколу 1-wire, потому что этим у меня занимается Linux.

11. GPS

Использую всё, как "в букваре": Big Brother GPS под Android. В целом нормально, но если долго программа висит в фоне (когда нахожусь в здании), то после выхода на улицу пока её не активируешь, она ничего посылать не собирается. Continuos Operation режим не использую, потому что батарейка и так хреново держит.
Привязки к координатам пока не придумал, как использовать, но домашним нравится "за мной наблюдать" по истории событий :D


Что еще из косметических изменений:
Бэджи (цифры, обозначающие количество подпунктов) из меню убираются в /templates/commands/commands_search_pda.html: <span class="ui-li-count">[#RESULT#]
Чтобы не урезались заголовки страниц я поправил /jquerymobile/jquery.mobile-1.1.0.css и установил margin: .6em 0 .8em 5px; для ui-header.

P.S. Сейчас делаю удаленные датчики и relay-модули на attiny85+nrf24l01+dht11/ds18b20. Для чего купил соответствующей комплектухи на ebay.


Вложения:
attach.zip [12.33 КБ]
Скачиваний: 694

_________________
Андрей


Последний раз редактировалось raptorialfungus Вт янв 15, 2013 3:39 pm, всего редактировалось 3 раз(а).
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вт дек 11, 2012 4:58 am 
Не в сети

Зарегистрирован: Пт янв 20, 2012 3:05 pm
Сообщения: 168
Благодарил (а): 9 раз.
Поблагодарили: 1 раз.
Просто отлично!!!
Попробывал пока только пробки
1.Стили и маршруты зашиты в ya.php
Вложение:
ya.JPG
ya.JPG [ 17.04 КБ | Просмотров: 48230 ]

На светлом фоне я поменял цвет и установил bold
Желательно чтобы стили были интегрированы со стилями MJ(dark,light), а Точки маршрутов связать с GPS-модулем
2.Может быть удобнее время по маршруту вынести с свойства и потом отображать в любом виде.
3. Может что-то у меня глючит, если в случае с пробками не отображается Меню (На дорогах свободно(1)) пришлось делать еще один объект.
4.Поменял приоритеты меню поставил пробки выше температуры - она исчезла
Вложение:
ya.JPG
ya.JPG [ 29.7 КБ | Просмотров: 48230 ]
Вложение:
ya2.JPG
ya2.JPG [ 34.7 КБ | Просмотров: 48230 ]

Где собака зарыта?
Спасибо


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вт дек 11, 2012 8:50 am 
Не в сети

Зарегистрирован: Чт ноя 29, 2012 4:13 pm
Сообщения: 79
Благодарил (а): 0 раз.
Поблагодарили: 6 раз.
tammat писал(а):
Точки маршрутов связать с GPS-модулем

Эту идею не уловил.

tammat писал(а):
2.Может быть удобнее время по маршруту вынести с свойства и потом отображать в любом виде.

Ежу понятно, что удобнее. И я очень рассчитывал, что так и будет, когда начал разрабатывать этот модуль. Но согласно политике Яндекса маршруты и некоторая другая информация не может быть получена через статический API. А может быть получена только в браузере через javascript. Так что если только где-то на стороне держать запущенный "прокси"-браузер :)
tammat писал(а):
3. Может что-то у меня глючит, если в случае с пробками не отображается Меню (На дорогах свободно(1)) пришлось делать еще один объект.
Где собака зарыта?

Мне кажется, что зарыта она как раз в iframe. Когда выводишь iframe в ROOT элементах меню, то всё плохо. Пришлось выводить в подразделах. Похожая ситуация вроде у меня была и с Архивом событий. Там ведь тоже iframe.
В файле ya.php подгружаются свои javaскрипты. Чего-то конфликтует.

_________________
Андрей


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вт дек 11, 2012 10:09 am 
Не в сети

Зарегистрирован: Пт янв 20, 2012 3:05 pm
Сообщения: 168
Благодарил (а): 9 раз.
Поблагодарили: 1 раз.
Цитата:
Цитата:
tammat wrote:
Точки маршрутов связать с GPS-модулем


Эту идею не уловил.

ИМХО, связать с местами.
Абсолютно уверен, что у всех есть Дом и работа и еще какие-то места,специфичные для каждого.
Поэтому совершенно логично знать сколько по времени от одного места до другого с возможностью дальнейшего разделения по пользователям,для отображения у каждого своих маршрутов.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вт дек 11, 2012 10:20 am 
Не в сети
Site Admin

Зарегистрирован: Пн сен 05, 2011 6:48 pm
Сообщения: 4243
Откуда: Минск, Беларусь
Благодарил (а): 73 раз.
Поблагодарили: 1207 раз.
Шикарно! Просто шикарно! )
Обязательно буду перенимать идеи реализованного.

_________________

Сергей Джейгало, разработчик MajorDoMo
Профиль Connect -- информация, сотрудничество, услуги


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вт дек 11, 2012 10:28 am 
Не в сети

Зарегистрирован: Пт янв 20, 2012 3:05 pm
Сообщения: 168
Благодарил (а): 9 раз.
Поблагодарили: 1 раз.
Цитата:
Цитата:
tammat wrote:
Точки маршрутов связать с GPS-модулем


Эту идею не уловил.

ИМХО, связать с местами.
Абсолютно уверен, что у всех есть Дом и работа и еще какие-то места,специфичные для каждого.
Поэтому совершенно логично знать сколько по времени от одного места до другого с возможностью дальнейшего разделения по пользователям,для отображения у каждого своих маршрутов.
Что-то с балансом никак не получается
Возвращает 0.00


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вт дек 11, 2012 11:04 am 
Не в сети

Зарегистрирован: Пт апр 20, 2012 12:53 pm
Сообщения: 2069
Благодарил (а): 39 раз.
Поблагодарили: 237 раз.
Очень правильная идея делиться интерфейсами и их реализацией. Почерпнул для себя много интересного.

Цитата:
Доступность устройств

Для меня больной вопрос. Ничего не менял, только задал IP устройств. Все статусы «Online», хоть убей. И не понятно почему это так и как лечить. :(

Цитата:
Информация
Данная информация собирается при помощи линуксовых программ sensors, hddtemp, uptime

О-о-очень интересно. Как бы это сделать под Windows?

_________________
AMS: сайт, загрузка, документация, разработка проектов


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вт дек 11, 2012 11:38 am 
Не в сети

Зарегистрирован: Чт ноя 29, 2012 4:13 pm
Сообщения: 79
Благодарил (а): 0 раз.
Поблагодарили: 6 раз.
Цитата:
ИМХО, связать с местами.
Абсолютно уверен, что у всех есть Дом и работа и еще какие-то места,специфичные для каждого.

Теперь приблизительно понятно. Для универсализации можно что-то предпринять. Я не вижу никаких проблем передавать необходимые параметры скрипту ya.php. Или просто можно его "научить" брать необходимое из какой-то базы или из переменных.

Цитата:
Что-то с балансом никак не получается
Возвращает 0.00

Хмм. Такой ответ может быть только если не определен оператор связи. Показывайте массив $manual_detect.
номер должен быть в формате кодномер: 9161234567

_________________
Андрей


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вт дек 11, 2012 12:00 pm 
Не в сети

Зарегистрирован: Чт ноя 29, 2012 4:13 pm
Сообщения: 79
Благодарил (а): 0 раз.
Поблагодарили: 6 раз.
Alex писал(а):
Очень правильная идея делиться интерфейсами и их реализацией. Почерпнул для себя много интересного.
Цитата:
Доступность устройств

Для меня больной вопрос. Ничего не менял, только задал IP устройств. Все статусы «Online», хоть убей. И не понятно почему это так и как лечить. :(

Ну значит надо просто дебажить модуль pinghosts (/modules/pinghosts/pinghosts.class.php). На разных этапах его работы вставлять Debmes(какая-то переменная); и смотреть, в чем именно проблема. Чудес не бывает.

Это вызов из pinghosts.class.php:
Код:
$online=ping($host['HOSTNAME']);

вот функция ping в /lib/general.class.php
Код:
function ping($host) {
    if (substr(php_uname(), 0, 7) == "Windows"){
    exec(sprintf('ping -n 1 %s', escapeshellarg($host)), $res, $rval);
    } else {
     exec(sprintf('ping -c 1 -W 5 %s', escapeshellarg($host)), $res, $rval);
    }
    return $rval === 0;
  }


Цитата:
Информация
Данная информация собирается при помощи линуксовых программ sensors, hddtemp, uptime
О-о-очень интересно. Как бы это сделать под Windows?

Попробовал поискать в инете и ничего универсального удобного найти не удалось. В зависимости от материнки и от желания её производителя выдавать такую инфу по SNMP после установки определенного софта можно что-то и получить.

_________________
Андрей


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Чт дек 13, 2012 5:01 pm 
Не в сети

Зарегистрирован: Пт апр 20, 2012 12:53 pm
Сообщения: 2069
Благодарил (а): 39 раз.
Поблагодарили: 237 раз.
Цитата:
Ну значит надо просто дебажить модуль pinghosts

Полез разбираться с Устройствами Online и обнаружил, что модуль работает. Стал вспоминать, что изменилось. Переставил с w7 на XP и отключил фаервол с антивирусом. Вот что то из этих трёх факторов и не давало модулю работать. Непонятно только почему статус у всех устройств был Online, а не Offline. По логике, если что то мешало модулю работать статус должен был быть Offline.

_________________
AMS: сайт, загрузка, документация, разработка проектов


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 79 ]  На страницу 1, 2, 3, 4, 5 ... 8  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: dengi.76, shse и гости: 1


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

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB