Quickstart
Get a Sparkplug Host Application or Edge Node running in minutes using HiveMQtt.Sparkplug.
Install
dotnet add package HiveMQtt.Sparkplug
Required Namespaces
Host Application
using HiveMQtt.Client.Options;
using HiveMQtt.Sparkplug.HostApplication;
Edge Node
using HiveMQtt.Client.Options;
using HiveMQtt.Sparkplug.EdgeNode;
using HiveMQtt.Sparkplug.Payload;
Host Application Example
var clientOptions = new HiveMQClientOptionsBuilder()
.WithBroker("localhost")
.WithPort(1883)
.WithClientId("my-host")
.Build();
var sparkplugOptions = new SparkplugHostApplicationOptions
{
SparkplugTopicFilter = "spBv1.0/#",
UseStateMessages = false
};
var host = new SparkplugHostApplication(clientOptions, sparkplugOptions);
host.NodeBirthReceived += (_, e) => Console.WriteLine($"Node birth: {e.Topic.GroupId}/{e.Topic.EdgeNodeId}");
host.DeviceBirthReceived += (_, e) => Console.WriteLine($"Device birth: {e.Topic.DeviceId}");
await host.StartAsync();
await host.PublishRebirthCommandAsync("myGroup", "myNode");
Edge Node Example
var clientOptions = new HiveMQClientOptionsBuilder()
.WithBroker("localhost")
.WithPort(1883)
.WithClientId("my-edge-node")
.Build();
var sparkplugOptions = new SparkplugEdgeNodeOptions
{
GroupId = "myGroup",
EdgeNodeId = "myNode"
};
var edgeNode = new SparkplugEdgeNode(clientOptions, sparkplugOptions);
edgeNode.NodeCommandReceived += (_, e) => Console.WriteLine($"NCMD: {e.Payload.Metrics.Count} metrics");
await edgeNode.StartAsync();
var metrics = new[] { SparkplugMetricBuilder.Create("temperature").WithFloatValue(22.5).Build() };
await edgeNode.PublishNodeDataAsync(metrics);