Metadata-Version: 2.4
Name: gen_mqtt_service
Version: 1.1.6
Summary: Generating MQTT service client skeleton
Home-page: https://vroncevic.github.io/gen_mqtt_service/
Author: Vladimir Roncevic
Author-email: elektron.ronca@gmail.com
License: GPL-3.0-or-later
Keywords: Unix,Linux,IoT,Development,MQTT,client,generator
Platform: POSIX
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: ats-utilities
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: keywords
Dynamic: license
Dynamic: license-file
Dynamic: platform
Dynamic: requires-dist
Dynamic: summary

# Create MqttService project skeleton

<img align="right" src="https://raw.githubusercontent.com/vroncevic/gen_mqtt_service/dev/docs/gen_mqtt_service_logo.png" width="25%">

**gen_mqtt_service** is tool for creating MqttService project skeleton.

Developed in **[python](https://www.python.org/)** code.

The README is used to introduce the tool and provide instructions on
how to install the tool, any machine dependencies it may have and any
other information that should be provided before the tool is installed.

[![gen_mqtt_service python checker](https://github.com/vroncevic/gen_mqtt_service/actions/workflows/gen_mqtt_service_python_checker.yml/badge.svg)](https://github.com/vroncevic/gen_mqtt_service/actions/workflows/gen_mqtt_service_python_checker.yml) [![gen_mqtt_service package checker](https://github.com/vroncevic/gen_mqtt_service/actions/workflows/gen_mqtt_service_package_checker.yml/badge.svg)](https://github.com/vroncevic/gen_mqtt_service/actions/workflows/gen_mqtt_service_package.yml) [![GitHub issues open](https://img.shields.io/github/issues/vroncevic/gen_mqtt_service.svg)](https://github.com/vroncevic/gen_mqtt_service/issues) [![GitHub contributors](https://img.shields.io/github/contributors/vroncevic/gen_mqtt_service.svg)](https://github.com/vroncevic/gen_mqtt_service/graphs/contributors)

<!-- START doctoc generated TOC please keep comment here to allow auto update -->
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
**Table of Contents**

- [🚀 Installation](#-installation)
    - [Install using pip](#install-using-pip)
    - [Install using build](#install-using-build)
    - [Install using py setup](#install-using-py-setup)
    - [Install using docker](#install-using-docker)
- [📦 Dependencies](#-dependencies)
- [📁 Tool structure](#-tool-structure)
  - [✨ Features](#-features)
- [📊 Code coverage](#-code-coverage)
- [🛠 Usage](#-usage)
- [📚 Docs](#-docs)
- [👥 Contributing](#-contributing)
- [📄 Copyright and licence](#-copyright-and-licence)

<!-- END doctoc generated TOC please keep comment here to allow auto update -->

### 🚀 Installation

Used next development environment

![debian linux os](https://raw.githubusercontent.com/vroncevic/gen_mqtt_service/dev/docs/debtux.png)

[![gen_mqtt_service python3 build](https://github.com/vroncevic/gen_mqtt_service/actions/workflows/gen_mqtt_service_python3_build.yml/badge.svg)](https://github.com/vroncevic/gen_mqtt_service/actions/workflows/gen_mqtt_service_python3_build.yml) [![gen_mqtt_service_interface_checker](https://github.com/vroncevic/gen_mqtt_service/actions/workflows/gen_mqtt_service_interface_checker.yml/badge.svg)](https://github.com/vroncevic/gen_mqtt_service/actions/workflows/gen_mqtt_service_interface_checker.yml) [![gen_mqtt_service_isp_checker](https://github.com/vroncevic/gen_mqtt_service/actions/workflows/gen_mqtt_service_isp_checker.yml/badge.svg)](https://github.com/vroncevic/gen_mqtt_service/actions/workflows/gen_mqtt_service_isp_checker.yml) [![gen_mqtt_service_srp_checker](https://github.com/vroncevic/gen_mqtt_service/actions/workflows/gen_mqtt_service_srp_checker.yml/badge.svg)](https://github.com/vroncevic/gen_mqtt_service/actions/workflows/gen_mqtt_service_srp_checker.yml)

Currently there are four ways to install package
* Install process based on using pip mechanism
* Install process based on build mechanism
* Install process based on setup.py mechanism
* Install process based on docker mechanism

##### Install using pip

**gen_mqtt_service** is located at **[pypi.org](https://pypi.org/project/gen_mqtt_service/)**.

You can install by using pip

```bash
# python3
pip3 install gen_mqtt_service
```

##### Install using build

Navigate to release **[page](https://github.com/vroncevic/gen_mqtt_service/releases/)** download and extract release archive.

To install **gen_mqtt_service** type the following

```bash
tar xvzf gen_mqtt_service-x.y.z.tar.gz
cd gen_mqtt_service-x.y.z/
# python3
wget https://bootstrap.pypa.io/get-pip.py
python3 get-pip.py 
# python3
python3 get-pip.py
python3 -m pip install --upgrade setuptools
python3 -m pip install --upgrade pip
python3 -m pip install --upgrade build
pip3 install -r requirements.txt
python3 -m build --no-isolation --wheel
pip3 install ./dist/gen_mqtt_service-*-py3-none-any.whl
rm -f get-pip.py
```

##### Install using py setup

Navigate to **[release page](https://github.com/vroncevic/gen_mqtt_service/releases)** download and extract release archive.

To install **gen_mqtt_service** locate and run setup.py with arguments

```bash
tar xvzf gen_mqtt_service-x.y.z.tar.gz
cd gen_mqtt_service-x.y.z
# python3
pip3 install -r requirements.txt
python3 setup.py install_lib
python3 setup.py install_egg_info
```

##### Install using docker

You can use Dockerfile to create image/container.

### 📦 Dependencies

**gen_mqtt_service** requires next modules and libraries

* [ats-utilities - Python App/Tool/Script Utilities](https://pypi.org/project/ats-utilities/)

### 📁 Tool structure

**gen_mqtt_service** is based on OOP.

Tool structure

<details>
<summary><b>Click to expand framework structure</b></summary>

```bash
    gen_mqtt_service/
         ├── core/
         │   ├── __init__.py
         │   ├── model/
         │   │   ├── __init__.py
         │   │   └── project_setup.py
         │   └── service/
         │       ├── engine.py
         │       ├── __init__.py
         │       ├── iservice.py
         │       └── isubprocessor.py
         ├── engine.py
         ├── infrastructure/
         │   ├── cli/
         │   │   ├── engine.py
         │   │   ├── icli.py
         │   │   ├── __init__.py
         │   │   └── setup/
         │   │       ├── bundle.py
         │   │       ├── dep_validator.py
         │   │       ├── dependencies.py
         │   │       ├── factory.py
         │   │       ├── __init__.py
         │   │       ├── keys.py
         │   │       ├── opt_validator.py
         │   │       ├── options.py
         │   │       ├── registry.py
         │   │       └── validator.py
         │   ├── command/
         │   │   ├── command.py
         │   │   ├── gen_mqtt_service_command_definition.py
         │   │   ├── gen_mqtt_service_command_executor.py
         │   │   ├── icommand_definition.py
         │   │   ├── icommand_executor.py
         │   │   └── __init__.py
         │   ├── config/
         │   │   ├── gen_mqtt_service.cfg
         │   │   ├── gen_mqtt_service.logo
         │   │   ├── scheme.json
         │   │   └── templates.tgz
         │   └── subprocessor.py
         ├── __init__.py
         ├── py.typed
         └── setup/
             ├── bundle.py
             ├── dep_validator.py
             ├── dependencies.py
             ├── factory.py
             ├── __init__.py
             ├── keys.py
             ├── opt_validator.py
             ├── options.py
             ├── registry.py
             └── validator.py

     10 directories, 44 files
```
</details>

#### ✨ Features

* Automatically scaffolds MQTT service publisher/subscriber client skeleton projects.
* Multi-language and multi-platform support: Python (`paho`), C (`mosquitto`), Node.js (`node`), and Node.js WebSocket (`node_ws`).
* Granular generation control via `--role {subscriber,publisher,both}` and `--scope {module,demo}`.
* Engineered with OOP, SOLID principles, and Clean Architecture (PEP 544 structural protocols in Python).
* Command line interface (CLI) support via structured command and executor layers.
* Robust validation of project bundles, dependencies, and generation parameters.
* Configurable compressed templates (`templates.tgz`) and JSON schema definitions.
* Production code quality with 100% test coverage and strict type annotations.

### 📊 Code coverage

<details>
<summary><b>Click to expand code coverage</b></summary>

| Name | Stmts | Miss | Cover |
|------|-------|------|-------|
| `gen_mqtt_service/__init__.py` | 9 | 0 | 100%|
| `gen_mqtt_service/core/__init__.py` | 9 | 0 | 100%|
| `gen_mqtt_service/core/model/__init__.py` | 9 | 0 | 100%|
| `gen_mqtt_service/core/model/project_setup.py` | 19 | 0 | 100%|
| `gen_mqtt_service/core/service/__init__.py` | 9 | 0 | 100%|
| `gen_mqtt_service/core/service/engine.py` | 27 | 0 | 100%|
| `gen_mqtt_service/core/service/iservice.py` | 14 | 0 | 100%|
| `gen_mqtt_service/core/service/isubprocessor.py` | 14 | 0 | 100%|
| `gen_mqtt_service/engine.py` | 57 | 0 | 100%|
| `gen_mqtt_service/infrastructure/cli/__init__.py` | 9 | 0 | 100%|
| `gen_mqtt_service/infrastructure/cli/engine.py` | 39 | 0 | 100%|
| `gen_mqtt_service/infrastructure/cli/icli.py` | 14 | 0 | 100%|
| `gen_mqtt_service/infrastructure/cli/setup/__init__.py` | 9 | 0 | 100%|
| `gen_mqtt_service/infrastructure/cli/setup/bundle.py` | 22 | 0 | 100%|
| `gen_mqtt_service/infrastructure/cli/setup/dep_validator.py` | 36 | 0 | 100%|
| `gen_mqtt_service/infrastructure/cli/setup/dependencies.py` | 18 | 0 | 100%|
| `gen_mqtt_service/infrastructure/cli/setup/factory.py` | 35 | 0 | 100%|
| `gen_mqtt_service/infrastructure/cli/setup/keys.py` | 26 | 0 | 100%|
| `gen_mqtt_service/infrastructure/cli/setup/opt_validator.py` | 36 | 0 | 100%|
| `gen_mqtt_service/infrastructure/cli/setup/options.py` | 15 | 0 | 100%|
| `gen_mqtt_service/infrastructure/cli/setup/registry.py` | 24 | 0 | 100%|
| `gen_mqtt_service/infrastructure/cli/setup/validator.py` | 43 | 0 | 100%|
| `gen_mqtt_service/infrastructure/command/__init__.py` | 9 | 0 | 100%|
| `gen_mqtt_service/infrastructure/command/command.py` | 16 | 0 | 100%|
| `gen_mqtt_service/infrastructure/command/gen_mqtt_service_command_definition.py` | 24 | 0 | 100%|
| `gen_mqtt_service/infrastructure/command/gen_mqtt_service_command_executor.py` | 29 | 0 | 100%|
| `gen_mqtt_service/infrastructure/command/icommand_definition.py` | 14 | 0 | 100%|
| `gen_mqtt_service/infrastructure/command/icommand_executor.py` | 14 | 0 | 100%|
| `gen_mqtt_service/infrastructure/subprocessor.py` | 77 | 0 | 100%|
| `gen_mqtt_service/setup/__init__.py` | 9 | 0 | 100%|
| `gen_mqtt_service/setup/bundle.py` | 23 | 0 | 100%|
| `gen_mqtt_service/setup/dep_validator.py` | 36 | 0 | 100%|
| `gen_mqtt_service/setup/dependencies.py` | 19 | 0 | 100%|
| `gen_mqtt_service/setup/factory.py` | 49 | 0 | 100%|
| `gen_mqtt_service/setup/keys.py` | 27 | 0 | 100%|
| `gen_mqtt_service/setup/opt_validator.py` | 34 | 0 | 100%|
| `gen_mqtt_service/setup/options.py` | 12 | 0 | 100%|
| `gen_mqtt_service/setup/registry.py` | 32 | 0 | 100%|
| `gen_mqtt_service/setup/validator.py` | 48 | 0 | 100%|
| **Total** | 965 | 0 | 100% |

</details>

### 🛠 Usage

Install package

```bash
pip3 install gen_mqtt_service
```

Prepare main entry point by downloading [main.py](https://raw.githubusercontent.com/vroncevic/gen_mqtt_service/main/main.py) or create your own.


```bash
wget -O main.py https://raw.githubusercontent.com/vroncevic/gen_mqtt_service/main/main.py
```

Running tool for creating new MqttService project skeleton:

```bash
# Python Paho complete demo (both publisher & subscriber)
python3 main.py create --name mytool --type paho --output ./demo/

# Python Paho publisher module only (for embedding in existing services)
python3 main.py create --name mypub --type paho --role publisher --scope module --output ./services/

# C Mosquitto subscriber demo
python3 main.py create --name myclient --type mosquitto --role subscriber --scope demo --output ./demo/

# Node.js standard MQTT demo
python3 main.py create --name node_mqtt --type node --role both --scope demo --output ./demo/

# Node.js WebSocket MQTT with embedded Aedes broker
python3 main.py create --name node_ws_svc --type node_ws --role both --scope demo --output ./demo/
```

For complete architecture details, design patterns, and instructions for building and running each template, see the [Templates Architecture & Usage Guide](templates_guide.md).

### 📚 Docs

[![Documentation Status](https://readthedocs.org/projects/gen-mqtt-service/badge/?version=latest)](https://gen-mqtt-service.readthedocs.io/en/latest/?badge=latest)

More documentation and info at:

* [Templates Architecture & Usage Guide](templates_guide.md)
* [MQTT Protocol Overview](overview.md)
* [MQTT Broker Architecture](mqtt_broker.md)
* [MQTT Version 5.0 Support](mqtt_v5.md)
* [Quality of Service (QoS)](quality_of_service.md)
* [Message Types](message_types.md)
* [Temperature Service Example](example.md)
* [gen_mqtt_service.readthedocs.io](https://gen-mqtt-service.readthedocs.io)
* [www.python.org](https://www.python.org/)

### 👥 Contributing

[Contributing to gen_mqtt_service](CONTRIBUTING.md)

### 📄 Copyright and licence

[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0) [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)

Copyright (C) 2025 - 2026 by [vroncevic.github.io/gen_mqtt_service](https://vroncevic.github.io/gen_mqtt_service/)

**gen_mqtt_service** is free software; you can redistribute it and/or modify
it under the same terms as Python itself, either Python version 3.x or,
at your option, any later version of Python 3 you may have available.

Lets help and support PSF.

[![Python Software Foundation](https://raw.githubusercontent.com/vroncevic/gen_mqtt_service/dev/docs/psf-logo-alpha.png)](https://www.python.org/psf/)

[![Donate](https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif)](https://www.python.org/psf/donations/)
