public override void Initialize() { ProcessingInterval = 0; OnStatusMessage(MessageLevel.Info, $"Initialising OPC for device {Name}"); base.Initialize(); // If more data is added to the connection string the it will have to be parsed here (Look at ModbusPoller.cs for example line 456: https://github.com/GridProtectionAlliance/gsf/blob/master/Source/Libraries/Adapters/ModbusAdapters/ModbusPoller.cs) // Statistics StatisticsEngine.Register(this, "OPCUA", "OPC"); OutputMeasurements = ParseOutputMeasurements(DataSource, false, $"FILTER ActiveMeasurements WHERE Device = '{Name}'"); DataTable measurements = DataSource.Tables["ActiveMeasurements"]; items = OutputMeasurements.ToDictionary(measurement => { DataRow[] records = measurements.Select($"ID = '{measurement.Key}'"); var reference = records[0]["SignalReference"].ToNonNullString(); OnStatusMessage(MessageLevel.Info, $"Linking OPC item {reference} with tag {measurement.TagName}"); return(reference); }); // OPC Init ApplicationInstance application = new ApplicationInstance { ApplicationName = "OPC UA Client", ApplicationType = Opc.Ua.ApplicationType.Client, ConfigSectionName = "Opc.Ua.Client" }; ApplicationConfiguration config = application.LoadApplicationConfiguration(false).GetAwaiter().GetResult(); bool haveAppCertificate = application.CheckApplicationInstanceCertificate(false, 0).GetAwaiter().GetResult(); if (!haveAppCertificate) { throw new Exception("Application instance certificate invalid!"); } if (haveAppCertificate) { config.ApplicationUri = Utils.GetApplicationUriFromCertificate(config.SecurityConfiguration.ApplicationCertificate.Certificate); if (config.SecurityConfiguration.AutoAcceptUntrustedCertificates) { autoAccept = true; } config.CertificateValidator.CertificateValidation += new CertificateValidationEventHandler(CertificateValidator_CertificateValidation); } else { OnStatusMessage(MessageLevel.Info, $"Missing application certificate, using unsecure connection."); } m_configuration = config; OnStatusMessage(MessageLevel.Info, $"OPC Initialised ({ConnectionString})"); }