19.12.2024, 17:30
(19.12.2024, 14:57)Erwin van der Zwart Wrote: Can you try this version, it uses webrequests instead of URL with basic authentication that is not supported anymore in FW 3.0.0
Code:-- Batch adding trends v1.3 - Created by Erwin van der Zwart - Schneider Electric Netherlands ------------------- -- For spaceLYnk FW 3.0.0 or higher and Wiser for KNX FW 3.0.0 or higher ---------------------------------------- -- Make sure that "Block unsafe functions in scripts" is disbled in General Configuration -- Refresh browser after creation to show the trends ------------------------------------------------------------ ----------------------------------------------- Start Parameters ------------------------------------------------ -- Start address of objects start_objectaddress = '3/0/0' -- Trends for all objects between these range are created -- End address of objects end_objectaddress = '3/0/2' -- Select trend type to create (or multiple types on same object) create_trendtype_counter = false create_trendtype_counter_with_negative_delta = false create_trendtype_absolute_value = true -- Select aggregate function (!Important! Can only be these values: AVERAGE / MIN / MAX / LAST)) trendaggregatefunction = 'AVERAGE' -- Set trend resolution (!Important! Can only be these values: 5 / 10 / 15 / 20 / 30 / 60 minutes)) trendresolution = 5 -- Set trend precicion (!Important! Can only be these values: 0 to 8) decimal places trendprecision = 2 -- 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 -------------------------------------- -- Calculate start address to DB format start_objectaddress = knxlib.encodega(start_objectaddress) -- Calculate end address to DB format end_objectaddress = knxlib.encodega(end_objectaddress) -- Function to send request (in this case to create a trend) function webrequest(mod, act, vars, data) require('json') require('dbenv') local path vars = vars or {} function getvar(v) return vars[ v ] end json.data = function() return data or {} end if mod == 'plugin' then path = 'plugins/' .. act .. '/web.lua' else path = 'web/' .. mod .. '/' .. act .. '.lua' end result = dofile('/lib/genohm-scada/' .. path) -- 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 -- Function to create vars function createvars(trend_object, trend_name, trend_type, trend_aggregate_function, trend_resolution, trend_precision, trend_count_resolution, trend_count_daily, trend_show_zero, trend_id) local vars = { object = trend_object, name = trend_name, type = trend_type, aggregation = trend_aggregate_function, 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, } return vars end -- Set counters for creation log number_of_trends = 0 number_failed = 0 -- Loop from startadres to end address to create trends for i = start_objectaddress, end_objectaddress, 1 do -- Get current group address from loop current_GA = knxlib.decodega(i) -- 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 create vars requestdata = createvars(trendobject, trendname, 'C', trendaggregatefunction, trendresolution, trendprecision, trendcountresolution, trendcountdaily, trendshowzero, trendid) webrequest('trends', 'save', {request = 'save'}, requestdata) 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 vars requestdata = createvars(trendobject, trendname, 'D', trendaggregatefunction, trendresolution, trendprecision, trendcountresolution, trendcountdaily, trendshowzero, trendid) webrequest('trends', 'save', {request = 'save'}, requestdata) end -- Check if trend type 'Absolute value' should be created if create_trendtype_absolute_value == true then -- Call function to send create vars requestdata = createvars(trendobject, trendname, 'G', trendaggregatefunction, trendresolution, trendprecision, trendcountresolution, trendcountdaily, trendshowzero, trendid) webrequest('trends', 'save', {request = 'save'}, requestdata) 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)
It works perfectly! thank you very much for the time saved on creating the graphics