Skip to content

Verification Request: homebridge-stagg-ekg-pro #1307

Closed

Description

@tomtastic

Plugin Name

homebridge-stagg-ekg-pro

Link To GitHub Repo

https://github.com/tomtastic/homebridge-stagg-ekg-pro

Plugin Icon (Optional)

Image

The plugin does not offer the same nor less functionality than that of any existing verified plugin.

🟢 Yes

The plugin successfully installs and does not start unless it is configured.

🟢 Yes

The plugin does not require the user to run Homebridge in a TTY or with non-standard startup parameters, even for initial configuration.

🟢 Yes

The plugin does not contain any analytics or calls that enable you to track the user.

🟢 Yes

If the plugin needs to write files to disk (cache, keys, etc.), it stores them inside the Homebridge storage directory.

🟢 Yes

The plugin does not throw unhandled exceptions, the plugin must catch and log its own errors.

🟢 Yes

More Information

This plugin supports the Fellow Stagg EKG Pro (Wi-Fi model, HTTP API).

The already-verified homebridge-stagg-ekg-plus targets the Stagg EKG+ — a different device, controlled over BLE with a companion server — so there is no functionality overlap.

Supports the current firmware 1.2.26 (GET /temp returning JSON) as well as older firmware (legacy state CLI).

Updated since the request was opened, when the automated checks ran against v1.2.0; the current release is v1.2.5:

  • engines.homebridge is ^1.6.0 || ^2.0.0, verified live against Homebridge 1.6.0, 1.6.1 and 2.4.0.
  • engines.node is ^22.12.0 || ^24.0.0 || ^26.0.0, and CI runs Node 22, 24 and 26 with --engine-strict so the two cannot drift apart.
  • MIT licensed, zero runtime dependencies, no preinstall/install/postinstall scripts, no analytics or telemetry (every outbound request is a GET to the kettle's own LAN address), no writes to disk at all, and no TTY or non-standard startup parameters.
  • CI includes a compatibility job that boots real Homebridge against the checkout and asserts the platform registers, the bridge publishes, and an unreachable kettle degrades into log lines with no TypeError or unhandled rejection: https://github.com/tomtastic/homebridge-stagg-ekg-pro/actions/runs/40682892324

Activity

  1. github-actions commented on Oct 26, 2026

    @github-actions
    Contributor

    🟢 Passed Checks

    • Installation: successfully installed
    • Package JSON: homepage exists
    • Package JSON: bugs.url exists and seems a valid URL
    • Package JSON: keywords exist and contain 'homebridge-plugin'
    • Package JSON: keywords declare the supported transports ('supports-hap' and/or 'supports-matter')
    • Package JSON: 'preinstall' in scripts is not present
    • Package JSON: 'install' in scripts is not present
    • Package JSON: 'postinstall' in scripts is not present
    • Package JSON: engines.node property is compatible with Node 22
    • Package JSON: engines.node property is compatible with Node 24
    • Package JSON: engines.homebridge property is compatible with Homebridge 2.4.0
    • Package JSON: initializer function found
    • NPM Package: has not been deprecated
    • GitHub Repo: version in package.json (v1.2.0) matches NPM version (v1.2.0)
    • Config Schema JSON: exists and is valid JSON
    • Config Schema JSON: contains valid JSON Schema
    • Config Schema JSON: schema has valid type property
    • Config Schema JSON: schema has valid properties for object type
    • Config Schema JSON: contains a valid pluginAlias
    • Config Schema JSON: pluginAlias matches the platform/accessory registered in code
    • Config Schema JSON: the pluginType is set to 'platform'
    • Config Schema JSON: contains a name schema property
    • Dependencies: homebridge is not declared as a runtime/peer/bundled dependency
    • Dependencies: hap-nodejs is not declared as a runtime/peer/bundled dependency
    • Security: no known vulnerabilities in dependencies
    • Security: no unsafe code patterns detected
    • Security: no privilege escalation attempts detected
    • Runtime: homebridge installed successfully
    • Runtime: no config - homebridge should start without plugin configuration and plugin should not load
    • Runtime: platform only - plugin should start with just platform property
    • Runtime: full config - plugin should start with comprehensive configuration
    • Runtime: network resilience - plugin should handle network failures without crashing
    • Runtime: plugin shuts down cleanly within 12s of SIGTERM
    • Runtime: plugin restarts cleanly without port conflicts
    • GitHub Repo: repository is public
    • GitHub Repo: repository is not archived
    • GitHub Repo: issues are enabled
    • GitHub Repo: contains releases

    ℹ️ Check Details

    • These checks were run against v1.2.0 of the plugin.
    • Link to the run workflow: visit →.
    • External HTTP requests detected:
      • 📡 http://192.168.1.32/cli
        Methods: GET | Count: 6 | Scenarios: full config, network resilience
      • 📡 http://192.168.1.32/temp
        Methods: GET | Count: 6 | Scenarios: full config, network resilience

    📋 Next Steps

    All checks passed successfully, nice work! Your plugin and/or icon will now be manually reviewed by the Homebridge team.

  2. tomtastic commented on Oct 28, 2026

    @tomtastic
    Author

    Re-running the checks against the current release: v1.2.0 → v1.2.5 (npm latest and the default branch are both at 1.2.5).

    What changed since v1.2.0

    • Homebridge 2.x readiness. engines.homebridge is now ^1.6.0 || ^2.0.0 and engines.node is ^22.12.0 || ^24.0.0 || ^26.0.0. Verified live against Homebridge 1.6.0, 1.6.1 and 2.4.0.
    • v1.2.4 removed a genuine Homebridge 2.x incompatibility. Service#getValue does not exist in the HAP implementation bundled with Homebridge 2.x, so temperature polls threw TypeError: service.getValue is not a function immediately after every successful /temp read. The plugin now tracks the last heating state it published instead of reading it back from the service, and recognises the kettle's resting states (S_Standby et al) so an idle kettle stops hitting /temp on the fast cadence.
    • Error handling. A rejected HomeKit publish can no longer abort the remainder of a poll; unusable reads retry with a bounded budget and then rest at the idle interval, and each failure streak is logged once as a warning rather than only at debug level.
    • v1.2.2–v1.2.3 fixed TargetTemperature drifting to the kettle's quantised setpoint after a HomeKit write (the kettle stores whole degrees Fahrenheit) and a first-poll race behind the initial clock sync, plus an optional per-kettle timeZone.

    Test evidence

    • 95 tests on the built-in node:test runner, across Node 22, 24 and 26.
    • A compat job boots real Homebridge against the checkout (-U <fresh storage dir> -P <checkout> -Q) on Homebridge 1.6.0, latest 1.x and latest 2.x across Node 22/24/26, asserting the plugin loads, StaggKettle registers, the bridge publishes on its port, and an unreachable kettle degrades into log lines with no TypeError, ReferenceError or unhandled rejection: https://github.com/tomtastic/homebridge-stagg-ekg-pro/actions/runs/40682892324
    • Behaviour against firmware 1.2.26 was measured on the wire with a real kettle and recorded in the README, including the poll cadence across the boil and keep-warm windows.

    Unchanged, for clarity

    • MIT, zero runtime dependencies, no install scripts, no analytics or telemetry (every outbound request is a GET to the kettle's own LAN address), nothing written to disk, and no TTY or non-standard startup flags.
    • The repository's package.json carries the scoped name @tomtastic/homebridge-stagg-ekg-pro; the package published to npmjs is the unscoped homebridge-stagg-ekg-pro this request is for — the scope is only re-applied for GitHub Packages.

    /check

  3. github-actions commented on Oct 28, 2026

    @github-actions
    Contributor

    🟢 Passed Checks

    • Installation: successfully installed
    • Package JSON: homepage exists
    • Package JSON: bugs.url exists and seems a valid URL
    • Package JSON: keywords exist and contain 'homebridge-plugin'
    • Package JSON: keywords declare the supported transports ('supports-hap' and/or 'supports-matter')
    • Package JSON: 'preinstall' in scripts is not present
    • Package JSON: 'install' in scripts is not present
    • Package JSON: 'postinstall' in scripts is not present
    • Package JSON: engines.node property is compatible with Node 22
    • Package JSON: engines.node property is compatible with Node 24
    • Package JSON: engines.homebridge property is compatible with Homebridge 2.4.0
    • Package JSON: initializer function found
    • NPM Package: has not been deprecated
    • GitHub Repo: version in package.json (v1.2.5) matches NPM version (v1.2.5)
    • Config Schema JSON: exists and is valid JSON
    • Config Schema JSON: contains valid JSON Schema
    • Config Schema JSON: schema has valid type property
    • Config Schema JSON: schema has valid properties for object type
    • Config Schema JSON: contains a valid pluginAlias
    • Config Schema JSON: pluginAlias matches the platform/accessory registered in code
    • Config Schema JSON: the pluginType is set to 'platform'
    • Config Schema JSON: contains a name schema property
    • Dependencies: homebridge is not declared as a runtime/peer/bundled dependency
    • Dependencies: hap-nodejs is not declared as a runtime/peer/bundled dependency
    • Security: no known vulnerabilities in dependencies
    • Security: no unsafe code patterns detected
    • Security: no privilege escalation attempts detected
    • Runtime: homebridge installed successfully
    • Runtime: no config - homebridge should start without plugin configuration and plugin should not load
    • Runtime: platform only - plugin should start with just platform property
    • Runtime: full config - plugin should start with comprehensive configuration
    • Runtime: network resilience - plugin should handle network failures without crashing
    • Runtime: plugin shuts down cleanly within 12s of SIGTERM
    • Runtime: plugin restarts cleanly without port conflicts
    • GitHub Repo: repository is public
    • GitHub Repo: repository is not archived
    • GitHub Repo: issues are enabled
    • GitHub Repo: contains releases

    ℹ️ Check Details

    • These checks were run against v1.2.5 of the plugin.
    • Link to the run workflow: visit →.
    • External HTTP requests detected:
      • 📡 http://192.168.1.32/cli
        Methods: GET | Count: 6 | Scenarios: full config, network resilience
      • 📡 http://192.168.1.32/temp
        Methods: GET | Count: 6 | Scenarios: full config, network resilience

    📋 Next Steps

    All checks passed successfully, nice work! Your plugin and/or icon will now be manually reviewed by the Homebridge team.

  4. added a commit that references this issue on Oct 28, 2026
  5. added
    verifieduse when a plugin meets the criteria - adds the verified badge text
    on Oct 28, 2026
  6. github-actions commented on Oct 28, 2026

    @github-actions
    Contributor

    Congratulations! Your plugin has been verified!

    You can now add one of the Verified by Homebridge badges to your plugin's README:

    verified-by-homebridge

    [![verified-by-homebridge](https://img.shields.io/badge/_-verified-blueviolet?color=%23491F59&style=flat&logoColor=%23FFFFFF&logo=homebridge)](https://github.com/homebridge/homebridge/wiki/Verified-Plugins)
    

    verified-by-homebridge

    [![verified-by-homebridge](https://img.shields.io/badge/homebridge-verified-blueviolet?color=%23491F59&style=flat)](https://github.com/homebridge/homebridge/wiki/Verified-Plugins)
    

    verified-by-homebridge

    [![verified-by-homebridge](https://img.shields.io/badge/homebridge-verified-blueviolet?color=%23491F59&style=for-the-badge&logoColor=%23FFFFFF&logo=homebridge)](https://github.com/homebridge/homebridge/wiki/Verified-Plugins)
    

    Your plugin is now also eligible to display a ❤️ Donate button on its tile in the Homebridge UI. See https://github.com/homebridge/homebridge/wiki/Donation-Links for instructions.

    Interested in getting a @homebridge-plugins/ scope for your plugin? See our Homebridge Scoped Plugins program.

    If for any reason in the future you can no longer maintain your plugin, please consider transferring it to our Homebridge Plugins organization.

    Don't forget to join the official Homebridge Discord server, where plugin developers can get tips and advice from other developers and the Homebridge project team in the #plugin-development channel!

    As a verified plugin, you can request a channel in the Discord server to discuss your plugin with users and other developers. Just ask in the #plugin-development channel.

    Thank you for your contribution to the Homebridge community.

    • The Homebridge Team
  7. bwp91 commented on Oct 28, 2026

    @bwp91
    Contributor

    Hi @tomtastic, thanks for submitting this, and for re-running the checks against 1.2.5 with such a clear write-up of what changed. Everything looks good, so it's now verified, and I've added your kettle icon too, which should start showing in the Homebridge UI within the hour. Thanks for contributing to Homebridge!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    request-verificationverifieduse when a plugin meets the criteria - adds the verified badge text

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions