Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/sepppenner/sparkplugnet
SparkplugNet is a library to use the Sparkplug industrial IoT (IIoT) standard in .Net. It uses MQTTnet in the background.
https://github.com/sepppenner/sparkplugnet
mqtt mqttnet sparkplug sparkplug-b sparkplugnet
Last synced: 4 days ago
JSON representation
SparkplugNet is a library to use the Sparkplug industrial IoT (IIoT) standard in .Net. It uses MQTTnet in the background.
- Host: GitHub
- URL: https://github.com/sepppenner/sparkplugnet
- Owner: SeppPenner
- License: mit
- Created: 2021-01-30T18:56:33.000Z (about 4 years ago)
- Default Branch: master
- Last Pushed: 2025-01-05T22:01:11.000Z (27 days ago)
- Last Synced: 2025-01-20T19:11:18.415Z (12 days ago)
- Topics: mqtt, mqttnet, sparkplug, sparkplug-b, sparkplugnet
- Language: C#
- Homepage:
- Size: 5.39 MB
- Stars: 85
- Watchers: 5
- Forks: 42
- Open Issues: 28
-
Metadata Files:
- Readme: README.md
- Changelog: Changelog.md
- License: License.txt
Awesome Lists containing this project
README
SparkplugNet
====================================SparkplugNet is a library to use the Sparkplug industrial IoT (IIoT) standard in .Net. It uses [MQTTnet](https://github.com/chkr1011/MQTTnet) in the background.
[![Build status](https://ci.appveyor.com/api/projects/status/w6pu8fcav4n7651t?svg=true)](https://ci.appveyor.com/project/SeppPenner/sparkplugnet)
[![GitHub issues](https://img.shields.io/github/issues/SeppPenner/SparkplugNet.svg)](https://github.com/SeppPenner/SparkplugNet/issues)
[![GitHub forks](https://img.shields.io/github/forks/SeppPenner/SparkplugNet.svg)](https://github.com/SeppPenner/SparkplugNet/network)
[![GitHub stars](https://img.shields.io/github/stars/SeppPenner/SparkplugNet.svg)](https://github.com/SeppPenner/SparkplugNet/stargazers)
[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://raw.githubusercontent.com/SeppPenner/SparkplugNet/master/License.txt)
[![Nuget](https://img.shields.io/badge/SparkplugNet-Nuget-brightgreen.svg)](https://www.nuget.org/packages/SparkplugNet/)
[![NuGet Downloads](https://img.shields.io/nuget/dt/SparkplugNet.svg)](https://www.nuget.org/packages/SparkplugNet/)
[![Known Vulnerabilities](https://snyk.io/test/github/SeppPenner/SparkplugNet/badge.svg)](https://snyk.io/test/github/SeppPenner/SparkplugNet)
[![Gitter](https://img.shields.io/matrix/SparkplugNet_community%3Agitter.im?server_fqdn=matrix.org)](https://matrix.to/#/#SparkplugNet_community:gitter.im)
[![Blogger](https://img.shields.io/badge/Follow_me_on-blogger-orange)](https://franzhuber23.blogspot.de/)
[![Patreon](https://img.shields.io/badge/Patreon-F96854?logo=patreon&logoColor=white)](https://patreon.com/SeppPennerOpenSourceDevelopment)
[![PayPal](https://img.shields.io/badge/PayPal-00457C?logo=paypal&logoColor=white)](https://paypal.me/th070795)[![All Contributors](https://img.shields.io/badge/all_contributors-10-orange.svg?style=flat-square)](#contributors-)
## Available for
* Net 8.0
* Net 9.0## Net Core and Net Framework latest and LTS versions
* https://dotnet.microsoft.com/download/dotnet## Structure
Sparkplug distinguishes between 5 different types of logical parts:|Part|Description|
|-|-|
|Primary application|The main application that needs to be always available to work with the data and store metrics.|
|Applications|Other applications that work with the sent data and metrics.|
|EoN nodes (Later only called nodes)|Logical devices that bundle data from end-of-network devices and publish their data.|
|MQTT enabled devices|Sensors that work as a "hybrid" version of a node and a device and publish metrics and data.|
|Non MQTT-enabled devices|Sensors that push data to nodes where the nodes publish their data to MQTT on their behalf.|## Basic usage
For basic usage, see the [How to use file](./HowToUse.md) or the [example project](https://github.com/SeppPenner/SparkplugNet/blob/master/src/SparkplugNet.Examples/Program.cs).## Requirements
* MQTT broker that implements 100% of the MQTT 3.1.1 specification
* MQTT broker with QoS 0 and 1 support
* MQTT broker with retained messages support
* MQTT broker with last will and testament support
* MQTT broker with a flexible security system## Recommended brokers
* [MQTTnet.Server](https://github.com/chkr1011/MQTTnet.Server) for simple MQTT testing.
* [HiveMQ CE](https://github.com/hivemq/hivemq-community-edition) with the [Eclipse™ Sparkplug™ Technology Compatibility Kit](https://github.com/eclipse-sparkplug/sparkplug/blob/develop/tck/UserGuide.adoc) for Sparkplug testing, following also issue https://github.com/SeppPenner/SparkplugNet/issues/39 for more details.## Recommended clients
* [MQTT.fx](http://www.mqttfx.jensd.de/) has a Sparkplug data decoder. The binaries for version 1.7.1 can also be taken from https://github.com/SeppPenner/mqttfx171-backup (The software is now under development by a company and requires a license for version 1.7.1+).
* [mqttMultimeter](https://github.com/chkr1011/mqttMultimeter) for general MQTT debugging. I guess, a Sparkplug decoder could be added once this library here is up-to-date.
* [MQTTExplorer](https://mqtt-explorer.com/) for general MQTT debugging.## Supported Sparkplug standards
* Version 1.3.0 and above: Sparkplug, version 3.0, spAv1.0 (Marked as obsolete) and spBv1.0.
* Version 1.2.0 and below: Sparkplug, version 2.2, spAv1.0 and spBv1.0.## Special notes
* Version 1.3.4 renames all events from `SomethingAsync` to `Something`. (BREAKING)
* Version 1.1.0 introduces the async event pattern and deprecates the "old, synchronous" events, Version 1.2.0+ will remove the old events completely. (BREAKING)
* You can enable the global setting `SparkplugGlobals.UseStrictIdentifierChecking` which prevents users from using the following chars in identifiers:```log
.,\@#$%^&*()[]{}|!`~:;'"<>?
```## Further resources
* https://www.eclipse.org/tahu/spec/Sparkplug%20Topic%20Namespace%20and%20State%20ManagementV2.2-with%20appendix%20B%20format%20-%20Eclipse.pdf
* https://documents.opto22.com/2357_Industrial_Strength_MQTT_Sparkplug_B.pdf
* https://github.com/eclipse/tahu
* https://github.com/eclipse/kura/blob/develop/kura/org.eclipse.kura.core.cloud/src/main/protobuf/kurapayload.proto
* https://github.com/eclipse/tahu/blob/master/sparkplug_b/sparkplug_b_c_sharp.proto
* https://protogen.marcgravell.com/
* https://stackoverflow.com/questions/66199386/protobuf-net-how-to-use-the-any-data-type
* http://www.steves-internet-guide.com/spsparkplug-payloads-and-messages/Change history
--------------See the [Changelog](https://github.com/SeppPenner/SparkplugNet/blob/master/Changelog.md).
## Contributors ✨
Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):
HansM
💻 📖 💡 🚧 📆 ⚠️
insightdocs
⚠️
OffTravel
💻 ⚠️
cjmurph
💻 ⚠️
Bo Biene
💻 ⚠️
Tim Jöhnk
💻
Patrick.GK
💻 ⚠️ 🚇
Gerald Asp
⚠️ 💻
adityashahazilen
⚠️ 💻
shouidar
⚠️ 💻
This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!