npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

homebridge-netro

v2.0.3

Published

Control Netro Spark, Sprite, Pixie and Stream watering zones and read Whisperer soil data from Apple Home.

Readme

homebridge-netro

Control your Netro watering zones from the Home app and Siri, and read your Whisperer soil sensor. Talks to the Netro cloud API — no local gateway needed.

npm version npm downloads node license

☕ Buy me a coffee · Français

Supported hardware

| Device | Supported | Notes | |---|---|---| | Spark, Sprite, Pixie, Stream | Yes | One valve per zone, manual watering, live state | | Whisperer soil sensor | Yes | Soil moisture, temperature, sunlight, battery | | Lapland S1 lamp | No | The Netro public API has no lamp endpoint, in v1 or v2. Support was removed in 2.0.0 rather than pretending |

You need the serial number of each device, shown in the Netro app under Settings → Device → Serial. It doubles as the API key.

What appears in HomeKit

| Measurement | HomeKit service | Displayed unit | Notes | |---|---|---|---| | Watering zone | Valve (irrigation) | On / off, remaining time | One accessory per zone by default | | Zone watering mode | Custom characteristic on the valve | SMART, ASSISTANT, TIMER | Shown by Eve, Controller for HomeKit and Home+; ignored by the Home app | | Estimated soil moisture, per zone | Humidity sensor | % | Netro's own estimate, refreshed a few times a day. Published only for zones Netro has a value for | | Controller on / off | Switch, <name> Enabled | On / off | Enables or puts the controller in standby | | Suspend watering | Switch, <name> No Watering | Momentary | Netro offers no way to cancel a suspension, so the switch turns itself back off | | Controller status | Custom characteristic on the Enabled switch | ONLINE, WATERING, OFFLINE… | Third-party controllers only | | Whisperer soil moisture | Humidity sensor | % | | | Whisperer soil temperature | Temperature sensor | °C | | | Whisperer sunlight | Light sensor | lux | The API reports kilolux; HomeKit caps the value at 100 000 lux | | Whisperer battery | Battery | % | Reported low at 20 % or under |

Three limits worth knowing before you build automations on this:

  • Stopping one zone stops them all, and cancels pending manual runs. stop_water is device-wide in the Netro API and also drops the manual schedules still queued for the day. There is no per-zone stop. The plugin resets every zone of the controller together and says so in the log.
  • HomeKit caps a valve duration at 60 minutes. Longer runs have to be scheduled in the Netro app.
  • Netro allows 2000 API calls per device per day. The plugin tracks the remaining budget of each device separately, slows down below 200 calls left, and suspends the calls of a device that runs out — without silencing the others.

Requirements

  • Homebridge 1.8 or 2.x
  • Node.js 22 or 24
  • A Netro account with at least one device. The controller does not have to be online: the Netro cloud still serves its zones, so the plugin can be set up while it is unplugged. Only the watering commands need the device itself.

Install

From the Homebridge UI: Plugins → search homebridge-netro → Install.

From a terminal on an hb-service installation:

sudo hb-service add homebridge-netro

Configuration

Open Plugins → Netro → Settings. The plugin does nothing until at least one device is added.

Netro devices — one entry per device:

  • Serial number (API key) — the serial shown in the Netro app. No spaces.
  • Custom name — optional, used in the Homebridge log and for the controller accessory.
  • Device type — leave on Auto (detect). An irrigation controller is recognised by the zones it reports; a Whisperer by the soil sensor endpoint answering.
  • Expose only these zones — leave empty to expose every zone. One zone number per line, as numbered in the Netro app. A list that matches no zone is reported as an error and nothing is published or removed.
  • Manual watering duration for this device (minutes) — overrides the general default.

General settings:

  • Default watering duration (minutes) — 1 to 60, used when a device defines nothing.
  • Status polling interval (seconds) — 300 to 3600, default 600. At 600 s one device uses about 144 of its 2000 daily calls.
  • Suspension length (days) — how long the No Watering switch suspends watering.
  • Remove accessories for zones that no longer exist — on by default. A zone is only removed after the device has reported it missing twice in a row, and never while the device is unreachable.
  • Accessory layoutone accessory per zone (default) or one irrigation accessory grouping every zone. The grouped layout uses different HomeKit identifiers, so it has to be added to the Home app again; the per-zone accessories are kept so that switching back restores them.
  • Netro API version — v1 (device serial) or v2 (account API key). Some recent Netro devices only answer on v2. Untested by the author: keep v1 unless v1 fails.
  • Account API key — only shown when the version is v2. Generated on netrohome.com under Account → API Key.
  • Platform name — the name used for this platform in the Homebridge log.

Equivalent config.json:

{
  "platforms": [
    {
      "platform": "Netro",
      "name": "Netro",
      "devices": [
        {
          "serial": "0011aabbccdd",
          "name": "Garden",
          "type": "auto",
          "includeZones": [1, 2, 3],
          "defaultDurationMinutes": 10
        }
      ],
      "defaultDurationMinutes": 5,
      "pollInterval": 600,
      "suspendDays": 1,
      "autoPruneAccessories": true,
      "layout": "legacy",
      "apiVersion": "v1"
    }
  ]
}

Troubleshooting

| Symptom | What to look for in the log | |---|---| | No valve appears | [Discover] … reported no usable zone or [Config] … "Expose only these zones" … matches none of the — clear the zone filter and check the serial | | Everything shows Not responding | [Netro] … the controller reports status OFFLINE — the controller lost its connection to the Netro cloud, this is not a plugin problem | | Netro error 1 … Invalid key | The serial is wrong, or it belongs to another account | | Netro error 3 / [Quota] Netro daily quota exceeded | Too many calls today. Raise Status polling interval; the quota resets at midnight UTC | | A valve stays on after you switch it off | [Watering] … stop_water FAILED after 3 attempts — this is deliberate: the water may still be running, so the plugin refuses to show the valve as closed | | An accessory you deleted comes back | It is still reported by the device. Remove the zone in the Netro app, or filter it out with Expose only these zones |

Changelog

See CHANGELOG.md and the GitHub releases.

Licence and support

MIT — see LICENSE. Made by Régis Jehl (mashgundash). Bugs and ideas: GitHub issues. If it saves you time: ☕ Buy me a coffee.