Пример #1
0
        /// <summary>
        /// Runs a version A simulation.
        /// </summary>
        /// <returns>A <see cref="Task"/> representing any asynchronous operation.</returns>
        private static async Task RunVersionA()
        {
            Console.WriteLine("Starting application...");
            var applicationMetrics = new List <VersionAPayload.KuraMetric>(VersionAMetrics);
            var application        = new VersionA.SparkplugApplication(applicationMetrics);
            var applicationOptions = new SparkplugApplicationOptions("localhost", 1883, "application1", "user", "password", false, "scada1", TimeSpan.FromSeconds(30), true, null, null, CancellationTokenSource.Token);
            await application.Start(applicationOptions);

            Console.WriteLine("Application started...");

            Console.WriteLine("Starting node...");
            var nodeMetrics = new List <VersionAPayload.KuraMetric>(VersionAMetrics);
            var node        = new VersionA.SparkplugNode(nodeMetrics);
            var nodeOptions = new SparkplugNodeOptions("localhost", 1883, "node 1", "user", "password", false, "scada1", "group1", "node1", TimeSpan.FromSeconds(30), null, null, CancellationTokenSource.Token);
            await node.Start(nodeOptions);

            Console.WriteLine("Node started...");

            Console.WriteLine("Starting device...");
            var deviceMetrics = new List <VersionAPayload.KuraMetric>(VersionAMetrics);
            var device        = new VersionA.SparkplugDevice(deviceMetrics);
            var deviceOptions = new SparkplugDeviceOptions("localhost", 1883, "device 1", "user", "password", false, "scada1", "group1", "node1", "device1", TimeSpan.FromSeconds(30), null, null, CancellationTokenSource.Token);
            await device.Start(deviceOptions);

            Console.WriteLine("Device started...");
        }
        public async Task T01_Node_VersionB_ConnectBirth()
        {
            var userName            = "******";
            var password            = "******";
            var clientIdentifier    = "client1";
            var groupIdentifier     = "group1";
            var scadaHostIdentifier = "scada1";
            var edgeNodeIdentifier  = "node1";
            var nodeOptions         = new SparkplugNodeOptions(MqttServerUnderTest.ServerAddress, MqttServerUnderTest.ServerPort, clientIdentifier, userName,
                                                               password, false, scadaHostIdentifier, groupIdentifier, edgeNodeIdentifier, TimeSpan.FromSeconds(30), null, null,
                                                               this.cts.Token);

            nodeKnownMetrics = GetNodeTestMetrics();
            nodeMetrics      = GetNodeTestMetrics();
            nodeUnderTest    = new SparkplugNode(nodeKnownMetrics);

            await nodeUnderTest.Start(nodeOptions);

            Assert.IsTrue(nodeUnderTest.IsConnected);
        }
Пример #3
0
    /// <summary>
    /// Starts the Sparkplug node.
    /// </summary>
    /// <param name="nodeOptions">The node options.</param>
    /// <exception cref="ArgumentNullException">The options are null.</exception>
    /// <returns>A <see cref="Task"/> representing any asynchronous operation.</returns>
    public async Task Start(SparkplugNodeOptions nodeOptions)
    {
        // Storing the options.
        this.options = nodeOptions;

        if (this.options is null)
        {
            throw new ArgumentNullException(nameof(this.options), "The options aren't set properly.");
        }

        // Add handlers.
        this.AddDisconnectedHandler();
        this.AddMessageReceivedHandler();

        // Connect, subscribe to incoming messages and send a state message.
        await this.ConnectInternal();

        await this.SubscribeInternal();

        await this.PublishInternal();
    }