Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Version 0.45-alpha #193

Merged
merged 38 commits into from
Jan 9, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
58b9375
Merge pull request #16 from riclolsen/master
riclolsen Dec 22, 2024
0e89594
Add sampling/publishing paramters to AdminUI.
Dec 25, 2024
ee87137
Better alignment of column widths for header and data rows, Alarms/Ta…
Dec 25, 2024
56acfd3
Add a fallback location for XML file config for the OPC-UA client dri…
Dec 28, 2024
e7bbb22
Create a default config when XML file config not found and security n…
Dec 28, 2024
b1b59ab
OPC-UA Client: improved browsing, data types and path handling.
Dec 29, 2024
84f5f8a
Add dark theme to Tabular/Alarms Viewers.
riclolsen Dec 30, 2024
38ef823
Show string value when not analog value on Viewers Info dialog.
riclolsen Dec 30, 2024
56281ea
Add parameters to OPC-UA connection.
riclolsen Dec 31, 2024
ab5e52c
New faster browse method on OPC-UA Client driver.
riclolsen Dec 31, 2024
edebf60
Fix Group1/2 autotag naming on OPC-UA Client driver.
riclolsen Jan 1, 2025
350df45
Show value of ExtensionObject var type as string on OPC-UA Client dri…
riclolsen Jan 1, 2025
90619c7
Document some parameters of connections for OPC-UA/DA.
riclolsen Jan 1, 2025
4d16145
Handle hoursShift parameter for OPC-UA Client connections.
riclolsen Jan 2, 2025
e9443a3
Fix handling of array types on OPC-UA Client.
riclolsen Jan 2, 2025
847a3ed
Add new OPC-UA demo connection and new parameters.
riclolsen Jan 2, 2025
09b7996
Create command tags for method nodes on OPC-UA Client.
riclolsen Jan 2, 2025
5e7495f
Create command tags for method nodes on OPC-UA Client, optimized.
riclolsen Jan 3, 2025
ba41b0f
Auto create command for writeable variables on OPC-UA Client.
riclolsen Jan 4, 2025
47e1f74
Auto create command for writeable variables on OPC-UA Client, link su…
riclolsen Jan 5, 2025
b67394c
Detect matrix type on OPC-UA Client.
riclolsen Jan 5, 2025
8514eeb
Control inserted tags by address instead of tag name for autotag on O…
riclolsen Jan 5, 2025
f9716d1
Fix type detection, let state texts empty for digital for autotag on …
riclolsen Jan 5, 2025
e7a8036
Make it possible string commands at UI level.
riclolsen Jan 5, 2025
5e6bddc
Handle array conversion for JSON commands on OPC-UA Client.
riclolsen Jan 6, 2025
739017a
Refactor OPC-UA Client.
riclolsen Jan 7, 2025
62bc769
Handle cancellation of command on server_realtime_auth.
riclolsen Jan 7, 2025
1dd7998
Expand timout for requests on Tabular/Events viewers.
riclolsen Jan 7, 2025
ea544b5
Allow select value on point dialog info of viewers.
riclolsen Jan 7, 2025
e845bbd
Improve handling of errors from commands on OPC-UA Client.
riclolsen Jan 7, 2025
7c665d5
Display command cancellation reason on viewers.
riclolsen Jan 7, 2025
78914b9
Align command button to the left on viewers.
riclolsen Jan 7, 2025
47c4f79
Added rules files to help AI dev tools for custom developments.
Jan 7, 2025
9277c57
Update config viewers on conf-templates.
riclolsen Jan 7, 2025
c1fbcac
Fix alertState property name in OPC-UA/DA.
riclolsen Jan 8, 2025
3d986e0
Fix alertState property type in schema doc.
riclolsen Jan 8, 2025
d8a5990
Update Excel config server and worksheet to add new tag parameters.
riclolsen Jan 8, 2025
709c3f2
Version 0.45-alpha.
riclolsen Jan 9, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 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.44-alpha).
- Windows installer available in the [releases section](https://github.com/riclolsen/json-scada/releases/tag/V0.45-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.44-alpha)
- [Windows Installer](https://github.com/riclolsen/json-scada/releases/tag/V0.45-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
30 changes: 18 additions & 12 deletions conf-templates/config_viewers.js
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@
//
//var EventsViewer_Notific = 1; // 0: disable desktop notifications, 1=enable desktop notifications
//
// var EventsViewer_PanicModePriorityLimit = 1; // limit priorities shown in panic mode (up to)
//
//// locale and time zone for date/time formatting (leave empty for browser defaults)
//// see https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleString
//var EventsViewer_LocaleTime = ""; // locale for time format e.g "en-US"
Expand All @@ -53,21 +55,17 @@
// }
//
//// Tabular Viewer ----------------------------------------------------------------------------------
//var TabularViewer_ToolbarColor = '#AA9E97'; // toolbar color
//
//var TabularViewer_Font = 'Segoe UI,Source Sans Pro,calibri,consolas,arial,helvetica'; // font
//
//var TabularViewer_TableColor = '#DCDCEE'; // table background color
//var TabularViewer_GridColor = '#ECECEE'; // table grid color
//
//var TabularViewer_AlmTxtColor = 'mediumblue'; // alarmed color
//var TabularViewer_FailTxtColor = 'white'; // failed value color
//var TabularViewer_AckTxtColor = '484848'; // acknowledged alarm color
//var TabularViewer_GridColor = '#BBBBBB'; // table grid color
//
//var TabularViewer_LineColor = '#DCDCEE'; // line color
//var TabularViewer_AlmTxtColor = 'rgb(37, 132, 211)'; // alarmed color
//var TabularViewer_FailTxtColor = '#AAAAAA'; // failed value color
//var TabularViewer_AckTxtColor = 'rgb(17, 91, 151)'; // acknowledged alarm color
//
//var TabularViewer_RefreshTime = 3; // refresh time (seconds)
//
//
//// locale and time zone for date/time formatting (leave empty for browser defaults)
//// see https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleString
//var TabularViewer_LocaleDateTime = ""; // locale for time format e.g "en-US"
Expand All @@ -76,14 +74,21 @@
// // weekday: 'long', year: 'numeric', month: 'long', day: 'numeric', hour: 'numeric', minute: 'numeric', second: 'numeric', fractionalSecondDigits: 3, timeZone: 'America/New_York'
//};
//
//// use this to create custom buttons that can select a set of group1 filters on Alarms Viewer
//var TabularViewer_CustomFiltersSelectors = [
// { name: 'Test1', group1List: ['KAW2', 'KOR1'] },
// { name: 'Test2', group1List: ['KIK3', 'KNH2'] },
//];
//
//
//// Screen Viewer ---------------------------------------------------------------------------------
//
//var ScreenViewer_RefreshTime = 3; // refresh time in seconds (digital changes triggers a faster refresh)
//
//// SVG Screen dimensions (must match <svg> tag dimensions on SVG screens)
//// <svg width="2400" height="1500">
//var ScreenViewer_SVGMaxWidth = 2400; // default SVG screen width in pixels
//var ScreenViewer_SVGMaxHeight = 1500; // default SVG screen height in pixels
//// <svg width="3840" height="2160">
//var ScreenViewer_SVGMaxWidth = 3840; // default SVG screen width in pixels
//var ScreenViewer_SVGMaxHeight = 2160; // default SVG screen height in pixels
//
//var ScreenViewer_Background = '#DDDDDD'; // background color for Inkscape SAGE SVG screens
//var ScreenViewer_ToolbarColor = 'lightslategray'; // toolbar color
Expand Down Expand Up @@ -177,6 +182,7 @@
//
//var ScreenViewer_SlideShowInterval = 10; // slide show time in seconds
//var ScreenViewer_EnableTimeMachine = 1; // 1 = enable time machine, 0 = disable time machine
//var ScreenViewer_SecurityCardScale = 1.0; // scale to represent an annotation security card
//
//// Command dialog
//var CommandDialog_Background = 'wheat'; // background color
Expand Down
Binary file modified conf-templates/json-scada-config.xlsm
Binary file not shown.
6 changes: 3 additions & 3 deletions conf-templates/kaw2.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 2 additions & 1 deletion demo-docker/mongo_seed/files/demo_connections.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{"_id":{"$oid":"5f108e3e3d8adfd3eccb206e"},"protocolDriver":"IEC60870-5-104_SERVER","protocolDriverInstanceNumber":1,"protocolConnectionNumber":1001,"name":"IEC104DIST","description":"Demo distribution of IEC 104","enabled":true,"commandsEnabled":true,"ipAddressLocalBind":"0.0.0.0:2404","ipAddresses":[],"localLinkAddress":1.0,"remoteLinkAddress":2.0,"giInterval":null,"testCommandInterval":0.0,"timeSyncInterval":0.0,"sizeOfCOT":2.0,"sizeOfCA":2.0,"sizeOfIOA":3.0,"k":12.0,"w":8.0,"t0":10.0,"t1":15.0,"t2":10.0,"t3":20.0,"serverModeMultiActive":true,"maxClientConnections":20.0,"maxQueueSize":5000.0,"stats":null}
{"_id":{"$oid":"5f1090143d8adfd3eccb206f"},"protocolDriver":"IEC60870-5-104","protocolDriverInstanceNumber":1,"protocolConnectionNumber":61,"name":"IEC104DEMO","description":"Demo via IEC60870-5-104","enabled":true,"commandsEnabled":true,"ipAddressLocalBind":"","ipAddresses":["129.153.76.210:2404","150.230.171.172:2404"],"localLinkAddress":2.0,"remoteLinkAddress":1.0,"giInterval":250.0,"testCommandInterval":60.0,"timeSyncInterval":650.0,"sizeOfCOT":2.0,"sizeOfCA":2.0,"sizeOfIOA":3.0,"k":12.0,"w":8.0,"t0":10.0,"t1":15.0,"t2":10.0,"t3":20.0,"stats":null}
{"_id":{"$oid":"5ff3512268d80d68205b403f"},"protocolDriver":"OPC-UA","protocolDriverInstanceNumber":1,"protocolConnectionNumber":1003,"name":"OPCClient1","description":"OPC Client 1","enabled":true,"commandsEnabled":true,"endpointURLs":["opc.tcp://opcua.demo-this.com:51210/UA/SampleServer"],"configFileName":"c:\\json-scada\\conf\\Opc.Ua.DefaultClient.Config.xml","autoCreateTags":true,"useSecurity":false,"stats":null}
{"_id":{"$oid":"5ff3512268d80d68205b403f"},"protocolDriver":"OPC-UA","protocolDriverInstanceNumber":1,"protocolConnectionNumber":1003,"name":"OPCUA1","description":"OPC Client 1","enabled":true,"commandsEnabled":true,"endpointURLs":["opc.tcp://opcua.demo-this.com:51210/UA/SampleServer"],"configFileName":"c:\\json-scada\\conf\\Opc.Ua.DefaultClient.Config.xml","autoCreateTags":true,"useSecurity":false,"stats":null, "giInterval": 300,"hoursShift": 0,"topics": []}
{"_id":{"$oid":"6773eb87695a6bf138194e45"},"protocolDriver":"OPC-UA","protocolDriverInstanceNumber":1,"protocolConnectionNumber":1004,"name":"OPCUA2","description":"OPC Client 2","enabled":true,"commandsEnabled":true,"endpointURLs":["opc.tcp://opcuademo.sterfive.com:26543"],"configFileName":"c:\\json-scada\\conf\\Opc.Ua.DefaultClient.Config.xml","autoCreateTags":true,"useSecurity":false,"stats":null, "giInterval": 300,"hoursShift": 0,"topics": []}
{"_id":{"$oid":"606c93aa46fda805647cce53"},"protocolDriver":"MQTT-SPARKPLUG-B","protocolDriverInstanceNumber":1,"protocolConnectionNumber":1200,"name":"MQTT-BROKER","description":"MQTT Demo","enabled":true,"commandsEnabled":true,"autoCreateTags":true,"endpointURLs":["mqtt://broker.hivemq.com:1883"],"topics":["spBv1.0/Edge Nodes/#","spBv1.0/Axxela/#","testtopic/munich/$.*~"],"groupId":"","edgeNodeId":"","deviceId":"","scadaHostId":"","username":"","password":"","useSecurity":false,"chainValidation":true,"rootCertFilePath":"","localCertFilePath":"","privateKeyFilePath":"","pfxFilePath":"","passphrase":"","allowTLSv10":false,"allowTLSv11":false,"allowTLSv12":true,"allowTLSv13":true,"cipherList":"","publishTopicRoot":"","topicsAsFiles":[],"topicsScripted":[],"clientId":"","stats":null}
{"_id":{"$oid":"60da25c2040e43523c8f4f57"},"protocolDriver":"OPC-UA_SERVER","protocolDriverInstanceNumber":1,"protocolConnectionNumber":123,"name":"OPC-UA DIST","description":"Test distribution of OPC-UA","enabled":true,"commandsEnabled":true,"ipAddressLocalBind":"0.0.0.0:4840","ipAddresses":[],"groupId":"UA/Test","topics":["KOR1","KAW2"],"stats":null}
{"_id":{"$oid":"6053887ea2e672638cc751d4"},"protocolDriver":"TELEGRAF-LISTENER","protocolDriverInstanceNumber":1,"protocolConnectionNumber":2001,"name":"TELEGRAFDEMO","description":"TELEGRAF Demo","enabled": true,"commandsEnabled":false,"ipAddresses":["127.0.0.1"],"ipAddressLocalBind":"0.0.0.0:51920","stats":null}
Expand Down
3 changes: 2 additions & 1 deletion demo-docker/mongo_seed/files/demo_connections_linux.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{"_id":{"$oid":"5f108e3e3d8adfd3eccb206e"},"protocolDriver":"IEC60870-5-104_SERVER","protocolDriverInstanceNumber":1,"protocolConnectionNumber":1001,"name":"IEC104DIST","description":"Demo distribution of IEC 104","enabled":true,"commandsEnabled":true,"ipAddressLocalBind":"0.0.0.0:2404","ipAddresses":[],"localLinkAddress":1.0,"remoteLinkAddress":2.0,"giInterval":null,"testCommandInterval":0.0,"timeSyncInterval":0.0,"sizeOfCOT":2.0,"sizeOfCA":2.0,"sizeOfIOA":3.0,"k":12.0,"w":8.0,"t0":10.0,"t1":15.0,"t2":10.0,"t3":20.0,"serverModeMultiActive":true,"maxClientConnections":20.0,"maxQueueSize":5000.0,"stats":null}
{"_id":{"$oid":"5f1090143d8adfd3eccb206f"},"protocolDriver":"IEC60870-5-104","protocolDriverInstanceNumber":1,"protocolConnectionNumber":61,"name":"IEC104DEMO","description":"Demo via IEC60870-5-104","enabled":true,"commandsEnabled":true,"ipAddressLocalBind":"","ipAddresses":["129.153.76.210:2404","150.230.171.172:2404"],"localLinkAddress":2.0,"remoteLinkAddress":1.0,"giInterval":250.0,"testCommandInterval":60.0,"timeSyncInterval":650.0,"sizeOfCOT":2.0,"sizeOfCA":2.0,"sizeOfIOA":3.0,"k":12.0,"w":8.0,"t0":10.0,"t1":15.0,"t2":10.0,"t3":20.0,"stats":null}
{"_id":{"$oid":"5ff3512268d80d68205b403f"},"protocolDriver":"OPC-UA","protocolDriverInstanceNumber":1,"protocolConnectionNumber":1003,"name":"OPCClient1","description":"OPC Client 1","enabled":true,"commandsEnabled":true,"endpointURLs":["opc.tcp://opcua.demo-this.com:51210/UA/SampleServer"],"configFileName":"../conf/Opc.Ua.DefaultClient.Config.xml","autoCreateTags":true,"useSecurity":false,"stats":null}
{"_id":{"$oid":"5ff3512268d80d68205b403f"},"protocolDriver":"OPC-UA","protocolDriverInstanceNumber":1,"protocolConnectionNumber":1003,"name":"OPCUA1","description":"OPC Client 1","enabled":true,"commandsEnabled":true,"endpointURLs":["opc.tcp://opcua.demo-this.com:51210/UA/SampleServer"],"configFileName":"../conf/Opc.Ua.DefaultClient.Config.xml","autoCreateTags":true,"useSecurity":false,"stats":null, "giInterval": 300,"hoursShift": 0,"topics": []}
{"_id":{"$oid":"6773eb87695a6bf138194e45"},"protocolDriver":"OPC-UA","protocolDriverInstanceNumber":1,"protocolConnectionNumber":1004,"name":"OPCUA2","description":"OPC Client 2","enabled":true,"commandsEnabled":true,"endpointURLs":["opc.tcp://opcuademo.sterfive.com:26543"],"configFileName":"../conf/Opc.Ua.DefaultClient.Config.xml","autoCreateTags":true,"useSecurity":false,"stats":null, "giInterval": 300,"hoursShift": 0,"topics": []}
{"_id":{"$oid":"606c93aa46fda805647cce53"},"protocolDriver":"MQTT-SPARKPLUG-B","protocolDriverInstanceNumber":1,"protocolConnectionNumber":1200,"name":"MQTT-BROKER","description":"MQTT Demo","enabled":true,"commandsEnabled":true,"autoCreateTags":true,"endpointURLs":["mqtt://broker.hivemq.com:1883"],"topics":["spBv1.0/Edge Nodes/#","spBv1.0/Axxela/#","testtopic/munich/$.*~"],"groupId":"","edgeNodeId":"","deviceId":"","scadaHostId":"","username":"","password":"","useSecurity":false,"chainValidation":true,"rootCertFilePath":"","localCertFilePath":"","privateKeyFilePath":"","pfxFilePath":"","passphrase":"","allowTLSv10":false,"allowTLSv11":false,"allowTLSv12":true,"allowTLSv13":true,"cipherList":"","publishTopicRoot":"","topicsAsFiles":[],"topicsScripted":[],"clientId":"","stats":null}
{"_id":{"$oid":"60da25c2040e43523c8f4f57"},"protocolDriver":"OPC-UA_SERVER","protocolDriverInstanceNumber":1,"protocolConnectionNumber":123,"name":"OPC-UA DIST","description":"Test distribution of OPC-UA","enabled":true,"commandsEnabled":true,"ipAddressLocalBind":"0.0.0.0:4840","ipAddresses":[],"groupId":"UA/Test","topics":["KOR1","KAW2"],"stats":null}
{"_id":{"$oid":"6053887ea2e672638cc751d4"},"protocolDriver":"TELEGRAF-LISTENER","protocolDriverInstanceNumber":1,"protocolConnectionNumber":2001,"name": "TELEGRAFDEMO","description":"TELEGRAF Demo","enabled": true,"commandsEnabled":false,"ipAddresses":[],"ipAddressLocalBind":"0.0.0.0:51920","stats":null}
Expand Down
Loading
Loading