{"id":23861067,"url":"https://github.com/ahlner/sparkplug-rs","last_synced_at":"2025-09-21T06:32:53.652Z","repository":{"id":40347395,"uuid":"469076068","full_name":"ahlner/sparkplug-rs","owner":"ahlner","description":"Sparkplug protobuf bindings for Rust","archived":false,"fork":false,"pushed_at":"2022-05-13T18:31:14.000Z","size":82,"stargazers_count":3,"open_issues_count":0,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-12-01T16:54:15.263Z","etag":null,"topics":["mqtt","protobuf","rust","sparkplug"],"latest_commit_sha":null,"homepage":"https://docs.rs/sparkplug-rs/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"epl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ahlner.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null}},"created_at":"2022-03-12T12:27:15.000Z","updated_at":"2023-07-25T14:55:20.000Z","dependencies_parsed_at":"2022-08-09T17:50:25.327Z","dependency_job_id":null,"html_url":"https://github.com/ahlner/sparkplug-rs","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ahlner%2Fsparkplug-rs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ahlner%2Fsparkplug-rs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ahlner%2Fsparkplug-rs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ahlner%2Fsparkplug-rs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ahlner","download_url":"https://codeload.github.com/ahlner/sparkplug-rs/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":232140261,"owners_count":18478225,"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","protobuf","rust","sparkplug"],"created_at":"2025-01-03T05:46:47.284Z","updated_at":"2025-09-21T06:32:48.603Z","avatar_url":"https://github.com/ahlner.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"sparkplug-rs\n![License](https://img.shields.io/crates/l/sparkplug-rs)\n[![Latest Version](https://img.shields.io/crates/v/sparkplug-rs.svg)](https://crates.io/crates/sparkplug-rs)\n[![Documentation](https://docs.rs/sparkplug-rs/badge.svg)](https://docs.rs/sparkplug-rs)\n[![Issues](https://img.shields.io/github/issues/ahlner/sparkplug-rs)](https://github.com/ahlner/sparkplug-rs/issues)\n[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fahlner%2Fsparkplug-rs.svg?type=shield)](https://app.fossa.com/projects/git%2Bgithub.com%2Fahlner%2Fsparkplug-rs?ref=badge_shield)\n\nRust protobuf payload for Sparkplug\u0026trade;.\nThe structs are generated with the protobuf IDL of the [`Eclipse Tahu`] project. For more information\nlook at the homepage of the [`Eclipse Sparkplug project`].\n\n[`Eclipse Tahu`]: https://github.com/eclipse/tahu/blob/master/sparkplug_b/sparkplug_b.proto\n\n[`Eclipse Sparkplug project`]: https://sparkplug.eclipse.org\n\n## MQTT Topic Names\n\nThis crate provides a convenient way to handle MQTT topic names with [TopicName].\n\n[TopicName]: https://docs.rs/sparkplug-rs/latest/sparkplug_rs/enum.TopicName.html\n\n## JSON\n\nFor JSON serialization/deserialization of protobuf messages, instead of adding a dependency on `serde`,\nI recommend checking out the [`protobuf-json-mapping`](https://crates.io/crates/protobuf-json-mapping) crate.\nThis crate is specifically designed to work with protobuf messages and provides the JSON mapping functionality you likely need, while keeping dependencies minimal and aligned with\nthe protobuf ecosystem.\nThis approach is more lightweight since it avoids bringing in the full `serde` ecosystem when you only need protobuf-specific JSON handling.\n\n## Examples\n\n```rust\n# use std::str::FromStr;\n# use sparkplug_rs::{NodeMessageType, TopicName, TopicNamespace};\nlet node = TopicName::new_node_message(TopicNamespace::SPBV1_0,\n\"my_group\".to_string(),\nNodeMessageType::NBIRTH,\n\"nodeId\".to_string());\nassert_eq!(node.to_string(), \"spBv1.0/my_group/NBIRTH/nodeId\");\n\nlet topic: TopicName = TopicName::from_str(\"spBv1.0/my_group/NBIRTH/nodeId\").unwrap();\nassert_eq!(topic, node);\n```\n\nLicense: EPL-2.0\n\n## License\n\n[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fahlner%2Fsparkplug-rs.svg?type=large)](https://app.fossa.com/projects/git%2Bgithub.com%2Fahlner%2Fsparkplug-rs?ref=badge_large)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fahlner%2Fsparkplug-rs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fahlner%2Fsparkplug-rs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fahlner%2Fsparkplug-rs/lists"}