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 🙏

© 2024 – Pkg Stats / Ryan Hefner

homebridge-http-opensprinkler-api

v1.0.0

Published

OpenSprinkler API Controller for Homebridge

Downloads

2

Readme

homebridge-http-opensprinkler-api Plugin

npm npm GitHub Workflow Status GitHub issues GitHub pull requests

homebridge-http-opensprinkler-api is a Homebridge plugin forked from homebridge-http-switch specifically to control an OpenSprinkler system using the firmware API from v2.0 on. The intention is to make it simpler for others wanting basic control of their OpenSprinkler by having this as a reference configuration that worked for me. Example configuration for switching of sprinkler stations ON/OFF and syncing of status is shown below.

To get more details about configuration look at the original homebridge-http-switch by Supereg.

Installation

First of all you need to have Homebridge installed. Refer to the repo for instructions.
Then run the following command to install homebridge-http-opensprinkler-api

sudo npm install -g homebridge-http-opensprinkler-api

Configuration:

The configuration settings below are tailored for the basic operation of OpenSprinkler. All API commands require the OpenSprinkler password to be supplied in the 'pw' parameter. The password should be MD5 hashed too (all lower-case). You can find online MD5 hash tools to convert plaintext password to MD5.

Note that I've over simplified the configuration settings below, there is much more advanced configuration you can make use of by referring to the original homebridge-http-switch.

Configuration used for OpenSprinkler:

  • name <string> required: Defines the name which is later displayed in HomeKit
  • onUrl <string> required: Should be set to the Manual Station Run API call with the enable bit set to '1'. Set sid to the station index (starting at 0) and t to the run duration. /cm?pw=xxx&sid=xxx&en=1&t=xxx
  • offUrl <string> required: Should be set to the Manual Station Run API call with the enable bit set to '0'. Set sid to the station index (starting at 0) to be stopped. /cm?pw=xxx&sid=xxx&en=0
  • statusUrl <string> required: Should be set to the url for the OpenSprinkler Get Status Status API call. /js?pw=xxx
  • statusPattern <string> required: Defines a regex pattern which is compared to the body of the statusUrl. Example configuration based on 8 station setup. Each accessory requires the regex pattern to be adjusted to match the station number. Refer to the OpenSprinkler API documentation. More on how to build regex patterns: https://www.w3schools.com/jsref/jsref_obj_regexp.asp
  • pullInterval <integer> optional: The property expects an interval in milliseconds in which the plugin pulls updates from your OpenSprinkler firmware.
{
    "accessories": [
        {
          "accessory": "OPENSPRINKLER-STATION",
          "name": "Sprinkler Stn01",
          
          "switchType": "stateful",
          
          "onUrl": "http://localhost:8080/cm?pw=xxx&sid=0&en=1&t=600",
          "offUrl": "http://localhost:8080/cm?pw=xxx&sid=0&en=0",
          
          "statusUrl": "http://192.168.1.10:8080/js?pw=xxx",
          "statusPattern": "{\"sn\":[1,[0-9]+,[0-9]+,[0-9]+,[0-9]+,[0-9]+,[0-9]+,[0-9]+],\"nstations\":8}",
          "pullInterval": "1000"
        },
        {
          "accessory": "OPENSPRINKLER-STATION",
          "name": "Sprinkler Stn02",
          
          "switchType": "stateful",
          
          "onUrl": "http://localhost:8080/cm?&pw=xxx&sid=1&en=1&t=600",
          "offUrl": "http://localhost:8080/cm?&pw=xxx&sid=1&en=0",
          
          "statusUrl": "http://192.168.1.10:8080/js?pw=xxx",
          "statusPattern": "{\"sn\":[[0-9]+,1,[0-9]+,[0-9]+,[0-9]+,[0-9]+,[0-9]+,[0-9]+],\"nstations\":8}",
          "pullInterval": "1000"
        }
    ]
}