107 lines
5.3 KiB
Markdown
107 lines
5.3 KiB
Markdown
# OPC-UA Adapter
|
|
Adapter between Mainflux IoT system and an OPC-UA Server.
|
|
|
|
This adapter sits between Mainflux and an OPC-UA server and just forwards the messages from one system to another.
|
|
|
|
OPC-UA Server is used for connectivity layer and the data is pushed via this adapter service to Mainflux, where it is persisted and routed to other protocols via Mainflux multi-protocol message broker. Mainflux adds user accounts, application management and security in order to obtain the overall end-to-end OPC-UA solution.
|
|
|
|
## Configuration
|
|
|
|
The service is configured using the environment variables presented in the
|
|
following table. Note that any unset variables will be replaced with their
|
|
default values.
|
|
|
|
| Variable | Description | Default |
|
|
|----------------------------------|----------------------------------------|----------------------------|
|
|
| MF_OPCUA_ADAPTER_HTTP_PORT | Service HTTP port | 8180 |
|
|
| MF_OPCUA_ADAPTER_LOG_LEVEL | Service Log level | error |
|
|
| MF_NATS_URL | NATS instance URL | nats://localhost:4222 |
|
|
| MF_OPCUA_ADAPTER_INTERVAL_MS | OPC-UA Server Interval in milliseconds | 1000 |
|
|
| MF_OPCUA_ADAPTER_POLICY | OPC-UA Server Policy | |
|
|
| MF_OPCUA_ADAPTER_MODE | OPC-UA Server Mode | |
|
|
| MF_OPCUA_ADAPTER_CERT_FILE | OPC-UA Server Certificate file | |
|
|
| MF_OPCUA_ADAPTER_KEY_FILE | OPC-UA Server Key file | |
|
|
| MF_OPCUA_ADAPTER_ROUTE_MAP_URL | Route-map database URL | localhost:6379 |
|
|
| MF_OPCUA_ADAPTER_ROUTE_MAP_PASS | Route-map database password | |
|
|
| MF_OPCUA_ADAPTER_ROUTE_MAP_DB | Route-map instance name | 0 |
|
|
| MF_THINGS_ES_URL | Things service event source URL | localhost:6379 |
|
|
| MF_THINGS_ES_PASS | Things service event source password | |
|
|
| MF_THINGS_ES_DB | Things service event source DB | 0 |
|
|
| MF_OPCUA_ADAPTER_EVENT_CONSUMER | Service event consumer name | opcua |
|
|
|
|
## Deployment
|
|
|
|
The service is distributed as Docker container. The following snippet provides
|
|
a compose file template that can be used to deploy the service container locally:
|
|
|
|
```yaml
|
|
version: "2"
|
|
services:
|
|
adapter:
|
|
image: mainflux/opcua:[version]
|
|
container_name: [instance name]
|
|
environment:
|
|
MF_OPCUA_ADAPTER_HTTP_PORT: [Service HTTP port]
|
|
MF_OPCUA_ADAPTER_LOG_LEVEL: [Service Log Level]
|
|
MF_NATS_URL: [NATS instance URL]
|
|
MF_OPCUA_ADAPTER_INTERVAL_MS: [OPC-UA Server Interval (milliseconds)]
|
|
MF_OPCUA_ADAPTER_POLICY: [OPC-UA Server Policy]
|
|
MF_OPCUA_ADAPTER_MODE: [OPC-UA Server Mode]
|
|
MF_OPCUA_ADAPTER_CERT_FILE: [OPC-UA Server Certificate file]
|
|
MF_OPCUA_ADAPTER_KEY_FILE: [OPC-UA Server Key file]
|
|
MF_OPCUA_ADAPTER_ROUTE_MAP_URL: [Route-map database URL]
|
|
MF_OPCUA_ADAPTER_ROUTE_MAP_PASS: [Route-map database password]
|
|
MF_OPCUA_ADAPTER_ROUTE_MAP_DB: [Route-map instance name]
|
|
MF_THINGS_ES_URL: [Things event source URL]
|
|
MF_THINGS_ES_PASS: [Things event source password]
|
|
MF_THINGS_ES_DB: [Things event source DB instance]
|
|
MF_OPCUA_ADAPTER_EVENT_CONSUMER: [Service event consumer name]
|
|
```
|
|
|
|
To start the service outside of the container, execute the following shell script:
|
|
|
|
```bash
|
|
# download the latest version of the service
|
|
git clone https://github.com/mainflux/mainflux
|
|
|
|
cd mainflux
|
|
|
|
# compile the opcua-adapter
|
|
make opcua
|
|
|
|
# copy binary to bin
|
|
make install
|
|
|
|
# set the environment variables and run the service
|
|
MF_OPCUA_ADAPTER_HTTP_PORT=[Service HTTP port] \
|
|
MF_OPCUA_ADAPTER_LOG_LEVEL=[OPC-UA Adapter Log Level] \
|
|
MF_NATS_URL=[NATS instance URL] \
|
|
MF_OPCUA_ADAPTER_INTERVAL_MS: [OPC-UA Server Interval (milliseconds)] \
|
|
MF_OPCUA_ADAPTER_POLICY=[OPC-UA Server Policy] \
|
|
MF_OPCUA_ADAPTER_MODE=[OPC-UA Server Mode] \
|
|
MF_OPCUA_ADAPTER_CERT_FILE=[OPC-UA Server Certificate file] \
|
|
MF_OPCUA_ADAPTER_KEY_FILE=[OPC-UA Server Key file] \
|
|
MF_OPCUA_ADAPTER_ROUTE_MAP_URL=[Route-map database URL] \
|
|
MF_OPCUA_ADAPTER_ROUTE_MAP_PASS=[Route-map database password] \
|
|
MF_OPCUA_ADAPTER_ROUTE_MAP_DB=[Route-map instance name] \
|
|
MF_THINGS_ES_URL=[Things service event source URL] \
|
|
MF_THINGS_ES_PASS=[Things service event source password] \
|
|
MF_THINGS_ES_DB=[Things service event source password] \
|
|
MF_OPCUA_ADAPTER_EVENT_CONSUMER=[OPC-UA adapter instance name] \
|
|
$GOBIN/mainflux-opcua
|
|
```
|
|
|
|
### Using docker-compose
|
|
|
|
This service can be deployed using docker containers.
|
|
Docker compose file is available in `<project_root>/docker/addons/opcua-adapter/docker-compose.yml`. In order to run Mainflux opcua-adapter, execute the following command:
|
|
|
|
```bash
|
|
docker-compose -f docker/addons/opcua-adapter/docker-compose.yml up -d
|
|
```
|
|
|
|
## Usage
|
|
|
|
For more information about service capabilities and its usage, please check out
|
|
the [Mainflux documentation](https://mainflux.readthedocs.io/en/latest/opcua/).
|