Read-only PUDA Edge template for monitoring an ALD furnace cluster through an upstream OPC UA server.
The first release is intentionally observation-only:
- no OPC UA write calls;
- no recipe start/stop/reset commands;
- no Hermes or other agentic reasoning in the acquisition path;
- OPC UA subscriptions feed an in-memory cache, local SQLite buffer, and PUDA health telemetry;
- the existing
puda-logger→ InfluxDB →puda-grafanapath can be extended for full ALD process telemetry.
.
├── PLAN.md # implementation and rollout plan
├── docs/
│ ├── ARCHITECTURE.md
│ ├── COMMISSIONING_CHECKLIST.md
│ ├── LOGGER_GRAFANA_INTEGRATION.md
│ └── POINT_MAP_ANALYSIS.md
├── edge/
│ ├── main.py # PUDA EdgeRunner entry point
│ ├── ald_opcua.py # read-only OPC UA driver
│ ├── cache.py # thread-safe latest-value cache
│ ├── models.py # point catalogue models
│ ├── storage.py # SQLite WAL writer
│ ├── config/points.example.json
│ └── tests/
└── tools/import_point_map.py # local XLSX → JSON point catalogue
The original vendor workbook and generated full point catalogue are not committed. Generate the catalogue locally:
uv run --python 3.14 python tools/import_point_map.py `
"C:\Users\Admin\Desktop\ALD PUDA.xlsx" `
"edge\config\points.generated.json"edge/config/points.generated.json is ignored by Git.
- Install
uv, Python 3.14, and a PUDA/NATS environment. - Copy
edge/.env.exampletoedge/.env. - Generate or curate the point catalogue.
- Start with a read-only OPC UA account and a deliberately small enabled commissioning set. The default guard refuses more than 500 enabled points.
- Run:
uv sync
uv run --package puda-ald-edge python edge/main.pyFor local template tests:
uv run --package puda-ald-edge pytest edge/testsThis service is monitoring infrastructure, not a safety controller. PLC/HMI interlocks, emergency stops, gas safety, vacuum protection, and temperature protection remain local to the ALD equipment.
See PLAN.md before commissioning.