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
- For example,
- 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: Hardware and device drivers
- For example,
HumanOS.UHAL.FanucControl
: Driver for FANUC controls
- For example,
- DeviceDetectors: Plugins to scan different media for new devices (PnP behavior)
- For example,
HumanOS.UHAL.DeviceDetectors
: Standard device detection of static hardware configurations.
- For example,
Pervasive Service Plugins:
- Services: Services Services as interface to higher level systems
- For example,
HumanOS.PeSeL.OPCUAServer
: Full OPC-UA server
- For example,
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:
Attribute | Description | Data Type |
---|---|---|
Disable | Flag, to disable the plugin. Use this to improve the loading speed of the HumanOS® Runtime. | System.Boolean |
ServiceRule | Optional 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:
Name | Description | Plugin Name | ID |
---|---|---|---|
SQLite DataBase | The 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 MariaDB | MySql database and MariaDB binding including an entity framework to handle entity collection nodes. | HumanOS.PeMiL.MySQLDataBase | {288FEE8A-DCF1-457F-BE21-2D11EB5413E3} |
PostgreSQL DataBase | Postgre SQL database | HumanOS.PeMiL.PostgreSQLDataBase | {70AA188E-E39D-4C86-B201-6D5412962899} |
Setup a HumanOS Database with MySQL
Then, a database user must be setup:
- Open MySQL Workbench
- Go to
User and Privileges
- Add a new user, e.g.
humanos.admin
- Go to "Schema privileges" tab and click on
[Add Entry]
- Select the schema or "all schema", and click
[OK]
-button
- Go to the tab
Administrative Roles
and selectDBManager
- Click
[Apply]
to store the data.
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.
Name | Description | Plugin Name | ID |
---|---|---|---|
MQTT Message Bus | Shared Node Space implementation with MQTT. | HumanOS.PeMiL.MQTTMessageBus | {0DAE9067-44EB-40B9-9385-DD6EFB353E11} |
RabbitMQ Message Bus | Shared 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.
Name | Description | Plugin Name | ID |
---|---|---|---|
ActiveDirectory | Driver to access Microsoft Active Directory®. | HumanOS.UHAL.ActiveDirectory | {C51BD624-BE93-458C-9F30-1DC12E0CCB24} |
AndronControlDriver | Driver for ANDRON Controls connected over TPC/IP. | HumanOS.UHAL.AndronControl | {93A7CEDD-5463-41D7-93EF-C04460D0B1B6} |
Balluff BisV | Driver to access the BIS-V controller from Balluff | HumanOS.UHAL.BalluffBisV | {ED53B0F7-0D3A-4B82-A9F6-191B0DD47EA5} |
BeckhoffControlDriver | Driver for BECKHOFF PLC Controls using Ads-Protocol | HumanOS.UHAL.BeckhoffControl | {DBC6DEB3-951F-4A23-8477-7D8784995A95} |
BluetoothDeviceDriver | Driver for bluetooth devices connecting over RFCOMM | HumanOS.UHAL.BluetoothDeviceDriver | {11034AA5-13C7-4D05-83E0-361BC816E779} |
FanucControlDriver | Driver for any FANUC Controls connected over HSSB or Ethernet. | HumanOS.UHAL.FanucControl | {B3CCD1A7-A49B-46FC-B983-5284992F6444} |
FileReader | Driver to access XML data files | HumanOS.UHAL.FileReader | {94CAFEC2-7910-41F6-8185-C35CA768FABA} |
GPIODriver | Driver to access the GPIO and IOs from Raspberry PI | HumanOS.UHAL.GPIODriver | {50C53868-7CB8-4FCA-A3CA-1BA6E1F5A9AE} |
HeidenhainControlDriver | Driver for any HEIDENHAIN TNC Control. | HumanOS.UHAL.HeidenhainControl | {20C836DB-38E9-4B04-BFED-542E2FF5C72F} |
KnxBusDriver | Driver for KNX building automation systems. | HumanOS.UHAL.KnxBusDriver | {2C42F493-2FF8-4E59-9A82-FAAC966992CF} |
HostControlDriver | Driver to monitor the host of the HumanOS installation. | HumanOS.UHAL.HostControl | {46F00888-DAC9-4BB8-A0A2-703E7716624C} |
ModbusTcpControl | Driver to access devices over MOD-BUS TCP | HumanOS.UHAL.ModbusTcpControl | {4A06A655-36C2-4430-AE27-AAAA4A431395} |
Num Axium ControlDriver | Driver for NUM Flexium Control. | HumanOS.UHAL.NumControl.Axium | {B1EB8556-0EE9-40C1-B4D0-22DCA4C07C59} |
Num Flexium ControlDriver | Driver for NUM Flexium Control. | HumanOS.UHAL.NumControl.Flexium | {EFFD2B2F-89B0-4D38-BAC5-E6BFC3EA7498} |
OkumaControl | Driver for OKUMA CNC Controls. | HumanOS.UHAL.OkumaControl | {4CAC473D-0369-43EC-9765-903B23C564BE} |
OpcDaClient | Driver to access OPC devices. | HumanOS.UHAL.OpcDaControl | {FAAB832E-2D4B-41EA-9041-68278B99BDC1} |
OpcUaClient | Driver for devices providing an OPC-UA Server. | HumanOS.UHAL.OpcUaControl | {F022EE3C-A2A5-428A-B588-46ABACAE39EE} |
SerialDeviceDriver | Driver for devices connecting over serial interfaces (COM) | HumanOS.UHAL.SerialDeviceDriver | {7DCF8CCB-9878-4529-AD21-49F509807FB6} |
SiemensS7Driver | Driver for SIEMENS S7 Controls. | HumanOS.UHAL.SiemensS7Control | {F25F68F9-C720-4DD9-8A28-957C84AAA98C} |
SinumerikControl | Driver for Sinumerik 840D PowerLine and SolutionLine | HumanOS.UHAL.SinumerikControl | {B657332C-A383-47EE-BEDD-6156AF9C9083} |
SmartDevice Driver | Driver to access Smart Devices | HumanOS.UHAL.SmartDeviceDriver | {E6541B4B-DC0E-4A6D-922A-FBE9E87BC479} |
SqlClient | Driver to access SQL Database, like MS SQL, MySQL or Access DB | HumanOS.UHAL.SqlClient | {510AE5C1-AA0B-4882-8406-A24191F17049} |
SSH Client | Driver to access SSH servers (e.g. linux) | HumanOS.UHAL.SshClient | {900EA6EC-6361-48B9-ADAE-18D89393B7E6} |
TcpClient Driver | Driver to communicate with a partner using TCP/IP protocol | HumanOS.UHAL.TcpClientControl | {82AD96A4-5E4C-4FA6-B302-219CD92731BD} |
VideoCamera | Driver to access USB based WebCams | HumanOS.UHAL.VideoCamera | {51F3D53D-8353-4BDC-B037-39C2644D0D6A} |
WebControlDriver | Driver to access REST based web services. | HumanOS.UHAL.WebControl | {BE79A86B-38EE-4FAA-805A-1DB46A06E65D} |
Pervasive Services
Following list shows the most common service ids.
Name | Description | Plugin Name | ID |
---|---|---|---|
Azure IoT Client | Data publisher und subscriber for Azure IoT Hubs | HumanOS.PeSeL.AzureIoTClient | {CB02C837-73C4-43AA-BC9D-F04BAA8FF692} |
Csv Data Logger | Data publisher for csv files | HumanOS.PeSeL.CsvDataLogger | {E4666421-B016-4E88-AC45-02F1A3C9A122} |
Influx Data Logger | Data publisher for influx database | HumanOS.PeSeL.InfluxDbLogger | {B5751F8F-59FA-47C8-9C11-6B8186863476} |
MQTT Client | Service plugin providing a MQTT Client | HumanOS.PeSeL.MQTTClient | {16E29C41-3CE5-4FD6-8D61-2E47C93C7A7A} |
MQTT Server | Service plugin providing a MQTT Server | HumanOS.PeSeL.MqttServer | {73534114-43E1-4591-9FAD-93991367625F} |
MT Connect Agent | MT Connect agent plugin | HumanOS.PeSeL.MTConnectAgent | {7EB614F1-1626-4342-8F9D-C1F26E623E22} |
NodeSpace DataLogger | Data publisher logging data over NodeSpace commands | HumanOS.PeSeL.NodeSpaceDataLogger | {F433A67F-4216-4BAA-9CBE-555FD4905682} |
OPC-UA Server | Service plugin providing a full OPC-UA Server | HumanOS.PeSeL.OPCUAServer | {3B3421CB-92E5-4D51-B172-33A180F21824} |
RabbitMQ Client | Data publisher and subscriber for RabbitMQ platforms | HumanOS.PeSeL.RabbitMqClient | {06966891-F18F-464E-87DA-1A4E97EE9CB0} |
Rest Data Logger | Rest client data publisher | HumanOS.PeSeL.RestDataLogger | {10F72D63-2858-49D5-9B3F-DD06C92FA804} |
Smart Device Client | Client to connect to smart device server (Orchestrators managing smart devices) | HumanOS.PeSeL.SmartDeviceClient | {682DF75B-821A-463A-84B0-FBE5907F74E0} |
SQL Data Logger | Data publisher to log data into a SQL database | HumanOS.PeSeL.SqlDataLogger | {5F446805-C274-4E09-9BEE-573ECE5CF28F} |
Web Service API | Service plugin providing HTTP based REST API for simple querying and commanding HumanOS | HumanOS.PeSeL.WebService | {650A866D-5958-4FF6-BB11-B0A74CC76151} |