APC HS 500

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

shurlin
Сообщения: 39
Зарегистрирован: Вс апр 22, 2012 3:18 pm
Благодарил (а): 0
Поблагодарили: 4 раза

Re: APC HS 500

Сообщение shurlin » Сб апр 28, 2012 9:15 pm

Да, тоже столкнулся с странным поведением графиков когда они сделаны в странице. В меню работает, а когда отдельная страница то графики не обновляются, то вообще не показываются (только иконка).

Еще мне кажется в графиках нужно чуть поменять отображение информации. Очень часто показание датчика идет по верхней или нижней границе и непонятно сразу что он показывается (видно даже на предыдущем посте). Думаю график(данные) нужно всегда показывать в области 80% от всей области отображения (10% отступ сверху и 10% снизу). Либо должен задаваться интервал в котором показываем.

Также было бы не плохо если была возможность отображения пороговой величины (красная линиия на графике), возможно этот функционал уже есть в pChart и его просто надо прикрутить
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Re: APC HS 500

Сообщение Alex » Сб апр 28, 2012 9:46 pm

Задание мах и мин величины (диапазона) графика просто просится на реализацию.

Ещё было бы неплохо задавать оттенок графика (розовый — мощность, голубой — влажность, красный — выход за границы диапазона и т.п).

Но главный вопрос пока — обновление графика на отдельной странице. Надо с этим как-то разобраться...
shurlin
Сообщения: 39
Зарегистрирован: Вс апр 22, 2012 3:18 pm
Благодарил (а): 0
Поблагодарили: 4 раза

Re: APC HS 500

Сообщение shurlin » Сб апр 28, 2012 11:00 pm

Alex писал(а):Задание мах и мин величины (диапазона) графика просто просится на реализацию.

Ещё было бы неплохо задавать оттенок графика (розовый — мощность, голубой — влажность, красный — выход за границы диапазона и т.п).

Но главный вопрос пока — обновление графика на отдельной странице. Надо с этим как-то разобраться...
В общем поразбиравшись с алгоритмом генерации графиков я пришел к выводу что процесс генерации достаточно ресурсоемкий и показывая несколько график одновременно он просто не успевает генерировать все, те походу они устаревают раньше чем покаызваются. Я поставил сервер на нетбуке и в момент генерации загрузка ЦП прыгает до 100%. Думаю в этом дело. Пока решил вопрос установкой обновления страницы раз в 30 секунд.

По поводу отображение графика, покапавшись в исходниках и описании PChart поменял параметр в файле
htdosc/pChart/index.php в строке

$Test->drawScale($DataSet->GetData(),$DataSet->GetDataDescription(),SCALE_START0,213,217,221,TRUE,0,2);

поставил параметр - SCALE_START0 (это оторжание масштаба графика вместе с нулевой отметкой), так мне показалось удобнее.

Разбить графики по цветам и добавить линии реально с помощью функционала который есть в библиотеки, так что это вопрос времени. Поправить php код думаю тоже не проблема.

документация по либе здесь, если кому надо http://pchart.sourceforge.net/documenta ... pic=pChart#
Vit
Сообщения: 867
Зарегистрирован: Вт янв 17, 2012 12:31 pm
Благодарил (а): 121 раз
Поблагодарили: 78 раз

Re: APC HS 500

Сообщение Vit » Вс апр 29, 2012 7:42 am

Alex писал(а):Немного поколдовал и график в меню управления заработал, а на домашней странице — нет. Видимо, надо что-то добавить в коде.
На домашней странице графики пока не обновляются автоматически...только после перезагрузки страницы.
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Re: APC HS 500

Сообщение Alex » Пн апр 30, 2012 2:43 pm

Ну, если на домашней странице графики действительно не обновляются, то будем ждать... Кстати, на моём компьютере генерация графика загружает процессор на 10%. А как установить принудительное обновление страницы раз в 30 секунд?
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Re: APC HS 500

Сообщение Alex » Пн апр 30, 2012 9:26 pm

Поколдовал ещё немного и вот результат. По-моему неплохо!
Вложения
6.png
6.png (28.07 КБ) 12535 просмотров
Vit
Сообщения: 867
Зарегистрирован: Вт янв 17, 2012 12:31 pm
Благодарил (а): 121 раз
Поблагодарили: 78 раз

Re: APC HS 500

Сообщение Vit » Вт май 01, 2012 3:38 am

Alex писал(а):Поколдовал ещё немного и вот результат. По-моему неплохо!
Даже очень неплохо :)

По возможности выкладывайте скрины и кода, чтобы люди видели реализацию....Потом будет возможность добавлять в статьи на сайте примеры реализации....


Вопрос такого плана:

Можно ли в html коде ставить условия чтобы выводить например различным цветом устройство "Online" или "Offline"
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Re: APC HS 500

Сообщение Alex » Ср май 02, 2012 3:09 pm

> Можно ли в html коде ставить условия чтобы выводить например различным цветом устройство "Online" или "Offline"

Самому интересно. Но я html-теги вижу первый раз в жизни 8(). Видимо тут должны помочь более старшие товарищи :)
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Re: APC HS 500

Сообщение Alex » Ср май 02, 2012 3:14 pm

Инструкция для APC HS 500 (черновой вариант).


Часть 1. Создаём объекты. (Подготовка).

Для начала надо создать класс сетевых устройств. Создаём новый класс и называем его

netDevice

, т. е. «сетевое устройство». Неотъемлемыми свойствами любого сетевого устройства являются IP-адрес и состояние «в сети»/«не в сети». На вкладке «Properties» создаём два свойства.

IpAddress
Link

первое будет содержать IP-адрес устройства, а второе состояние Online/Offline.

Далее, среди сетевых устройств встречаются сетевые UPS-ы. Соответственно создаём подкласс

netUPS

, который наделяем свойствами, характерными для сетевых UPS-ов, такими, как «Заряд», «Текущая мощность», «Ожидаемое время работы», «Работа от линии/батареи»:

Capacity
currentPower
Runtime
Source

Свойства «IP-адрес» и «Link» подкласс netUPS наследует от родительского класса. Далее создаём объект

APChs500

, как представителя класса netUPS-ов. И получаем объект со всеми шестью свойствами, которые нужно сначала заполнить, а затем использовать в наших целях.


Часть 2. Веб-переменные и Устройства Online. (Заполнение свойств).

APC HS 500 содержит встроенный веб-интерфейс с которого мы и будем брать необходимые нам значения переменных. Необходимые нам данные содержатся на страницах http://ip/status.cgi и http://ip/about.cgi (где ip – это IP-адрес UPS-а в сети). Причём для доступа к этим страницам не требуется вводить логин и пароль. Создаём веб-переменные.

Текущая мощность.
Создаём веб-переменную apcWatts
URL: http://ip/status.cgi
SEARCH_PATTERN: providing:.+?006699>([\d]+)
LINKED OBJECT.PROPERTY: APChs500.currentPower
CHECK INTERVAL: 20

Символы в поле SEARCH_PATTERN — это не абракадабра, а т. н. «Регулярные выражения PHP». Все вопросы пропадают после прочтения странички http://phpclub.ru/detail/article/regexp_1. По аналогии создаём другие веб-переменные.

Работа от линии/батареи
Создаём веб-переменную apcSource
URL: http://ip/status.cgi
SEARCH_PATTERN: On ([a-zA-Z]{4})
LINKED OBJECT.PROPERTY: APChs500.Source
CHECK INTERVAL: 20

Заряд.
Создаём веб-переменную apcCapacity
URL: http://ip/status.cgi
SEARCH_PATTERN: On .+? ([\d\.]+)
LINKED OBJECT.PROPERTY: APChs500.Capacity
CHECK INTERVAL: 20

Ожидаемое время работы.
Создаём веб-переменную apcRuntime
URL: http://ip/status.cgi
SEARCH_PATTERN: clock1.gif align=absmiddle>([\d]+)
LINKED OBJECT.PROPERTY: APChs500.Runtime
CHECK INTERVAL: 20

IP-адрес.
Создаём веб-переменную apcIP
URL: http://ip/about.cgi (не status.cgi !)
SEARCH_PATTERN: 192.168.1.([\d]+)
LINKED OBJECT.PROPERTY: APChs500.ipAddress
CHECK INTERVAL: 20

Чтобы знать в сети UPS или нет заходим в «Устройства Online» и создаём новый хост «UPS».

HOSTNAME: х.х.x.x (где х.х.х.х — IP-адрес UPS-а)
HOST TYPE: PING (HOST)
ONLINE CHECK INTERVAL: 20

Далее выбираем Online action: Exec Code: и вводим код

sg('APChs500.Link','Online');

, те присваиваем свойству Link объекта APChs500 значение 'Online'. Аналогично. Offline action: Exec Code:

sg('APChs500.Link','Offline');


Часть 3. Меню управления. (Отображение информации).

Итак, мы заполнили все свойства объекта APChs500 и осталось только отобразить их в удобном для нас виде. Для этого заходим в «Меню управления» и создаём новую секцию

Parent: ROOT
TITLE: (*): APS500
PRIORITY: 500
Type: Custom HTML Box
Data:

<font size="5" color="red" face="Arial">APC</font><font size="4" color="gray" face="Arial"> HS 500</font>
<br>
Мощность: <font color="cyan">%APChs500.currentPower%</font> ватт
<br>
Связь: <font color="cyan">%APChs500.Link%</font>
<br>
Питание: <font color="cyan">%APChs500.Source%</font>
<br>
Заряд: <font color="cyan">%APChs500.Capacity%</font> проц.
<br>
Ожидаемое время: <font color="cyan">%APChs500.runtime%</font> мин.
<br>
IP адрес: <font color="cyan">192.168.1.%APChs500.ipAddress%</font>
<br>
<font color="brown">.</font>
<div align="center"><img src="/pChart/?p=APChs500.currentPower&type=60m&width=280&%rand%"></div>

AUTO UPDATE LABEL: 60

Вот и всё! Получаем симпатичную и информативную картинку. :)
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Re: APC HS 500

Сообщение Alex » Пн ноя 05, 2012 12:08 pm

Сделал страничку управления АРС-ом (в сценах). Значения переменных автоматически меняются, а графики - нет. Надо перезагружать сцену вручную. Это так и должно быть?
Вложения
apc.png
apc control
apc.png (58.73 КБ) 12267 просмотров
Ответить