Добавление необходимых объектов для хранения данных
Первым шагом создадим KNX объект с типом данных 1 бит, в котором у нас будет записываться текущее состояние подключения к шине KNX/TP. Назовём объект KNX Status, где значение true будет показывать присутсвие подключения, а false – отстутствие.
Возможны два решения:
- Используя данные из вкладки Alerts, куда записываются сообщения о подключении и отключении KNX/TP
- Отслеживая системные сообщения.
Первый способ
Создаём резидентный скрипт (Resident Script) с таймером (Sleep) 30 или 60 секунд. Добавляем следующий скрипт
query = "select id,alert,alerttime from alerts WHERE alert LIKE 'KNX/TP%'
order by id desc limit 1"
alerts_res = db:getall(query)
if alerts_res[1].alert == 'KNX/TP: Disconnected' then
grp.write('KNX Status', false)
end
if alerts_res[1].alert == 'KNX/TP: Connected' then
grp.write('KNX Status', true)
end
Второй способ
Создаём резидентный скрипт (Resident Script) с таймером (Sleep) 0 секунд. Добавляем следующий скрипт
if not client then
require('genohm-scada.eibdgm')
function statushandler(status)
if status == 0x00 then
grp.write('KNX Status', true)
elseif status == 0xFF then
grp.write('KNX Status', false)
end
end
client = eibdgm:new()
client:sethandler('status', statushandler)
end
client:step()