18.12.2024, 14:24
(19.02.2018, 15:39)Domoticatorino Wrote:(07.12.2016, 20:15)Pawel Wrote: Thanks Erwin, those scripts save me a lot of time. I made a small change and all objects with specific tag will have own trend:
Code:-- Batch adding trends - Created by Erwin van der Zwart - Schneider Electric Netherlands -----------
-- For spaceLYnk FW 1.2.1 or higher and homeLYnk FW 1.5.1 or higher --------------------------------
-- Refresh browser after creation to show the trends -----------------------------------------------
----------------------------------------- Start Parameters -----------------------------------------
-- Create trend to object with this tag
tag_name = "make_trend"
-- Set username and password for access to HL
username = 'admin'
password = 'admin'
-- Select trend type to create (or multiple types on same object)
create_trendtype_counter = true
create_trendtype_counter_with_negative_delta = true
create_trendtype_absolute_value = true
-- Set trend precicion (!Important! Can only be these values: 0 to 8)
trendprecision = 0
-- Set trend resolution (!Important! Can only be these values: 5 / 10 / 15 / 20 / 30 / 60 minutes))
trendresolution = 15
-- Set trend count resolution (!Important! Can only be these values: '30' = 30 days, '180' = 180 days, '365' = 1 year, '730' = 2 years, '1825' = 5 years
trendcountresolution = 365
-- Set trend count days (!Important! Can only be these values: '1' = 1 year / '2' = 2 years / '5' = 5 years / '10' = 10 years)
trendcountdaily = 10
-- Set show always 0 base line
trendshowzero = 0 -- 0 = disabled 1 = enabled
------------------------------------------ End Parameters ------------------------------------------
------------------------------ DON'T CHANGE ANYTHING UNDER THIS LINE -------------------------------
-- Load modules
require('json')
require('socket.url')
require('socket.http')
-- Set HL ip address as localhost
ip = '127.0.0.1'
-- Create url for trend creation
url = 'http://' .. username .. ':' .. password .. '@' .. ip .. '/scada-main/trends/save'
-- Function to send request to create trend
function url_send(trend_object, trend_name, trend_type, trend_resolution, trend_precision, trend_count_resolution, trend_count_daily, trend_show_zero, trend_id)
local trend = {
object = trend_object,
name = trend_name,
type = trend_type,
resolution = trend_resolution,
precision = trend_precision,
count_resolution = trend_count_resolution * 12 * 24, -- nr of days * nr of points in a hour at min resolution (60/5 = 12) * hours per day
count_daily = trend_count_daily * 365, -- nr of days * 365 days a year
show_zero = trend_show_zero,
id = trend_id,
}
data = json.encode(trend)
form_data = 'data=' .. socket.url.escape(data)
socket.http.TIMEOUT = 15
local res, code, response_header = socket.http.request(url, form_data)
return res, code, response_header
end
-- Set counters for creation log
number_of_trends = 0
number_failed = 0
objectwithtag = grp.tag(tag_name)
-- Loop for each group adress with specific tag
for key, value in pairs(objectwithtag) do
-- Get current group address from loop
current_GA = knxlib.decodega(value.id)
-- Get current object info
objectinfo = grp.find(current_GA)
-- Check if object excists
if objectinfo ~= nil then
-- Set parameters for request
trendobject = objectinfo.id
trendname = objectinfo.name
trendid = ''
-- Check if trend type 'Counter' should be created
if create_trendtype_counter == true then
-- Call function to send create request
result, code, response_header = url_send(trendobject, trendname, 'C', trendresolution, trendprecision, trendcountresolution, trendcountdaily, trendshowzero, trendid)
-- Calculate results for creation results log
if result == '{"success":true}' then
number_of_trends = number_of_trends + 1
else
number_failed = number_failed + 1
end
end
-- Check if trend type 'Counter with negative delta' should be created
if create_trendtype_counter_with_negative_delta == true then
-- Call function to send create request
result, code, response_header = url_send(trendobject, trendname, 'D', trendresolution, trendprecision, trendcountresolution, trendcountdaily, trendshowzero, trendid)
-- Calculate results for creation results log
if result == '{"success":true}' then
number_of_trends = number_of_trends + 1
else
number_failed = number_failed + 1
end
end
-- Check if trend type 'Absolute value' should be created
if create_trendtype_absolute_value == true then
-- Call function to send create request
result, code, response_header = url_send(trendobject, trendname, 'G', trendresolution, trendprecision, trendcountresolution, trendcountdaily, trendshowzero, trendid)
-- Calculate results for creation results log
if result == '{"success":true}' then
number_of_trends = number_of_trends + 1
else
number_failed = number_failed + 1
end
end
end
end
if number_failed == 0 then
log ("Created " .. number_of_trends .. " trends succesfully")
else
log ("Created " .. number_of_trends .. " trends succesfully and creation of " .. number_failed .. " trends failed")
end
-- Disable script when done automaticly
script.disable(_SCRIPTNAME)
Hi Pawel,
in this case don't you create .csv file?
Thanks.
Hello,
I have just carried out a test with this script which seems clear and complete to me. But it doesn't work for me?! I linked the Tag to three variables for the test and the log return is as follows: * string: Created 0 trends successfully and creation of 4 trends failed. Do you have any possible solutions?