Skip to main content
Version: 2.8

Plugins

HumanOS comes with different plugin types. In a standard installation of HumanOS Runtime all plugin binaries are kept in the main directory.

However, each plugin type could have its own installation directory (check Plugin Configuration for more information).

There exists a second directory structure in Config-folder. Here, the plugin loading configuration (auto loading, blocking, blacklisting, etc.) can be configured.

Plugin Types

Pervasive Middleware Plugins:

  • Database: Plugins responsible for node space persistence
    • For example, HumanOS.PeMiL.SQLiteDataBase: Persistence in SQLite database
  • MessageBus: Plugins used for inter-process communication between two or more HumanOS Runtime micro-services.
  • DataObjects: Plugins containing specific data objects, types and logic.
    • For example, entity model of a custom specific applications
  • Processors: Plugin implementing specific data processors

Ubiquitous Hardware Abstraction Plugins:

  • Drivers and Connectors: Hardware and device connectors
    • For example, HumanOS.UHAL.FanucControl: Driver for FANUC controls
  • DeviceDetectors: Plugins to scan different media for new devices (PnP behavior)
    • For example, HumanOS.UHAL.DeviceDetectors: Standard device detection of static hardware configurations.

Pervasive Service Plugins:

  • Services: Services Services as interface to higher level systems
    • For example, HumanOS.PeSeL.OPCUAServer: Full OPC-UA server

Configuration

Plugins are automatically detected and embedded into the HumanOS® Runtime.

To optimize speed or to get rid of unwanted behavior due to plugins, one can manually block plugins. Each plugin has its own configuration under Config\$(plugin-name)\ folder called settings.json.

It contains the general, and plugin specific configuration:

AttributeDescriptionData Type
DisableFlag, to disable the plugin. Use this to improve the loading speed of the HumanOS® Runtime.System.Boolean
ServiceRuleOptional construct to define a service rule (Only valid for PeSeL plugins)

Example:

{
"Disabled": false,
"ServiceRule": {
"BindingRuleId": "128A39CA-F82B-4662-A246-7C9A490CD7BD",
"UnbindingRuleId": "55458C10-C21F-47DB-BB32-31A90D4D8C97",
"Type": "All"
}
}
  • For plugin specific configuration, check the corresponding plugin manual.

Middleware Database Plugins

Database plugins are responsible to store the data of HumanOS® Kernel. This includes:

  • Node space persistence
  • Historical and tagged data.
  • Relational data storage (Entity Collection Nodes)

The list contains the most common database plugins:

NameDescriptionPlugin NameID
SQLite DataBaseThe database is based on SQLite. It is a simple and file-based data system.HumanOS.PeMiL.SQLiteDataBase{A3B98DDF-93FB-42A4-9DE3-F711CCE42011}
MySQL Database and MariaDBMySql database and MariaDB binding including an entity framework to handle entity collection nodes.HumanOS.PeMiL.MySQLDataBase{288FEE8A-DCF1-457F-BE21-2D11EB5413E3}
PostgreSQL DataBasePostgre SQL databaseHumanOS.PeMiL.PostgreSQLDataBase{70AA188E-E39D-4C86-B201-6D5412962899}

Setup a HumanOS Database with MySQL

Then, a database user must be setup:

  1. Open MySQL Workbench
  2. Go to User and Privileges
  3. Add a new user, e.g. humanos.admin
  4. Go to "Schema privileges" tab and click on [Add Entry]
  5. Select the schema or "all schema", and click [OK]-button
  6. Go to the tab Administrative Roles and select DBManager
  7. Click [Apply] to store the data.
IMPORTANT

HumanOS MySQL Database Plugin is able to create schema and tables automatically. Check the appsettings of the HumanOS® Runtime before starting HumanOS®. See NodeSpace and Repository Configuration to configure the repository settings of HumanOS®.

Middleware MessageBus Plugins

Message bus plugins are responsible for intercommunication between HumanOS® Micro-Services. They provide the shared node-space.

NameDescriptionPlugin NameID
MQTT Message BusShared Node Space implementation with MQTT.HumanOS.PeMiL.MQTTMessageBus{0DAE9067-44EB-40B9-9385-DD6EFB353E11}
RabbitMQ Message BusShared Node Space implementation with RMQ.HumanOS.PeMiL.RmQMessageBus{3B931DFC-8FE7-416F-A9A4-AF8156ACEDAE}

UHAL Connectors

UHAL connectors (drivers) are plugins able to access devices or other systems as device. Mostly, the plugin acts as a client for the other systems.

NameDescriptionPlugin NameID
ActiveDirectoryDriver to access Microsoft Active Directory®.HumanOS.UHAL.ActiveDirectory{C51BD624-BE93-458C-9F30-1DC12E0CCB24}
AndronControlDriverDriver for ANDRON Controls connected over TPC/IP.HumanOS.UHAL.AndronControl{93A7CEDD-5463-41D7-93EF-C04460D0B1B6}
Balluff BisVDriver to access the BIS-V controller from BalluffHumanOS.UHAL.BalluffBisV{ED53B0F7-0D3A-4B82-A9F6-191B0DD47EA5}
BeckhoffControlDriverDriver for BECKHOFF PLC Controls using Ads-ProtocolHumanOS.UHAL.BeckhoffControl{DBC6DEB3-951F-4A23-8477-7D8784995A95}
BluetoothDeviceDriverDriver for bluetooth devices connecting over RFCOMMHumanOS.UHAL.BluetoothDeviceDriver{11034AA5-13C7-4D05-83E0-361BC816E779}
FanucControlDriverDriver for any FANUC Controls connected over HSSB or Ethernet.HumanOS.UHAL.FanucControl{B3CCD1A7-A49B-46FC-B983-5284992F6444}
FileReaderDriver to access XML data filesHumanOS.UHAL.FileReader{94CAFEC2-7910-41F6-8185-C35CA768FABA}
GPIODriverDriver to access the GPIO and IOs from Raspberry PIHumanOS.UHAL.GPIODriver{50C53868-7CB8-4FCA-A3CA-1BA6E1F5A9AE}
HeidenhainControlDriverDriver for any HEIDENHAIN TNC Control.HumanOS.UHAL.HeidenhainControl{20C836DB-38E9-4B04-BFED-542E2FF5C72F}
KnxBusDriverDriver for KNX building automation systems.HumanOS.UHAL.KnxBusDriver{2C42F493-2FF8-4E59-9A82-FAAC966992CF}
HostControlDriverDriver to monitor the host of the HumanOS installation.HumanOS.UHAL.HostControl{46F00888-DAC9-4BB8-A0A2-703E7716624C}
ModbusTcpControlDriver to access devices over MOD-BUS TCPHumanOS.UHAL.ModbusTcpControl{4A06A655-36C2-4430-AE27-AAAA4A431395}
MQTT ControlDriver to access devices using the MQTT protocol.HumanOS.UHAL.MqttControl{E78FB177-AEDC-4A3A-A237-B9835738FD68}
Num Axium ControlDriverDriver for NUM Flexium Control.HumanOS.UHAL.NumControl.Axium{B1EB8556-0EE9-40C1-B4D0-22DCA4C07C59}
Num Flexium ControlDriverDriver for NUM Flexium Control.HumanOS.UHAL.NumControl.Flexium{EFFD2B2F-89B0-4D38-BAC5-E6BFC3EA7498}
OkumaControlDriver for OKUMA CNC Controls.HumanOS.UHAL.OkumaControl{4CAC473D-0369-43EC-9765-903B23C564BE}
OpcDaClientDriver to access OPC devices.HumanOS.UHAL.OpcDaControl{FAAB832E-2D4B-41EA-9041-68278B99BDC1}
OpcUaClientDriver for devices providing an OPC-UA Server.HumanOS.UHAL.OpcUaControl{F022EE3C-A2A5-428A-B588-46ABACAE39EE}
SerialDeviceDriverDriver for devices connecting over serial interfaces (COM)HumanOS.UHAL.SerialDeviceDriver{7DCF8CCB-9878-4529-AD21-49F509807FB6}
SiemensS7DriverDriver for SIEMENS S7 Controls.HumanOS.UHAL.SiemensS7Control{F25F68F9-C720-4DD9-8A28-957C84AAA98C}
SinumerikControlDriver for Sinumerik 840D PowerLine and SolutionLineHumanOS.UHAL.SinumerikControl{B657332C-A383-47EE-BEDD-6156AF9C9083}
SmartDevice DriverDriver to access Smart DevicesHumanOS.UHAL.SmartDeviceDriver{E6541B4B-DC0E-4A6D-922A-FBE9E87BC479}
SqlClientDriver to access SQL Database, like MS SQL, MySQL or Access DBHumanOS.UHAL.SqlClient{510AE5C1-AA0B-4882-8406-A24191F17049}
SSH ClientDriver to access SSH servers (e.g. linux)HumanOS.UHAL.SshClient{900EA6EC-6361-48B9-ADAE-18D89393B7E6}
TcpClient DriverDriver to communicate with a partner using TCP/IP protocolHumanOS.UHAL.TcpClientControl{82AD96A4-5E4C-4FA6-B302-219CD92731BD}
VideoCameraDriver to access USB based WebCamsHumanOS.UHAL.VideoCamera{51F3D53D-8353-4BDC-B037-39C2644D0D6A}
WebControlDriverDriver to access REST based web services.HumanOS.UHAL.WebControl{BE79A86B-38EE-4FAA-805A-1DB46A06E65D}

UHAL Device Detectors

Following list shows the most common detectors ids.

NameDescriptionPlugin NameID
FileDeviceDetectorDetector to detect device locally reading JSON filesHumanOS.UHAL.DeviceDetectors{9D078B95-6322-44D2-989D-87A1FCA283B9}
UsbDeviceDetectorDetector to detect device locally on a USB port, e.g. USB web camsHumanOS.UHAL.UsbDeviceDetectors{F4DE1753-DA46-4C0C-B34B-96B550F4FC17}
SmartDeviceDetectorDetector to detect device over the smart device protocolHumanOS.UHAL.SmartDeviceDetector{757D454C-4A72-4F99-A7DF-6147E0478F60}

Pervasive Services

Following list shows the most common service ids.

NameDescriptionPlugin NameID
Azure IoT ClientData publisher und subscriber for Azure IoT HubsHumanOS.PeSeL.AzureIoTClient{CB02C837-73C4-43AA-BC9D-F04BAA8FF692}
Csv Data LoggerData publisher for csv filesHumanOS.PeSeL.CsvDataLogger{E4666421-B016-4E88-AC45-02F1A3C9A122}
Influx Data LoggerData publisher for influx databaseHumanOS.PeSeL.InfluxDbLogger{B5751F8F-59FA-47C8-9C11-6B8186863476}
MQTT ClientService plugin providing a MQTT ClientHumanOS.PeSeL.MQTTClient{16E29C41-3CE5-4FD6-8D61-2E47C93C7A7A}
MQTT ServerService plugin providing a MQTT ServerHumanOS.PeSeL.MqttServer{73534114-43E1-4591-9FAD-93991367625F}
MT Connect AgentMT Connect agent pluginHumanOS.PeSeL.MTConnectAgent{7EB614F1-1626-4342-8F9D-C1F26E623E22}
NodeSpace DataLoggerData publisher logging data over NodeSpace commandsHumanOS.PeSeL.NodeSpaceDataLogger{F433A67F-4216-4BAA-9CBE-555FD4905682}
OPC-UA ServerService plugin providing a full OPC-UA ServerHumanOS.PeSeL.OPCUAServer{3B3421CB-92E5-4D51-B172-33A180F21824}
RabbitMQ ClientData publisher and subscriber for RabbitMQ platformsHumanOS.PeSeL.RabbitMqClient{06966891-F18F-464E-87DA-1A4E97EE9CB0}
Rest Data LoggerRest client data publisherHumanOS.PeSeL.RestDataLogger{10F72D63-2858-49D5-9B3F-DD06C92FA804}
SparkPlug BSparkPlug B clientHumanOS.PeSeL.SparkPlugClient{5AEE79B6-1F80-4DD4-8CDD-3E085B9B9250}
Smart Device ClientClient to connect to smart device server (Orchestrators managing smart devices)HumanOS.PeSeL.SmartDeviceClient{682DF75B-821A-463A-84B0-FBE5907F74E0}
SQL Data LoggerData publisher to log data into a SQL databaseHumanOS.PeSeL.SqlDataLogger{5F446805-C274-4E09-9BEE-573ECE5CF28F}
Web Service APIService plugin providing HTTP based REST API for simple querying and commanding HumanOSHumanOS.PeSeL.WebService{650A866D-5958-4FF6-BB11-B0A74CC76151}