Skip to main content

Python utilities for Tahu & Sparkplug B.

Project description

TahUtils

A small wrapper package for using Tahu for Sparkplug B in Python. Comes with an unmodified (barring import structure) Tahu included, hence the use of the Eclipse license.

Examples

See the examples directory in the project repository.

Current Support

  • Generating Sparkplug B topics
  • Generating birth, death, and data payloads for nodes and devices
  • Managing aliases
  • Using enums for metric names
  • Using dataclasses to manage metric names and metric states
  • Parsing sparkplug b messages

Changes to the tahu library

Updating compiled Protobuf files

Assuming no major refactoring to the tahu library, updating the included tahu consists of the following steps:

  1. Download the latest release from the repository: https://github.com/eclipse/tahu/tags

  2. Extract the source code.

  3. Regenerate the sparkplug_b_pb2.py file per the instructions in tahu-<version>/python/core/README.md. Use tahu-<version>/python/core as your working directory when executing the command, and you'll need the protobuf compiler.

  4. Copy the contents of the tahu-<version>/python/core directory to the tahutils/tahu directory.

  5. Overwrite the tahutils/tahu/__init__.py file with the appropriate imports, typically:

    from . import sparkplug_b_pb2
    from . import array_packer
    from . import sparkplug_b
    
  6. Modify the imports in tahutils/tahu/sparkplug_b.py to include the tahu package name:

    import tahutils.tahu.sparkplug_b_pb2 as sparkplug_b_pb2
    import time
    from tahutils.tahu.sparkplug_b_pb2 import Payload
    from tahutils.tahu.array_packer import *
    

Fixing metric timestamps

As of this version, there is a bug in the tahu library relating to metric timestamps. See this pull request for more details.

This is patched by updating sparkplug_b.py.

def addMetric(container, name, alias, type, value, timestamp=None):
    if timestamp is None:
        timestamp = int(round(time.time() * 1000))
	...

def addNullMetric(container, name, alias, type, timestamp=None):
    if timestamp is None:
        timestamp = int(round(time.time() * 1000))
    metric = container.metrics.add()
    if name is not None:
        metric.name = name
    if alias is not None:
        metric.alias = alias
    metric.timestamp = timestamp
    metric.is_null = True
	...

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tahutils-0.1.10.tar.gz (18.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tahutils-0.1.10-py3-none-any.whl (20.5 kB view details)

Uploaded Python 3

File details

Details for the file tahutils-0.1.10.tar.gz.

File metadata

  • Download URL: tahutils-0.1.10.tar.gz
  • Upload date:
  • Size: 18.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.12.1 Linux/6.8.0-1014-azure

File hashes

Hashes for tahutils-0.1.10.tar.gz
Algorithm Hash digest
SHA256 5596386b6c8f34319b412ef1c5e6274ab0b78fe4a806544b633b19dfe3ba38eb
MD5 fa2ee3a5f1775a2015d3ecc396b2f2f1
BLAKE2b-256 e8d045830352523eff14bf5b194a17a0cbc390c096b367aa0060419d886cf87b

See more details on using hashes here.

File details

Details for the file tahutils-0.1.10-py3-none-any.whl.

File metadata

  • Download URL: tahutils-0.1.10-py3-none-any.whl
  • Upload date:
  • Size: 20.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.12.1 Linux/6.8.0-1014-azure

File hashes

Hashes for tahutils-0.1.10-py3-none-any.whl
Algorithm Hash digest
SHA256 c818bbbb729d8f5541725df847491587f568acd73d66aecc43c44e674270c4fd
MD5 2ff02d8f08ff51edabed8c123c554a8a
BLAKE2b-256 7d974fdf684941c52f0010d1f89c518490b5ba8fe4e7298706eb5fc8b1f5c24e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page