{"id":19310541,"url":"https://github.com/sepppenner/sparkplugnet","last_synced_at":"2025-04-05T08:07:18.595Z","repository":{"id":40605176,"uuid":"334488673","full_name":"SeppPenner/SparkplugNet","owner":"SeppPenner","description":"SparkplugNet is a library to use the Sparkplug industrial IoT (IIoT) standard in .Net. It uses MQTTnet in the background.","archived":false,"fork":false,"pushed_at":"2025-01-05T22:01:11.000Z","size":5657,"stargazers_count":87,"open_issues_count":29,"forks_count":44,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-03-29T07:07:25.837Z","etag":null,"topics":["mqtt","mqttnet","sparkplug","sparkplug-b","sparkplugnet"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SeppPenner.png","metadata":{"files":{"readme":"README.md","changelog":"Changelog.md","contributing":null,"funding":null,"license":"License.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-01-30T18:56:33.000Z","updated_at":"2025-02-26T22:39:39.000Z","dependencies_parsed_at":"2023-11-13T22:24:09.178Z","dependency_job_id":"ed1f35bc-7ddc-4c4c-b250-a33883ce8185","html_url":"https://github.com/SeppPenner/SparkplugNet","commit_stats":null,"previous_names":[],"tags_count":22,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SeppPenner%2FSparkplugNet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SeppPenner%2FSparkplugNet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SeppPenner%2FSparkplugNet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SeppPenner%2FSparkplugNet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SeppPenner","download_url":"https://codeload.github.com/SeppPenner/SparkplugNet/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247305934,"owners_count":20917208,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["mqtt","mqttnet","sparkplug","sparkplug-b","sparkplugnet"],"created_at":"2024-11-10T00:24:41.785Z","updated_at":"2025-04-05T08:07:18.576Z","avatar_url":"https://github.com/SeppPenner.png","language":"C#","funding_links":["https://patreon.com/SeppPennerOpenSourceDevelopment","https://paypal.me/th070795"],"categories":[],"sub_categories":[],"readme":"SparkplugNet\n====================================\n\nSparkplugNet is a library to use the Sparkplug industrial IoT (IIoT) standard in .Net. It uses [MQTTnet](https://github.com/chkr1011/MQTTnet) in the background.\n\n[![Build status](https://ci.appveyor.com/api/projects/status/w6pu8fcav4n7651t?svg=true)](https://ci.appveyor.com/project/SeppPenner/sparkplugnet)\n[![GitHub issues](https://img.shields.io/github/issues/SeppPenner/SparkplugNet.svg)](https://github.com/SeppPenner/SparkplugNet/issues)\n[![GitHub forks](https://img.shields.io/github/forks/SeppPenner/SparkplugNet.svg)](https://github.com/SeppPenner/SparkplugNet/network)\n[![GitHub stars](https://img.shields.io/github/stars/SeppPenner/SparkplugNet.svg)](https://github.com/SeppPenner/SparkplugNet/stargazers)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://raw.githubusercontent.com/SeppPenner/SparkplugNet/master/License.txt)\n[![Nuget](https://img.shields.io/badge/SparkplugNet-Nuget-brightgreen.svg)](https://www.nuget.org/packages/SparkplugNet/)\n[![NuGet Downloads](https://img.shields.io/nuget/dt/SparkplugNet.svg)](https://www.nuget.org/packages/SparkplugNet/)\n[![Known Vulnerabilities](https://snyk.io/test/github/SeppPenner/SparkplugNet/badge.svg)](https://snyk.io/test/github/SeppPenner/SparkplugNet)\n[![Gitter](https://img.shields.io/matrix/SparkplugNet_community%3Agitter.im?server_fqdn=matrix.org)](https://matrix.to/#/#SparkplugNet_community:gitter.im)\n[![Blogger](https://img.shields.io/badge/Follow_me_on-blogger-orange)](https://franzhuber23.blogspot.de/)\n[![Patreon](https://img.shields.io/badge/Patreon-F96854?logo=patreon\u0026logoColor=white)](https://patreon.com/SeppPennerOpenSourceDevelopment)\n[![PayPal](https://img.shields.io/badge/PayPal-00457C?logo=paypal\u0026logoColor=white)](https://paypal.me/th070795)\n\n\u003c!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section --\u003e\n[![All Contributors](https://img.shields.io/badge/all_contributors-10-orange.svg?style=flat-square)](#contributors-)\n\u003c!-- ALL-CONTRIBUTORS-BADGE:END --\u003e\n\n## Available for\n* Net 8.0\n* Net 9.0\n\n## Net Core and Net Framework latest and LTS versions\n* https://dotnet.microsoft.com/download/dotnet\n\n## Structure\nSparkplug distinguishes between 5 different types of logical parts:\n\n|Part|Description|\n|-|-|\n|Primary application|The main application that needs to be always available to work with the data and store metrics.|\n|Applications|Other applications that work with the sent data and metrics.|\n|EoN nodes (Later only called nodes)|Logical devices that bundle data from end-of-network devices and publish their data.|\n|MQTT enabled devices|Sensors that work as a \"hybrid\" version of a node and a device and publish metrics and data.|\n|Non MQTT-enabled devices|Sensors that push data to nodes where the nodes publish their data to MQTT on their behalf.|\n\n## Basic usage\nFor 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).\n\n## Requirements\n* MQTT broker that implements 100% of the MQTT 3.1.1 specification\n* MQTT broker with QoS 0 and 1 support\n* MQTT broker with retained messages support\n* MQTT broker with last will and testament support\n* MQTT broker with a flexible security system\n\n## Recommended brokers\n* [MQTTnet.Server](https://github.com/chkr1011/MQTTnet.Server) for simple MQTT testing.\n* [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.\n\n## Recommended clients\n* [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+).\n* [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.\n* [MQTTExplorer](https://mqtt-explorer.com/) for general MQTT debugging.\n\n## Supported Sparkplug standards\n* Version 1.3.0 and above: Sparkplug, version 3.0, spAv1.0 (Marked as obsolete) and spBv1.0.\n* Version 1.2.0 and below: Sparkplug, version 2.2, spAv1.0 and spBv1.0.\n\n## Special notes\n* Version 1.3.4 renames all events from `SomethingAsync` to `Something`. (BREAKING)\n* 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)\n* You can enable the global setting `SparkplugGlobals.UseStrictIdentifierChecking` which prevents users from using the following chars in identifiers:\n\n```log\n.,\\@#$%^\u0026*()[]{}|!`~:;'\"\u003c\u003e?\n```\n\n## Further resources\n* https://www.eclipse.org/tahu/spec/Sparkplug%20Topic%20Namespace%20and%20State%20ManagementV2.2-with%20appendix%20B%20format%20-%20Eclipse.pdf\n* https://documents.opto22.com/2357_Industrial_Strength_MQTT_Sparkplug_B.pdf\n* https://github.com/eclipse/tahu\n* https://github.com/eclipse/kura/blob/develop/kura/org.eclipse.kura.core.cloud/src/main/protobuf/kurapayload.proto\n* https://github.com/eclipse/tahu/blob/master/sparkplug_b/sparkplug_b_c_sharp.proto\n* https://protogen.marcgravell.com/\n* https://stackoverflow.com/questions/66199386/protobuf-net-how-to-use-the-any-data-type\n* http://www.steves-internet-guide.com/spsparkplug-payloads-and-messages/\n\nChange history\n--------------\n\nSee the [Changelog](https://github.com/SeppPenner/SparkplugNet/blob/master/Changelog.md).\n\n## Contributors ✨\n\nThanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --\u003e\n\u003c!-- prettier-ignore-start --\u003e\n\u003c!-- markdownlint-disable --\u003e\n\u003ctable\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://franzhuber23.blogspot.de/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/9639361?v=4?s=100\" width=\"100px;\" alt=\"HansM\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eHansM\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/SeppPenner/SparkplugNet/commits?author=SeppPenner\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/SeppPenner/SparkplugNet/commits?author=SeppPenner\" title=\"Documentation\"\u003e📖\u003c/a\u003e \u003ca href=\"#example-SeppPenner\" title=\"Examples\"\u003e💡\u003c/a\u003e \u003ca href=\"#maintenance-SeppPenner\" title=\"Maintenance\"\u003e🚧\u003c/a\u003e \u003ca href=\"#projectManagement-SeppPenner\" title=\"Project Management\"\u003e📆\u003c/a\u003e \u003ca href=\"https://github.com/SeppPenner/SparkplugNet/commits?author=SeppPenner\" title=\"Tests\"\u003e⚠️\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/insightdocs\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/23101485?v=4?s=100\" width=\"100px;\" alt=\"insightdocs\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003einsightdocs\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/SeppPenner/SparkplugNet/commits?author=insightdocs\" title=\"Tests\"\u003e⚠️\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/OffTravel\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/19183574?v=4?s=100\" width=\"100px;\" alt=\"OffTravel\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eOffTravel\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/SeppPenner/SparkplugNet/commits?author=OffTravel\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/SeppPenner/SparkplugNet/commits?author=OffTravel\" title=\"Tests\"\u003e⚠️\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/cjmurph\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/2868949?v=4?s=100\" width=\"100px;\" alt=\"cjmurph\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ecjmurph\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/SeppPenner/SparkplugNet/commits?author=cjmurph\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/SeppPenner/SparkplugNet/commits?author=cjmurph\" title=\"Tests\"\u003e⚠️\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/BoBiene\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/23037659?v=4?s=100\" width=\"100px;\" alt=\"Bo Biene\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eBo Biene\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/SeppPenner/SparkplugNet/commits?author=BoBiene\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/SeppPenner/SparkplugNet/commits?author=BoBiene\" title=\"Tests\"\u003e⚠️\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/TimJoehnk\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/93274944?v=4?s=100\" width=\"100px;\" alt=\"Tim Jöhnk\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eTim Jöhnk\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/SeppPenner/SparkplugNet/commits?author=TimJoehnk\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/Patrick2607\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/9799823?v=4?s=100\" width=\"100px;\" alt=\"Patrick.GK\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ePatrick.GK\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/SeppPenner/SparkplugNet/commits?author=Patrick2607\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/SeppPenner/SparkplugNet/commits?author=Patrick2607\" title=\"Tests\"\u003e⚠️\u003c/a\u003e \u003ca href=\"#infra-Patrick2607\" title=\"Infrastructure (Hosting, Build-Tools, etc)\"\u003e🚇\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/geraldasp\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/1334535?v=4?s=100\" width=\"100px;\" alt=\"Gerald Asp\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eGerald Asp\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/SeppPenner/SparkplugNet/commits?author=geraldasp\" title=\"Tests\"\u003e⚠️\u003c/a\u003e \u003ca href=\"https://github.com/SeppPenner/SparkplugNet/commits?author=geraldasp\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/adityashahazilen\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/132545158?v=4?s=100\" width=\"100px;\" alt=\"adityashahazilen\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eadityashahazilen\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/SeppPenner/SparkplugNet/commits?author=adityashahazilen\" title=\"Tests\"\u003e⚠️\u003c/a\u003e \u003ca href=\"https://github.com/SeppPenner/SparkplugNet/commits?author=adityashahazilen\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/shouidar\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/10144958?v=4?s=100\" width=\"100px;\" alt=\"shouidar\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eshouidar\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/SeppPenner/SparkplugNet/commits?author=shouidar\" title=\"Tests\"\u003e⚠️\u003c/a\u003e \u003ca href=\"https://github.com/SeppPenner/SparkplugNet/commits?author=shouidar\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\n\u003c!-- markdownlint-restore --\u003e\n\u003c!-- prettier-ignore-end --\u003e\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:END --\u003e\n\nThis project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsepppenner%2Fsparkplugnet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsepppenner%2Fsparkplugnet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsepppenner%2Fsparkplugnet/lists"}