Lag when controlling device

I have just recently got a Bond bridge device (v1 which was updated to v2 firmware)
I’m controlling a wall switch which I set with an RF command.
It looks like there are 2-3 seconds delay from the moment I send the command until the Bond device responds
It’s the same from the app and from Home Assistant which uses the Bond local AIP.
Is this expected? is there any way of making it respond faster?

I’m guessing you had to manually record this wall switch versus having it found in a template.

One of the Bond staff was able to drop by the other day and explain what is going on with very early Bond Bridge models and generic devices having a delay.

1 Like

Really? I’m curious where you bought it?

We haven’t sold the 1-st generation Bridge from our official channels in 2+ years. We still support it on the apps & backend, but we just announced last week that we will not be providing more firmware updates for it beyond v2.x. (The 2nd-generation Bridge should have a longer active support life.)

You are right, it was manually recorded and that thread seems to explains the delay. thank you!

I just got it 2nd hand, it was still wrapped up and brand new :frowning: had no idea this was 1st gen. Anything I can do with that?

I just worked on an issue like this, but I don’t know if this is the same problem.

When I first used the Bond controller, all there were was templates for different manufacturers of fans. I recently got 2 new fans but during the setup, I had no choice for a preconfigured remote and so the Bond had to learn the remote. Using the Bond controller to turn on lights had a 3 second delay.

Using the API, you can send CURL commands to the Bond controller and see what the programming looks like. I loaded up my old fans that I programmed and the “signal” that is programmed to send is very short, like a string of 50 1’s and 0’s. When I looked at the “signal” that was recorded by the Bond, the string of bits was on the order of thousands. Not only had it recorded multiple commands from a single remote button push, but it also recorded a lot of zeros before and after the pattern.

So using the API, I read the command out, pasted it into notepad, cut out the fluff, and reprogrammed the controller with the smaller pattern. After a bit of a learning curve, the light now turns on in under half a second vs the 3 seconds it took before.

The reason this was important to me is that I used a Shelly device with Home Assistant to detect when the wall switch is turned on. The switch is attached to the Shelly which sends an MQTT command that tells Home Assistant to tell the Bond Controller to turn the fan’s light on. Yes, that is a long trip, but the response time appears the same as when using the bond controller to turn the light on.

So that’s the problem with learning the remote…it records more than it needs to. I think most of the delay is pulling the huge amount of data and sending it to the transmitter to prepare it to be sent. Because even though the pattern was very long, the actual transmit time shouldn’t have been more than a second.

FYI, the fans were Home Depot fans under the Home Decorators collection They used this FCC ID remote: 2ABUP-FT1212R

I’m having trouble with this same remote, and interestingly I have the exact same setup - multiple fans on a single circuit, with a Shelly controlling power, all controlled by Home Assistant.

Right now though, I can’t even get the Bond to trigger the toggle functions. I used the bond-cli to do some live logging, and I see that it does seem to be sending some very long strings (they are truncated in the info level logs), but given that it doesn’t work, I doubt shortening the sequence will help.

Does the Bond do anything with your fan?
Is the Shelly controlling power to your fan? You said in your first sentence “Shelly controlling power”. I don’t do that. Mine are powered all the time and I use the Shelly to control the power to other can lights in the room by way of the relay in the Shelly. I used the other input pin (the little header connector on the face of the device) to connect another standard light switch. I programmed the Shelly to send an MQTT command to Home Assistant that would then send a command to the Bond to toggle the fan on and off.
I’m sure you’ve done some of this below, but leaving all assumptions aside, here are my suggestions.
With power on to the fans, can the Bond controller control any of the functions of any of the fans with the Bond app?
One thing I was thinking was range. I had an occasional issue with range from where my Bond controller was. Once I fixed that, I only have an occasional problem with the fan not responding to the Bond controller, but very seldom. If the answer is yes, it can control something, then I’d say that maybe something is a bit off in how the Bond controller is receiving the signal from the remote. I had a problem with this sometimes, but not enough to say it was a problem. If it didn’t work, I’d just reprogram it.

If some commands work, and you have the ability to issue Curl commands to the Bond API, then what you can do is just do more work at programming the Bond controller manually. I don’t know how to do a Curl command outside of a Linux OS and at the moment, I don’t have my Linux system up, but if you are interested, I can find my notes and send them. I mapped all the commands that are possible with the fan…I was looking for a command for Power ON and Power OFF because I don’t like Power Toggle. Anyway, you wouldn’t have to learn all the commands with the remote and you can just program off my notes…provided I can find them and the receiver in the fan itself has not changed.

Great idea on using the Shelly that way - I’ll switch mine to work that way once I have the Bond working.

Right now both Toggles are not working for me - the fan nor light. I think that it’s sending the single twice in a row maybe because I’ve noticed the light seems to flicker.

The commands for fan speed (1-6) are working. I realized just now that I forgot to set up the reverse function, so I’m not sure if that one works or not yet.

I started working with the API this morning after my previous post, but stopped since I didn’t know where I was going with it yet and, I suppose it’s a workday so I should also get some work done :joy:

[quote=“Davideos, post:9, topic:2824”]
but if you are interested, I can find my notes and send them. I mapped all the commands that are possible with the fan…I was looking for a command for Power ON and Power OFF because I don’t like Power Toggle. Anyway, you wouldn’t have to learn all the commands with the remote and you can just program off my notes…provided I can find them and the receiver in the fan itself has not changed.[/quote]

If you could send over your notes that would be great! Did you end up finding the commands for On/Off? That’s what I’d like to accomplish as well.

1 Like

No, I didn’t find a separate power on or power off command. I went through all the iterations.
I was going to suggest using the fan speed to see if they would work since it wouldn’t matter if it pressed the button twice, but it seems that you have done that. You can do something similar to Lights on by using the ‘+’ button on the remote; but that still leaves you with “off” for both…and not toggle.

The learning process might be the issue here. I would expect that the Bond records the output of the remote blindly. The remote sends the same command over and over and over, and that is what the Bond records and plays back, so to me, it shouldn’t matter how many times Bond sends the same command; the receiver should reject duplicates. I think the theory is that if it misses some of the signal, one of them will get through. But if you see the light flicker, maybe you have something there. With my remote, I just pressed the light button over and over and over again. Doing so, I can get the light to flicker. But, try this, press and hold the light button…keep holding when the light comes on. Then, as quickly as you can, let go of the button and press and hold it again. Repeat this process and the light will not go out. What this tells me is that the receiver is ignoring other incoming signal until the last received signal goes away for a period of time. So I’m not sure what the Bond could be doing, but it might be worth your while to try and change how you are learning the remote. Or just try to reprogram it repeatedly until it works more favorably. Or, program it with my notes.

I’m pretty sure I have my notes, but I too have to work today. But as homework, you will need to extract the captured learning of your fan. Each fan has its own ID as part of the signal that is sent from the remote. You will need to retrieve what was recorded and then figure out the code. You might even be able to spot the problem in the recorded sequence. You will see a bunch of 1s and 0s. Basically, this is oversampling of the received signal from the remote. What I did was to reduce it to the lowest common denominator…For instance, if you the code is 10110010, then you might see 11111111110000000000111111111111111111110000000000000000000011111111110000000000. In which case, the oversampling is 10x and replace 10 for 1 to get your 10110010. It won’t be that simple, but that’s the idea. There is also a sync period with a long string of 0s, if I recall correctly. But when I find my notes, it will make sense.

1 Like

Thanks again!

I imported the OpenAPI file into Postman and was playing around with it a bit more.

Here is the data for the Fan Toggle for one of the fans for example.
I broke this up a bit from the long string to see if I could make sense of anything, but no luck thus far.

There are a number of instances of “03 FC 00 00 00 00 01”, and “03 FC 00 00 00 00 01 FE 00 00 00 00 00 FF 00 00 00 00 00 7F FF FF FF C0 00 3F E0 00 00 00 00 0F FF FF FF” repeats twice.

I haven’t tried changing any signals yet.

FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 03 FC 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF 00 00 00 00 00 7F 80 00 00 00 00 3F C0 00 00 00 00 1F E0 00 00 00 00 0F F0 00 00 00 00 07 FF FF FF FC 00 03 FE 00 00 00 00 00 FF FF FF FF 00 00 FF FF FF FF 80 00 7F FF FF FF C0 00 3F FF FF FF E0 00 0F FF FF FF F0 00 0F F8 00 00 00 00 03 FF FF FF FC 00 03 FF FF FF FE 00 00 FF 00 00 00 00 00 FF 80 00 00 00 00 3F C0 00 00 00 00 1F E0 00 00 00 00 0F FF FF FF F8 00 07 FC 00 00 00 00 03 FF FF FF FF 00 00 FF FF FF FF 80 00 7F FF FF FF C0 00 3F E0 00 00 00 00 0F F0 00 00 00 00 0F F8 00 00 00 00 03 FF FF FF FE 00 01 FF 00 00 00 00 00 FF FF FF FF 80 00 3F FF FF FF C0 00 3F FF FF FF E0 00 1F F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 03 FE 00 00 00 00 00 FF 00 00 00 00 00 FF 80 00 00 00 00 3F C0 00 00 00 00 3F E0 00 00 00 00 0F FF FF FF F8 00 07 FC 00 00 00 00 03 FF FF FF FE 00 00 FF FF FF FF 00 00 FF FF FF FF 80 00 3F FF FF FF C0 00 3F FF FF FF E0 00 0F F0 00 00 00 00 0F FF FF FF F8 00 03 FF FF FF FC 00 03 FE 00 00 00 00 00 FF 00 00 00 00 00 FF 80 00 00 00 00 3F C0 00 00 00 00 1F FF FF FF F0 00 0F F8 00 00 00 00 03 FF FF FF FC 00 03 FF FF FF FE 00 00 FF FF FF FF 00 00 FF 80 00 00 00 00 3F C0 00 00 00 00 1F E0 00 00 00 00 0F FF FF FF F8 00 07 F8 00 00 00 00 03 FF FF FF FE 00 01 FF FF FF FF 00 00 FF FF FF FF 80 00 7F 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0F F0 00 00 00 00 0F F8 00 00 00 00 03 FC 00 00 00 00 01 FE 00 00 00 00 00 FF 00 00 00 00 00 7F FF FF FF C0 00 3F E0 00 00 00 00 0F FF FF FF F8 00 07 FF FF FF F8 00 03 FF FF FF FC 00 03 FF FF FF FE 00 00 FF FF FF FF 00 00 FF 80 00 00 00 00 3F FF FF FF E0 00 1F FF FF FF F0 00 0F F0 00 00 00 00 07 F8 00 00 00 00 03 FC 00 00 00 00 01 FE 00 00 00 00 00 FF FF FF FF 80 00 7F C0 00 00 00 00 3F FF FF FF E0 00 0F FF FF FF F0 00 0F FF FF FF F8 00 03 FC 00 00 00 00 03 FE 00 00 00 00 00 FF 00 00 00 00 00 7F FF FF FF 80 00 3F C0 00 00 00 00 3F FF FF FF F0 00 0F FF FF FF F8 00 03 FF FF FF FC 00 03 FE 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 3F C0 00 00 00 00 3F E0 00 00 00 00 0F F0 00 00 00 00 0F F8 00 00 00 00 03 FC 00 00 00 00 01 FF FF FF FF 00 00 FF 80 00 00 00 00 3F FF FF FF C0 00 3F FF FF FF E0 00 0F FF FF FF F0 00 07 FF FF FF F8 00 03 FF FF FF FC 00 01 FE 00 00 00 00 00 FF FF FF FF 00 00 FF FF FF FF 80 00 3F C0 00 00 00 00 3F E0 00 00 00 00 0F F0 00 00 00 00 07 F8 00 00 00 00 03 FF FF FF FC 00 03 FE 00 00 00 00 00 FF FF FF FF 00 00 FF FF FF FF 80 00 3F FF FF FF C0 00 3F E0 00 00 00 00 0F F0 00 00 00 00 07 F8 00 00 00 00 03 FF FF FF FC 00 03 FE 00 00 00 00 00 FF FF FF FF 00 00 FF FF FF FF 80 00 3F FF FF FF C0 00 3F E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 07 F8 00 00 00 00 03 FC 00 00 00 00 01 FE 00 00 00 00 00 FF 00 00 00 00 00 FF 80 00 00 00 00 3F FF FF FF C0 00 3F E0 00 00 00 00 0F FF FF FF F0 00 0F FF FF FF F8 00 03 FF FF FF FC 00 03 FF FF FF FE 00 00 FF FF FF FF 00 00 FF 80 00 00 00 00 3F FF FF FF E0 00 1F FF FF FF F0 00 0F F8 00 00 00 00 03 FC 00 00 00 00 01 FE 00 00 00 00 00 FF 00 00 00 00 00 7F FF FF FF C0 00 3F E0 00 00 00 00 0F FF FF FF F0 00 0F FF FF FF F8 00 07 FF FF FF FC 00 01 FE 00 00 00 00 00 FF 00 00 00 00 00 7F 80 00 00 00 00 3F FF FF FF E0 00 0F E0 00 00 00 00 0F FF FF FF F8 00 07 FF FF FF FC 00 03 FF FF FF FE 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

Looking at your code,
For the most part, there are 12 hex characters that represent a 1 or a 0.
If you look at the start of the third line down you see, 0F F0 00 00 00 00. That, I’d say is a zero. There are 8 bits of 1 followed by about 40 bits of 0. It isn’t exact and you can see the bits slide a bit from character to character and that’s because the frequency of the sample isn’t quite spot on. It can be adjusted, but not necessary. We’re close. Anyway, a 1 is identified in the next sequence of 12 hex characters as 07 FF FF FF FC 00. Shift one nibble to the right, you get about 40 bits of 1 followed by 8 bits of 0.

Anyway, just eyeballing 1’s to 0’s from these 12 hex characters…roughly, I see.
In the middle of the second line down, you see a sync character, just a lone 03 FC, which is 0000 0011 1111 1100 in binary followed by 17 or 18 pairs of 00. Since these 0’s don’t translate to a 1 or 0 per my definition above, I see that as a separation of the command and I put show that below by 1–. Now applying what I defined as a 0 or 1, we see this pattern below. I stopped after 3 patters because I figure it just repeats
1–00000101111101100001011100010111
1–00000101111101100001011100010111
1–00000101111101100001011100010111

Separating out,
The synch character 1–
your fan ID is
00000101.11110110
The command is 00010111.00010111

Your command is the same as my command for fan power toggle.

Make sense?

I’m looking through my notes and I wasn’t as clear as I should have been, but there is one thing that I think might be important. Follow the instructions from the API manual that Bond puts out to get the ID of the bond devices via the CU
RL command. Then, using the ID, get the commands that are in use by that ID. Here is one of my “get commands” for one of my Home Depot fans like yours and the resulting output…this is for the 'light on" command. I’m not sure what the first command was for, but the second gave me the information
curl -i http-ipaddress of bond/v2/devices/5d575398/commands/3f130f5e/ -X GET -d “{"_token": "---------Yours will differ------------"}”
curl -i http-ipaddress of bond/v2/devices/5d575398/commands/3f130f5e/signal -X GET -d “{"_token": "----yours will differ--------"}”
{“_token”:“—Yours will differ------------”,“freq”:433930,“bps”:40000,“reps”:1,“modulation”:“OOK”,“encoding”:“hex”,“data”:"000000000000FFFFFFFF0000FF0000000000FF0000000000FF0000000000FFFFFFFF0000FFFFFFFF00007F0000000000FF0000000000FF00000000003F80000000003F80000000003F80000000003FFFFFFF80003FFFFFFF80003F80000000003F80000000003FC0000000003FC0000000000000000000000000000000000FFFFFFFE0000FE0000000000FF00000000003FFFFFFF0000FFFFFFFF00003FFFFFFF00003FFFFFFF00003FFFFFFF00003FFFFFFF00003F00000000003F00000000003F0000000000FF00000000003FFFFFFF00003F00000000003FFFFFFF00003F00000000003F00000000003F0000000000FFFFFFFF00003FFFFFFF00003F00000000003F00000000003F00000000007F00000000003F0000000000FE00000000007FFFFFFE0000FFFFFFFE0000FE0000000000FE0000000000FF0000000000FF00000000000000000000000000000000003FFFFFFF80003F80000000003F80000000003FFFFFFF80003FFFFFFF80003FFFFFFF80003FFFFFFF80003FFFFFFFC0003FFFFFFFC0003FC0000000000FC0000000001FC0000000001FC0000000000FFFFFFFC0000FC0000000000FFFFFFFC0000FC0000000000FE0000000000FE0000000000FFFFFFFF00003FFFFFFF00003F00000000003F00000000007F00000000003F0000000000FF00000000003F00000000003FFFFFFF00003FFFFFFF00003F00000000003F00000000003F00000000003F00000000000000000000000000000000003FFFFFFF00003F00000000003F00000000003FFFFFFF00007FFFFFFF00003FFFFFFF00003FFFFFFF00003FFFFFFF00003FFFFFFF00003F00000000003F80000000003F80000000003F80000000003FFFFFFF80003F80000000003FFFFFFFC0000FC0000000000FC0000000000FC0000000001FFFFFFFC0000FFFFFFFC0000FC0000000003F80000000003FC0000000001FC0000000003FC0000000000FC0000000000FFFFFFFC0000FFFFFFFC0000FC0000000000FC0000000001FC0000000000000

Note a few things. The data is in hex, so 0 is 0000 in binary. F is 1111 in binary. C is 1100 in binary. So if you bit blast this all out, that’s what I was talking about in my last message.
Look at the “reps” above, I believe that is the number of times the signal is sent…or in other words, the number of times the “data” sequence is sent. I believe it was 3 and I changed it to 1 and it might have been because of the same issue you had, but I don’t remember exactly. Anyway, try changing just the reps to 1 and see if that helps. If you want to get into programming, that’s another can of worms. But here is a glympse.

I was doing a bunch of experiments to do 2 things; 1, reduce the size of the data to make the light response quicker, and 2, find the ON and OFF…which I never found. Anyway, there is a way get all the supported commands. Do that and it will look somewhat like the command above. When I was trying to figure out the codes, I made this table. The “data” sequence is abbreviated here just to make it easy to read:
curl -i http-ipaddress of bond/v2/devices/0d4984d8/commands/04e9665e/signal -X GET -d “{"_token": "----yours will differ-------"}”

“--------” 0–00101111.00111101.00100100.0xxx0110 Bonus Room Fan color temp
“--------” 0–00101111.00111101.00100100.0xxx0101 Bonus Room Fan Light on/decrease
“6da0ae1c” 0–00101111.00111101.00101000.0xxx1000 Bonus Room Fan Light on/increase
“04e9665e” 0–00101111.00111101.00100100.0xxx0100 Bonus Room Fan Light off/toggle
“749b7b3b” 0–00101111.00111101.00101010.00101010 Bonus Room Speed 1
“5ea3cbef” 0–00101111.00111101.00111010.00111010 Bonus Room Speed 2
“6c3c3e3d” 0–00101111.00111101.01001010.01001010 Bonus Room Speed 3
“2c49e9ed” 0–00101111.00111101.01011010.01011010 Bonus Room Speed 4
“52e0e5f3” 0–00101111.00111101.01101010.01101010 Bonus Room Speed 5
“4e11391d” 0–00101111.00111101.00011010.00011010 Bonus Room Speed 6
“128d0673” 0–00101111.00111101.00100111.00xx0111 Bonus Room Power Off/toggle
“14c0f225” 0–00101111.00111101.00100011.00100011 Bonus Room Reverse
“--------” 0–00101111.00111101.00010001.00010001 Bonus Room Turns on to a higher speed…4,5,or 6

I’m not sure why I don’t have a command ID for the first 2 and last command shown above…maybe I hadn’t programmed them yet. Anyway, the – and the . in the string above are just for spacing or abbreviation. The fan ID is the first 16 bits, 00101111.00111101. The command is the next 16 bits. You will see that each command as noted by the comment to the right has a different 16 bit command. If you see an ‘x’ in place of a 1 or 0, it means it doesn’t matter if it is 1 or 0. Trying to find an ON or an OFF for the Light or Fan that was not a toggle, I tried all the bit combinations and unfortunately, didn’t find any.

Hope that helps. Like I said, I don’t have my Linux system with CURL running. I thought there was a windows based CURL command, but I didn’t find it or I didn’t get it to work and the Linux system was there so I didn’t spend much time debugging. If you want to do programming of the data pattern, I can spend more time with my notes.

I was sort of following along until you got to the part where you put everything together.

Maybe I’m being too rigid and not allowing for enough signal loss/noise, but I’m not seeing this very clearly.
I’m not sure how you are determining that, for example, “0FF0 0000 0000” is a “zero”. I realize this is 11111111000000000000000000000000000000000000 in binary, are you saying the signal requires this longer string to signify just a single 0?
Did you just guess that this was happening, or was there something that made you think it must be?

Same for “07FF FFFF FC00” (binary is 1111111111111111111111111111111110000000000) being “1”. But we need to shift that (due to noise?) one nibble to the right so we have what you said “007F FFFF FFC0” which is 111111111111111111111111111111111000000 which is 42 bits of 1, followed by 6 bits of 0 (40/8 would be “7FFF FFFF FF00”).

Anyway getting back to it the summary…

You lost me here.
So “03 FC” being the sync character is fine.
But now, let’s look at my fan ID, which you’re saying would be “0F F0 00 00 00 00 0F F0 00 00 00 00 0F F0 00 00 00 00 0F F0 00 00 00 00 0F F0 00 00 00 00 07 FF FF FF FC 00 0F F0 00 00 00 00 07 FF FF FF FC 00 07 FF FF FF FC 00 07 FF FF FF FC 00 07 FF FF FF FC 00 07 FF FF FF FC 00 0F F0 00 00 00 00 07 FF FF FF FC 00 07 FF FF FF FC 00 0F F0 00 00 00 00”, correct? This string doesn’t occur though in my command and I don’t see anything super close to it.

For our mutual , here are the parts that start with the sync char:

03 FC 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF 00 00 00 00 00 7F 80 00 00 00 00 3F C0 00 00 00 00 1F E0 00 00 00 00 0F F0 00 00 00 00 07 FF FF FF FC 00 03 FE 00 00 00 00 00 FF FF FF FF 00 00 FF FF FF FF 80 00 7F FF FF FF C0 00 3F FF FF FF E0 00 0F FF FF FF F0 00 0F F8 00 00 00 00 03 FF FF FF FC 00 03 FF FF FF FE 00 00 FF 00 00 00 00 00 FF 80 00 00 00 00 3F C0 00 00 00 00 1F E0 00 00 00 00 0F FF FF FF F8 00 07 FC 00 00 00 00 03 FF FF FF FF 00 00 FF FF FF FF 80 00 7F FF FF FF C0 00 3F E0 00 00 00 00 0F F0 00 00 00 00 0F F8 00 00 00 00 03 FF FF FF FE 00 01 FF 00 00 00 00 00 FF FF FF FF 80 00 3F FF FF FF C0 00 3F FF FF FF E0 00 1F F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 03 FE 00 00 00 00 00 FF 00 00 00 00 00 FF 80 00 00 00 00 3F C0 00 00 00 00 3F E0 00 00 00 00 0F FF FF FF F8 00 07 FC 00 00 00 00 03 FF FF FF FE 00 00 FF FF FF FF 00 00 FF FF FF FF 80 00 3F FF FF FF C0 00 3F FF FF FF E0 00 0F F0 00 00 00 00 0F FF FF FF F8 00 03 FF FF FF FC 00 03 FE 00 00 00 00 00 FF 00 00 00 00 00 FF 80 00 00 00 00 3F C0 00 00 00 00 1F FF FF FF F0 00 0F F8 00 00 00 00 03 FF FF FF FC 00 03 FF FF FF FE 00 00 FF FF FF FF 00 00 FF 80 00 00 00 00 3F C0 00 00 00 00 1F E0 00 00 00 00 0F FF FF FF F8 00 07 F8 00 00 00 00 03 FF FF FF FE 00 01 FF FF FF FF 00 00 FF FF FF FF 80 00 7F 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0F F0 00 00 00 00 0F F8 00 00 00 00

03 FC 00 00 00 00 01 FE 00 00 00 00 00 FF 00 00 00 00 00 7F FF FF FF C0 00 3F E0 00 00 00 00 0F FF FF FF F8 00 07 FF FF FF F8 00 03 FF FF FF FC 00 03 FF FF FF FE 00 00 FF FF FF FF 00 00 FF 80 00 00 00 00 3F FF FF FF E0 00 1F FF FF FF F0 00 0F F0 00 00 00 00 07 F8 00 00 00 00

03 FC 00 00 00 00 01 FE 00 00 00 00 00 FF FF FF FF 80 00 7F C0 00 00 00 00 3F FF FF FF E0 00 0F FF FF FF F0 00 0F FF FF FF F8 00

03 FC 00 00 00 00 03 FE 00 00 00 00 00 FF 00 00 00 00 00 7F FF FF FF 80 00 3F C0 00 00 00 00 3F FF FF FF F0 00 0F FF FF FF F8 00 03 FF FF FF FC 00 03 FE 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 3F C0 00 00 00 00 3F E0 00 00 00 00 0F F0 00 00 00 00 0F F8 00 00 00 00

03 FC 00 00 00 00 01 FF FF FF FF 00 00 FF 80 00 00 00 00 3F FF FF FF C0 00 3F FF FF FF E0 00 0F FF FF FF F0 00 07 FF FF FF F8 00 03 FF FF FF FC 00 01 FE 00 00 00 00 00 FF FF FF FF 00 00 FF FF FF FF 80 00 3F C0 00 00 00 00 3F E0 00 00 00 00 0F F0 00 00 00 00 07 F8 00 00 00 00 03 FF FF FF FC 00 03 FE 00 00 00 00 00 FF FF FF FF 00 00 FF FF FF FF 80 00 3F FF FF FF C0 00 3F E0 00 00 00 00 0F F0 00 00 00 00 07 F8 00 00 00 00 03 FF FF FF FC 00 03 FE 00 00 00 00 00 FF FF FF FF 00 00 FF FF FF FF 80 00 3F FF FF FF C0 00 3F E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 07 F8 00 00 00 00

03 FC 00 00 00 00 01 FE 00 00 00 00 00 FF 00 00 00 00 00 FF 80 00 00 00 00 3F FF FF FF C0 00 3F E0 00 00 00 00 0F FF FF FF F0 00 0F FF FF FF F8 00 03 FF FF FF FC 00 03 FF FF FF FE 00 00 FF FF FF FF 00 00 FF 80 00 00 00 00 3F FF FF FF E0 00 1F FF FF FF F0 00 0F F8 00 00 00 00

03 FC 00 00 00 00 01 FE 00 00 00 00 00 FF 00 00 00 00 00 7F FF FF FF C0 00 3F E0 00 00 00 00 0F FF FF FF F0 00 0F FF FF FF F8 00 07 FF FF FF FC 00 01 FE 00 00 00 00 00 FF 00 00 00 00 00 7F 80 00 00 00 00 3F FF FF FF E0 00 0F E0 00 00 00 00 0F FF FF FF F8 00 07 FF FF FF FC 00 03 FF FF FF FE 00 00 00 00

( @Davideos - just catching up this morning and noticed a few of your posts got auto-flagged as potential spam. Cleared those overly aggressive flags on these posts but now there may be duplicates it looks like :sweat_smile: )

Jon, sorry, I didn’t explain myself well. I’ll give it another go, but let me start by saying that before you tackle the whole 1’s and 0’s things, check your “reps” from the curl commands I posted. Make sure “reps” is 1. I think that might solve your problem with the light turning on and then off immediately. In the “data” that you sent me, the command to toggle power is repeated multiple times and then followed by a ton of 0’s. Those zeros are sending nothing. If your “reps” is more than 1, then I can totally understand why your light flickers.

…Edited to replace less-than and greater-than characters with [ and ] respectively. This forum interprets the less-than and greater-than as something else and doesn’t show it…

Let me try and explain what I failed to explain before. For reference, I’ll used the data you posted and start at the beginning. What you have doesn’t need to be changed. Leave it as it is. Deciphering it helps to understand what it is doing, and I did this for you in a previous post. So forget everything I said before for now.

FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 03 FC 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF 00 00 00 00 00 7F 80 00 00 00 00 3F C0 00 00 00 00 1F E0 00 00 00 00 0F F0 00 00 00 00 07 FF FF FF FC 00 03 FE 00 00 00 00 00 FF FF FF FF 00 00 FF FF FF FF 80 00 7F FF FF FF C0 00 3F FF FF FF E0 00 0F FF FF FF F0 00 0F F8 00 00 00 00 03 FF FF FF FC 00

I’m not a transmission guy. Analog circuits are not my thing, but I think I understand this. The remote control for the fan sends out a different command for every button pressed. Each button is different, it has to be, but there also needs to be some similarities to a particular remote because you have multiple fans. There needs to be a command definition…like [fan id][fan command]. So for every fan remote & fan, the [fan id] is the same. As for the [fan command], that will be the same for every fan in your room; but every fan doesn’t respond, because only one remote uses the fan id that is associated with the fan that reacts.

Because there are many sources of interference in our homes and world around us, the fan remote will continuously send the command while we are pressing the button. So there now must be something that sits between commands to separate them and allows the fan to see them. So now we have [separator][fan id][fan command]

Now to the data. At the beginning, you see FF FF FF FF FF FF FF FF 00 00 00 …etc. I’m not sure what that is. It could be the remote warming up. It isn’t important because the sample I sent you from my Bond doesn’t even have it, so it must not be needed. Lets go to the next thing seen. 03 FC 00 followed by 16 more sets of 00. If you take those at 12 or 13characters at a time (explained next), you get
3 FC 00 00 00 00 00
00 00 00 00 00 00
00 00 00 00 00 00
Now look at the data a bit later; for example, 07 FF FF FF FC 00 03 FE 00 00 00 00 00 FF FF FF FF 00 00. If you roughly group them, you see that that about every 12 / 13 characters are somewhat of a pattern. Roughly speaking either a bunch of F’s with a few 0’s or a few F’s followed by a bunch of 0’s In this case:
7 FF FF FF FC 00 0
3 FE 00 00 00 00 00
FF FF FF FF 00 00
Ignoring the fact that sometimes there is a 7, C, 3, E and other characters at transitions between F’s and 0’s, you can see the same thing going on throughout the whole data set.

Simplified, you can see there are 3 kinds of ‘sets’ throughout the data:
FF FF FF FF 00 00, lets call that ‘1’
FF FF 00 00 00 00, lets call that ‘0’
00 00 00 00 00 00, lets call that ‘-’

If you take that and go back to my previous e-mail where I showed, “1–00000101111101100001011100010111”, that’s how I got it.
The separator is ‘1–’
The [fan id] is 00000101 11110110
The [fan command] for power toggle is 00010111 00010111.

This should tell you that the command you are sending is fine. It is repeated, and that is fine too. However, if you look at the bottom of your data, there are a ton of 0’s. This is dead time. The fan is detecting no signal while the Bond sends the 0’s. So if it is repeating this, i.e. “reps” is greater than 1, this might explain why your fan light flickers when you try and turn it on with the Bond.

In the last message, the representation of the command as 1’s and 0’s is not important, You could have used ‘A’ and ‘B’ if you wanted. The important part is deciphering the command. The reason I was talking about blasting out the original data to 1’s and 0’s was just to show that the representation was like a waveform. The data in the waveform is hex so when you see:
1 is 0001
3 is 0011
7 is 0111
F is 1111
E is 1110
C is 1100
8 is 1000
0 is 0000

So a 1 to 0 transition can be represented in the data as ‘F0’, = 1111000, or E, = 1110, or C, = 1100, etc and a 0 to 1 transition as 0F, = 00001111, or 3, = 0011, etc.

If you need to modify the data string, it would only be to perhaps trim off all those extra zero’s at the end. I believe that when the Bond wants to send that command, it loads that whole data string into some sort of transmit buffer and then sends starts to transmit. This takes time. I had mentioned that when I first used the Bond to control my new Home Depot fans, it took 3 seconds before the fan responded. This was no good to me because I was using the Shelly with a switch attached to the IOs to tell Home Assistant to tell bond to turn on the lights. Yeah, that’s a lot of talking, but the delay was the Bond. No one wants to turn on a light switch and wait 3 seconds before entering. Now it is a half a second and that is fine. Once I understood what was going on, I trimmed back the dead data and reprogrammed and all was good.

When I went to try and find the off command and tried different , then I carefully modified the bit pattern…being sure to put in the correct number of characters and using E, C, 3, 1 etc as needed to keep the frequency correct.

I hope I was better at explaining this time. But bottom line for you, I think you just need to change the “reps” to 1. Long story for a short answer.

1 Like

I just realized this message was messed up. I just edited it to replace less-than and greater-than characters with [ and ] respectively. This forum interprets the less-than and greater-than as something else and doesn’t show it. It totally made it unintelligible. Sorry about that. It is fixed now.

1 Like