{"id":47890514,"url":"https://github.com/krobipd/iobroker.homewizard","last_synced_at":"2026-04-18T01:11:24.936Z","repository":{"id":349047422,"uuid":"1200900734","full_name":"krobipd/ioBroker.homewizard","owner":"krobipd","description":"ioBroker adapter for HomeWizard Energy devices — real-time energy monitoring via API v2 with WebSocket push","archived":false,"fork":false,"pushed_at":"2026-04-04T00:57:23.000Z","size":0,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-04T01:07:56.414Z","etag":null,"topics":["energy","homewizard","iobroker","iobroker-adapter","p1-meter","smartmeter","websocket"],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","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/krobipd.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","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},"funding":{"ko_fi":"krobipd","custom":["https://paypal.me/krobipd"]}},"created_at":"2026-04-04T00:49:57.000Z","updated_at":"2026-04-04T00:57:27.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/krobipd/ioBroker.homewizard","commit_stats":null,"previous_names":["krobipd/iobroker.homewizard"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/krobipd/ioBroker.homewizard","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krobipd%2FioBroker.homewizard","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krobipd%2FioBroker.homewizard/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krobipd%2FioBroker.homewizard/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krobipd%2FioBroker.homewizard/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/krobipd","download_url":"https://codeload.github.com/krobipd/ioBroker.homewizard/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krobipd%2FioBroker.homewizard/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31385935,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-04T01:22:39.193Z","status":"online","status_checked_at":"2026-04-04T02:00:07.569Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["energy","homewizard","iobroker","iobroker-adapter","p1-meter","smartmeter","websocket"],"created_at":"2026-04-04T03:01:03.187Z","updated_at":"2026-04-04T03:01:12.890Z","avatar_url":"https://github.com/krobipd.png","language":"TypeScript","funding_links":["https://ko-fi.com/krobipd","https://paypal.me/krobipd"],"categories":[],"sub_categories":[],"readme":"# ioBroker.homewizard\n\n[![npm version](https://img.shields.io/npm/v/iobroker.homewizard)](https://www.npmjs.com/package/iobroker.homewizard)\n![Node](https://img.shields.io/badge/node-%3E%3D20-brightgreen)\n![TypeScript](https://img.shields.io/badge/TypeScript-strict-blue)\n[![License](https://img.shields.io/badge/license-MIT-green)](LICENSE)\n[![npm downloads](https://img.shields.io/npm/dt/iobroker.homewizard)](https://www.npmjs.com/package/iobroker.homewizard)\n![Installations](https://iobroker.live/badges/homewizard-installed.svg)\n[![Ko-fi](https://img.shields.io/badge/Ko--fi-Support-ff5e5b?logo=ko-fi)](https://ko-fi.com/krobipd)\n[![PayPal](https://img.shields.io/badge/Donate-PayPal-blue.svg)](https://paypal.me/krobipd)\n\n\u003cimg src=\"https://raw.githubusercontent.com/krobipd/ioBroker.homewizard/main/admin/homewizard.svg\" width=\"100\" /\u003e\n\nReal-time energy monitoring from HomeWizard devices via API v2 with WebSocket push (~1 update/second).\n\n---\n\n## Features\n\n- **WebSocket push** for real-time energy data (~1 update per second)\n- **Automatic device discovery** via mDNS (zero configuration)\n- **Hue-style pairing** — press the button on the device to connect\n- **Multi-device support** — manage all HomeWizard devices in one adapter instance\n- **Battery control** — manage HomeWizard Plug-In Batteries (mode, permissions)\n- **System control** — LED brightness, cloud toggle, reboot, identify\n- **REST fallback** — automatic polling when WebSocket is unavailable\n\n---\n\n## Requirements\n\n- **Node.js \u003e= 20**\n- **ioBroker js-controller \u003e= 7.0.0**\n- **ioBroker Admin \u003e= 7.6.20**\n- **HomeWizard device with API v2 support** (firmware 4.x+ with local API enabled)\n\n---\n\n## Supported Devices\n\n| Device | Product Type | WebSocket | Battery Control |\n|--------|-------------|-----------|-----------------|\n| P1 Meter | HWE-P1 | Yes | Yes (as controller) |\n| kWh Meter 1-Phase | HWE-KWH1 / SDM230 | Yes | Yes (as controller) |\n| kWh Meter 3-Phase | HWE-KWH3 / SDM630 | Yes | Yes (as controller) |\n| Plug-In Battery | HWE-BAT | Yes | Controlled via P1/kWh |\n\n\u003e **Note:** Energy Socket (HWE-SKT) and Watermeter (HWE-WTR) only support API v1 and are not yet supported. Support will be added when HomeWizard releases API v2 for these devices.\n\n---\n\n## Configuration\n\nDevices are added via the **pairing mode**, not manually:\n\n1. Open the **Objects** tab in ioBroker Admin\n2. Set `homewizard.0.startPairing` to `true`\n3. **Press the physical button** on your HomeWizard device within 60 seconds\n4. The device is discovered automatically and appears in the adapter settings\n\nThe Admin UI shows all paired devices. You can update the IP address if a device gets a new one.\n\n---\n\n## State Tree\n\n```\nhomewizard.0.\n├── info.connection              — Overall connection status (bool)\n├── startPairing                 — Activate pairing mode (button)\n└── {productType}_{serial}/      — e.g. hwe-p1_5c2fafaabbcc\n    ├── info/\n    │   ├── productName          — Device name (string)\n    │   ├── productType          — Product type (string)\n    │   ├── firmware             — Firmware version (string)\n    │   ├── connected            — WebSocket connection status (bool)\n    │   ├── wifi_rssi_db         — WiFi signal strength (number, dB)\n    │   └── uptime_s             — Device uptime (number, s)\n    ├── power_w                  — Total power (number, W)\n    ├─�� power_l1_w .. l3_w       — Power per phase (number, W)\n    ├── voltage_l1_v .. l3_v     — Voltage per phase (number, V)\n    ├── current_l1_a .. l3_a     — Current per phase (number, A)\n    ├── frequency_hz             — Grid frequency (number, Hz)\n    ├── energy_import_kwh        — Total import (number, kWh)\n    ├── energy_import_t1..t4_kwh — Import per tariff (number, kWh)\n    ├── energy_export_kwh        — Total export (number, kWh)\n    ├── energy_export_t1..t4_kwh — Export per tariff (number, kWh)\n    ├── tariff                   — Active tariff (number)\n    ├── quality/                 — Power quality counters\n    │   ├── voltage_sag_l1..l3_count\n    │   ├── voltage_swell_l1..l3_count\n    │   ├── power_fail_count\n    │   └── long_power_fail_count\n    ├── external/                — External meters (gas, water, heat)\n    │   └── {type}_{id}/\n    │       ├── value            — Meter reading (number)\n    │       ���── unit             — Unit (string)\n    │       └── timestamp        — Last update (string)\n    ├── battery/                 — Battery control (if batteries connected)\n    │   ├── mode                 — zero / to_full / standby (string, R/W)\n    │   ├── permissions          — JSON array (string, R/W)\n    │   ├── battery_count        — Connected batteries (number)\n    │   ├── power_w              — Battery power (number, W)\n    │   ├── target_power_w       — Target power (number, W)\n    │   ├── max_consumption_w    — Max consumption (number, W)\n    │   └── max_production_w     — Max production (number, W)\n    └── system/                  — System settings\n        ├── cloud_enabled        — Cloud communication (bool, R/W)\n        ├── status_led_brightness_pct — LED brightness 0-100 (number, R/W)\n        ├── api_v1_enabled       — Legacy API v1 (bool, R/W)\n        ├── reboot               — Reboot device (button)\n        └── identify             — Blink LED (button)\n```\n\n\u003e States are created dynamically based on what the device reports. Not all devices have all states.\n\n---\n\n## Troubleshooting\n\n### Device not found during pairing\n- Make sure the device is on the same network/VLAN as the ioBroker server\n- Verify that **local API** is enabled in the HomeWizard app (Settings \u003e Meters \u003e your device \u003e Local API)\n- Check that multicast/mDNS traffic is not blocked by your router/firewall\n\n### WebSocket keeps disconnecting\n- Check WiFi signal strength (`info.wifi_rssi_db`) — consider moving the device closer to the router\n- The adapter automatically reconnects with exponential backoff and falls back to REST polling\n\n### Token invalid after factory reset\n- Remove the device from the adapter settings and pair again\n\n---\n\n## Changelog\n\n### 0.1.3 (2026-04-04)\n- Remove IP from config — devices discovered via mDNS at runtime\n- mDNS discovery runs permanently, automatic IP updates on DHCP changes\n\n### 0.1.2 (2026-04-04)\n- Bundle HomeWizard CA certificate for proper TLS validation\n- Replace `rejectUnauthorized: false` with CA-based cert chain validation\n\n### 0.1.1 (2026-04-04)\n- Add unit tests (129 tests)\n- Fix Dependabot config\n\n### 0.1.0 (2026-04-04)\n- Initial release\n- HomeWizard API v2 with Bearer Token authentication\n- WebSocket push for real-time energy data\n- mDNS device discovery\n- Hue-style multi-device pairing\n- Battery control and system settings\n- REST fallback when WebSocket unavailable\n\nOlder changelog: [CHANGELOG.md](CHANGELOG.md)\n\n---\n\n## Support\n\n- [ioBroker Forum](https://forum.iobroker.net/)\n- [GitHub Issues](https://github.com/krobipd/ioBroker.homewizard/issues)\n\n### Support Development\n\nThis adapter is free and open source. If you find it useful, consider buying me a coffee:\n\n[![Ko-fi](https://img.shields.io/badge/Ko--fi-Support-ff5e5b?style=for-the-badge\u0026logo=ko-fi)](https://ko-fi.com/krobipd)\n[![PayPal](https://img.shields.io/badge/Donate-PayPal-blue.svg?style=for-the-badge)](https://paypal.me/krobipd)\n\n---\n\n## License\n\nMIT License\n\nCopyright (c) 2026 krobi \u003ckrobi@power-dreams.com\u003e\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n---\n\n*Developed with assistance from Claude.ai*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkrobipd%2Fiobroker.homewizard","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkrobipd%2Fiobroker.homewizard","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkrobipd%2Fiobroker.homewizard/lists"}