-
-
Notifications
You must be signed in to change notification settings - Fork 26
Tested configurations
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.
{
"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 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]
}
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.
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}"
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
}
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, composed of 20+ characters, which you can find in the Neo app on the controller page, this is a long alphanumeric identifier; -
<command>
Expression containing group_id, channel_id and action syntax. Syntax:ID1.ID2-CHANNEL-ACTION!MOTORCODE
(16 characters). You can also find in the Neo app at the bottom of the blind page — it looks something like 123.456-01.
Earlier versions of the API may not require the
!MOTORCODE
.
Note: the
!
may need to be URL-encoded as%21
, e.g.!k2
becomes%21k2
e.g., http://10.0.10.185:8838/neo/v1/transmit?command=041.240-03-up%21k2&id=xxxxxxxxxxxxxxxxxxxxxx
ID1
: controller byte 1, from integer “000” to “255”.
: address separatorID2
: controller byte 2, from integer “000” to “255”-
: channel separatorCHANNEL
: channel, individual channel from integer “01” to “14”, use channel “15” for a group-
: command separatorACTION
: action, as follows
- "up” : blinds move UP
- “dn” : blinds move DOWN
- “sp” : blinds STOP moving
- “gp” : go to favourite position
- “mu” : micro-step up
- “md” : micro-step down
- “XX” : go to a specific position from 01 to 99. ONLY available for use with motors which motor code is “no”.
Options only available when using motor code = “tb”, TopDown-BottomUp blinds:
- "op” : open shades, move both rails UP
- "cl” : close shades, move top rail UP and lower rail down
- "u3” : move both rails UP
- "u2” : move lower rail UP
- "u3” : move both rails UP
- “d2” : blinds lower rail DOWN
- “d3” : blinds both rails DOWN
- “o2” : micro-step lower rail UP
- “c2” : micro-step lower rail DOWN
!
: exclamation symbol, command separator preceding the motor codeMOTORCODE
: code designation to indicate the motor protocol to be transmitted
- “bf” : standard Bofu motor
- “vb” : vertical Bofu motor
- “tb” : top-down/bottom-up Bofu motor
- “no” : NEO motor
- “rx” : Raex motor
- “nc” : Nice motor
- “k1” : standard A-OK motor
- “k2” : version 2 A-OK motor (louvolite exclusive)
- “dy” : standard unidirectional Dooya motor
- “by” : special code compatible with both Bofu and Dooya standard motors
- “wt” : standard Wistar and Alpha motor
{
"accessory": "BlindsHTTP",
"name": "Louvolite Blind",
"up_url": {
"url": "http://<controller_ip>:8838/neo/v1/transmit?command=<blind_code>-up&id=<controller_id>",
"method": "GET"
},
"down_url": {
"url": "http://<controller_ip>:8838/neo/v1/transmit?command=<blind_code>-dn&id=<controller_id>",
"method": "GET"
},
"stop_url": {
"url": "http://<controller_ip>:8838/neo/v1/transmit?command=<blind_code>-sp&id=<controller_id>",
"method": "GET"
}
}
- In some instances, the ordering of the
id
andcommand
GET parameters appear to be critical, otherwise it crashes the Neo box. - HTTP 400 = Command not found or not valid
- HTTP 401 = Device_ID was not found or not valid
- HTTP 404 = “/neo/v1/transmit” not found or not valid