(18.02.2017, 00:03)Erwin van der Zwart Wrote: Hi,
Yes this is possible, this script simulates the form you normal fill in manually, basicly any user form can be simulated and automated (;
Try this script:
Code:-- Batch adding modbus devices - 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 ---------------------------------------- --------------------------------------------- Start Parameters --------------------------------------------- -- Set username and password for access to SL/HL username = 'admin' password = 'admin' ---------------------------------------------- End Parameters ---------------------------------------------- ---------------------------------- DON'T CHANGE ANYTHING UNDER THIS LINE ----------------------------------- -- Load modules require('json') require('socket.url') require('socket.http') -- Get current HL/SL ip address data = io.readproc('if-json') data = json.decode(data) ip = data.eth0.inetaddr -- Create url for modbus device creation url = 'http://' .. username .. ':' .. password .. '@' .. ip .. '/scada-main/general/plugin?plugin=modbus&request=device-save' -- Set counters for creation log number_of_devices = 0 number_failed = 0 -- Function to send request to create modbus device function url_send(device_proto, device_name, device_profile, device_ip, device_port, device_slave, device_pollinterval, device_id) local device = { proto = device_proto, name = device_name, profile = device_profile, ip = device_ip, port = device_port, slave = device_slave, pollinterval = device_pollinterval, id = device_id, } data = json.encode(device) 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 -- Create devices for i = 1, 10, 1 do -- used fields to send: protocol,name,profile,ip,port,slave,pollinterval,id result, code, response_header = url_send("tcp", "Device " .. i, "iEM-iEM3155", "192.168.10." .. i, "502", i, "5", "") -- Calculate results for creation devices log if result == '{"success":true}' then number_of_devices = number_of_devices + 1 else number_failed = number_failed + 1 end end -- Create result log if number_failed == 0 then log ("Created " .. number_of_devices .. " devices succesfully") else log ("Created " .. number_of_devices .. " devices succesfully and creation of " .. number_failed .. " devices failed") end -- Disable script when done automaticly script.disable(_SCRIPTNAME)
Erwin;
This functionality (which is utterly brilliant by the way) seems to be broken i FW 2.1.1. I´ve tried on all FW up to 2.1.0 and it works as a charm. I suspect there's some parameters missing. When I log the response i get a 404. Do you have any idea what might have changed (I don't like undocumented changes!!!) in FW 2.1.1?