Hi everyone,
I've developed a device driver module for Ignition 8.1.44 using the ManagedTagProvider API, and it's working well for device monitoring but I'm looking to enhance it to appear in the OPC UA Device Connections interface. I've followed Kevin Herron's advice from this post and I've read the SDK examples and Eclipse Milo address space APIs. However I'm running into the same issues others have reported. Commercial third party drivers have proved this integration is possible, so I know there's a path forward.
Some of my road blocks:
- Maven Dependencies: The opc-ua-device-api artifact seems unavailable in public repositories for 8.1.44
- Missing JavaDocs: The com.inductiveautomation.ignition.gateway.opcua.server.api package isn't in the published docs
- API Gap: AbstractDeviceModuleHook, DeviceType, and DeviceSettingsRecord are documented, the actual compilation dependencies are missing
I've made a few different attempts to implement the OPC-UA device driver APIs based on the documentation and examples, but keep running into compilation and runtime issues:
Based on the SDK documentation, I tried implementing:
// build.gradle.kts
dependencies {
compileOnly("com.inductiveautomation.ignition:opc-ua-device-api:8.1.44")
// ... other dependencies
}
Error:
Could not find com.inductiveautomation.ignition:opc-ua-device-api:8.1.44
Tried working with what's publicly available:
public class CustomDeviceModuleHook extends AbstractDeviceModuleHook {
@Override
public void createDeviceTypes(DeviceContext deviceContext) {
// Attempting to follow the documented pattern
}
}
Error:
Cannot resolve symbol 'AbstractDeviceModuleHook'
Package com.inductiveautomation.ignition.gateway.opcua.server.api does not exist
Tried integrating Eclipse Milo directly with the Gateway context:
dependencies {
modlImplementation("org.eclipse.milo:sdk-server:0.6.16")
}
// Implementation attempt
public void integrateWithOpcUaServer() {
// Trying to access Ignition's OPC-UA server instance
OpcUaServer server = gatewayContext.getOpcUaServer(); // Method doesn't exist
}
Error:
Cannot resolve method 'getOpcUaServer()' in 'GatewayContext'
For Kevin Herron or IA Staff:
- Are the device driver APIs intended to be publicly available for 8.1.44, or is there a specific process to access them?
- Should I focus on Eclipse Milo's server APIs directly, or are there Ignition-specific extensions I should be using?
- Is there a recommended approach to bridge existing ManagedTagProvider implementations with OPC-UA device interfaces?
My current implementation structure:
// Simplified example
public class CustomDriverGatewayHook extends AbstractGatewayModuleHook {
private DeviceTagManager tagManager;
private ManagedTagProvider mainTagProvider;
@Override
public void startup(LicenseState activationState) {
ProviderConfiguration config = new ProviderConfiguration("CustomDevices");
mainTagProvider = gatewayContext.getTagManager().getOrCreateManagedProvider(config);
// ... device management and polling logic
}
}
I'm wondering if I should be extending different base classes or implementing additional interfaces to integrate with the OPC-UA device framework.
Any guidance on the proper approach to device driver development would be greatly appreciated.
TIA