# Deployment record — wonder-app-vd03 · Makino Pro 5 (Z-34184) FOCAS **Date configured:** 2026-06-25 **Host:** `wonder-app-vd03.zmr.zimmer.com` (OtOpcUaHost Windows service, single fused admin+driver node) **Status:** Configured + deployed + served. **Live values blocked** by the FOCAS PDU-v3 driver gap — see [`docs/plans/2026-06-25-focas-pdu-v3-30i-b-support.md`](../plans/2026-06-25-focas-pdu-v3-30i-b-support.md). ## Equipment | Field | Value | |---|---| | Machine | **Makino Pro 5** (FANUC **30i-B** control) | | **IP / FOCAS endpoint** | **`10.201.31.5:8193`** (FOCAS Ethernet, TCP) — reachable from the host (and from VPN clients) | | **ZTag** | **`Z-34184`** | | Manufacturer / Model | `Makino` / `Pro 5` | | CNC series (driver) | `Thirty_i` (30i) | ## OtOpcUa host endpoints - AdminUI: `http://wonder-app-vd03.zmr.zimmer.com:9000` (login disabled — `Security__Auth__DisableLogin=true`) - OPC UA: `opc.tcp://wonder-app-vd03.zmr.zimmer.com:4840/OtOpcUa` - Akka cluster: `:4053` · ConfigDb: SQL `OtOpcUaConfig` on `:1433` ## Deployed configuration (cluster `DEV`, Enterprise `zb` / Site `wonder-app-vd03`) First config ever deployed on this node. All authored via the AdminUI. | Object | Value | |---|---| | Namespace | `dev-equipment` (Equipment), URI `urn:zb:wonder-app-vd03:equipment` | | UNS path | `zb / wonder-app-vd03 / machining / makino` | | FOCAS driver instance | `focas-z-34184` ("Makino Pro 5 Z-34184 (FOCAS)"), backend `wire`, FixedTree enabled | | Device | `10.201.31.5:8193`, series `Thirty_i` | | Equipment | `z-34184` → `EquipmentId = EQ-3686c0272279`, MachineCode `Z-34184`, ZTag `Z-34184` | | Tags | `parts-count` → `MACRO:3901` (Float64/Double, Read); `parts-required` → `MACRO:3902` (Float64/Double, Read) | | Deployment | `0c2db588` (rev `924b59097eba…`) — **Sealed / "In sync"** | OPC UA node IDs (verified served via the OtOpcUa CLI client): - Equipment: `ns=2;s=EQ-3686c0272279` - `ns=2;s=EQ-3686c0272279/parts-count` - `ns=2;s=EQ-3686c0272279/parts-required` ## Host change required to deploy at all (Akka cluster roles) This node was joining the Akka cluster **role-less**, so no deployment could ever complete ("a task was canceled"; Fleet status: "no driver-role nodes are Up"). Root cause: `OTOPCUA_ROLES` (set to `admin,driver`) drives Program.cs actor wiring but does **not** populate the Akka member roles — those come from config `Cluster:Roles`, which was unset (no `Cluster__Roles` env var; no `Cluster` section in any appsettings). No code bridges `OTOPCUA_ROLES` → `AkkaClusterOptions.Roles`. **Fix applied to the host service** (`HKLM\SYSTEM\CurrentControlSet\Services\OtOpcUaHost` → `Environment`): added `Cluster__Roles__0=admin` and `Cluster__Roles__1=driver`, then restarted the service. The member now joins **UP with roles ADMIN+DRIVER** and deployments seal. Prior env backed up on the host at `E:\ApiInstall\OtOpcUa\_envbak-20260625T145303.txt`. > Product follow-up: either wire `OTOPCUA_ROLES` → `AkkaClusterOptions.Roles`, or bake `Cluster:Roles` > into the deploy template, so a node redeploy doesn't regress to role-less. ## Live verification (OtOpcUa CLI client → server) `connect` + `browse` confirm the equipment + both tags are served at the node IDs above. **Driver fix shipped (2026-06-25):** the wire client now accepts PDU v3 (see the linked plan). Validated directly against `10.201.31.5` — `MACRO:3901`/`3902` read **Good** from the live 30i-B. **However, the OtOpcUaHost on this box is still running the pre-v3 driver binary**, so the live OPC UA tags will keep returning `Bad_WaitingForInitialData` until the rebuilt `ZB.MOM.WW.OtOpcUa.Driver.FOCAS.dll` (or a fresh self-contained host publish) is deployed to `E:\ApiInstall\OtOpcUa\` and `OtOpcUaHost` is restarted. Once redeployed, `parts-count`/`parts-required` should go Good (FixedTree + PMC/Parameter still pending the follow-on v3 command work).