Changelog¶
All notable changes for pysparkplug will be documented in this file.
This project adheres to Semantic Versioning and Keep a Changelog.
0.6.1 (2025-05-10)¶
Fixed¶
Resolved
Client’s_on_connectmethod, which iterated through its_subscriptionsdict, which could be edited by another thread calling itsun/subscribemethod. See Issue #20.
0.6.0 (2025-02-16)¶
Added¶
Support for
MetaDataattribute ofMetric’s, enabling multi-part uploads of bytes arrays or file types.
0.5.0 (2025-01-09)¶
Added¶
Support for array datatypes, i.e. INT8_ARRAY, INT16_ARRAY, INT32_ARRAY, INT64_ARRAY, UINT8_ARRAY, UINT16_ARRAY, UINT32_ARRAY, UINT64_ARRAY, FLOAT_ARRAY, DOUBLE_ARRAY, STRING_ARRAY, BOOLEAN_ARRAY, and DATETIME_ARRAY.
Changed¶
Payload
metricsattribute is now type annotated and implemented as atuple.DATETIMEdatatypes are no longer all treated as UTC, instead properly converting them to the UTC timezone. Naive datetime objects are thus treated as the local timezone.Unsupported datatypes now raise a
NotImplementedErrorwhen attempting to encode/decode them instead of aValueError.
0.4.0 (2024-10-24)¶
Added¶
Pysparkplug now supports Python 3.13
Fixed¶
EdgeNode.disconnectnow correctly sends an NDEATH payload.
Deprecated¶
Pysparkplug no longer supports Python 3.8, which has reached its end of life.
0.3.2 (2024-05-06)¶
Fixed¶
Fixed topic for DDATA payloads resulting from the
EdgeNode.update_devicemethod.
0.3.1 (2024-02-13)¶
Changed¶
Pysparkplug is not compatible with the new 2.0 releasee of Paho, the underlying Python MQTT client.
0.3.0 (2024-01-13)¶
Added¶
Pysparkplug now supports Python 3.12
Deprecated¶
Pysparkplug no longer supports Python 3.7, which has reached its end of life.
0.2.0 (2023-08-23)¶
Added¶
SINGLE_LEVEL_WILDCARDandMULTI_LEVEL_WILDCARDwildcards for subscribing to multiple MQTT topics, conveniently typed to pass type checking
Changed¶
Refactored how dependencies are entered into the package’s metadata, using
hatch-requirements-txtreferencingrequirements/requirements.txt
Removed¶
Removed
Topic.to_string(), since users should just usestr(topic).
Fixed¶
Explicitly making
MetricValueavailable from the top-level package, resolving any type annotation issues.Fixed bug with implementation of
StrEnumthat resulted in enums not converting correctly to string. This resulted in topics not rendering to string correctly, since themessage_typeattribute wasMessageType, an instance ofStrEnum.Fixed bug with topic component validation, which was using the wrong wildcard constants
"#*"instead of the correct"#+".
0.1.0 (2023-08-13)¶
Added¶
Clientlow-level MQTT clientClientOptionsclass of optional settings for an MQTT clientConnackCodeMQTT Connection Acknowledgement codesDBirthclass representing a DBirth payloadDCmdclass representing a DCmd payloadDDataclass representing a DData payloadDDeathclass representing a DDeath payloadDataTypeenumeration of Sparkplug B datatypesDeviceclass representing a Device in Sparkplug BEdgeNodeclass representing an EdgeNode in Sparkplug BErrorCodeMQTT error codesMQTTErrorError from MQTT clientMQTTProtocolMQTT protocol enumMessageclass representing a Sparkplug B messageMessageTypeSparkplug B message type enumMetricclass representing a Sparkplug B metricMetricValuetype alias for the Python type of the value of a Sparkplug B metricNBirthclass representing a NBirth payloadNCmdclass representing a NCmd payloadNDataclass representing a NData payloadNDeathclass representing a NDeath payloadQoSMQTT quality of service enumStateclass representing a State payloadTLSConfigTLS configuration classTopicclass representing a Sparkplug B topicTransportMQTT transort enumWSConfigWebsockets configuration classget_current_timestampreturns current time in a Sparkplug B compliant format