Need to hold/repeat RF signal for a few seconds

Welcome, @may4ield ! I’ll begin by asking some very beginner questions to get you started, since right now there isn’t a quicker way to change the signal repetition number.

Are you trying to run CURL from a Windows, Apple, or other kind of computer?

If Windows:
I believe CURL is not always default installed in some earlier versions/builds of Windows, but we can get it added no problem.
Once enabled, CURL requires you to open a CMD.EXE window in which you will type all the CURL commands.

Yeah windows 10, it looked like it was there but when I clicked on it nothing happens. So I installed it again from the website. Again when I unzip the file and click on the exe nothing happens. Am I supposed to open it another way. I saw a thing in my menu called command prompt that opens up and looks the same as when people are demonstrating curl on YouTube.

Yes, that CMD.EXE is where you’ll type all the things like in post # 4 I think it is, where Merck shared the video.

Since you mentioned installing via the zip file method (downloading and extracting), you will need to do one of two things:
Either put the curl.exe you extracted in your C:\windows\system32 folder (you’ll likely need admin rights to do that).
Or, you’ll have to change the working directory of CMD.EXE to wherever you extracted the curl.exe file.
For instance, if you extracted it to C:\temp, before you run any curl.exe commands in CMD.EXE, you will have to open CMD.EXE and type CD C:\temp\ (then press enter key).

Ok thanks, I’ll give this a go tomorrow. Do you know exactly what code I need to type in to get the signal to repeat more?

Some of the pieces of the command are unique to your Bridge (the BOND-Token) and devices (device ID), but we all try to help one another and we’ll get you through it.

Thanks guys for all the help. Didnt think I had it in me but got it all done. Cant test it out till the morning cos the wife and kids are asleep in the rooms with blinds but from all accounts the patch worked.

1 Like

Interesting if I ask the BOND for the TOKEN via CURL I get 64b4555a

curl -i http://10.10.101.65/v2/token

HTTP/1.1 200 OK

Content-Length: 52

Content-Type: application/json; charset=utf-8

{"locked":1,"pin_attempts_left":10,"_":"64b4555a"}

Using it

curl -iH "Bond-Token: 64b4555a" http://10.10.101.65/v2/devices/

HTTP/1.1 401 Unauthorized

Content-Length: 0
type or paste code here

I go to the App, and under advance find the API Token of 5934354e829ffa20

curl -iH "Bond-Token: 5934354e829ffa20" http://10.10.101.65/v2/devices/
HTTP/1.1 200 OK
Content-Length: 46
Content-Type: application/json; charset=utf-8

{"_":"09caab61","77f9d97d":{"_":"8e19e178"}}

proper response.

any thoughts on why the asking for the token respons with the Wrong Token ?

Edit, I am assuming from my reading that the

“locked”:1

is the issue, you need to issue the command within 10 min.

rebooting, and re-executing

curl -i http://10.10.101.65/v2/token

HTTP/1.1 200 OK

Content-Length: 198

Content-Type: application/json; charset=utf-8

{"locked":0,"pin_attempts_left":10,"token":"5934354e829ffa20","nonce":"963036<<snip>>sable":false,"_":"f469dfa7"}

Your edit is correct. The token is only validly returned during the first 10 minutes after boot.

(note: you may want to mask your token in your post, just for security’s sake)

Thank You - ya the Token is an interesting security

Working through POSTMAN calls, to see if I can Python this.

After drilling into /v2/devices/77f9d97d

{
    "name": "Fireplace",
    "type": "FP",
    "location": "My Room",
    "actions": [
        "TurnFpFanOn",
        "TurnOff",
        "TurnLightOff",
        "TurnFpFanOff",
        "TurnOn",
        "TurnLightOn",
        "IncreaseFlame",
        "TogglePower",
        "Stop",
        "ToggleLight",
        "DecreaseFlame",
        "SetFlame",
        "SetFpFan"
    ],
    "_": "8e19e178",
    "commands": {
        "_": "cd31f3b8"
    },
    "state": {
        "_": "22efe7af"
    },
    "properties": {
        "_": "c5834763"
    },
    "skeds": {
        "_": "f6d69ea5"
    }
}

I can then pull the commands /v2/devices/77f9d97d/commands

{
    "_": "cd31f3b8",
    "11dc1acf": {
        "_": "e396a56c"
    },
    "53157df9": {
        "_": "dff3a9b7"
    },
    "1350a1df": {
        "_": "c0a15c22"
    },
    "5e9136dc": {
        "_": "433e3f5b"
    },
    "6d0eacd3": {
        "_": "cc680753"
    },
    "7d8fbc76": {
        "_": "f3c49fea"
    },
    "5777bc38": {
        "_": "faa728f1"
    },
    "4c46a778": {
        "_": "3ad69a1d"
    }
}

how do I map / link a given command to the function on the remote?

In the above I want TurnLightOn to be a repetition of 5, how do I map the function TurnLightOn to the command key? Or put another way is there a mapping of Commands to Actions

Reps is in the Signal portion of the Commands node.

This video Merck did at the top of the thread is a superspeed run of how to modify the repetitions count.
(You shouldn’t have to worry about which Action calls which Command, and I don’t believe you can change those; however, if you’re curious anyways, when you look at each Action, it should say which Command it does.)

In the video there is only one function so to modify that function (single) it flowed great. I have 8 commands which I would assume map to a button on the remote.

“IncreaseFlame”, verse “TurnFpFanOn”,

each would have a command, and I need to change one, not the other. I am not looking to change Action to command, just trying to figure out which command is which action.

Thank You for the reply, I am still digging.

/v2/devices/77f9d97d/commands/11dc1acf/signal

"data": "FFFFFFFFFFFE000000003FFFFFFF800000000FFFFFFFE00003FFF000000003FFFFFFFC0000FFFE00003FFF000000003FFFFFFFC000003FFFFFFFFFFF800000000FFFFFFFE000000003FFF00003FFFFFFFC00000000FFFF00003FFF80003FFFC0000FFFC0000FFFFFFFE00000FFFFFFFFFFFE000000003FFF80003FFF80000FFFC0000FFFE00007FFF00003FFFFFFFC00000000FFFE00007FFFFFFF00003F.....

/v2/devices/77f9d97d/commands/53157df9/signal

"data": "FFFFFFFFFFFF000000003FFFFFFFC00000000FFFFFFFF00003FFF800000000FFFFFFFE00003FFF00003FFF800000000FFFFFFFE000003FFFFFFFFFFFC00000000FFFFFFFF000000003FFFC0000FFFFFFFE000000003FFF00003FFF80000FFFC0000FFFE00003FFFFFFF00000FFFFFFFFFFFF000000003FFFC0000FFFC0000FFFE00003FFF00003FFF80000FFFFFFFE000000003FFF00003FFFFFFF80000FFFC00003FFFFFFFFFFFC0000000....

which one do I change the REP on?

if you use just this, with each Command and without the ‘Signal’ endpoint, you will see in the output a list of nodes and values that include the Name, Action, Argument, Button Type, Category Name, Feedback, Icon, etc (as well as Signal and Tx).

So the Action you see under each Command tells you the mapping of what is being called.

Thank You

Perfect.

1 Like

What is the maximum number of reps that the machine will allow?
Can there be a time set between sending the commands?
Can I string 2 commands together to form a 3rd. ie: On x 20, Off x 1 = Preset

Thousands. Rather, the limit is 20 seconds of transmission.

Short answer, no.

Long answer: Sort of. You can edit the signal data to add zero padding at the end. If using the command/signal.encoding=cq you can add large delays with codes like H. But for the hex encoding, you’re limited to a total 600 ms buffer for the whole signal.

We do not currently support that kind of thing. But, I see it gets asked fairly frequently on this forum. So something we can consider. — We’ve talked internally about making the cq encoding able to include repeats. So, if you wanted to send a packet with 101010 20 times, then a packet
110110 1 time, you could do it like this: (101010H){20}110110. Similar to regex syntax.

However, that extension of cq encoding doesn’t help when what you’re working with are the hex-encoded raw buffers. These are 600ms buffers of raw recording that the Bridge simply plays back. You’d need somehow to process the raw buffer down to the individual packets and then repeat/delay/sequence them.

I know you have been wary of making features that don’t translate well to voice assistants.
I think there could be a case made for some users that want native Bond “macros” (for lack of a better word) that could be called in the Bond app, via Bond API, and potentially be exposed to home assistants as simple On/Off (or momentary switches if supported).
Could even have separate settings in the Bond “macro” setup process to say ABC command(s)+rep(s) is ON and DEF command(s)+rep(s) is OFF.

Not sure if the requests have hit critical mass yet to invest the time in that sort of thing, or if it’s similar to things you and the team have already discussed - but figured I’d drop two cents into this conversation about that idea specifically.

From where we stand right now, the most sensible way to ship such a customizable feature would be as BondScript (lua). So you could have a bunch of raw recordings for a device with template=null. Then lets say that for “TurnOn” you actually want to send 5x the command originally recorded as “TurnOn”, then 2x another command recorded as “SetFlame(4)”. You could do that by PUT-ing to devices/{}/script something like the following lua pseudo-code:

-- override TurnOn action
function Action_TurnOn()
  for i in range(4)
     Transmit_Command("TurnOn")
  end
  Transmit_Command("SetFlame",4)
  Transmit_Command("SetFlame",4)
end

This would then work just fine via the app or integrations (Alexa and local).

Of course, interacting with this API would be kind of annoying for many users, so we could drive it from a little webgui built into the product. You could copy-paste in a script for any of your devices in order to customize the protocol, or even define a totally new protocol without reference to any underlying recordings.

1 Like

Maybe I can explain my problem further.
I have an Acumen Tech Fireplace Remote (Acumen RCK-M Fireplace Remote Control with Flame Adjustment for Maxitrol Gas Valves)
This utilizes a ON-Up, OFF-Down two button function.
For whatever reason, the receiver/valve picks up the Bond signal but the repeat rate from the Bond is too rapid for the receiver to respond right away. It takes about 20 seconds of continuous hold on the physical remote to move the valve to a reasonable position for a fire. Even if I set the reps to 1000 because of some timeout feature in the Bond the valve only advances about 30% of its nominal range. It does not matter if the number of reps is 200 or 1000 as the Bond stops sending the signal after about 10 sec. I am hence forced to press the On button on the Bond x 3 to advance the valve to a usable position. The 600ms doesn’t seem to be the limiting factor.

I think I need a better explanation of your “Long answer”. How do I make the whole signal last that 0.6 sec.

Can you share here the body of the devices/x/commands/x/signal endpoint which corresponds to the “Up” function? Then I could talk specifics.