Чтение и запись значений в теги
Необходимо вычислить среднее значение тегов supplyWaterTemp и tankTemp, которые представляют собой температуру воды в подающем трубопроводе и температуру воды в баке-аккумуляторе соответственно, и присвоить значение тегу averageTemp.
averageTemp.lua
local async = require("async") -- загрузка модуля для выполнения асинхронных функций
local tagApi = require("simplight.api.channels") -- загрузка модуля чтения/записи тегов через функции readMany и writeMany
setInterval(function() -- функция циклического выполнения
async(function() -- async принимает анонимную функцию
-- await приостанавливает выполнение async до получения функцией readMany значений тегов
local tags = await(tagApi.readMany({ "supplyWaterTemp", "tankTemp"}))
local supply = tags[1].value -- извлечение значения тега "supplyWaterTemp"
local tank = tags[2].value -- извлечение значения тега "tankTemp"
local average = (supply + tank)/2 -- вычисление среднего значения
-- запись в тег averageTemp значения переменной average и признака качества сигнала (0xC0 — хорошее качество)
await(tagApi.writeMany({values = {{ name="averageTemp", value=average, quality=0xC0 }}
}))
end):catch(function(err) -- обработка возможных ошибок
print("error", err)
end)
end, 1000) -- интервал выполнения функции setInterval (1000 мс)