User Tools

Site Tools


Integration into other systems

WebHMI allows you to interact with other systems by running HTTP requests. For this, WebHMI has a library Lua-cURLv3. Using it you can easily send data to third-party systems and also request the necessary data from these systems.

This function is available since version 2.6.4520.

POST example

An example of a program executing an HTTPS request to send data as a file at URL https://demo.com/upload:

function main (userId)
 
  INFO("Doing CURL");
 
  c = cURL.easy_init()
  c:setopt_url("https://demo.com/upload")
  c:setopt_timeout(5)
 
  postdata = {
      name = {
          file="dummy.html",
          data="<html><bold>bold</bold></html>",
          type="text/html"
      } 
  }
  c:post(postdata)
  c:perform()
  c:close()
 
  INFO("CURL done");
end

Note that for SSL certificates correctly function, you need to have an exact local time. If there is a significant deviation of the local clock, https requests may not work. We recommend using time synchronization via NTP server.

GET example

Example of requesting a number in the GET request at URL http://demo.example.com/read-data?param=32 and writing it to the register with id=4356:

function main (userId)
  c = cURL.easy_init()
  c:setopt_timeout(5)
  c:setopt_url("http://demo.example.com/read-data?param=32")
  local res = "";
  c:perform({
        writefunction = function(str)
            res = res .. str;
        end})
  c:close()
  WriteReg(4356, res);
end

Example - connecting to a remote module via its web server

Most currently produced remote i/o modules have configuration and status web-page for diagnostic and setup. When you have a module which is not supported by the WebHMI and the usage of the custom protocol feature is complicated, there is another option of accessing the module through its embedded web-server with HTTP requests right from WebHMI.

For a example we have the UC20-FBC-xxx (any bus Modubs, Ethernet/IP, DeviceNet etc) remote I/O module from Weidmuller. The module has web server for diagnostinc and setup:

On this page you press F12 to get necesssary information for the POST request:

Then, use this information for POST request in Lua script on the WebHMI:

The function returns json object which you can then analize and check necessary fileds to read:


Page Tools