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

@cecnic1989/homebridge-roborock-mower

v0.4.3

Published

Homebridge plugin for Roborock RockMow robot lawn mowers

Readme

homebridge-roborock-mower

npm version Build and Lint

Homebridge plugin for Roborock RockMow robot lawn mowers. Exposes your mower to Apple Home.

Early development. Status sensors and battery work (tested on a RockMow Z1 / X120H). Controls are next.

Features

  • State sensors for Home-app automations: Docked, Leaving, Mowing, Returning (each a contact sensor, live via Roborock's cloud push)

  • Needs Attention sensor for Home-app notifications when the mower is stuck, faulted, or was stopped with its button

  • Battery level, charging state, low-battery flag

  • Fault indicator on every sensor when the mower reports an error

  • Mow and Pause switches (optional) to start, dock, pause and resume from Home automations and Siri

Automations

Each state is a contact sensor so the Home app can trigger on it ("A Sensor Detects Something"):

| Sensor | Opens when | Closes when | |---|---|---| | Docked | it leaves the dock | it is back on the dock (charging or charged) | | Leaving | a job starts (initializing / undocking) | it begins cutting | | Mowing | it starts cutting or driving to a zone | cutting stops | | Returning | it heads back to the dock | it reaches the dock | | Needs Attention | it reports an error, a fault, or its STOP button was pressed | the condition clears |

Example for a dock inside a garage: Docked opens → open garage, Mowing opens → close garage, Returning opens → open garage, Docked closes → close garage. Prefer Docked opens over Leaving opens for the departure trigger: both fire on the same push, but Docked can only open once per trip. The mower starts driving ~1.5 s after that push, so if the door needs longer, add a time-based automation on the mowing schedule as well.

Controls

Off by default. Turn on Control switches (Mow, Pause) in the plugin settings and restart Homebridge to add two switches:

| Switch | Turn on | Turn off | |---|---|---| | Mow | start a full-lawn mow | send it back to the dock | | Pause | pause the current job | resume it |

The switches always show the mower's real state, so a job started from the Roborock app reads as Mow on, and a finished job reads off. A paused or rain-delayed job still counts as Mow on — turning Mow off then cancels it and docks the mower. A command that the mower rejects (or that times out) shows as an error in Home and the switch keeps its true value.

Siri: "turn on RockMow Mow", "turn on RockMow Pause". Automations: "when everyone leaves → turn on Mow", "when rain is detected → turn off Mow".

Scenes: "turn everything on" (a scene, or Siri) flips every switch in the room — including Mow. Keep the switches out of scenes, or leave controls off if you use all-on scenes.

Notifications: no automation needed — in the Home app open the Needs Attention sensor → Status and Notifications → turn on Notify when opens. It opens on the push that reports the problem (no debounce). Pauses made from the app do not trigger it.

Accessories take the name you gave the mower in the Roborock app (renames follow on the next sync); names you set in the Home app are kept.

Sensors flip only after a state holds for sensorDebounceSeconds (default 3 s); faults and battery update immediately. While the cloud connection is down, sensors show as inactive rather than stale.

Requirements

  • Homebridge ^1.8.0 or ^2.0.0-beta.0
  • Node.js ^20.19.0 || ^22.10.0 || ^24.0.0
  • A Roborock account (same credentials as the Roborock mobile app)

Installation

Homebridge UI: Plugins → search @cecnic1989/homebridge-roborock-mower.

Configuration

  1. Homebridge UI → PluginsRoborock MowerSettings.
  2. Enter your Roborock account email and press Send code.
  3. Enter the verification code Roborock emails you and press Verify & save.
  4. Restart Homebridge.

Sign-in stores the cloud token in <homebridge storage>/roborock-mower/session.json (owner-only permissions); treat it like a password. Use Sign out in the settings page to remove it.

Optional fields:

| Field | Default | Description | |---|---|---| | exposeDocked, exposeLeaving, exposeMowing, exposeReturning | true | Which state sensors to create | | exposeAttention | true | Needs Attention sensor (errors, faults, emergency stop) | | exposeControls | false | Mow and Pause switches | | exposeBattery | true | Battery service | | faultIndicator | true | Set StatusFault on the sensors when the mower reports an error | | sensorDebounceSeconds | 3 | How long a state must hold before its sensor flips (0–60) | | pollInterval | 3600 | Cloud re-sync interval in seconds (min 900). Live state comes by push; Roborock rate-limits this call, so keep it high |

Support

If your mower isn't picked up, or a control doesn't behave correctly on it, open an issue with your model number and Homebridge debug logs (homebridge -D).

Development

See CONTRIBUTING.md for setup, local testing, and design notes.

License

Apache-2.0