Skip to content

Latest commit

History

History
337 lines (256 loc) · 9.44 KB

File metadata and controls

337 lines (256 loc) · 9.44 KB

Basic usage

Version A Sparkplug messages

Using applications:

privatereadonlyList<KuraMetric>VersionAMetrics=new(){new(){Name="Test",Type=DataType.Double,DoubleValue=1.20},new(){Name="Test2",Type=DataType.Bool,BoolValue=true}};varapplicationMetrics=newList<KuraMetric>(VersionAMetrics);varapplication=newVersionA.SparkplugApplication(applicationMetrics,Log.Logger);varapplicationOptions=newSparkplugApplicationOptions("localhost",1883,"application1","user","password",false,"scada1",TimeSpan.FromSeconds(30),true,null,null,newCancellationToken());// Start an application.awaitapplication.Start(applicationOptions);// Handle the application's disconnected event.application.OnDisconnected+=OnApplicationDisconnected;// Handle the application's node data received event.application.OnNodeDataReceived+=OnVersionANodeDataReceived;// Handle the application's device data received event.application.OnDeviceDataReceived+=OnVersionADeviceDataReceived;// Publish node commands.awaitapplication.PublishNodeCommand(applicationMetrics,"group1","edge1");// Publish device commands.awaitapplication.PublishDeviceCommand(applicationMetrics,"group1","edge1","device1");// Get the known metrics from an application.varcurrentlyKnownMetrics=application.KnownMetrics;// Get the device states from an application.varcurrentDeviceStates=application.DeviceStates;// Get the node states from an application.varcurrentNodeStates=application.NodeStates;// Check whether an application is connected.varisApplicationConnected=application.IsConnected;privatevoidOnApplicationDisconnected(){// Do something.}privatestaticvoidOnVersionANodeDataReceived(KuraMetricmetric){// Do something.}privatestaticvoidOnVersionADeviceDataReceived(KuraMetricmetric){// Do something.}// Stopping an application.awaitapplication.Stop();

Using nodes:

privatereadonlyList<KuraMetric>VersionAMetrics=new(){new(){Name="Test",Type=DataType.Double,DoubleValue=1.20},new(){Name="Test2",Type=DataType.Bool,BoolValue=true}};varnodeMetrics=newList<KuraMetric>(VersionAMetrics);varnode=newVersionA.SparkplugNode(nodeMetrics,Log.Logger);varnodeOptions=newSparkplugNodeOptions("localhost",1883,"node 1","user","password",false,"scada1","group1","node1",TimeSpan.FromSeconds(30),null,null,newCancellationToken());// Start a node.awaitnode.Start(nodeOptions);// Publish node metrics.awaitnode.PublishMetrics(nodeMetrics);// Get the known node metrics from a node.varcurrentlyKnownMetrics=node.KnownMetrics;// Check whether a node is connected.varisApplicationConnected=node.IsConnected;// Handle the node's disconnected event.node.OnDisconnected+=OnVersionANodeDisconnected;privatevoidOnVersionANodeDisconnected(){// Do something.}// Handle the node's node command received event.node.NodeCommandReceived+=OnVersionANodeNodeCommandReceived;privatevoidOnVersionANodeNodeCommandReceived(Metricmetric){// Do something.}// Handles the node's status message received event.node.StatusMessageReceived+=OnVersionANodeStatusMessageReceived;privatevoidOnVersionANodeStatusMessageReceived(stringstatus){// Do something.}// Get the known devices.varknownDevices=node.KnownDevices;// Handling devices.conststringDeviceIdentifier="device1";vardeviceMetrics=newList<KuraMetric>(VersionAMetrics);// Publish a device birth message.awaitnode.PublishDeviceBirthMessage(deviceMetrics,DeviceIdentifier);// Publish a device data message.awaitnode.PublishDeviceData(deviceMetrics,DeviceIdentifier);// Publish a device death message.awaitnode.PublishDeviceDeathMessage(DeviceIdentifier);// Handle the node's device birth received event.node.DeviceBirthReceived+=OnVersionANodeDeviceBirthReceived;privatevoidOnVersionANodeDeviceBirthReceived(KeyValuePair<string,List<KuraMetric>>deviceData){// Do something.}// Handle the node's device command received event.node.DeviceCommandReceived+=OnVersionANodeDeviceCommandReceived;privatevoidOnVersionANodeDeviceCommandReceived(KuraMetricmetric){// Do something.}// Handle the node's device death received event.node.DeviceDeathReceived+=OnVersionANodeDeviceDeathReceived;privatevoidOnVersionANodeDeviceDeathReceived(stringdeviceIdentifier){// Do something.}// Stopping a node.awaitnode.Stop();

Version B Sparkplug messages

Using applications:

privatereadonlyList<Metric>VersionBMetrics=new(){newMetric{Name="Test",DataType=(uint)DataType.Double,DoubleValue=1.20},newMetric{Name="Test2",DataType=(uint)DataType.Boolean,BooleanValue=true}};varapplicationMetrics=newList<Metric>(VersionBMetrics);varapplication=newVersionB.SparkplugApplication(applicationMetrics,Log.Logger);varapplicationOptions=newSparkplugApplicationOptions("localhost",1883,"application1","user","password",false,"scada1",TimeSpan.FromSeconds(30),true,null,null,newCancellationToken());// Start an application.awaitapplication.Start(applicationOptions);// Handle the application's disconnected event.application.OnDisconnected+=OnApplicationDisconnected;// Handle the application's node data received event.application.OnNodeDataReceived+=OnVersionBNodeDataReceived;// Handle the application's device data received event.application.OnDeviceDataReceived+=OnVersionBDeviceDataReceived;// Publish node commands.awaitapplication.PublishNodeCommand(applicationMetrics,"group1","edge1");// Publish device commands.awaitapplication.PublishDeviceCommand(applicationMetrics,"group1","edge1","device1");// Get the known metrics from an application.varcurrentlyKnownMetrics=application.KnownMetrics;// Get the device states from an application.varcurrentDeviceStates=application.DeviceStates;// Get the node states from an application.varcurrentNodeStates=application.NodeStates;// Check whether an application is connected.varisApplicationConnected=application.IsConnected;privatevoidOnApplicationDisconnected(){// Do something.}privatestaticvoidOnVersionBNodeDataReceived(Metricmetric){// Do something.}privatestaticvoidOnVersionBDeviceDataReceived(Metricmetric){// Do something.}// Stopping an application.awaitapplication.Stop();

Using nodes:

privatereadonlyList<Metric>VersionBMetrics=new(){new(){Name="Test",Type=DataType.Double,DoubleValue=1.20},new(){Name="Test2",Type=DataType.Bool,BoolValue=true}};varnodeMetrics=newList<Metric>(VersionBMetrics);varnode=newVersionB.SparkplugNode(nodeMetrics,Log.Logger);varnodeOptions=newSparkplugNodeOptions("localhost",1883,"node 1","user","password",false,"scada1","group1","node1",TimeSpan.FromSeconds(30),null,null,newCancellationToken());// Start a node.awaitnode.Start(nodeOptions);// Publish node metrics.awaitnode.PublishMetrics(nodeMetrics);// Get the known node metrics from a node.varcurrentlyKnownMetrics=node.KnownMetrics;// Check whether a node is connected.varisApplicationConnected=node.IsConnected;// Handle the node's disconnected event.node.OnDisconnected+=OnVersionBNodeDisconnected;privatevoidOnVersionBNodeDisconnected(){// Do something.}// Handle the node's node command received event.node.NodeCommandReceived+=OnVersionBNodeNodeCommandReceived;privatevoidOnVersionBNodeNodeCommandReceived(Metricmetric){// Do something.}// Handles the node's status message received event.node.StatusMessageReceived+=OnVersionBNodeStatusMessageReceived;privatevoidOnVersionBNodeStatusMessageReceived(stringstatus){// Do something.}// Get the known devices.varknownDevices=node.KnownDevices;// Handling devices.conststringDeviceIdentifier="device1";vardeviceMetrics=newList<Metric>(VersionBMetrics);// Publish a device birth message.awaitnode.PublishDeviceBirthMessage(deviceMetrics,DeviceIdentifier);// Publish a device data message.awaitnode.PublishDeviceData(deviceMetrics,DeviceIdentifier);// Publish a device death message.awaitnode.PublishDeviceDeathMessage(DeviceIdentifier);// Handle the node's device birth received event.node.DeviceBirthReceived+=OnVersionBNodeDeviceBirthReceived;privatevoidOnVersionBNodeDeviceBirthReceived(KeyValuePair<string,List<Metric>>deviceData){// Do something.}// Handle the node's device command received event.node.DeviceCommandReceived+=OnVersionBNodeDeviceCommandReceived;privatevoidOnVersionBNodeDeviceCommandReceived(Metricmetric){// Do something.}// Handle the node's device death received event.node.DeviceDeathReceived+=OnVersionBNodeDeviceDeathReceived;privatevoidOnVersionBNodeDeviceDeathReceived(stringdeviceIdentifier){// Do something.}// Stopping a node.awaitnode.Stop();

Connection via WebSocket to MQTT server

As discussed in #52, I don't want to stop using 1883 as default port. Therefore, when using WebSockets, you need to specify the complete url (e.g. mqtt.eclipseprojects.io:443/mqtt or maybe test.something.com:443) as option for BrokerAddress. Port is ignored in this case.