Skip to content
FogLAMP OPC/UA South plugin: an asynchronous OPC UA plugin that registers for change events on OPC UA objects and injects data from the OPC/UA server into FogLAMP
Branch: develop
Clone or download
Singhal-Vaibhav Merge pull request #26 from foglamp/master
v1.6.0 release - master to develop
Latest commit 44e3b2b May 23, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
include
packages/Debian FOGL-2771 Add Coral package May 21, 2019
.gitignore
CMakeLists.txt
Description
FindFogLAMP.cmake
LICENSE FOGL-2785 Correct company name in license file May 13, 2019
Package Update Package May 21, 2019
README.rst FOGL-2724 Updated README Apr 16, 2019
VERSION
foglamp.version
make_deb
mkversion FOGL-2338 External VERSION file Jan 23, 2019
opcua.cpp
plugin.cpp
requirements.sh FOGL-2820 Fix package names May 21, 2019

README.rst

OPC UA C/C++ South plugin

A simple asynchronous OPC UA plugin that registers for change events on OPC UA objects.

NOTE:

This plugin assumes the freeopcua is available at a specified location in the file system, see below.

Configuration

This configuration of this plugin requires 3 parameters to be set

asset
An asset name prefix that is added to the OPC UA variables retrieved from the OPC UA server
url
The URL used to connect the server, of the form opc.tcp://<hostname>:<port>/...
subscriptions
An array of OPC UA node names that will control the subscription to variables in the OPC UA server. The array may be empty, in which case all variables are subscribed to in the server and will create assets in FogLAMP. Although simple subscribing to everything will return a lot of data that may not be of use. Alternatively a set of string may be give, the format of the strings is <namespace>:<name>. If the namespace is not requied then the name can simply be given. The plugin will traverse the node tree of the server and subscribe to all variables that live below the named nodes in the subscriptions array.

Building freeopuca

To build freeopcua you must clone the freeopcua repository to a directory of your choice.

$ git clone https://github.com/FreeOpcUa/freeopcua.git
$ cd freeopcua
$ export FREEOPCUA=`pwd`
$ mkdir build

Edit the OPCUA CMakeFiles.txt file and find the line

option(SSL_SUPPORT_MBEDTLS "Support rsa-oaep password encryption using mbedtls library " ON)

and set it to OFF.

option(SSL_SUPPORT_MBEDTLS "Support rsa-oaep password encryption using mbedtls library " OFF)

The build options for the OPCUA libraries must be changed to create static libraries. To do this find the occurences of the add_library directive for opcuaclient, opcuacode and opcuaprotocol and add the option STATIC to it

add_library(opcuaclient STATIC
...

add_library(opcuacore STATIC
...

add_library(opcuaprotocol STATIC
...
$ cd build
$ cmake ..
$ make

The freeopcua library requires boost libraries that are not available in packaged form for the Raspbery Pi. Therefore it can not be built for the Raspbery Pi without first building these boost libraries.

Alternatively run the script requirements.sh to automate this and place a copy of the freeopcua project in your home directory.

requirements.sh

If you require to place the freeopcua code elsewhere you may pass the requirements.sh script an argument of a directory name to use.

requirements.sh ~/projects

Build

To build the opcua plugin run the commands:

$ mkdir build
$ cd build
$ cmake ..
$ make
  • By default the FogLAMP develop package header files and libraries are expected to be located in /usr/include/foglamp and /usr/lib/foglamp
  • If FOGLAMP_ROOT env var is set and no -D options are set, the header files and libraries paths are pulled from the ones under the FOGLAMP_ROOT directory. Please note that you must first run 'make' in the FOGLAMP_ROOT directory.

You may also pass one or more of the following options to cmake to override this default behaviour:

  • FOGLAMP_SRC sets the path of a FogLAMP source tree
  • FOGLAMP_INCLUDE sets the path to FogLAMP header files
  • FOGLAMP_LIB sets the path to FogLAMP libraries
  • FOGLAMP_INSTALL sets the installation path of Random plugin
NOTE:
  • The FOGLAMP_INCLUDE option should point to a location where all the FogLAMP header files have been installed in a single directory.
  • The FOGLAMP_LIB option should point to a location where all the FogLAMP libraries have been installed in a single directory.
  • 'make install' target is defined only when FOGLAMP_INSTALL is set

Examples:

  • no options

    $ cmake ..

  • no options and FOGLAMP_ROOT set

    $ export FOGLAMP_ROOT=/some_foglamp_setup

    $ cmake ..

  • set FOGLAMP_SRC

    $ cmake -DFOGLAMP_SRC=/home/source/develop/FogLAMP ..

  • set FOGLAMP_INCLUDE

    $ cmake -DFOGLAMP_INCLUDE=/dev-package/include ..

  • set FOGLAMP_LIB

    $ cmake -DFOGLAMP_LIB=/home/dev/package/lib ..

  • set FOGLAMP_INSTALL

    $ cmake -DFOGLAMP_INSTALL=/home/source/develop/FogLAMP ..

    $ cmake -DFOGLAMP_INSTALL=/usr/local/foglamp ..

Packaging for 'opcua' south

This repo contains the scripts used to create a foglamp-south-opcua Debian package.

The make_deb script

Run the make_deb command:

$ ./make_deb help
make_deb [help|clean|cleanall]
This script is used to create the Debian package of FoglAMP C++ 'opcua' south plugin
Arguments:
 help     - Display this help text
 clean    - Remove all the old versions saved in format .XXXX
 cleanall - Remove all the versions, including the last one
$

Building a Package

Finally, run the make_deb command:

$ ./make_deb
The package root directory is   : /home/ubuntu/source/foglamp-south-opcua
The FogLAMP required version    : >=1.4
The package will be built in    : /home/ubuntu/source/foglamp-south-opcua/packages/build
The architecture is set as      : x86_64
The package name is             : foglamp-south-opcua-1.0.0-x86_64

Populating the package and updating version file...Done.
Building the new package...
dpkg-deb: building package 'foglamp-south-opcua' in 'foglamp-south-opcua-1.0.0-x86_64.deb'.
Building Complete.
$

Cleaning the Package Folder

Use the clean option to remove all the old packages and the files used to make the package.

Use the cleanall option to remove all the packages and the files used to make the package.

You can’t perform that action at this time.