{"id":35797828,"url":"https://github.com/partach/protocol_wizard","last_synced_at":"2026-03-17T09:10:24.548Z","repository":{"id":331592623,"uuid":"1127787053","full_name":"partach/protocol_wizard","owner":"partach","description":"The Protocol Wizard helps you build your home assistant devices without need for any yaml!","archived":false,"fork":false,"pushed_at":"2026-03-11T19:00:03.000Z","size":3103,"stargazers_count":12,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-03-11T19:36:46.692Z","etag":null,"topics":["hacs-integration","home-assistant","lovelace-custom-card","modbus","protocols","snmp"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/partach.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-04T15:42:09.000Z","updated_at":"2026-03-11T19:00:06.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/partach/protocol_wizard","commit_stats":null,"previous_names":["partach/protocol_wizard"],"tags_count":26,"template":false,"template_full_name":null,"purl":"pkg:github/partach/protocol_wizard","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/partach%2Fprotocol_wizard","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/partach%2Fprotocol_wizard/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/partach%2Fprotocol_wizard/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/partach%2Fprotocol_wizard/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/partach","download_url":"https://codeload.github.com/partach/protocol_wizard/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/partach%2Fprotocol_wizard/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30619844,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-17T08:10:05.930Z","status":"ssl_error","status_checked_at":"2026-03-17T08:10:04.972Z","response_time":56,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["hacs-integration","home-assistant","lovelace-custom-card","modbus","protocols","snmp"],"created_at":"2026-01-07T10:15:01.559Z","updated_at":"2026-03-17T09:10:24.542Z","avatar_url":"https://github.com/partach.png","language":"Python","funding_links":["https://paypal.me/therealbean"],"categories":[],"sub_categories":[],"readme":"# Protocol Wizard for Home Assistant\n[![Home Assistant](https://img.shields.io/badge/Home_Assistant-00A1DF?style=flat-square\u0026logo=home-assistant\u0026logoColor=white)](https://www.home-assistant.io)\n[![HACS](https://img.shields.io/badge/HACS-Default-41BDF5?style=flat-square)](https://hacs.xyz)\n[![HACS Action](https://img.shields.io/github/actions/workflow/status/partach/protocol_wizard/validate-hacs.yml?label=HACS%20Action\u0026style=flat-square)](https://github.com/partach/protocol_wizard/actions)\n[![License](https://img.shields.io/github/license/partach/protocol_wizard?color=ffca28\u0026style=flat-square)](https://github.com/partach/protocol_wizard/blob/main/LICENSE)\n[![HACS validated](https://img.shields.io/badge/HACS-validated-41BDF5?style=flat-square)](https://github.com/hacs/integration)\n\nThe Protocol Wizard helps you build your home assistant devices without need for any yaml!\u003cbr\u003e\nSee [DOCUMENTATION](https://github.com/partach/protocol_wizard/wiki) for details\n\n**Configure and control devices entirely from the UI — no YAML, no restarts!**\u003cbr\u003e\n\nProtocol Wizard lets you discover, test, and integrate devices (Modbus, SNMP, MQTT, BACnet) directly in Home Assistant — all through a simple, powerful interface.\u003cbr\u003e\nAll run-time!\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/partach/protocol_wizard/raw/main/pictures/pwz-config1.png\" width=\"600\" alt=\"Runtime entity configuration\"/\u003e\n  \u003cbr\u003e\u003cem\u003eAdd and configure sensors at runtime — no reboots required\u003c/em\u003e\n\u003c/p\u003e\n\n**Work in progress — actively developed and improving!**\n\n## Features\n\n- Supports already **MQTT, Modbus, SNMP, BACnet**\n- **Zero YAML configuration** — everything done via the Home Assistant UI\n- Device templates support! Just present your device as a json template! (see below)\n- Full support for Modbus **serial (RS485/USB)** and **IP-based (TCP \u0026 UDP)**\n- **Runtime entity management** — add, edit, or remove sensors without restarting HA\n- Dedicated **Lovelace cards** for live reading/writing any register/ OID / Topic /etc. (perfect for testing and debugging)\n- Create only the entities you need — keep your setup clean and efficient\n- Modbus: **Multiple slaves** supported (up to 255 per bus/network) with individual slave IDs\n- Modbus: **Multiple masters** possible (HA as master; coexists with other masters if no conflicts)\n- Configurable refresh intervals per device\n- Full automation support — use sensors in automations, scripts, and dashboards\n- Advanced options: scaling, offset, byte/word order, endianness, bit handling, and more\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/partach/protocol_wizard/raw/main/pictures/pwz-card-modbus.png\" width=\"330\" alt=\"Modbus Wizard Card\"/\u003e\n  \u003cimg src=\"https://github.com/partach/protocol_wizard/raw/main/pictures/pwz-card-snmp.png\" width=\"350\" alt=\"SNMP Wizard Card\"/\u003e\n    \u003cimg src=\"https://github.com/partach/protocol_wizard/raw/main/pictures/pwz-card-mqtt.png\" width=\"310\" alt=\"MQTT Wizard Card\"/\u003e\n  \u003cbr\u003e\u003cem\u003eProbe and control any register in real-time with the included card\u003c/em\u003e\n\u003c/p\u003e\n\n## Installation\n\n### Option 1: HACS (Recommended — coming soon)\nOnce available in HACS default repository, install with one click.\n\n### Option 2: Manual Install\n1. Go to **HACS → Integrations → ⋮ → Custom repositories**\n2. Add repository:  \n   URL: `https://github.com/partach/protocol_wizard`  \n   Category: **Integration**\n3. Click **Add**\n4. Go to devices and service, add integration, Search for \"Protocol Wizard\" and install.\n5. **Restart Home Assistant**\n6. Go to **Settings → Devices \u0026 Services → + Add Integration** → Search for **Protocol Wizard**\n\n\u003e The included Lovelace card is automatically registered on startup.  \n\u003e A browser refresh may be needed the first time to see it.\n\n## Setup Guide\n\n### RS485 Termination Note for Modbus devices\nFor reliable serial Modbus (RS485), install **120Ω termination resistors** at **both ends** of the bus only.  \nToo many resistors degrade the signal; none can cause reflections and errors.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/partach/ha_modbus_wizard/raw/main/120ohm.png\" width=\"600\" alt=\"120 ohm\"/\u003e\n  \u003cbr\u003e\u003cem\u003ehow to apply the 120 ohm resistor with multiple devices attached on the bus\u003c/em\u003e\n\u003c/p\u003e\n\n### Step 1: Select your protocol\n1. Click **+ Add Integration** → Choose **Protocol Wizard**\n2. Select Modbus / SNMP / etc.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/partach/protocol_wizard/raw/main/pictures/pwz-config3.png\" width=\"600\" alt=\"Runtime entity configuration\"/\u003e\n  \u003cbr\u003e\u003cem\u003eChoose Protocol - no restarts required\u003c/em\u003e\n\u003c/p\u003e\n\n### Step 2: Add Your Device (Modbus Example shown)\n1. Select connection type: **Serial** or **IP (TCP/UDP)**\n2. Enter:\n   - Slave ID (usually 1)\n   - A test register address (often 0 or 30001 → use 0 in the integration)\n   - Test register size (usually 1 or 2)\n3. Provide connection details (port, baudrate, host, etc.)\n4. The integration will auto-test connectivity\n\n→ Success? You're ready!\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/partach/protocol_wizard/raw/main/pictures/pwz-config4.png\" width=\"300\" alt=\"Step 1\"/\u003e\n  \u003cimg src=\"https://github.com/partach/protocol_wizard/raw/main/pictures/pwz-config8.png\" width=\"400\" alt=\"Step 2\"/\u003e\n  \u003cbr\u003e\u003cem\u003eSimple device setup\u003c/em\u003e\n\u003c/p\u003e\n\n### Step 3: Explore with the Card (Recommended for Discovery)\nAdd the **Protocol Wizard Card** to a dashboard:\n- Edit dashboard → Add card → Search for **\"Protocol Wizard Card\"**\n- Select your device (depending on type of device the UI of the card adapts)\n! You need to have a card per device (To ensure you are communicating with the right device)\n\nNow you can:\n- Read any register instantly\n- Write values to test device behavior\n- Experiment with data types, byte order, and scaling\n\nPerfect for reverse-engineering undocumented devices!\n\n### Step 4: Create Permanent Sensors\nOnce you know which registers you want:\n- Go to your Protocol Wizard device → **Configure** → **Add register**\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/partach/protocol_wizard/raw/main/pictures/pwz-config5.png\" width=\"600\" alt=\"Runtime entity configuration\"/\u003e\n  \u003cbr\u003e\u003cem\u003eAdd and/or configure your device, add/delete/edit entities\u003c/em\u003e\n\u003c/p\u003e\n- Fill in name, address, data type, unit, scaling, etc.\n- Advanced options available (click \"Show advanced options\")\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/partach/protocol_wizard/raw/main/pictures/pwz-config6.png\" width=\"400\" alt=\"Add register form\"/\u003e\n  \u003cbr\u003e\u003cem\u003eFull control over sensor configuration\u003c/em\u003e\n\u003c/p\u003e\n\nYour new sensors appear immediately — no restart needed.  \nYou can later edit or delete them from the same options menu.\n\n## Device Templates\nVia the hub configuration (gear symbol) you can read device templates (in standard JSON format).\nThese are easy to make (AI can be your friend) and help you import your device (or change) run-time with a few clicks.\nSDM630 basic profile is provided in the code. Just feed this to Grok, ChatGPT, Claude, etc. And ask to get this for device X/Y.\nThen add to the template directory of the integration `/custom_components/protocol_wizard/templates/mydevicename.json\nAlso send them to me so i can possibly add them for a next release :)\n\nThe Format (entry per register)\n```\n[\n  {\n    \"name\": \"Phase 1 Voltage\",\n    \"address\": 0,\n    \"data_type\": \"float32\",\n    \"register_type\": \"input\",\n    \"rw\": \"read\",\n    \"unit\": \"V\",\n    \"scale\": 1.0,\n    \"offset\": 0.0,\n    \"byte_order\": \"big\",\n    \"word_order\": \"big\",\n    \"allow_bits\": false\n  }\n]\n```\nSNMP example\n```\n[\n  {\n    \"name\": \"System Description\",\n    \"address\": \"1.3.6.1.2.1.1.1.0\",\n    \"data_type\": \"string\",\n    \"read_mode\": \"get\"\n  },\n  {\n    \"name\": \"System Uptime\",\n    \"address\": \"1.3.6.1.2.1.1.3.0\",\n    \"data_type\": \"integer\",\n    \"read_mode\": \"get\"\n  },\n  {\n    \"name\": \"System Name\",\n    \"address\": \"1.3.6.1.2.1.1.5.0\",\n    \"data_type\": \"string\",\n    \"read_mode\": \"get\"\n  },\n  {\n    \"name\": \"Interface Speeds\",\n    \"address\": \"1.3.6.1.2.1.2.2.1.5\",\n    \"read_mode\": \"walk\"\n  }\n]\n```\n\n## Register Configuration Fields (Modbus)\n\nWhen adding or editing a register, the following fields are available:\n\n| Field              | Required | Default       | Description                                                                                                      |\n|--------------------|----------|---------------|------------------------------------------------------------------------------------------------------------------|\n| **name**           | Yes      | -             | Human-readable name for the entity                                                                               |\n| **address**        | Yes      | -             | Modbus register address (0–65535)                                                                                |\n| **data_type**      | Yes      | `uint16`      | How to decode the value: `uint16`, `int16`, `uint32`, `int32`, `float32`, `uint64`, `int64`                        |\n| **register_type**  | Yes      | `input`       | Function code: `auto`, `holding`, `input`, `coil`, `discrete`                                                    |\n| **rw**             | Yes      | `read`        | Entity type: `read` (sensor), `write` (number), `rw` (both)                                                       |\n| **unit**           | No       | -             | Unit of measurement (e.g., \"V\", \"A\", \"W\")                                                                        |\n| **scale**          | No       | `1.0`         | Multiplier applied after decoding (`value × scale + offset`)                                                     |\n| **offset**         | No       | `0.0`         | Additive offset after scaling                                                                                    |\n| **options**        | No       | -             | JSON mapping for select entity (e.g., `{\"0\": \"Off\", \"1\": \"On\"}`)                                                 |\n| **byte_order**     | No       | `big`         | Byte order within each word (big/little)                                                                         |\n| **word_order**     | No       | `big`         | Order of the 16-bit words (big/little) for multi-register values                                                 |\n| **format**         | No       | -             | python formating for read values like {d}d {h}h {m}m for seconds to human readible value                         |\n| **min**            | No       | -             | Minimum value for writeable number entities                                                                       |\n| **max**            | No       | -             | Maximum value for writeable number entities                                                                       |\n| **step**           | No       | `1.0`         | Step size for number entity adjustments                                                                          |\n\n### Quick Tips for Common Use Cases\n- **Voltages/Currents**: `data_type = \"uint16\"`, `scale = 0.1` or `0.01`, unit \"V\"/\"A\"\n- **Power**: Often `uint32` or `float32` with appropriate scaling\n- **Status bits**: Use `coil`/`discrete` + `options` JSON for friendly names\n\n## Why Choose Protocol Wizard?\n\n- **No more YAML hell** — perfect for devices with poor documentation\n- **Fast iteration** — test registers live, then save only what you need\n- **Beginner-friendly** yet powerful for advanced users\n- **Full control** — bit-level access, custom scaling, endianness, raw mode\n\n## Roadmap \u0026 Planned Features\n- More **Templates for common devices**: More templates pre-loaded with the integration\n- KNX\n\n## Support \u0026 Feedback\n\nThis integration is under active development. Found a bug? Have a feature request?\n\n→ Open an issue on GitHub: https://github.com/partach/protocol_wizard/issues\n\nContributions welcome!\n\n### Discussion\nJoin the conversation: [GitHub Discussions](https://github.com/partach/protocol_wizard/discussions)\n\n### Changelog\nSee [CHANGELOG.md](https://github.com/partach/protocol_wizard/blob/main/CHANGELOG.md)\n\n### Support Development\nIf you find Protocol Wizard useful, consider buying me a coffee! ☕\n\n[![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg?style=flat-square)](https://paypal.me/therealbean)\n\n---\n\n**Made with ❤️ for the Home Assistant community**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpartach%2Fprotocol_wizard","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpartach%2Fprotocol_wizard","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpartach%2Fprotocol_wizard/lists"}