Skip to content

An OPC UA browser for Android and iOS based on Qt Quick and Qt OPC UA

License

Notifications You must be signed in to change notification settings

umati/opcua_browser

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OPC UA Browser

Provided

Contributors GitHub Downloads (all assets, latest release) Watchers Forks Stars Licence Issues

The OPC UA Browser from basysKom is an OPC UA client with a wide range of application options for OPC UA technology.

The OPC UA Browser can be used to establish an unencrypted connection to an OPC UA server as well as a connection encrypted via certificates. User authentication via user name and password is also supported.

The OPC UA Browser can be used to monitor selected nodes in order to obtain a quick overview of important components. Individual nodes can be easily added to and removed from the dashboard. It is possible to create several dashboards at the same time and quickly switch back and forth between them. The dashboards created can be easily saved so that they can be quickly reloaded in a new session.

The information model of the OPC UA server is displayed as a tree structure using the expert mode. Selecting a node displays its attributes and references. By clicking on a reference, you can quickly jump to the selected reference in the tree structure.

Features

  • Connecting to OPC UA Browser (uncrypted and encrypted via certificates, user authentication)
  • Monitoring nodes in several dashboards
  • Saving dashboards for reuse
  • Browser for information model
  • Windows, Linux, Android, iOS

Getting OPC UA Browser

Android

Google Play Store

QR code Play Store

iOS

coming soon in App Store

Compatibility

The application has been tested on:

  • Windows using the MinGW 64-Bit compiler and Qt 6.5+
  • Linux (Ubuntu 22.04 LTS) and Qt 6.5+
  • Android using Clang for arm64-v8a, armeabi-v7a, x86, x86_64
  • iOS

Dependencies

Building

Important

Make sure that the versions of Qt and Qt OPC UA Plugin are identical.

Linux

Install Qt OPC UA Plugin

git clone https://code.qt.io/qt/qtopcua.git
cd qtopcua
git checkout 6.6.1
mkdir build && cd build
cmake -G Ninja -DCMAKE_BUILD_TYPE=Debug ..

Check whether "Open62541 security support" and "Support for global discovery server" is activated. Otherwise, OpenSSL may need to be installed or the path to the OpenSSL library may need to be added to the path variable.

-- Configure summary:
Qt Opcua:
  Open62541 .............................. yes
  Unified Automation C++ SDK ............. no
  Support for namespace 0 NodeId names ... yes
  Namespace 0 NodeIds generator .......... no
  Open62541 security support ............. yes
  Support for global discovery server .... yes

Build OPC UA Plugin

ninja

Optional: Install the libraries in the Qt directory. Otherwise, the directory for the libraries of the Qt OPC UA Plugin must be passed to the build process of the OPC UA browser.

ninja install

Build OPC UA Browser

git clone https://github.com/basysKom/opcua_browser.git
cd opcua_browser
mkdir build && cd build
cmake -G Ninja -DCMAKE_BUILD_TYPE=Debug ..
ninja

Windows

Install Qt OPC UA Plugin

git clone https://code.qt.io/qt/qtopcua.git
cd qtopcua
git checkout 6.6.1
mkdir build && cd build
cmake -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Debug -DOPENSSL_ROOT_DIR=C:\Qt\Tools\OpenSSLv3\Win_x64 ..

Check whether "Open62541 security support" and "Support for global discovery server" is activated. Otherwise, OpenSSL may need to be installed or the path to the OpenSSL library may need to be added to the path variable.

-- Configure summary:
Qt Opcua:
  Open62541 .............................. yes
  Unified Automation C++ SDK ............. no
  Support for namespace 0 NodeId names ... yes
  Namespace 0 NodeIds generator .......... no
  Open62541 security support ............. yes
  Support for global discovery server .... yes

Build OPC UA Plugin

mingw32-make

Optional: Install the libraries in the Qt directory. Otherwise, the directory for the libraries of the Qt OPC UA Plugin must be passed to the build process of the OPC UA browser.

mingw32-make install

Build OPC UA Browser

git clone https://github.com/basysKom/opcua_browser.git
cd opcua_browser
mkdir build && cd build
cmake -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Debug -DOPENSSL_ROOT_DIR=C:\Qt\Tools\OpenSSLv3\Win_x64 ..
mingw32-make

Android

A cross compiler under Linux or Windows can be used to build for Android. However, this section describes how to create an APK using a Docker container. We use a Docker container from the following GitHub repository: https://github.com/state-of-the-art/qt6-docker

To use Docker, the Docker library must be installed.

sudo apt-get install docker.io

This build example is written for an APK build for the architecture arm64_v8a with Qt version 6.6.1. If you are using a different version, you must change the Qt version for Qt OPC UA in the file getDependencies.sh and the CMAKE_INSTALL_PREFIX in the build example. To build an APK for a different architecture, you must change the CMAKE_INSTALL_PREFIX, the OPENSSL_ROOT_DIR and the BUILD_ARCH enviroment variable in the build example.

Architecture CMAKE_INSTALL_PREFIX OPENSSL_ROOT_DIR BUILD_ARCH
arm64_v8a /opt/Qt/6.6.1/android_arm64_v8a ${PWD}/dependencies/android_openssl/ssl_3/arm64-v8a/ arm64_v8a
armeabi_v7a /opt/Qt/6.6.1/android_armv7 ${PWD}/dependencies/android_openssl/ssl_3/armeabi-v7a/ armv7
x86 /opt/Qt/6.6.1/android_x86 ${PWD}/dependencies/android_openssl/ssl_3/x86/ x86
x86_64 /opt/Qt/6.6.1/android_x86_64 ${PWD}/dependencies/android_openssl/ssl_3/x86_64/ x86_64
git clone https://github.com/basysKom/opcua_browser.git
mkdir build_opcua_browser
cd opcua_browser
./get_dependencies.sh
sudo docker run -it --rm -v "${PWD}:/home/user/project:ro" -v "${PWD}/../build_opcua_browser:/home/user/build:rw" stateoftheartio/qt6:6.6-android-aqt \
    sh -c 'rm -rf build/* && \
           cd project && \
           export BUILD_ARCH=arm64_v8a && \
           qt-cmake ./dependencies/qtopcua -G Ninja -B ../build/qtopcua \
            -DCMAKE_BUILD_TYPE=Debug \
            -DCMAKE_INSTALL_PREFIX=/opt/Qt/6.6.1/android_arm64_v8a \
            -DOPENSSL_INCLUDE_DIR=${PWD}/dependencies/android_openssl/ssl_3/include/ \
            -DOPENSSL_ROOT_DIR=${PWD}/dependencies/android_openssl/ssl_3/arm64-v8a/ && \
           cmake --build ../build/qtopcua && \
           sudo /opt/Qt/Tools/CMake/bin/cmake --install ../build/qtopcua && \
           rm -rf ../build/qtopcua && \
           mkdir -p ../build/opcua_browser && \
           qt-cmake . -G Ninja -B ../build/opcua_browser -DCMAKE_BUILD_TYPE=Debug && \
           cmake --build ../build/opcua_browser'

iOS

To be done

basysKom Toolbox

The basysKom Toolbox is a state-of-the-art collection of best practices in Agile project management and software development. The toolbox is intended to be used during your kickoff meeting and is available in form of a card game. The cards allow the team to quickly select appropriate approaches and tools right at the beginning of the project, but they also serve as support during the project's execution, for self-reflection, and as a reminder.

You can take a look at the cards on the basysKom homepage.

You can find the texts of the cards also directly on GitHub.

We use the following toolbox cards for this project

Avoid deprecate Qt CI keeps your project healty Do regular tests on the target Enable build time checks for your QML files Make good use of compiler warnings Implement QML Best Practices Proper automated builds Use the AdressSanitizer Use clazy Valgrind or the MemorySanitizer help to ship reliable software

Contributing

Contributions are welcome! If you encounter any issues or would like to request a feature, feel free to open an issue or submit a pull request.

License

This project is released under the GPLv3.0-or-later License.

About

An OPC UA browser for Android and iOS based on Qt Quick and Qt OPC UA

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 50.5%
  • QML 46.8%
  • CMake 2.5%
  • Shell 0.2%