I have an RM Mini 3 which I have learned the codes to control my AC unit with.
I can fire these scripts off manually, and each works an absolute charm every time, however if I try to sequence these, only some of the commands will actually be received. I’ve tried a multitide of delays and waits within the script, and the same thing seems to happen.
Anyone know if there is any kind of rate limiting on the RM Mini 3?
normally A/C IR codes are quite long and contain the entire sequence (e.g. “Mode: Cool, Temp: 22°C, Fan: Low, Beep: On, Display: On”), so your approach probably sends multiple entire sequences instead of single commands (which most A/Cs don’t support)
Either you have to use a proprietary solution (e.g. tado which is cloud based), or use something like this library for an ESP8266.
If you have a lot of time, you can also learn every possible combination of commands into the RM. (All possible temperatures combined with modes, fan speeds etc.)
Or just start with a set of commands you usually use, like Cool 22°C Fan Auto, depending on your device.
So I learned the sequences directly from my AC remote, which I press one button at a time to send those commands to the AC unit. I don’t understand why I can’t just send those sigle commands in sequence, as if I’m just pressing the buttons on the remote one by one?
Again, this is the case for most A/C controls, yours might be different, but probably not.
Does the remote have a screen that shows you the settings? If so, it’s most likely sending out long codes.
It doesn’t matter that you only press a single button at once, as I’ve said earlier, each time you press a button to change a single setting, everything gets sent again.
So if you have your A/C set to cool at 22°C, low fan and horizontal swing, and now you change the temperature to 23°C, the remote will transmit: “23°C, low fan, horizontal swing”.
The reason is that they don’t want the screen on the remote to become out of sync with the actual settings.
So there’s no “Temperature +1°C” code, there’s no way to tell the A/C to decrease the fan speed, you have to transmit every setting each time you want to change something. That’s also why the Broadlink App only allows you to program certain combinations of settings, it can’t just decrease the temperature, because it doesn’t know how a correct combination might look like.
Another difficulty is that some IR protocols like the ones for Samsung A/Cs calculate a checksum based on your settings (probably for error correction?), so it’s not just a matter of transmitting “1F” instead of “1E” for two bytes, something else in the code changes as well.
Here’s an example of how a code looks like for my A/C: https://cryptpad.fr/sheet/#/2/sheet/view/REURkHbGuQdU+wQkBcwKBXmccftjIB+Tyzin34EXs-g/
As you can see, it can be a little complicated.
So, if your A/C works this way, which it probably does, you have two options.
Either have the broadlink device learn enough combinations (like cool, 16-25°C, fan low-max,…) for you to control it. Keep in mind that you’ll have to learn every combination you want to use (like “cool, 22°C, fan low, swing horizontal”, “cool, 23°C, fan low, swing horizontal”).
There may be hundreds of combinations, depending on the feature set for your device.
Or use another solution:
Tado sells a smart A/C control, they’ve decoded a lot of protocols, so you can use their device as a proxy to send instructions to, and have it send out the correct IR codes