Желательно предварительно изучить основы HTML, например http://html.manual.ru/.
Sandbox (песочница)- отдельный веб-сервер на LogicMachine, предназначенный для создания своих WEB-страниц, с возможностью доступа к базе данных и функциям LogicMachine с помощью скриптов LUA. Подробнее о включении и настройке смотрите Руководство пользователя по LogicMachine стр. 255.
Рассмотрим простой пример по выводу объектов с тэгом ‘test’. Для этого создается файл index.lp, копируется в него содержимое страницы (с помощью блокнота или другого текстового редактора) и загружается на FTP сервер на LogicMachine (см. руководство пользователя).
<!doctype html>
<html>
<head>
<meta http-equiv="Content-Type" Content="text/html;charset=utf-8">
<link rel="stylesheet" href="main.css" type="text/css">
</head>
<body>
<TABLE>
<caption>Список объектов системы имеющих тег test:</caption>
<THEAD>
<TR>
<TH>Адрес</TH>
<TH>Имя</TH>
<TH>Обновлен</TH>
<TH>Значение</TH>
<TH>Тип</TH>
</TR>
</THEAD>
<TBODY>
<?
require('genohm-scada')
require('dbenv')
db = dbenv:new()
-- get an array of objects tagged 'test'
objects = grp.tag('test')
for index, object in ipairs(objects) do
print("<TR>")
print("<TD> "..object.address.."</TD>")
print("<TD> "..object.name.."</TD>")
print("<TD> "..os.date('%Y.%m.%d %H:%M:%S',
object.updatetime).."</TD>")
print("<TD> "..tostring(object.data).."</TD>")
print("<TD> "..object.datatype.."</TD>")
print("</TR>")
end
db:close()
?>
</TBODY>
</TABLE>
</body>
</html>
Рассмотрим более подробно содержание данной страницы.
В начале кода идёт описание для браузеров данной в таблице (до html тега </head>). Далее создается таблица с необходимыми заголовками. Включение скриптов LUA происходит с помощью <? И закрывается ?>.
Следующие строчки открывают доступ к базе данных LogicMachine:
require(‘genohm-scada’)
require(‘dbenv’)
db = dbenv:new()
Теперь можно использовать стандартные обращения, которые есть в обычных скриптах на LogicMachine:
— get an array of objects tagged ‘test’
objects = grp.tag(‘test’)
Этой командой мы получаем массив с объектами и их параметрами. Содержимое objects выглядит так:
* table:
[1]
* table:
[address]
* string: 8/1/1
[datahex]
* string:
[updatetime]
* number: 1429782460
[id]
* number: 16641
[data]
* bool: false
[decoded]
* bool: true
[name]
* string: Light 1
[datatype]
* number: 1
Далее в цикле перебирая все объекты в массиве objects, при этом создавая новую строку, выводится в соответствующие столбцы данные об объекте. Рассмотрим по порядку:
- object.address – значение группового адреса объекта. В нашем примере это 8/1/1
- object.name – имя объекта Light 1
- os.date(‘%Y.%m.%d %H:%M:%S’,object.updatetime) – вывод времени прихода последней телеграммы в этот объект. Функция os.date приводит UNIX-формат времени к читаемому виду.
- tostring(object.data) – приведение к строковой переменной значения объекта
- object.datatype – вывод типа объекта
После этого закрываем базу для редактирования командой db:close()
В результате мы получим следующее:
Список объектов системы имеющих тег test: | ||||
Адрес | Имя | Обновлен | Значение | Тип |
8/1/1 | Light 1 | 2015.04.23 12:47:40 | false | 1 |
8/1/2 | asdad | 2015.04.23 17:49:00 | 0 | 9001 |
Данную таблицу можно вывести в стандартную визуализацию LogicMachine с помощью объекта визуализации Frame.