SCADA system for IIOT 4.0
git clone
cd HiveCommand/
yarn
Create a .env file in packages/app/hivecommand-backend and populate with the following
key | description |
---|---|
DATABASE_URL | Postgres db connection url prefixed with postgresql:// |
Run the initial prisma migrations
cd packages/app/hivecommand-db
npx prisma migrate dev
Start gateway, backend + web-frontend
hexhive dev
cd packages/app/hivecommand-backend/; yarn start
cd packages/app/hivecommand-frontend/; yarn start
To keep typescript inference throughout the monorepo follow the below steps;
Keep the root tsconfig.json up to date with project references Extend each project from the root tsconfig.json Add composite to each module that is re-used Add references at the bottom of modules that use shared modules
For webpack ts-loader with projectReferences and tsconfig-paths-webpack-plugin must be setup
Architecture
┌─────────────────────┐
│EdgeDevice (RPi / PC)│
└┬────────────────────┘
┌▽────────────────┐
│SCADA Client │
└┬───────────────┬┘
┌▽─────────────┐┌▽─────────────┐
│Evented values││PLC Driver Bus│
└┬─────────────┘└┬─────────────┘
┌▽───┐┌──────────▽┐
│MQTT││PLC │
└────┘└───────────┘
Available SCADA Clients
Available PLC Drivers
npx lerna run test
Coverage is needed across the entire repo to stop regressions
packages/
app/ - WebApp resources
hivecommand-api/
hivecommand-backend/
hivecommand-frontend/
hivecommand-native/
hivecommand-native-dev/
clients/
iot-cli/
communication/ - MQTT, OPC, Driver libraries
amqp-client/
amqp-hub/
opc-client/
opc-ethernet-ip-bridge/
opc-amqp-bridge/
opc-server/
opc-utils/
rabbitmq-auth/
sms-utils/
core/ - DB defs, scripting helpers, local-bridge
command-data/
command-local-sidecar/
command-scripting/
command-subscription-lock/
core-ui/ - Nodes, Remote Components, Canvas
command-canvas-nodes/
command-remote-components/
command-surface/
infrastructure/ - Infrastructure (Pulumi)
main/
supporting/
network/ - WAN Network (Auth/Discovery + SCADA)
global-discovery-network/
mqtt-auth-server/
Provide jump-point for dependencies that are networked