This is an old revision of the document!
Table of Contents
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: