Skip to content

Commit

Permalink
Version 0.36-alpha.
Browse files Browse the repository at this point in the history
  • Loading branch information
riclolsen committed Jul 19, 2024
1 parent 9b441d5 commit bc76d8c
Show file tree
Hide file tree
Showing 12 changed files with 159 additions and 35 deletions.
14 changes: 9 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,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.35-alpha).
* Windows installer available in the [releases section](https://github.com/riclolsen/json-scada/releases/tag/V0.36-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 @@ -75,14 +75,19 @@ To provide an easy to use, fully-featured, scalable, and portable SCADA/IIoT-I4.
* Data concentrator for Big Data / ML processing.
* Digital Transformation, Industry 4.0 enabler.

## Real-world usage

* 5+ years of usage in 2 big control center scanning data from 80+ substations, 90k tags.
* 5+ years of usage as HMI for local operation of circa 40 substations up to 230kV level.

## Architecture

![architecture](http://www.plantuml.com/plantuml/proxy?cache=no&src=https://raw.githubusercontent.com/riclolsen/json-scada/master/docs/JSON-SCADA_Arquitecture.txt "{json:scada} Architecture")

## 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.35-alpha)
* [Windows Installer](https://github.com/riclolsen/json-scada/releases/tag/V0.36-alpha)
* [RedHat/Rocky Linux Installer](https://github.com/riclolsen/json-scada/blob/master/docs/install.md#rhel94-and-compatible-systems-automated-installation)
* [Docker Demo](https://github.com/riclolsen/json-scada/blob/master/demo-docker/README.md)
* [Schema Documentation](https://github.com/riclolsen/json-scada/blob/master/docs/schema.md)
Expand Down Expand Up @@ -118,14 +123,14 @@ To provide an easy to use, fully-featured, scalable, and portable SCADA/IIoT-I4.
- [x] DNP3 Client (TCP, UDP, TLS, Serial) - Windows x64 only!
- [ ] DNP3 Server (TCP, UDP, TLS, Serial)
- [x] MQTT/Sparkplug-B Client
- [x] Modbus Client via PLC4X-GO
- [x] I104M (adapter for some OSHMI drivers)
- [x] ICCP Client (via I104M)
- [x] Telegraf Client (OPC-UA, MQTT, MODBUS, SNMP, ...)
- [x] OPC UA Client
- [x] OPC UA Server
- [ ] OPC UA Historical Data Server
- [ ] OPC DA Client
- [ ] Modbus Client
- [x] IEC 61850 MMS Client
- [ ] IEC 61850 MMS Server
- [ ] IEC 61850 GOOSE Client
Expand Down Expand Up @@ -162,9 +167,8 @@ To provide an easy to use, fully-featured, scalable, and portable SCADA/IIoT-I4.
- [ ] PowerBI Direct Integration
- [ ] NodeRed Integration
- [ ] Alerta Integration (https://alerta.io/)
- [ ] PLC4X Integration (https://plc4x.apache.org/)
- [x] PLC4X-GO Integration (https://plc4x.apache.org/)
- [ ] Managed Cloud Service
- [x] SAGE (brazilian SCADA from CEPEL) web displays visualization

## Online Demo (substations simulation)

Expand Down
14 changes: 9 additions & 5 deletions index.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,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.35-alpha).
* Windows installer available in the [releases section](https://github.com/riclolsen/json-scada/releases/tag/V0.36-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 @@ -75,14 +75,19 @@ To provide an easy to use, fully-featured, scalable, and portable SCADA/IIoT-I4.
* Data concentrator for Big Data / ML processing.
* Digital Transformation, Industry 4.0 enabler.

## Real-world usage

* 5+ years of usage in 2 big control center scanning data from 80+ substations, 90k tags.
* 5+ years of usage as HMI for local operation of circa 40 substations up to 230kV level.

## Architecture

![architecture](http://www.plantuml.com/plantuml/proxy?cache=no&src=https://raw.githubusercontent.com/riclolsen/json-scada/master/docs/JSON-SCADA_Arquitecture.txt "{json:scada} Architecture")

## Documentation

* [Generic Install Guide](docs/install.md)
* [Windows Installer](https://github.com/riclolsen/json-scada/releases/tag/V0.35-alpha)
* [Windows Installer](https://github.com/riclolsen/json-scada/releases/tag/V0.36-alpha)
* [RedHat/Rocky Linux Installer](docs/install.md#rhel94-and-compatible-systems-automated-installation)
* [Install Guide](docs/install.md)
* [Docker Demo](demo-docker/README.md)
Expand Down Expand Up @@ -119,6 +124,7 @@ To provide an easy to use, fully-featured, scalable, and portable SCADA/IIoT-I4.
- [x] DNP3 Client (TCP, UDP, TLS, Serial) - Windows x64 only!
- [ ] DNP3 Server (TCP, UDP, TLS, Serial)
- [x] MQTT/Sparkplug-B Client
- [x] Modbus Client via PLC4X-GO
- [x] I104M (adapter for some OSHMI drivers)
- [x] ICCP Client (via I104M)
- [x] Telegraf Client (many data sources available such as MQTT, MODBUS, SNMP, ...)
Expand All @@ -127,7 +133,6 @@ To provide an easy to use, fully-featured, scalable, and portable SCADA/IIoT-I4.
- [ ] OPC UA Historical Data Server
- [ ] OPC UA Server
- [ ] OPC DA Client
- [ ] Modbus Client
- [x] IEC 61850 MMS Client
- [ ] IEC 61850 MMS Server
- [ ] IEC 61850 GOOSE Client
Expand Down Expand Up @@ -162,9 +167,8 @@ To provide an easy to use, fully-featured, scalable, and portable SCADA/IIoT-I4.
- [ ] PowerBI Direct Integration
- [ ] NodeRed Integration
- [ ] Alerta Integration (https://alerta.io/)
- [ ] PLC4X Integration (https://plc4x.apache.org/)
- [x] PLC4X-GO Integration (https://plc4x.apache.org/)
- [ ] Managed Cloud Service
- [x] SAGE (brazilian SCADA from CEPEL) web displays visualization

## Online Demo (substations simulation)

Expand Down
11 changes: 11 additions & 0 deletions platform-rhel9/plc4xclient.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
[program:plc4xclient]
; args: instance# loglevel
command=/home/jsonscada/json-scada/bin/plc4x-client 1 1
numprocs=1 ; number of processes copies to start (def 1)
directory=/home/jsonscada/json-scada/bin/ ; directory to cwd to before exec (def no cwd)
user=jsonscada ; setuid to this UNIX account to run the program
redirect_stderr=true ; redirect proc stderr to stdout (default false)
stdout_logfile=/home/jsonscada/json-scada/log/plc4xclient.log ; stdout log path, NONE for none; default AUTO
stdout_logfile_maxbytes=10MB ; max # logfile bytes b4 rotation (default 50MB)
stdout_logfile_backups=10 ; # of stdout logfile backups (0 means none, default 10)
stdout_capture_maxbytes=10MB ; number of bytes in 'capturemode' (default 0)
11 changes: 7 additions & 4 deletions platform-windows/build.bat
Original file line number Diff line number Diff line change
Expand Up @@ -49,17 +49,20 @@ cd %SRCPATH%\lib60870.netcore\iec104server\
dotnet publish --no-self-contained --runtime win-x64 -p:PublishReadyToRun=true -c Release -o %BINPATH%
cd %SRCPATH%\dnp3\Dnp3Client\
dotnet publish --no-self-contained --runtime win-x64 -p:PublishReadyToRun=true -c Release -o %BINPATH% Dnp3Client.csproj
cd %SRCPATH%\OPC-UA-Client\
rmdir obj /S /Q
rmdir bin /S /Q
dotnet publish --no-self-contained --runtime win-x64 -p:PublishReadyToRun=true -c Release -o %BINPATH% OPC-UA-Client.csproj

cd %SRCPATH%\libplctag\libplctag.NET\src\libplctag
dotnet build --no-self-contained --runtime win-x64 -c Release -o %BINPATH%
cd %SRCPATH%\libplctag\PLCTagsClient
dotnet publish --no-self-contained --runtime win-x64 -p:PublishReadyToRun=true -c Release -o %BINPATH% PLCTagsClient.csproj

cd %SRCPATH%\logrotate\
dotnet publish --no-self-contained --runtime win-x64 -p:PublishReadyToRun=true -c Release -o %BINPATH% logrotate.csproj

cd %SRCPATH%\OPC-UA-Client\
rmdir obj /S /Q
rmdir bin /S /Q
dotnet publish --no-self-contained --runtime win-x64 -p:PublishReadyToRun=true -c Release -o %BINPATH% OPC-UA-Client.csproj

go env -w GO111MODULE=auto
set GOBIN=c:\json-scada\bin
cd %SRCPATH%\calculations
Expand Down
11 changes: 7 additions & 4 deletions platform-windows/buildupd.bat
Original file line number Diff line number Diff line change
Expand Up @@ -49,17 +49,20 @@ cd %SRCPATH%\lib60870.netcore\iec104server\
dotnet publish --no-self-contained --runtime win-x64 -p:PublishReadyToRun=true -c Release -o %BINPATH%
cd %SRCPATH%\dnp3\Dnp3Client\
dotnet publish --no-self-contained --runtime win-x64 -p:PublishReadyToRun=true -c Release -o %BINPATH% Dnp3Client.csproj
cd %SRCPATH%\OPC-UA-Client\
rmdir obj /S /Q
rmdir bin /S /Q
dotnet publish --no-self-contained --runtime win-x64 -p:PublishReadyToRun=true -c Release -o %BINPATH% OPC-UA-Client.csproj

cd %SRCPATH%\libplctag\libplctag.NET\src\libplctag
dotnet build --no-self-contained --runtime win-x64 -c Release -o %BINPATH%
cd %SRCPATH%\libplctag\PLCTagsClient
dotnet publish --no-self-contained --runtime win-x64 -p:PublishReadyToRun=true -c Release -o %BINPATH% PLCTagsClient.csproj

cd %SRCPATH%\logrotate\
dotnet publish --no-self-contained --runtime win-x64 -p:PublishReadyToRun=true -c Release -o %BINPATH% logrotate.csproj

cd %SRCPATH%\OPC-UA-Client\
rmdir obj /S /Q
rmdir bin /S /Q
dotnet publish --no-self-contained --runtime win-x64 -p:PublishReadyToRun=true -c Release -o %BINPATH% OPC-UA-Client.csproj

go env -w GO111MODULE=auto
set GOBIN=c:\json-scada\bin
cd %SRCPATH%\calculations
Expand Down
23 changes: 18 additions & 5 deletions platform-windows/json-scada.nsi
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@ RequestExecutionLevel admin

;--------------------------------

!define VERSION "v.0.35"
!define VERSION_ "0.35.0.0"
!define VERSION "v.0.36"
!define VERSION_ "0.36.0.0"

Function .onInit
System::Call 'keexrnel32::CreateMutexA(i 0, i 0, t "MutexJsonScadaInstall") i .r1 ?e'
Expand Down Expand Up @@ -134,6 +134,7 @@ SetRegView 64
nsExec::Exec 'net stop JSON_SCADA_opcuaclient'
nsExec::Exec 'net stop JSON_SCADA_opcuaserver'
nsExec::Exec 'net stop JSON_SCADA_mqttsparkplugclient'
nsExec::Exec 'net stop JSON_SCADA_plc4xclient'
nsExec::Exec 'net stop JSON_SCADA_telegraf_runtime'
nsExec::Exec 'net stop JSON_SCADA_telegraf_listener'
nsExec::Exec 'net stop JSON_SCADA_nginx'
Expand Down Expand Up @@ -244,7 +245,11 @@ SetRegView 64
File /a "..\platform-windows\nssm.exe"
File /a "..\platform-windows\sounder.exe"
File /a "..\platform-windows\vc_redist.x64.exe"
File /a "..\platform-windows\dotnet-runtime-6.0.31-win-x64.exe"
File /a "..\platform-windows\dotnet-runtime-6.0.32-win-x64.exe"
;File /a "..\platform-windows\gbda_aut.dll"
;File /a "..\platform-windows\gbhda_aw.dll"
;ExecWait `regsvr32 gbda_aut.dll`
;ExecWait `regsvr32 gbhda_aw.dll`

; Visual C redist: needed for timescaledb
;ReadRegStr $0 HKLM "SOFTWARE\Microsoft\VisualStudio\14.0\VC\Runtimes\x86" "Major"
Expand All @@ -258,8 +263,8 @@ SetRegView 64
Sleep 1000
Exec '"$INSTDIR\platform-windows\vc_redist.x64.exe" /install /passive /quiet'
Sleep 1000
Exec '"$INSTDIR\platform-windows\dotnet-runtime-6.0.31-win-x64.exe" /install /passive /quiet'
Exec '"$INSTDIR\platform-windows\dotnet-runtime-6.0.32-win-x64.exe" /install /passive /quiet'

SetOutPath $INSTDIR\platform-windows\nodejs-runtime
File /a /r "..\platform-windows\nodejs-runtime\*.*"

Expand Down Expand Up @@ -638,6 +643,11 @@ Section "Uninstall"
ExecWait `"${SC}" delete "JSON_SCADA_mqttsparkplugclient"`
ClearErrors

ExecWait `"${SC}" stop "JSON_SCADA_plc4xclient"`
Sleep 50
ExecWait `"${SC}" delete "JSON_SCADA_plc4xclient"`
ClearErrors

ExecWait `"${SC}" stop "JSON_SCADA_telegraf_listener"`
Sleep 50
ExecWait `"${SC}" delete "JSON_SCADA_telegraf_listener"`
Expand Down Expand Up @@ -745,6 +755,9 @@ Section "Uninstall"
ExecWait '"$0" /C "$INSTDIR\platform-windows\remove_services.bat"'
Sleep 5000

; ExecWait `regsvr32 gbda_aut.dll -u`
; ExecWait `regsvr32 gbhda_aw.dll -u`

RMDir /r "$INSTDIR\bin"
RMDir /r "$INSTDIR\platform-windows"
RMDir /r "$INSTDIR\conf"
Expand Down
30 changes: 29 additions & 1 deletion platform-windows/release_notes.txt
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,34 @@ Inkscape+SAGE:

-------------------------------------------------------------------

Notes for version 0.36:

* Default login credentials: username=admin password=jsonscada.
* Metabase credentials: [email protected] password=jsonscada123.
* New driver PLC4X Client for PLC protocols like Modbus, etc.
* IEC61850 client: fixed size of origin string for commands that was crashing some devices.
* Fixed Bson version errors in server_realtime_auth module.
* MongoDB Compass updated to 1.43.4.
* MongoDB Community Server updated to 7.0.12.
* Grafana updated to 11.1.0.
* Telegraf runtime updated to 1.31.1.
* Nodejs runtime updated to 20.15.1.
* Dotnet runtime updated to 6.0.32.
* Chromium updated to 126.0.6478.183.
* NPM packages updated.

Requirements and recommendations:

* Windows 10/11 64 bits or Server >=2019, Windows PowerShell. At least 20GB of free space in the "C:" drive.
* Administrative rights. corporate Windows policies may cause problems with the creation of services and the opening of TCP ports.
* Free TCP ports 6688, 6689, 27017, 5432, 80, 8080, 3000, 3001, 9000. Other ports may be required for optional services and protocols.
* If the server already has MongoDB, PostgreSQL, Grafana, Metabase, Nginx or another webserver, please uninstall, disable or watch out for possible conflicts.
* Do not update previously installed JSON-SCADA. Please uninstall previous JSON-SCADA versions before installing a new version.
* If using VirtualBox configure "paravirtualization interface"=KVM, otherwise Nodejs errors may occur.
* MongoDB requires AVX instructions on x86 CPU.

-------------------------------------------------------------------

Notes for version 0.35:

* Default login credentials: username=admin password=jsonscada.
Expand Down Expand Up @@ -213,7 +241,7 @@ Notes for version 0.32:
* Added OpenJDK 22.0.1.
* Telegraf runtime updated to 1.30.2.
* MongoDB Community Server updated to 7.0.9.
* MongoDB Compass updated to 1.44.0.
* MongoDB Compass updated to 1.43.0.
* Grafana updated to 9.5.18, now connect to local PostgreSQL.
* Dotnet runtime updated to 6.0.29.
* Nodejs runtime updated to 20.13.1.
Expand Down
2 changes: 1 addition & 1 deletion src/htdocs/i18n/messages_i18n-en_us.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
var Msg =
{
NomeProduto: '{json:scada}',
VersaoProduto: '0.35',
VersaoProduto: '0.36',

NomeVisorTelas: 'Display Viewer',
NomeVisorEventos: 'Events Viewer',
Expand Down
2 changes: 1 addition & 1 deletion src/htdocs/i18n/messages_i18n-pt_br.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
var Msg =
{
NomeProduto: '{json:scada}',
VersaoProduto: '0.35',
VersaoProduto: '0.36',

NomeVisorTelas: 'Visor de Telas',
NomeVisorEventos: 'Visor de Eventos',
Expand Down
2 changes: 1 addition & 1 deletion src/htdocs/i18n/messages_i18n-uk_ua.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
var Msg =
{
NomeProduto: '{json:scada}',
VersaoProduto: '0.35',
VersaoProduto: '0.36',

NomeVisorTelas: 'Перегляд ',
NomeVisorEventos: 'Події',
Expand Down
2 changes: 1 addition & 1 deletion src/htdocs/i18n/messages_i18n.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
var Msg =
{
NomeProduto: '{json:scada}',
VersaoProduto: '0.35',
VersaoProduto: '0.36',

NomeVisorTelas: 'Display Viewer',
NomeVisorEventos: 'Events Viewer',
Expand Down
Loading

0 comments on commit bc76d8c

Please sign in to comment.