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-mqtt-blinds

v1.0.5

Published

A homebridge plugin to control blinds via mqtt

Downloads

17

Readme

homebridge-mqtt-blinds

This is a homebridge plugin to control blinds/shutters via mqtt. :sun_with_face::new_moon_with_face: It can be used with DIY systems or retrofit solutions like Shelly2.

Installation

If you are new to Homebridge, please first read the Homebridge documentation. To install the plugin use:

sudo npm install homebridge-mqtt-blinds -g

Configuration

config.json example (generic)

{
    "bridge": {
        "name": "homebridge",
        "username": "CC:22:3D:E3:CE:30",
        "port": 51826,
        "pin": "031-45-154"
    },
    "accessories": [{
      "accessory": "BlindsMQTT",
      "name": "Living Room Blind",
      "manufacturer": "DIY",
      "model": "Prototype",
      "serialNumberMAC": "01.01.01.01",
      "mqttBrokerUrl": "mqtt://192.168.0.10:1883",
      "mqttUsername": "username",
      "mqttPassword": "password",
      "mqttMainTopic": "myBlind",
      "mqttSetTopics": {
        "targetPosition": "SET/targetPosition"
      },
      "mqttGetTopics": {
        "currentPosition": "GET/currentPosition",
        "positionState": "GET/positionState",
        "targetPosition": "GET/targetPosition"
      },
      "mqttPositionStateValue": ["0", "1", "2"],
      "useManualControls": false
    }
    ],

    "platforms": [
    ]
}

config.json example (for shelly2 devices)

{
    "bridge": {
        "name": "Homebridge",
        "username": "CC:22:3D:E3:CE:30",
        "port": 51826,
        "pin": "031-45-154"
    },
    "accessories": [{
      "accessory": "BlindsMQTT",
      "name": "Living Room Blind",
      "manufacturer": "Allterco",
      "model": "Shelly2",
      "serialNumberMAC": "01.01.01.01",
      "mqttBrokerUrl": "mqtt://192.168.0.10:1883",
      "mqttUsername": "username",
      "mqttPassword": "password",
      "mqttMainTopic": "shellies/shellyswitch-<YOUR_SHELLYID>/roller",
      "mqttSetTopics": {
        "targetPosition": "0/command/pos"
      },
      "mqttGetTopics": {
        "currentPosition": "0/pos",
        "positionState": "0",
        "targetPosition": "0/dummy"
      },
      "mqttPositionStateValues": ["open", "close", "stop"],
      "useManualControls": true
    }
    ],

    "platforms": [
    ]
}

Basic

| Variable | Description | Example | | --- | --- | --- | | accessory | Name of the accessory plugin. | BlindsMQTT | | name | Name for your blinds. | Living Room Blind | | manufacturer | Manufacturer of your blind | DIY | | model | Model of your blind. | Prototype | | serialNumberMAC | Serial number of your blind. | 01.01.01.01 |

MQTT

Basics

| Variable | Description | Example | | --- | --- | --- | | mqttBrokerUrl| IP Adress of your MQTT Broker | mqtt://192.168.0.10:1883 | | mqttUsername | Your MQTT Broker username | username | | mqttPassword | Your MQTT Broker password | password| | mqttMainTopic | The main topic of your blind | myBlind |

Get Topics

Use these variables to set topics to inform the plugin about the current status of your blind. The plugin subscribes these topics.

| Variable | Description | Example | | --- | --- | --- | | currentPosition | Topic to get the current position of your blind. The value has to be between 0-100. | GET/currentPosition | | positionState | Topic to get the current position state of your blind. Custom PositionStates messages from your device can be configured with mqttPositionStateValues. | GET/positionState | | targetPosition | Topic to get the target position of your blind. The value has to be between 0-100. | GET/targetPosition |

Set Topics

Use these variables to define the topic that the plugin uses to control your blind. The plugin will publish on these topics.

| Variable | Description | Example | | --- | --- | --- | | targetPosition | Topic to set the target position of your blind. The value has to be between 0-100. | SET/targetPosition |

Position State Values

Use this variable to configure custom payloads for positionState messages for your device.

| Variable | Description | Example | | --- | --- | --- | | mqttPositionStateValues | ["DECREASEING_STATE", "INCREASING_STATE", "STOPPED_STATE"] | ["open", "close", "stop"] or ["0", "1", "2"] |

Manual Controls

Smart Shutters are usually used in parallel with an automation and with manual controls (wall mounted switches). Set "useManualControls"=true if you have manual controls in your setup. This will force to plugin to "simulate" a target position when the manual controls are in use and no real target position is known.

Usage

Build up your blind. Use MQTT to communicate with homebridge. To explain how it works i will use the values of the examples above. For example, if you use the home app to open your blind 100%, the plugin will publish 100 on the topic myBlind/SET/targetPosition. The blind should send the current position on the topic myBlind/GET/currentPosition, the position state on myBlind/GET/positionState an the target position on myBlind/GET/currentPosition.


Have fun with this plugin. Let me know if you find a issue.