basysKom talks at Qt World Summit 2019 (4/4)

After initiating Qt OPC UA in 2015 and significant effort in research and development, first customer solutions were successfully realized in 2019. A good point in time to have a closer look into the usage of the API.

Industrial integration out of the box – Qt OPC UA, to be presented by Frank Meerkötter (4/4)

OPC UA is a standard for data modeling and machine to machine communication originating from the industrial automation space. Nowadays it is used in a diverse, growing set of industries. Its mission statement is to enable easy integration and interoperability between machines, components and applications of different vendors. OPC UA is an important building block of the Industry 4.0 story. This presentation will highlight how Qt fits into the picture – by presenting the Qt OPC UA API, its features and capabilities.

The core goal of Qt OPC UA is to make it easy to integrate OPC UA services into Qt applications. It first entered the scene as a contribution by basysKom which became a technology preview with Qt 5.11. Since then, The Qt Company and basysKom invested significantly to mature the API and to add missing features. Most prominently are the addition of support for secure connections, service discovery, events and a brand new QML API.

The presentation provides a starting point to develop OPC UA enabled Qt applications and will walk the audience through a number of scenarios and how to handle them with Qt OPC UA using both the C++ and the QML API.

  • Basic API concepts
  • Connecting to a server
  • Browsing
  • Access to nodes
  • Monitoring values changes
  • Method calls

The presentation provides the audience with a starting point to develop own OPC UA enabled Qt applications.

basysKom talks at Qt World Summit 2019 (3/4)

Not a ten year jubilee, but close – join Jeremias on a nine year Qt Quick retrospective (Nov. 6th).

Qt Quick -what could possibly go wrong…”, to be presented by Jeremias Bosch (3/4)

The last nine years basysKom provided “rescue services” for numerous Qt Quick projects. This talk presents a moody retrospective – offering the audience the unique opportunity to learn from the failure of others.

Once upon a time we all started our first QML project. The first impression being “wow, that was easy!”. We were full of joy, believing in the quickness and broad simplification that Qt Quick would bring into our lifes. Widgets were so outdated that most of us forgot that they even existed. The future was touchable, quick, bright and shiny. Qt Quick projects grew from a first small patch of code into green gardens, prospered into parks, … and sometimes they grew into wild jungles ruled by darkness; where wild roots and thick undergrowth stopped every movement, where the trees of objects grew so heavy on the memory of our targets that shipping down the river of production was as unlikely as seeing the sun at the north pole in winter times …

Based on our project experience this talk will present a sightseeing tour of several close encounters for projects involving Qt Quick. It will dig for the root causes and apart from a good laugh we will provide the audience with sustainable solutions. Those can be adapted or adopted to avoid growing a jungle.

basysKom talks at Qt World Summit 2019 (2/4)

The web and its immense success over the last 20 years had a major influence on technology. It has shaped how we serialize data, consume and provide services and how we develop HMIs.  The next talk presented by basysKom will provide a survey on how this challenge is addressed by Qt.

Qt and the web – where are we today, to be presented by Frank Meerkötter

The presentation is split into three parts.

1) Consuming and interfacing with web-centric services and APIs from a Qt application. Applications that download additional information from a cloud-service or upload the result of their work into such a service are todays norm. We will look into how REST/WebSocket-APIs can be used, also covering topics such as SSL, authentication and authorization. 

2) Implementing services and APIs to be consumed by other – web-centric systems – with Qt. There are a number of scenarios where a Qt application is providing (web)services itself. These include Qt being used headless on an embedded system to implement the backend for a web-based HMI, Qt being used on the server to make an established application accessible to the web, or giving testers (which prefer scripting languages) access to the internals of a Qt HMI. We will look at the upcoming QHttpServer module and the QWebSocketServer module provided by Qt.

3) HMI development. There are a number of scenarios where an HMI needs to run a web browser. This can either mean an HMI that is implemented using Web-technologies (by preference) or a Qt HMI needs to be run in a web browser. Scenarios include embedded devices without a display, giving remote access to HMIs and having an embedded web browser to display a web-based HMI, while the backend is implemented using Qt. We will look at Qt’s webgl-streaming, how to get an application to output VNC (which can be streamed into a browser) as well as what can be done with  Qt for WebAssemby. For the embedded web browser scenario we will look at the Qt WebEngine and how to integrate business logic via QWebChannel.

For each of these three areas we will look into typical scenarios/problems and how to solve them with Qt. We will highlight where Qt really shines and where additional work is left to be done.

basysKom talks at Qt World Summit 2019 (1/4)

This year’s Qt World Summit is just around the corner and basysKom will present four talks in Berlin. Follow us for more details until the event starts.

Qt Quick on low-end i.MX6 devices, to be presented by Jeremias Bosch

Embedded Linux in combination with Qt and Qt Quick are a widespread combination for the development of modern, complex and animated touch HMIs. This technology mixture is used for applications such as in-car infotainment, industrial controls, portable measurement devices or medical systems.

In an ideal world the embedded board is a power house, allowing smooth user experience, small startup time and low latency without the need of spending time and effort into optimization. But not all products can afford a high end i.MX6 with a dual or even quad core CPU with a powerful GPU. Price sensitive applications are often implemented with more affordable, but at the same time less powerful variants such as an i.MX6 dual lite or even smaller. With the consequence, that implementing a top of the line, complex HMI on a small i.MX6 can be a challenge.

The lecture will reflect best practises using Qt Quick on small devices, in particular the i.MX6 dual lite and SoloX. The audience will get a first set of do’s and don’ts, kick starting own Qt Quick projects on low end hardware.

UX Gruppe baut mit basysKom das Software Engineering für Smart Connected Devices weiter aus

Gilching, 24.09.2019


Mit der basysKom GmbH gewinnt die Gilchinger UX Gruppe einen etablierten Software- Engineering-Spezialisten mit Fokus auf Qt-basierten HMI-Entwicklungen sowie Cloud-basierten IoT-Applikationen hinzu. Der Hightech-Dienstleister wächst dadurch um ein eingespieltes Team von 30 Software-Experten, die seit 2004 erfolgreich für international bekannte OEM und Gerätehersteller aus dem Konsum- und Investitionsgüterbereich tätig sind. Ein perfekter Match mit der interdisziplinären Arbeitsweise der UX Gruppe, die Design, Entwicklung, Fertigung und Distribution für intelligente und vernetzte Geräte anbietet.  

Im Zuge dieser strategischen Partnerschaft beteiligt sich die UX Gruppe mehrheitlich an der basysKom GmbH. Die Unternehmensgründerin Frau Prof. Dr. Eva Brucherseifer hält dabei weiterhin langfristig Anteile an der basysKom GmbH. Sie wird darüber hinaus neben ihrer Professur für Embedded Systeme an der Hochschule Darmstadt im Bereich Research & Innovation als Beraterin für die UX Gruppe tätig.
Prof. Dr. Eva Brucherseifer: „Der hervorragende strategische Match ermöglicht es Marktchancen gemeinsam zu ergreifen. Ich freue mich darauf die UX Gruppe auf diesem Weg zu begleiten.“

Heike Ziegler lenkt weiterhin als geschäftsführende Gesellschafterin die operativen Geschäfte. Der Geschäftsführer der UX Gruppe, Alexander Sorg, fungiert als kaufmännischer Geschäftsführer der basysKom GmbH.

Durch den Zusammenschluss entsteht ein führender Anbieter für Qt-basierte HMI-Entwicklungen mit einem umfassenden Leistungsangebot für die Gestaltung und Realisierung von Smart Connected Devices. 

Die UX Gruppe diversifiziert mit der basysKom ihr Angebot im Bereich spezifischer Software-Engineering-Dienstleistung und hält nun Entwicklungsteams an den Standorten Gilching bei München, Darmstadt und Nürnberg. Der basysKom GmbH eröffnen sich als neues Mitglied der UX Gruppe Möglichkeiten wie der Zugriff auf Ressourcen und Know-how in Bereichen wie UX Design, Interface Design, Embedded Plattformen und System Engineering.

Heike Ziegler: „Wir freuen uns sehr über diesen Zusammenschluss. Durch die Nutzung zentraler Funktionsbereiche wie z.B. HR und Marketing können wir uns auch in Zukunft auf unser Kerngeschäft fokussieren und wachsen. Besonders freut mich, dass es menschlich so gut passt und unsere Unternehmensphilosophien so hervorragend übereinstimmen.“

Alexander Sorg: „Die UX Gruppe hat seit Jahren eine klare strategische Fokussierung auf die ganzheitliche Entwicklung vernetzter HMI-Geräte. Für diesen wachsenden Technologiemarkt gewinnen wir mit der basysKom zusätzliche Kompetenzen und Kapazitäten.“

basysKom beim Merck-Firmenlauf 2019

Am 29. Mai nahmen unsere laufbegeisterten Mitarbeiter beim diesjährigen 8. Darmstädter Merck-Firmenlauf teil. Für sie hieß es: fünf Kilometer rund um den Messplatz.

basysKom – Team

Bei besten Lauftemperaturen und Sonnenschein trat das hoch motivierte basysKom-Team gemeinsam mit über 5700 anderen Sportlern zum Lauf an – so vielen Teilnehmer wie noch nie zuvor. Tatkräftige Unterstützung gab es natürlich von den Kolleginnen und Kollegen, die eifrig angefeuert haben.

Nach dem erfolgreichen Lauf ging es dann gemeinsam bei bester Stimmung in den Biergarten, um bei einem guten Essen und einem kühlen Getränk das Erlebnis noch einmal Revue passieren und den Abend gemütlich ausklingen zu lassen.

Wir gratulieren unseren Kollegen zu ihren erfolgreichen Läufen und ihren Platzierungen!

Wir freuen uns schon auf das nächste Jahr!

Secure Connections with Qt OPC UA

Starting with the Qt 5.13 release, due end of May, the Qt OPC UA API in combination with the Unified Automation backend officially supports secure connections to servers (Sign or SignAndEncrypt message security mode). The following article outlines the changes to the Qt OPC UA API and shows how to get secure connections also with the open62541 backend.

Security related QOpcUaClient API changes

To enable secure connections a number of changes to the API of the QOpcUaClient were necessary – some of them preventing existing code from compiling. In summary:

  • The connectToEndpoint() method which takes a QUrl parameter has been removed. The only supported way to specify which server to connect to is now via an endpoint description retrieved using requestEndpoints().
  • supportedSecurityPolicies() returns a list with the OPC UA security policies supported by the current backend.
  • setPkiConfiguration() is used to configure QOpcUaClient with a client certificate, a corresponding private key and the necessary data to verify server certificates.
  • setIdentity() configures the identity information QOpcUaClient provides to the server during the connect. This information can also be initialized from the client certificate.
  • Up to Qt 5.12, login credentials were supplied to QOpcUaClient by encoding username and password in the URL. setAuthenticationInformation() replaces this by a clean API which can be used to select anonymous, username and password or X509 certificate based authentication.
  • The connectError() signal is emitted when a connection to a server fails. Depending on the error, the connected slot is able to override it (for example an untrusted or no longer valid server certificate).
  • If the private key is protected with a password, the passwordForPrivateKeyRequired() signal is emitted. The user can then supply the password in the connected slot.
Continue reading Secure Connections with Qt OPC UA

Review: basysKom auf der Embedded World 2019

Auch in diesem Jahr war basysKom auf der Embedded World und der begleitenden Fachkonferenz vertreten, welche vom 26. bis 28. Februar in den Hallen der Nürnberg Messe stattfanden.

In ihrem 17. Veranstaltungsjahr deckte die internationale Leitmesse mit einer Vielzahl an Ausstellern wieder die gesamte Bandbreite der Embedded Systeme ab und verzeichnete zahlreiche Fachbesucher. Die Anzahl der Aussteller und auch der Besucher erreichten Rekordniveau.

Trendthemen in diesem Jahr: KI, Safety and Security, ebenso wie HMI, M2M, Open Source, Edge und Cloud Computing.

An unserem Stand konnten sich Interessierte anhand unseres neuen Showcases aktuelle Entwicklungen im Bereich der digitalen Industrieproduktion zeigen lassen, sowie anregende Diskussionen mit unseren Fachleuten führen.
Ein besonderes Highlight bestand hier in einer im Showcase integrierten Sprachsteuerung, welche die Automatisierung der Produktionsstraße durch einen hands-free Workflow optimiert.

Im Bereich des Cloud Computing boten wir unseren Besuchern eine Remote-Monitoring Anwendung. Diese war aufgebaut auf der Cloudtechnologie Azure von Microsoft und dem WebApplication-Framework Angular.

Auch an der begleitenden Konferenz beteiligte sich basysKom mit zwei Vorträgen. Bei diesen referierten wir über die Erstellung von Embedded Computer Vision Applications mit Qt und über die Applikationsentwicklung mit der Open Source-Implementierung open62541 nach OPC-UA-Standard.

Initial support for servers with historical data access in open62541

An OPC UA server supporting historical access allows clients to access historical data or historical events. Such a server can act as a process or event historian. open62541-based servers were till recently completely missing the ability to support these use cases. basysKom has extended the server API to support access to historical data using the “read raw” functionality specified in OPC UA part 11. This allows to create a simple process historian. This article provides an overview about this API and a short tutorial how to use it.

Overview

Most of the new functionality is contained within a plugin called UA_HistoryDatabase. This plugin contains three main API elements.

  • UA_HistoryDatabase (same name as the plugin) which contains the main interface between the server itself and the plugin.
  • UA_HistoryDataBackend which implements the integration with a specific database. A sample implementation based on a simple in-memory database is provided.
  • UA_HistoryDataGathering which encapsulates the gathering and storage of data. 

The following diagram gives an overview how these API elements interact.

Tutorial

The following tutorial will first demonstrate how to create a simple server, hosting a single variable node. We will extend this server to store this value in an in-memory database each time it changes.

Let’s start with a server:

The resulting server can be browsed and the variable can be read. We use UAExpert for this tasks. 

We now extend this example so that the server will be able to handle request for historical values for this node. Each of the following snippets contains enough context so it is clear where to add the code into the initial server code.

Next we configure the node to update the database each time the nodes value is set.

Again we rely on the UAExpert to validate the server. First update the variable a few times (so we actually have some historical values). Next we want to read them.  For that we use the “History Trend View” which is available via Document → Add → Document Type. The resulting view shows either a graph or (in a second tab) a list of your historical values. If no values are plotted or the list is empty make sure that the right time interval is used in the request.

Conclusion & future work

It is now possible to create open62541-based servers which support the gathering and reading of historical data values. A number of plugin interfaces has been defined which can be used to implement functionality such as support for additional databases (e.g. sqlite). There is additional work to be done to support other history read details such as “read event”, “read modified”, “read processed” or “read at a time”. Also the history update service still needs to be implemented.

In addition to being a contributor to the project, basysKom also provides commercial support for the open62541 OPC UA stack. Talk to us if you are interested in project/application support, the implementation of missing features or bugfixing.

Mit OpenCV und Qt Quick trifft Computer Vision auf moderne HMI-Entwicklung

Ob beim automatischen Sortieren von Briefen, beim Erkennen von Materialfehlern in der Produktion oder bei der Vermessung: überall dort, wo Maschinen ihre Umwelt erkennen müssen, kommt Computer Vision zum Einsatz.

OpenCV ist ein populäres Open Source Framework, das eine große Anzahl an Algorithmen für die Bilderkennung zur Verfügung stellt. Eine Bibliothek zur Umsetzung prototypischer HMIs mit Fokus auf Parametereinstellung ist vorhanden, für anspruchsvollere Aufgaben sollte OpenCV jedoch mit einem HMI-Framework integriert werden.

In einem aktuellen Artikel in der Design&Elektronik geben unsere Software Entwickler Berthold Krevert und Torsten Rahn einen Überblick, welche Themen bei der Integration von Open CV und Qt Quick zu beachten sind.