HEXFELLOW Zenoh Communication Utilities
Project description
HEXFELLOW ZENOH UTILITIES
📖 Overview
What is hex_util_zenoh
hex_util_zenoh is a lightweight Python wrapper around Eclipse Zenoh, providing a simple pub/sub communication node API. It is part of the HEXFELLOW ecosystem and offers an intuitive interface for Zenoh-based inter-process and inter-machine communication.
| Module | Primary Purpose | Key Components |
|---|---|---|
| hex_zenoh_node | Simple pub/sub node wrapping Zenoh sessions | HexZenohNode |
What problem it solves
- Simplified Zenoh API: Wraps the Eclipse Zenoh Python bindings behind a minimal, ROS-like node interface (
create_pub,create_sub,pub). - Easy publisher/subscriber management: Automatically tracks and reuses publishers per topic. Subscribers automatically unwrap
ZBytespayloads into plainbytesfor user callbacks. - Thread-aware: Designed to be used safely across threads with clear start/close lifecycle.
Target users
- Robotics engineers who need lightweight, decentralised pub/sub communication.
- Developers using Eclipse Zenoh who want a simpler, more Pythonic API.
- Anyone building distributed systems in the HEXFELLOW ecosystem.
Project structure
hex_util_zenoh/
├── hex_util_zenoh/
│ ├── __init__.py # Public exports (HexZenohNode)
│ └── hex_zenoh_node.py # HexZenohNode class
├── examples/
│ ├── talker.py # TalkerNode example (ROS 2 talker style)
│ └── listener.py # ListenerNode example (ROS 2 listener style)
├── docs/
│ └── api.md # API reference
├── pyproject.toml # Project metadata & build configuration
└── venv.sh # Virtual environment setup script
📦 Installation
Requirements
- Python ≥ 3.8
- OS: Linux (Zenoh runs on all major platforms; tested on Linux)
- Dependencies:
eclipse-zenoh ≥ 1.0.0
Install from PyPI
pip install hex_util_zenoh
Install from Source
We use uv to manage the Python environment. Please install it first.
- Clone and install in editable mode:
git clone https://github.com/hexfellow/hex_util_zenoh.git
cd hex_util_zenoh
./venv.sh
- Activate before using:
source .venv/bin/activate
⚡ Quick Start
from hex_util_zenoh import HexZenohNode
node = HexZenohNode()
node.start()
# Create a publisher and subscriber
node.create_pub("chatter")
def on_message(data: bytes):
print(f"Received: {data.decode()}")
node.create_sub("chatter", on_message)
# Publish a message
node.pub("chatter", b"Hello, Zenoh!")
# Clean up
node.close()
Running the examples
Open two terminals. In the first:
python examples/talker.py
In the second:
python examples/listener.py
📑 Documentation
- API Reference — Detailed documentation of the
HexZenohNodeclass.
📄 License
Apache License 2.0. See LICENSE.
👥 Authors & Maintainers
| Role | Name | |
|---|---|---|
| Author | Dong Zhaorui | joray.dong@hexfellow.com |
| Maintainer | jecjune (Chen Zejun) | zejun.chen@hexfellow.com |
| Maintainer | Dong Zhaorui | joray.dong@hexfellow.com |
🌟 Star History
👥 Contributors
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file hex_util_zenoh-0.0.1a1.tar.gz.
File metadata
- Download URL: hex_util_zenoh-0.0.1a1.tar.gz
- Upload date:
- Size: 9.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4b41910b26719268c7a86cf3f172987ba0a98f5f7f22c4712fc515c30e736283
|
|
| MD5 |
a6079528ad512ed4885c637e349c4eb7
|
|
| BLAKE2b-256 |
0bc5ac5db648be53f43e27d7d7186f2d95d40144cccd4629e74161d51aba0a5b
|
File details
Details for the file hex_util_zenoh-0.0.1a1-py3-none-any.whl.
File metadata
- Download URL: hex_util_zenoh-0.0.1a1-py3-none-any.whl
- Upload date:
- Size: 8.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9bfa7d6110d9251cc856544f25ccfb5c946444288408e42786a3a144d67d335c
|
|
| MD5 |
ec28c8f1ed4cde68d2654a0ceee95c2f
|
|
| BLAKE2b-256 |
2b99c29ab0cd0d3559a78500b04ba3274eabd1b4d4a93d4b811befec9f2a5465
|