Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
78 changes: 66 additions & 12 deletions .zenodo.json
Original file line number Diff line number Diff line change
@@ -1,21 +1,75 @@
{
"creators": [{"name": "devkyato", "affiliation": "MATA Company"}],
"contributors": [{"name": "Cursor Agent", "type": "Other"}],
"creators": [
{
"name": "@dev.mako (devkyato)",
"affiliation": "MATA Company"
}
],
"contributors": [
{
"name": "Cursor Agent",
"type": "Other"
}
],
"title": "OpenNet: typed ONP/1 messaging for ESP32, Raspberry Pi, and Python backends",
"description": "OpenNet is a dependency-free implementation of typed ONP/1 messaging for ESP32 devices, Raspberry Pi systems, and Python backends. It provides inspectable framing, bounded resource use, acknowledgement and retry support, and Arduino and Python implementations for direct reliable streams. Usage: install the Arduino library or Python package, connect a client and host over a trusted stream, then send typed application messages. Applications include classroom IoT systems, embedded telemetry links, Raspberry Pi gateways, and direct device-to-backend communication.",
"version": "0.2.1",
"keywords": ["opennet", "ONP/1", "IoT", "ESP32", "Raspberry Pi", "messaging", "protocol", "embedded", "Arduino", "Python"],
"description": "<h2>Overview</h2><p><strong>OpenNet</strong> is a dependency-free implementation of typed ONP/1 messaging for ESP32 devices, Raspberry Pi systems, and Python backends. It provides one inspectable frame format for direct communication over TCP, verified TLS, or another reliable ordered Arduino stream.</p><h2>Key capabilities</h2><ul><li>JSON, text, signed integers, finite doubles, booleans, null, and binary payloads across Arduino and Python.</li><li>Bounded payloads, queues, connections, duplicate suppression, retries with stable message IDs, CRC-32 corruption detection, and partial-write handling.</li><li>Optional topic authorization using a verified TLS peer certificate before a handler or acknowledgement.</li></ul><h2>Install</h2><pre><code>python -m pip install https://github.com/devkyato/OpenNet/releases/download/v0.2.2/opennet_protocol-0.2.2-py3-none-any.whl\nopennet --version</code></pre><p>Arduino IDE users can install the OpenNet-0.2.2.zip asset. Raspberry Pi or Linux service users can extract OpenNet-linux-0.2.2.tar.gz and run the installer shown in the documentation.</p><h2>Quick start</h2><pre><code>opennet serve --echo\nopennet send sensor/temperature 24.7 --type float</code></pre><h2>Applications</h2><ul><li>Direct ESP32-to-Raspberry Pi telemetry links.</li><li>Classroom demonstrations of typed embedded messaging.</li><li>Lightweight device-to-backend protocols over reliable streams.</li><li>Arduino and Python interoperability experiments.</li></ul><h2>Limitations/status</h2><p>Version 0.2.2 is alpha software. ONP/1 requires a reliable ordered stream and does not provide routing, discovery, durable queues, retained messages, or brokered fleet management. Acknowledgements mean validated transport acceptance, not successful application side effects. Verified TLS is required outside isolated trusted development networks.</p><h2>Documentation</h2><p>Read <a href=\"https://github.com/devkyato/OpenNet/blob/main/docs/getting-started.md\">Getting started</a>, the <a href=\"https://github.com/devkyato/OpenNet/blob/main/docs/protocol.md\">ONP/1 protocol specification</a>, and the <a href=\"https://github.com/devkyato/OpenNet/blob/main/docs/security.md\">security guide</a>.</p><h2>Related software</h2><ul><li><a href=\"https://github.com/devkyato/Datary\">Datary</a> for reproducible program and simulation evidence.</li><li><a href=\"https://github.com/devkyato/Relay\">Relay</a> for timing-risk source review.</li><li><a href=\"https://github.com/devkyato/Lowpack\">Lowpack</a> for local-first application-aware packing.</li></ul><h2>Citation</h2><p>@dev.mako (devkyato). (2026). <strong>OpenNet: typed ONP/1 messaging for ESP32, Raspberry Pi, and Python backends</strong> (Version 0.2.2). Zenodo. <a href=\"https://doi.org/10.5281/zenodo.21853309\">https://doi.org/10.5281/zenodo.21853309</a></p>",
"version": "0.2.2",
"keywords": [
"opennet",
"ONP/1",
"IoT",
"ESP32",
"Raspberry Pi",
"messaging",
"protocol",
"embedded",
"Arduino",
"Python"
],
"license": "mit",
"upload_type": "software",
"access_right": "open",
"language": "eng",
"related_identifiers": [
{"identifier": "https://github.com/devkyato/OpenNet", "relation": "isSupplementTo", "resource_type": "software"},
{"identifier": "https://github.com/devkyato/Datary", "relation": "references", "resource_type": "software"},
{"identifier": "https://github.com/devkyato/TapAuth", "relation": "references", "resource_type": "software"},
{"identifier": "https://github.com/devkyato/Lowpack", "relation": "references", "resource_type": "software"},
{"identifier": "https://github.com/devkyato/Relay", "relation": "references", "resource_type": "software"},
{"identifier": "https://github.com/devkyato/Custom-Arduino-Libraries", "relation": "references", "resource_type": "software"},
{"identifier": "https://github.com/devkyato/Arduino-Programs-Guide", "relation": "references", "resource_type": "software"}
{
"identifier": "https://github.com/devkyato/OpenNet",
"relation": "isSupplementTo",
"resource_type": "software"
},
{
"identifier": "10.5281/zenodo.21853309",
"relation": "isVersionOf",
"scheme": "doi"
},
{
"identifier": "https://github.com/devkyato/Datary",
"relation": "references",
"resource_type": "software"
},
{
"identifier": "https://github.com/devkyato/TapAuth",
"relation": "references",
"resource_type": "software"
},
{
"identifier": "https://github.com/devkyato/Lowpack",
"relation": "references",
"resource_type": "software"
},
{
"identifier": "https://github.com/devkyato/Relay",
"relation": "references",
"resource_type": "software"
},
{
"identifier": "https://github.com/devkyato/Custom-Arduino-Libraries",
"relation": "references",
"resource_type": "software"
},
{
"identifier": "https://github.com/devkyato/Arduino-Programs-Guide",
"relation": "references",
"resource_type": "software"
}
]
}
18 changes: 17 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,21 @@ All notable changes are documented here. OpenNet follows

## [Unreleased]

## [0.2.2] - 2026-08-09

### Changed

- Overhaul Zenodo, Citation File Format, README, and release-note presentation for publication
quality without changing ONP/1 or runtime behaviour.
- Identify the creator consistently as `@dev.mako (devkyato)` of MATA Company while retaining
Cursor Agent only as a non-author Zenodo contributor.
- Synchronize version 0.2.2 across Python, Arduino IDE, PlatformIO, archival, citation, and
documentation metadata.
- Update current Python wheel, Arduino ZIP, Linux bundle, PlatformIO tag, and release-process
references to v0.2.2.
- Expand practical output, status, limitations, security, documentation, citation, and
connected-project guidance.

## [0.2.1] - 2026-08-09

### Changed
Expand Down Expand Up @@ -104,7 +119,8 @@ All notable changes are documented here. OpenNet follows
- Arduino IDE, PlatformIO, and Python examples.
- Cross-platform tests, CI, packaging, and contributor documentation.

[Unreleased]: https://github.com/devkyato/OpenNet/compare/v0.2.1...HEAD
[Unreleased]: https://github.com/devkyato/OpenNet/compare/v0.2.2...HEAD
[0.2.2]: https://github.com/devkyato/OpenNet/compare/v0.2.1...v0.2.2
[0.2.1]: https://github.com/devkyato/OpenNet/compare/v0.2.0...v0.2.1
[0.2.0]: https://github.com/devkyato/OpenNet/compare/v0.1.1...v0.2.0
[0.1.1]: https://github.com/devkyato/OpenNet/compare/v0.1.0...v0.1.1
Expand Down
38 changes: 32 additions & 6 deletions CITATION.cff
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,44 @@ cff-version: 1.2.0
message: "If you use this software, please cite it using the metadata from this file."
title: "OpenNet: typed ONP/1 messaging for ESP32, Raspberry Pi, and Python backends"
authors:
- family-names: devkyato
- family-names: "@dev.mako (devkyato)"
affiliation: "MATA Company"
version: 0.2.1
version: 0.2.2
date-released: 2026-08-09
license: MIT
repository-code: "https://github.com/devkyato/OpenNet"
url: "https://github.com/devkyato/OpenNet"
abstract: "Typed ONP/1 messaging for ESP32, Raspberry Pi, and Python backends."
keywords: [opennet, ONP/1, IoT, ESP32, Raspberry Pi, messaging, protocol, embedded, Arduino, Python]
doi: 10.5281/zenodo.21853309
identifiers:
- type: doi
value: 10.5281/zenodo.21853309
abstract: >-
OpenNet is a dependency-free Arduino and Python implementation of typed ONP/1 messaging for
direct links between ESP32 devices, Raspberry Pi systems, and backend services. Its inspectable
framing carries JSON, text, finite numeric values, booleans, null, and binary data over reliable
ordered streams. Bounded resources, CRC-32 checks, acknowledgement retries, duplicate
suppression, verified TLS support, and optional certificate-to-topic authorization make the
protocol suitable for teaching and focused embedded-to-host systems. OpenNet is alpha software:
it does not provide routing, discovery, durable queues, or brokered fleet management.
keywords:
- OpenNet
- ONP/1
- Internet of Things
- ESP32
- Raspberry Pi
- embedded systems
- messaging protocol
- Arduino
- Python
- TCP
- TLS
preferred-citation:
type: software
title: "OpenNet: typed ONP/1 messaging for ESP32, Raspberry Pi, and Python backends"
authors:
- family-names: devkyato
- family-names: "@dev.mako (devkyato)"
affiliation: "MATA Company"
version: 0.2.1
version: 0.2.2
doi: 10.5281/zenodo.21853309
date-released: 2026-08-09
repository-code: "https://github.com/devkyato/OpenNet"
26 changes: 18 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
[![Release](https://img.shields.io/github/v/release/devkyato/OpenNet)](https://github.com/devkyato/OpenNet/releases)
[![License: MIT](https://img.shields.io/badge/license-MIT-4a638f.svg)](LICENSE)
[![Protocol](https://img.shields.io/badge/protocol-ONP%2F1-4a638f.svg)](docs/protocol.md)
[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.21853309.svg)](https://doi.org/10.5281/zenodo.21853309)

OpenNet is a focused, dependency-free messaging protocol I built for direct
links between embedded devices and a Python host—especially an ESP32 talking to
Expand All @@ -14,7 +15,9 @@ communication layer or a replacement for MQTT, HTTP, or WebSocket. It sends
JSON, text, signed integers, finite doubles, booleans, null, and arbitrary binary
data over TCP/TLS or another reliable ordered stream.

Version 0.2.1 is an alpha release for real projects and learning. It has a
Version 0.2.2 is an alpha release for real projects and learning. This release
improves publication, documentation, and citation quality without claiming new
protocol or runtime behaviour. OpenNet has a
documented wire format, bounded resource use, retries and duplicate suppression,
native Arduino protocol tests, Python tests across 3.9–3.14, reproducible release
packages, measured local performance, and an optional topic-authorization hook.
Expand Down Expand Up @@ -56,23 +59,23 @@ Python wheel from the release page:

```sh
python -m pip install \
https://github.com/devkyato/OpenNet/releases/download/v0.2.1/opennet_protocol-0.2.1-py3-none-any.whl
https://github.com/devkyato/OpenNet/releases/download/v0.2.2/opennet_protocol-0.2.2-py3-none-any.whl
opennet --version
```

For an isolated command:

```sh
pipx install \
https://github.com/devkyato/OpenNet/releases/download/v0.2.1/opennet_protocol-0.2.1-py3-none-any.whl
https://github.com/devkyato/OpenNet/releases/download/v0.2.2/opennet_protocol-0.2.2-py3-none-any.whl
```

For Raspberry Pi/Linux, extract `OpenNet-linux-0.2.1.tar.gz` and run
For Raspberry Pi/Linux, extract `OpenNet-linux-0.2.2.tar.gz` and run
`sudo ./install.sh`. It creates a hardened, unprivileged systemd service with a
loopback-only default. For Arduino IDE, install `OpenNet-0.2.1.zip` through
loopback-only default. For Arduino IDE, install `OpenNet-0.2.2.zip` through
**Sketch > Include Library > Add .ZIP Library**.

The Python distribution is installable with pip, but v0.2.1 is distributed from
The Python distribution is installable with pip, but v0.2.2 is distributed from
GitHub Releases rather than the public PyPI index.

## Five-minute local test
Expand All @@ -92,6 +95,12 @@ opennet send device/state '{"online":true}' --type json
opennet benchmark --count 1000 --payload-size 64
```

An acknowledged send returns machine-readable output. On a new connection, the first message is:

```json
{"status": "acknowledged", "message_id": 1, "topic": "sensor/temperature"}
```

Python code is equally small:

```python
Expand All @@ -110,7 +119,8 @@ asyncio.run(main())

The CLI defaults to loopback and refuses remote plaintext unless it is explicitly
allowed for a trusted development network. Use verified TLS—and mutual TLS when
device identity matters—outside isolated local testing.
device identity matters—outside isolated local testing. Read the
[security guide](docs/security.md) before exposing a listener.

## Evidence and design

Expand Down Expand Up @@ -148,7 +158,7 @@ unsafe action.
If you use this software in research or teaching, please cite the Zenodo archive / this repository:

```text
devkyato. (2026). OpenNet: typed ONP/1 messaging for ESP32, Raspberry Pi, and Python backends (Version 0.2.1).
@dev.mako (devkyato). (2026). OpenNet: typed ONP/1 messaging for ESP32, Raspberry Pi, and Python backends (Version 0.2.2). https://github.com/devkyato/OpenNet
```

See [CITATION.cff](CITATION.cff) for machine-readable metadata.
Expand Down
4 changes: 2 additions & 2 deletions docs/getting-started.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ supported Python version.

```bash
python -m pip install \
https://github.com/devkyato/OpenNet/releases/download/v0.2.0/opennet_protocol-0.2.0-py3-none-any.whl
https://github.com/devkyato/OpenNet/releases/download/v0.2.2/opennet_protocol-0.2.2-py3-none-any.whl
opennet serve
```

Expand Down Expand Up @@ -52,7 +52,7 @@ For another project:

```ini
lib_deps =
https://github.com/devkyato/OpenNet.git#v0.2.0
https://github.com/devkyato/OpenNet.git#v0.2.2
```

## Sending values
Expand Down
6 changes: 3 additions & 3 deletions docs/linux-service.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ library `venv` module.
## Install

```sh
grep 'OpenNet-linux-0.2.0.tar.gz' SHA256SUMS | sha256sum -c -
tar -xzf OpenNet-linux-0.2.0.tar.gz
cd OpenNet-linux-0.2.0
grep 'OpenNet-linux-0.2.2.tar.gz' SHA256SUMS | sha256sum -c -
tar -xzf OpenNet-linux-0.2.2.tar.gz
cd OpenNet-linux-0.2.2
sudo ./install.sh
```

Expand Down
10 changes: 5 additions & 5 deletions docs/release.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,12 @@ PyPI publication is intentionally not automatic until the owner configures trust
publishing. Release assets remain installable and reproducible without a registry
credential.

## v0.2.0 assets
## v0.2.2 assets

| Asset | Use |
|---|---|
| `OpenNet-0.2.0.zip` | Arduino IDE library |
| `opennet_protocol-0.2.0-py3-none-any.whl` | Direct pip/pipx install |
| `opennet_protocol-0.2.0.tar.gz` | Python source distribution |
| `OpenNet-linux-0.2.0.tar.gz` | `sudo` Linux/systemd install |
| `OpenNet-0.2.2.zip` | Arduino IDE library |
| `opennet_protocol-0.2.2-py3-none-any.whl` | Direct pip/pipx install |
| `opennet_protocol-0.2.2.tar.gz` | Python source distribution |
| `OpenNet-linux-0.2.2.tar.gz` | `sudo` Linux/systemd install |
| `SHA256SUMS` | Artifact integrity verification |
35 changes: 35 additions & 0 deletions docs/releases/v0.2.2.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# OpenNet v0.2.2 — publication and documentation quality

OpenNet v0.2.2 improves release presentation, installation guidance, archival metadata, and
citation quality. It does not claim new ONP/1 framing, transport, reliability, authorization, or
runtime behaviour.

## What changed

- Expanded the Zenodo description into sanitizer-safe HTML covering capabilities, installation,
quick start, applications, limitations, documentation, related software, and citation.
- Expanded `CITATION.cff` and synchronized the creator, repository, release date, keywords, and
0.2.2 version without inventing a DOI or ORCID.
- Synchronized the Python, Arduino IDE, and PlatformIO package versions.
- Updated current install and deployment references across the README, Python package README,
getting-started guide, tutorials, Linux service guide, and release process.

## Install

```sh
python -m pip install https://github.com/devkyato/OpenNet/releases/download/v0.2.2/opennet_protocol-0.2.2-py3-none-any.whl
opennet --version
```

The expected version output is `opennet 0.2.2`.

Arduino IDE users can install `OpenNet-0.2.2.zip`. Linux service users can verify and extract
`OpenNet-linux-0.2.2.tar.gz` by following the
[service guide](../linux-service.md).

## Citation

Concept DOI: https://doi.org/10.5281/zenodo.21853309

See `CITATION.cff` and `.zenodo.json`. Published by @dev.mako (devkyato). Cursor Agent is acknowledged as a non-author contributor.

8 changes: 4 additions & 4 deletions docs/tutorials.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@

## 1. Local Python round trip

Install the v0.2.0 wheel directly from the GitHub release:
Install the v0.2.2 wheel directly from the GitHub release:

```sh
python -m venv .venv
source .venv/bin/activate
python -m pip install \
https://github.com/devkyato/OpenNet/releases/download/v0.2.0/opennet_protocol-0.2.0-py3-none-any.whl
https://github.com/devkyato/OpenNet/releases/download/v0.2.2/opennet_protocol-0.2.2-py3-none-any.whl
```

Terminal one:
Expand All @@ -27,7 +27,7 @@ opennet send device/state '{"online":true,"battery":91}' --type json

## 2. Raspberry Pi service

Download and extract `OpenNet-linux-0.2.0.tar.gz`, then:
Download and extract `OpenNet-linux-0.2.2.tar.gz`, then:

```sh
sudo ./install.sh
Expand All @@ -40,7 +40,7 @@ TLS before the first start. See [Security](security.md).

## 3. ESP32 over a trusted development LAN

1. Install `OpenNet-0.2.0.zip` through Arduino IDE's **Add .ZIP Library**.
1. Install `OpenNet-0.2.2.zip` through Arduino IDE's **Add .ZIP Library**.
2. Open **File > Examples > OpenNet > TelemetryClient**.
3. Enter the Wi-Fi details and the server's LAN address.
4. Start a development server with
Expand Down
4 changes: 2 additions & 2 deletions library.json
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
{
"name": "OpenNet",
"version": "0.2.1",
"version": "0.2.2",
"description": "Direct typed ONP/1 messaging between ESP32 devices and Python hosts.",
"keywords": ["esp32", "raspberry-pi", "iot", "tcp", "tls", "bluetooth", "messaging"],
"repository": {
"type": "git",
"url": "https://github.com/devkyato/OpenNet.git"
},
"authors": [{"name": "devkyato", "maintainer": true}],
"authors": [{"name": "@dev.mako (devkyato)", "maintainer": true}],
"license": "MIT",
"frameworks": ["arduino"],
"platforms": ["espressif32"],
Expand Down
6 changes: 3 additions & 3 deletions library.properties
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
name=OpenNet
version=0.2.1
author=devkyato
maintainer=devkyato
version=0.2.2
author=@dev.mako (devkyato)
maintainer=@dev.mako (devkyato)
sentence=Direct typed ONP/1 messaging between ESP32 devices and Python hosts.
paragraph=OpenNet provides a small inspectable frame format for JSON, text, numeric values, and binary data over TCP, TLS, and reliable Arduino streams.
category=Communication
Expand Down
Loading
Loading