Skip to content

Tested configurations

Daniel Caspi edited this page Jul 6, 2022 · 15 revisions

Bond and Bond Bridge Pro

Sample config.json, noting that you need to replace 1.2.3.4 with your Bond IP address, <deviceId> with your deviceId, and <BondToken> with your Bond token.

These values can be obtained from the Bond app, under Device settings for any individual shades.

Bond Configuration

{
  "accessory": "BlindsHTTP",
  "name": "Dining Room Shades",
  "up_url": {
    "url": "http://1.2.3.4/v2/devices/<deviceId>/actions/Open",
    "body": "{}",
    "headers": {
      "BOND-Token": "<BondToken>"
    },
    "method": "PUT"
  },
  "down_url": {
    "url": "http://1.2.3.4/v2/devices/<deviceId>/actions/Close",
    "body": "{}",
    "headers": {
      "BOND-Token": "<BondToken>"
    },
    "method": "PUT"
  },
  "stop_url": {
    "url": "http://1.2.3.4/v2/devices/<deviceId>/actions/Hold",
    "body": "{}",
    "headers": {
      "BOND-Token": "<BondToken>"
    },
    "method": "PUT"
  },
  "http_success_codes": [200, 204],
  "motion_time": 11000,
  "response_lag_ms": 1000,
  "trigger_stop_at_boundaries": false
}

Bond Bridge Pro Configuration

Bond Bridge Pro supports the SetPosition command, which allows for finer-tuned control. Note that Bond's convention for 0-100% is exactly opposite of HomeKit's convention, so JSONata was used to remap the values.

{
  "accessory": "BlindsHTTP",
  "name": "Dining Room Shades",
  "up_url": {
    "url": "http://1.2.3.4/v2/devices/36ecfde3/actions/SetPosition",
    "body": "{\"argument\": %%POS%%}",
    "headers": {
      "BOND-Token": "<BondToken>"
    },
    "method": "PUT"
  },
  "down_url": {
    "url": "http://1.2.3.4/v2/devices/36ecfde3/actions/SetPosition",
    "body": "{\"argument\": %%POS%%}",
    "headers": {
      "BOND-Token": "<BondToken>"
    },
    "method": "PUT"
  },
  "pos_url": {
    "url": "http://1.2.3.4/v2/devices/36ecfde3/state",
    "headers": {
      "BOND-Token": "<BondToken>"
    },
    "method": "GET"
  },
  "pos_poll_ms": 15000,
  "pos_jsonata": "$round( 100 - $number(position) )",
  "send_pos_jsonata": "$round( 100 - $number($) )",
  "stop_url": {
    "url": "http://1.2.3.4/v2/devices/36ecfde3/actions/Hold",
    "body": "{}",
    "headers": {
      "BOND-Token": "<BondToken>"
    },
    "method": "PUT"
  },
  "motion_time": 24000,
  "response_lag_ms": 1000,
  "http_success_codes": [200, 204]
}

Bond Bridge Groups

If you prefer instead, you can trigger Groups instead of individual devices. The groups need to be configured within the Bond app itself. To use a group, just replace the devices/<deviceId> in all of the URLs with groups/<groupId>.

E.g.,

  "up_url": {
    "url": "http://1.2.3.4/v2/groups/<groupId>/actions/Open",
    "body": "{}",
    "headers": {
      "BOND-Token": "<BondToken>"
    },
    "method": "PUT"
  },

This applies for the Pro configuration as well.

Troubleshooting

If you are having difficulty finding the settings, you can test your Bond device from the command line directly first (substituting your IP address, BOND-Token, and deviceId, e.g.:

    curl -H "BOND-Token: f074b61f628018fd" -i http://1.2.3.4/v2/devices/79135791/actions/Open -X PUT -d "{}"

Alternatively, sample shell script to retrieve the list of Bond deviceId's using the local API, replacing 1.2.3.4 with your Bond IP address, and <BondToken> with your Bond token:

#!/bin/sh

# CONFIGURE BOND_IP AND BOND_TOKEN TO MATCH YOUR CONFIGURATION
BOND_IP="1.2.3.4"
BOND_TOKEN="<BondToken>"

if ! [ -x "$(command -v jq)" ]; then
  echo 'Error: jq is not installed.' >&2
  exit 1
fi

BOND_DEVICES=$( curl -s "http://${BOND_IP}/v2/devices" -X GET -d "{\"_token\": \"${BOND_TOKEN}\"}" | jq -r 'keys[]' | grep -v '_' )

while read -r line; do
   DEVICE_DETAILS=$( curl -sH "BOND-Token: ${BOND_TOKEN}" "http://${BOND_IP}/v2/devices/${line}" | jq '.name' )
   echo "${DEVICE_DETAILS} ${line}"
done <<< "${BOND_DEVICES}"

Tasmota

Sample config.json, noting that you need to replace 1.2.3.4 with your Tasmota IP address. As described above, %%POS%% is used to supply the target position (0-100) to the plugin.

{
  "accessory": "BlindsHTTP",
  "name": "Window",
  "up_url": {
    "url": "http://1.2.3.4/cm?cmnd=ShutterPosition%20%%POS%%",
    "method": "GET"
  },
  "down_url": {
    "url": "http://1.2.3.4/cm?cmnd=ShutterPosition%20%%POS%%",
    "method": "GET"
  },
  "stop_url": {
    "url": "http://1.2.3.4/cm?cmnd=Power3%20ON",
    "method": "GET"
  },
  "http_success_codes": [200],
  "show_stop_button": true,
  "motion_time": 20000,
  "trigger_stop_at_boundaries": false
}

Louvolite One Touch (Neo Smart Blinds)

Louvolite's smart home system seems to be build on top of Neo Smart Blinds platform, so this configuration is likely to work with other manufacturers utilising Neo. You will need the following values for the config:

  • <controller_ip> is the IP address of Louvolite's One Touch (or other Neo-based hub), e.g. 1.2.3.4;
  • <controller_id> is the controller identifier, which you can find in the Neo app on the controller page, this is a long alphanumeric identifier;
  • <blind_code> you can also find in the Neo app at the bottom of the blind page — it looks something like 123.456-01.
{
  "accessory": "BlindsHTTP",
  "name": "Louvolite Blind",
  "up_url": {
    "url": "http://<controller_ip>:8838/neo/v1/transmit?id=<controller_id>&command=<blind_code>-up",
    "method": "GET"
  },
  "down_url": {
    "url": "http://<controller_ip>:8838/neo/v1/transmit?id=<controller_id>&command=<blind_code>-dn",
    "method": "GET"
  },
  "stop_url": {
    "url": "http://<controller_ip>:8838/neo/v1/transmit?id=<controller_id>&command=<blind_code>-sp",
    "method": "GET"
  }
}
Clone this wiki locally