Skip to content

Commit

Permalink
Merge pull request #203 from json-scada/master
Browse files Browse the repository at this point in the history
Version 0.48-alpha, add DNP3 Server Protocol
  • Loading branch information
riclolsen authored Feb 7, 2025
2 parents 92a9d0d + bceadff commit e6502f9
Show file tree
Hide file tree
Showing 70 changed files with 33,554 additions and 6,525 deletions.
3 changes: 0 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,6 @@ src/plc4x-client/
src/calculations/calculations
src/i104m/i104m
src/i104m/json-scada.json
src/dnp3/opendnp3-3.0.4/
src/dnp3/opendnp3/
src/dnp3/Dnp3Client - Copia/
src/carbone-reports/point_list.ods
src/dnp3/Dnp3Client/Properties/
src/htdocs-admin/translate.bat
Expand Down
6 changes: 6 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
[submodule "src/dnp3/opendnp3"]
path = src/dnp3/opendnp3
url = https://github.com/dnp3/opendnp3
[submodule "src/mongo-cxx-driver/mongo-cxx-driver"]
path = src/mongo-cxx-driver/mongo-cxx-driver
url = https://github.com/mongodb/mongo-cxx-driver.git
7 changes: 4 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ To provide an easy to use, fully-featured, scalable, and portable SCADA/IIoT-I4.
- MongoDB as the real-time core database, persistence layer, config store, SOE historian.
- Event-based realtime async data processing with MongoDB Change Streams.
- Portability and modular interoperability over Linux, Windows, Mac OSX, x86/64, ARM.
- Windows installer available in the [releases section](https://github.com/riclolsen/json-scada/releases/tag/V0.47-alpha).
- Windows installer available in the [releases section](https://github.com/riclolsen/json-scada/releases/tag/V0.48-alpha).
- Unlimited tags, servers, and users.
- Horizontal scalability, from a single computer to big clusters (MongoDB-sharding), Docker containers, VMs, Kubernetes, cloud, or hybrid deployments.
- Modular distributed architecture. Lightweight redundant data acquisition nodes can connect securely over TLS to the database server. E.g. a Raspberry PI can be a data acquisition node.
Expand Down Expand Up @@ -90,7 +90,7 @@ To provide an easy to use, fully-featured, scalable, and portable SCADA/IIoT-I4.
## Documentation

- [Generic Install Guide](https://github.com/riclolsen/json-scada/blob/master/docs/install.md)
- [Windows Installer](https://github.com/riclolsen/json-scada/releases/tag/V0.47-alpha)
- [Windows Installer](https://github.com/riclolsen/json-scada/releases/tag/V0.48-alpha)
- [RedHat/Rocky Linux Installer Script](https://github.com/riclolsen/json-scada/blob/master/docs/install.md#rhel94-and-compatible-systems-automated-installation)
- [Ubuntu Linux Installer Script](https://github.com/riclolsen/json-scada/blob/master/docs/install.md#ubuntu-2404-scripted-installation)
- [Generic Install Guide](https://github.com/riclolsen/json-scada/blob/master/docs/install.md)
Expand All @@ -104,6 +104,7 @@ To provide an easy to use, fully-featured, scalable, and portable SCADA/IIoT-I4.
- [IEC60870-5-101 Server Driver](https://github.com/riclolsen/json-scada/blob/master/src/lib60870.netcore/iec101server/README.md)
- [IEC60870-5-101 Client Driver](https://github.com/riclolsen/json-scada/blob/master/src/lib60870.netcore/iec101client/README.md)
- [DNP3 Client Driver](https://github.com/riclolsen/json-scada/blob/master/src/dnp3/Dnp3Client/README.md)
- [DNP3 Server Driver](https://github.com/riclolsen/json-scada/blob/master/src/dnp3/Dnp3Server/README.md)
- [Telegraf Listener Driver](https://github.com/riclolsen/json-scada/blob/master/src/telegraf-listener/README.md)
- [MQTT Sparkplug-B Client Driver](https://github.com/riclolsen/json-scada/blob/master/src/mqtt-sparkplug/README.md)
- [OPC-UA Client Driver](https://github.com/riclolsen/json-scada/blob/master/src/OPC-UA-Client/README.md)
Expand Down Expand Up @@ -132,7 +133,7 @@ To provide an easy to use, fully-featured, scalable, and portable SCADA/IIoT-I4.
- [ ] IEC 61850 MMS Server
- [ ] IEC 61850 GOOSE/SV Client
- [x] DNP3 Client TCP/UDP/TLS/Serial - Windows x64 only!
- [ ] DNP3 Server TCP/UDP/TLS/Serial
- [x] DNP3 Server TCP/UDP/TLS/Serial
- [x] MQTT/Sparkplug-B Pub/Sub TCP/TLS
- [x] Modbus Client via PLC4X-GO
- [ ] ICCP Client TCP/TLS
Expand Down
31 changes: 26 additions & 5 deletions compile-docker/docker-compose.yaml
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
# {json:scada} Docker Compilation for Linux x64 - (c) 2020-2024 - Ricardo L. Olsen
# {json:scada} Docker Compilation for Linux x64 - (c) 2020-2025 - Ricardo L. Olsen
# Requires Internet connection!

services:

dotnet_compile:
image: mcr.microsoft.com/dotnet/sdk:8.0
container_name: js_dotnet_compile
command: sh -c "cd /src/lib60870.netcore/lib60870.netcore/ &&
command: sh -c "apt-get update &&
apt-get -y install build-essential cmake sasl2-bin libsasl2-dev libssl-dev libzstd-dev libsnappy-dev &&
cd /src/lib60870.netcore/lib60870.netcore/ &&
dotnet build --self-contained --runtime linux-x64 -c Release -o /publish_bin/ &&
cd /src/lib60870.netcore/iec101client/ &&
dotnet publish --self-contained --runtime linux-x64 -p:PublishReadyToRun=true -c Release -o /publish_bin/ &&
Expand All @@ -33,8 +35,6 @@ services:
rm -rf obj bin &&
cd /src/libplctag/libplctag.NET/src/libplctag &&
rm -rf obj bin &&
apt-get update &&
apt-get -y install build-essential cmake &&
cd /src/libiec61850 &&
mkdir -p build &&
cd build &&
Expand All @@ -49,7 +49,26 @@ services:
cd /src/libiec61850/dotnet/core/2.0/IEC61850.NET.core.2.0/ &&
rm -rf obj bin &&
cd /src/libiec61850 &&
rm -rf .install "
rm -rf .install &&
cd /src/mongo-cxx-driver/mongo-cxx-driver/build &&
sed -i '/ $${fetch_args}/d' ../cmake/FetchMongoC.cmake &&
cmake .. -DCMAKE_INSTALL_PREFIX=../../../mongo-cxx-driver-lib -DCMAKE_CXX_STANDARD=17 -DBUILD_VERSION=4.0.0 -DBUILD_SHARED_LIBS=OFF -DBUILD_SHARED_AND_STATIC_LIBS=OFF &&
cmake --build . --config Release &&
cmake --build . --target install --config Release &&
cd /src/dnp3/opendnp3 &&
mkdir -p build &&
cd build &&
cmake -DDNP3_EXAMPLES=OFF -DDNP3_TLS=ON .. &&
make &&
cp cpp/lib/libopendnp3.so /publish_bin &&
cd /src/dnp3/Dnp3Server/ &&
sed -i 's/mongo-cxx-driver-lib\\/lib64\\//mongo-cxx-driver-lib\\/lib\\//g' ./CMakeLists.txt &&
sed -i '/sasl2/a snappy' ./CMakeLists.txt &&
mkdir -p build &&
cd build &&
cmake .. &&
make &&
cp Dnp3Server /publish_bin"
environment:
- DOTNET_CLI_TELEMETRY_OPTOUT=1
volumes:
Expand All @@ -58,6 +77,8 @@ services:
- ../src/lib60870.netcore:/src/lib60870.netcore
- ../src/OPC-UA-Client:/src/OPC-UA-Client
- ../src/libplctag:/src/libplctag
- ../src/mongo-cxx-driver:/src/mongo-cxx-driver
- ../src/dnp3:/src/dnp3
- ../demo-docker/bin:/publish_bin

# NOTICE Dnp3Client and OPC-DA-Client are Windows-only, so it can only run in docker/linux using Wine.
Expand Down
10 changes: 10 additions & 0 deletions conf-templates/log.io-file.json
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,16 @@
}
}
},
{
"source": "node1",
"stream": "dnp3server",
"config": {
"path": "/json-scada/log/dnp3server.log",
"watcherOptions": {
"usePolling": true
}
}
},
{
"source": "node1",
"stream": "mqttsparkplugclient",
Expand Down
24 changes: 23 additions & 1 deletion demo-docker/docker-compose.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,7 @@ services:
networks:
- jsdemo_net

# IEC60870-5-104 SERVER, accepts connection on 127.0.0.1:2404 (originator address 1)
# IEC60870-5-104 SERVER, demo config accepts connection on 127.0.0.1:2404 (originator address 1)
iec104server:
image: mcr.microsoft.com/dotnet/sdk:8.0
container_name: jsdemo_iec104server
Expand Down Expand Up @@ -356,6 +356,28 @@ services:
networks:
- jsdemo_net

# DNP3 SERVER, demo config accepts connection on 127.0.0.1:20000 (local address 2, remote address 1)
dnp3server:
image: mcr.microsoft.com/dotnet/sdk:8.0
container_name: jsdemo_dnp3server
command: sh -c "sleep 60 && /jsonscada_bin/Dnp3Server"
restart: unless-stopped
environment:
- LD_LIBRARY_PATH=/jsonscada_bin
volumes:
- ./conf:/conf
- ./bin:/jsonscada_bin
- ./log:/log
links:
- jsdemo_mongorsn1
# exports the DNP3 server port to the host
ports:
- 20000:20000
expose:
- "20000"
networks:
- jsdemo_net

# OPC-DA client: requires wine as it is currently Windows-only
opcda_client_wine:
image: scottyhardy/docker-wine:latest
Expand Down
1 change: 1 addition & 0 deletions demo-docker/mongo_seed/files/demo_connections.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,4 @@
{"_id":{"$oid":"6675d176e2f7917450d7585b"},"protocolDriver":"PLC4X","protocolDriverInstanceNumber":1,"protocolConnectionNumber":2003,"name":"PLC1","description":"PLC #1 MODBUS","enabled":true,"commandsEnabled":true,"topics":["MBPLC1_HR1|holding-register:1:UINT","MBPLC1_10HRS|holding-register:2:INT[10]"],"autoCreateTags": true,"endpointURLs":["modbus-tcp://localhost:5001?unit-identifier=2"],"giInterval": 1.5,"stats":null}
{"_id":{"$oid":"669ea9ce96e9a9fe7abe6ef8"},"protocolDriver":"OPC-DA","protocolDriverInstanceNumber":1,"protocolConnectionNumber":5001,"name":"OPCDAClient1","description":"Download from demo server from https://github.com/technosoftware-gmbh/opcdaaehda-client-solution-net/tree/master/x86/DemoServer","enabled":true,"commandsEnabled":true,"stats":null,"endpointURLs":["opcda://localhost/SampleCompany.DaSample.30"],"autoCreateTags":true,"useSecurity":false,"autoCreateTagPublishingInterval":5,"autoCreateTagQueueSize":5,"autoCreateTagSamplingInterval":0,"giInterval":300,"localCertFilePath":"","peerCertFilePath":"","timeoutMs":20000,"topics":[],"deadBand":5,"hoursShift":0,"password":"","username":""}
{"_id":{"$oid":"66e6c7d1311eee86fc6b4f07"},"protocolDriver":"DNP3","protocolDriverInstanceNumber":1,"protocolConnectionNumber":33,"name":"DNP3DEMO","description":"DNP3 DEMO","enabled": true,"commandsEnabled":true,"stats":null,"ipAddresses":["127.0.0.1:20000"],"passphrase":"","pfxFilePath":"","useSecurity":false,"timeoutMs":10000,"localLinkAddress":2,"remoteLinkAddress":1,"giInterval":300,"hoursShift":0,"timeSyncInterval":0,"localCertFilePath":"","peerCertFilePath":"","peerCertFilesPaths":[],"rootCertFilePath":"","chainValidation":false,"allowOnlySpecificCertificates":false,"privateKeyFilePath":"","allowTLSv10":false,"allowTLSv11":false,"allowTLSv12":true,"allowTLSv13":true,"cipherList":"","connectionMode":"TCP Active","asyncOpenDelay":0,"timeSyncMode":0,"class0ScanInterval":0,"class1ScanInterval":0,"class2ScanInterval":0,"class3ScanInterval":0,"enableUnsolicited":true,"rangeScans":[],"baudRate":9600,"parity":"Even","stopBits":"One","handshake":"None","timeoutForACK":1000,"timeoutRepeat":1000}
{ "_id": { "$oid": "679a83338b90fe1713ef7fef" }, "protocolDriver": "DNP3_SERVER", "protocolDriverInstanceNumber": 1, "protocolConnectionNumber": 34, "name": "DNP3SRV", "description": "DNP3 SERVER DEMO", "enabled": true, "commandsEnabled": true, "stats": null, "ipAddresses": [], "passphrase": "", "pfxFilePath": "", "useSecurity": false, "timeoutMs": 10000, "localLinkAddress": 2, "remoteLinkAddress": 1, "giInterval": 300, "hoursShift": 0, "timeSyncInterval": 0, "localCertFilePath": "", "peerCertFilePath": "", "peerCertFilesPaths": [], "rootCertFilePath": "", "chainValidation": false, "allowOnlySpecificCertificates": false, "privateKeyFilePath": "", "allowTLSv10": false, "allowTLSv11": false, "allowTLSv12": true, "allowTLSv13": true, "cipherList": "", "connectionMode": "TCP Passive", "asyncOpenDelay": 0, "timeSyncMode": 0, "class0ScanInterval": 0, "class1ScanInterval": 0, "class2ScanInterval": 0, "class3ScanInterval": 0, "enableUnsolicited": true, "rangeScans": [], "portName": "COM1", "baudRate": 9600, "parity": "Even", "stopBits": "One", "handshake": "None", "timeoutForACK": 1000, "timeoutRepeat": 1000, "ipAddressLocalBind": "0.0.0.0:20000", "autoCreateTags": true, "topics": [ "KAW2" ], "serverQueueSize": 2000 }
1 change: 1 addition & 0 deletions demo-docker/mongo_seed/files/demo_connections_linux.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,4 @@
{"_id":{"$oid":"6675d176e2f7917450d7585b"},"protocolDriver":"PLC4X","protocolDriverInstanceNumber":1,"protocolConnectionNumber":2003,"name":"PLC1","description":"PLC #1 MODBUS","enabled":true,"commandsEnabled":true,"topics":["MBPLC1_HR1|holding-register:1:UINT","MBPLC1_10HRS|holding-register:2:INT[10]"],"autoCreateTags": true,"endpointURLs":["modbus-tcp://localhost:5001?unit-identifier=2"],"giInterval": 1.5,"stats":null}
{"_id":{"$oid":"669ea9ce96e9a9fe7abe6ef8"},"protocolDriver":"OPC-DA","protocolDriverInstanceNumber":1,"protocolConnectionNumber":5001,"name":"OPCDAClient1","description":"Download from demo server from https://github.com/technosoftware-gmbh/opcdaaehda-client-solution-net/tree/master/x86/DemoServer","enabled":true,"commandsEnabled":true,"stats":null,"endpointURLs":["opcda://localhost/SampleCompany.DaSample.30"],"autoCreateTags":true,"useSecurity":false,"autoCreateTagPublishingInterval":5,"autoCreateTagQueueSize":5,"autoCreateTagSamplingInterval":0,"giInterval":300,"localCertFilePath":"","peerCertFilePath":"","timeoutMs":20000,"topics":[],"deadBand":5,"hoursShift":0,"password":"","username":""}
{"_id":{"$oid":"66e6c7d1311eee86fc6b4f07"},"protocolDriver":"DNP3","protocolDriverInstanceNumber":1,"protocolConnectionNumber":33,"name":"DNP3DEMO","description":"DNP3 DEMO","enabled": true,"commandsEnabled":true,"stats":null,"ipAddresses":["127.0.0.1:20000"],"passphrase":"","pfxFilePath":"","useSecurity":false,"timeoutMs":10000,"localLinkAddress":2,"remoteLinkAddress":1,"giInterval":300,"hoursShift":0,"timeSyncInterval":0,"localCertFilePath":"","peerCertFilePath":"","peerCertFilesPaths":[],"rootCertFilePath":"","chainValidation":false,"allowOnlySpecificCertificates":false,"privateKeyFilePath":"","allowTLSv10":false,"allowTLSv11":false,"allowTLSv12":true,"allowTLSv13":true,"cipherList":"","connectionMode":"TCP Active","asyncOpenDelay":0,"timeSyncMode":0,"class0ScanInterval":0,"class1ScanInterval":0,"class2ScanInterval":0,"class3ScanInterval":0,"enableUnsolicited":true,"rangeScans":[],"baudRate":9600,"parity":"Even","stopBits":"One","handshake":"None","timeoutForACK":1000,"timeoutRepeat":1000}
{ "_id": { "$oid": "679a83338b90fe1713ef7fef" }, "protocolDriver": "DNP3_SERVER", "protocolDriverInstanceNumber": 1, "protocolConnectionNumber": 34, "name": "DNP3SRV", "description": "DNP3 SERVER DEMO", "enabled": true, "commandsEnabled": true, "stats": null, "ipAddresses": [], "passphrase": "", "pfxFilePath": "", "useSecurity": false, "timeoutMs": 10000, "localLinkAddress": 2, "remoteLinkAddress": 1, "giInterval": 300, "hoursShift": 0, "timeSyncInterval": 0, "localCertFilePath": "", "peerCertFilePath": "", "peerCertFilesPaths": [], "rootCertFilePath": "", "chainValidation": false, "allowOnlySpecificCertificates": false, "privateKeyFilePath": "", "allowTLSv10": false, "allowTLSv11": false, "allowTLSv12": true, "allowTLSv13": true, "cipherList": "", "connectionMode": "TCP Passive", "asyncOpenDelay": 0, "timeSyncMode": 0, "class0ScanInterval": 0, "class1ScanInterval": 0, "class2ScanInterval": 0, "class3ScanInterval": 0, "enableUnsolicited": true, "rangeScans": [], "portName": "COM1", "baudRate": 9600, "parity": "Even", "stopBits": "One", "handshake": "None", "timeoutForACK": 1000, "timeoutRepeat": 1000, "ipAddressLocalBind": "0.0.0.0:20000", "autoCreateTags": true, "topics": [ "KAW2" ], "serverQueueSize": 2000 }
1 change: 1 addition & 0 deletions demo-docker/mongo_seed/files/demo_instances.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,4 @@
{"_id":{"$oid":"60da25df040e43523c8f4f58"},"protocolDriver":"OPC-UA_SERVER","protocolDriverInstanceNumber":1,"enabled":true,"logLevel":1,"nodeNames":[],"activeNodeName":"","activeNodeKeepAliveTimeTag":{"$date":"2020-05-14T20:09:50.557Z"},"keepProtocolRunningWhileInactive":false}
{"_id":{"$oid":"66756c287994910acae4f602"},"protocolDriver":"PLC4X","protocolDriverInstanceNumber":1,"enabled":true,"logLevel":1,"nodeNames":[],"activeNodeName":"","activeNodeKeepAliveTimeTag":{"$date":"2020-05-14T20:09:50.557Z"},"keepProtocolRunningWhileInactive":false}
{"_id":{"$oid":"669d5cec96e9a9fe7abe6ef3"},"protocolDriver":"OPC-DA","protocolDriverInstanceNumber":1,"enabled":true,"logLevel": 1,"nodeNames":[],"activeNodeName":"","keepProtocolRunningWhileInactive":false,"activeNodeKeepAliveTimeTag":{"$date":"2024-08-04T21:43:45.592Z"}}
{"_id":{"$oid":"679a83658b90fe1713ef7ff3"},"protocolDriver":"DNP3_SERVER","protocolDriverInstanceNumber":1,"enabled":true,"logLevel":1,"nodeNames":[],"activeNodeName":"","activeNodeKeepAliveTimeTag":{"$date":"2020-07-16T13:34:30.869Z"},"keepProtocolRunningWhileInactive":false}
6 changes: 3 additions & 3 deletions docs/install.md
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ Execute commands below for scripted installation:

sudo dnf -y install git
cd /home/jsonscada
git clone https://github.com/riclolsen/json-scada --config core.autocrlf=input
git clone --recurse-submodules https://github.com/riclolsen/json-scada --config core.autocrlf=input
cd json-scada/platform-rhel9

# on x86-64 platform run
Expand Down Expand Up @@ -119,7 +119,7 @@ Execute commands below for scripted installation:

sudo dnf -y install git
cd /home/jsonscada
git clone https://github.com/riclolsen/json-scada --config core.autocrlf=input
git clone --recurse-submodules https://github.com/riclolsen/json-scada --config core.autocrlf=input
cd json-scada/platform-ubuntu-2404

# on x86-64 or ARM64 platform run
Expand Down Expand Up @@ -212,7 +212,7 @@ Download the code from the online repo

Or do a git clone

git clone https://github.com/riclolsen/json-scada --config core.autocrlf=input
git clone --recurse-submodules https://github.com/riclolsen/json-scada --config core.autocrlf=input

Build the code using the adequate script for the host platform:

Expand Down
7 changes: 4 additions & 3 deletions index.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ To provide an easy to use, fully-featured, scalable, and portable SCADA/IIoT-I4.
- MongoDB as the real-time core database, persistence layer, config store, SOE historian.
- Event-based realtime async data processing with MongoDB Change Streams.
- Portability and modular interoperability over Linux, Windows, Mac OSX, x86/64, ARM.
- Windows installer available in the [releases section](https://github.com/riclolsen/json-scada/releases/tag/V0.47-alpha).
- Windows installer available in the [releases section](https://github.com/riclolsen/json-scada/releases/tag/V0.48-alpha).
- Unlimited tags, servers, and users.
- Horizontal scalability, from a single computer to big clusters (MongoDB-sharding), Docker containers, VMs, Kubernetes, cloud, or hybrid deployments.
- Modular distributed architecture. Lightweight redundant data acquisition nodes can connect securely over TLS to the database server. E.g. a Raspberry PI can be a data acquisition node.
Expand Down Expand Up @@ -90,7 +90,7 @@ To provide an easy to use, fully-featured, scalable, and portable SCADA/IIoT-I4.
## Documentation

- [Generic Install Guide](docs/install.md)
- [Windows Installer](https://github.com/riclolsen/json-scada/releases/tag/V0.47-alpha)
- [Windows Installer](https://github.com/riclolsen/json-scada/releases/tag/V0.48-alpha)
- [RedHat/Rocky Linux Installer Script](docs/install.md#rhel94-and-compatible-systems-automated-installation)
- [Ubuntu Linux Installer Script](docs/install.md#ubuntu-2404-scripted-installation)
- [Generic Install Guide](docs/install.md)
Expand All @@ -104,6 +104,7 @@ To provide an easy to use, fully-featured, scalable, and portable SCADA/IIoT-I4.
- [IEC60870-5-101 Server Driver](src/lib60870.netcore/iec101server/README.md)
- [IEC60870-5-101 Client Driver](src/lib60870.netcore/iec101client/README.md)
- [DNP3 Client Driver](src/dnp3/Dnp3Client/README.md)
- [DNP3 Server Driver](src/dnp3/Dnp3Server/README.md)
- [Telegraf Listener Driver](src/telegraf-listener/README.md)
- [MQTT Sparkplug-B Client Driver](src/mqtt-sparkplug/README.md)
- [OPC-UA Client Driver](src/OPC-UA-Client/README.md)
Expand Down Expand Up @@ -132,7 +133,7 @@ To provide an easy to use, fully-featured, scalable, and portable SCADA/IIoT-I4.
- [ ] IEC 61850 MMS Server
- [ ] IEC 61850 GOOSE/SV Client
- [x] DNP3 Client TCP/UDP/TLS/Serial - Windows x64 only!
- [ ] DNP3 Server TCP/UDP/TLS/Serial
- [x] DNP3 Server TCP/UDP/TLS/Serial
- [x] MQTT/Sparkplug-B PUB/SUB TCP/TLS
- [x] Modbus Client via PLC4X-GO
- [ ] ICCP Client TCP/TLS
Expand Down
Loading

0 comments on commit e6502f9

Please sign in to comment.