Горячая линия Embedded System Rus:8-800-775-06-34 (звонок по России бесплатный)

LM5_N
LM-Wall_N
DALI_N
Vita_N

Урок 1. Вывод табличных данных

Желательно предварительно изучить основы 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, при этом создавая новую строку, выводится в соответствующие столбцы данные об объекте. Рассмотрим по порядку:

  1. object.address – значение группового адреса объекта. В нашем примере это 8/1/1
  2. object.name – имя объекта Light 1
  3. os.date(‘%Y.%m.%d %H:%M:%S’,object.updatetime) – вывод времени прихода последней телеграммы в этот объект. Функция os.date приводит UNIX-формат времени к читаемому виду.
  4. tostring(object.data) – приведение к строковой переменной значения объекта
  5. 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.