This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm that you accept these cookies being set.

Trends API
#9
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)
Reply


Messages In This Thread
Trends API - by buuuudzik - 28.05.2016, 16:52
RE: Trends API - by Habib - 28.05.2016, 17:13
RE: Trends API - by Erwin van der Zwart - 28.05.2016, 22:01
RE: Trends API - by admin - 29.05.2016, 06:12
RE: Trends API - by buuuudzik - 29.05.2016, 11:22
RE: Trends API - by Erwin van der Zwart - 02.09.2016, 18:46
RE: Trends API - by admin - 05.09.2016, 06:01
RE: Trends API - by Erwin van der Zwart - 05.09.2016, 09:29
RE: Trends API - by Pawel - 07.12.2016, 20:15
RE: Trends API - by Domoticatorino - 19.02.2018, 15:39
RE: Trends API - by Erwin van der Zwart - 19.02.2018, 16:32
RE: Trends API - by Domoticatorino - 13.02.2018, 16:52
RE: Trends API - by Daniel - 13.02.2018, 18:49
RE: Trends API - by Domoticatorino - 19.02.2018, 16:33
RE: Trends API - by PassivPluss - 17.09.2019, 21:10
RE: Trends API - by admin - 24.09.2019, 06:53
RE: Trends API - by Trond Hoyem - 17.06.2022, 12:57
RE: Trends API - by admin - 17.06.2022, 13:20
RE: Trends API - by Trond Hoyem - 17.06.2022, 13:23
RE: Trends API - by admin - 17.06.2022, 13:23
RE: Trends API - by Trond Hoyem - 17.06.2022, 13:27
RE: Trends API - by admin - 17.06.2022, 13:30
RE: Trends API - by Trond Hoyem - 17.06.2022, 13:33
RE: Trends API - by admin - 17.06.2022, 13:34
RE: Trends API - by Trond Hoyem - 17.06.2022, 13:36
RE: Trends API - by admin - 17.06.2022, 14:15
RE: Trends API - by Trond Hoyem - 17.06.2022, 14:26
RE: Trends API - by admin - 17.06.2022, 14:32

Forum Jump: