Moes ufo-r11

Hello,
I’m trying to use an MOES UFO-R11 universal remote control with Home-assistant thru zigbee2Mqtt.
I succeed to connect the device to zigbee2mqtt and tried to learn some remote IR (from whirlpool air conditionning IR remote) code but I’m puzzled of the result: The code seems really long and never the same for the same button pressed.
For instance, pushing the power button I get:
B6Ig0REwAq4GgAPgAwECZAIwYAFAG0ABQAdAA+ATAeATH+APG+APF8B/4A8BQB9AA0ABA6IgMALAC0ABwAtAB0AD4ANjQA/AAUALQAPgAwHAD0AHwAPgAwFAE0ABQAfAA+ADAUATQAFAB8AD4AsBwBtAB8AB4AcLQA9AA8ABQMdAA8ABwBtAB+EXA0AB4A87QD9AA+ADAUAPwAPgFwHAJ+A3B0Cf4BBDAgIwAg==
Next time i get:
CK8gzxEsAq0GXiADBiwCLAJeAiwgAYAFASwCQAeAFwEsAkAHQANAAUAX4AEB4AENwB/gAQHgCxvAE4AHAa0GgAeAAeADCwEsAuAFDeADAcAZgAcDryAsAuADAUAVQANAAUAHA60GLAJAB8AB4AsL4AMTQAFAD+ADA8AB4AMT4AMLwAHgBxNAD+AHAUAT4AcDQAFAE0ABQAfgBwNAAUDHQAPgBxtAD0EDQAfAAUAL4AMDQAFAO0AB4AMX4AMLwAHgAxPgAwtAAeADD+ALC0AB4AsX4BsTQJ/gECcCAiwC
Then:
CMkgzRFWAqoGGyADBFYCVgIbIAEAViAB4AEFQBdADUAHAaoGQAkBVgKABQFWAkAH4AMDA6oGVgJAD0AB4AUHARsCwBsBGwKAAwFWAkAJAVYCwBcBVgKADwAbIAFABQBWYAFABwAbIAEAViABQAXAAwFWAkAJQAFABwHJIEAF4A8DA1YCqgZAGwJWAhsgAUAFAFZgAUAH4B8DAlYCGyABQAUAVmABQAfgCwMCVgIbIAFABeAVA0AB4AcjQAHgBxPADwJWAhsgAQKqBlYgAwMbAlYC4AkD4RUDARsCQAPgATsCVgIbIAFABeAdA0AB4B8r4DEn4AGfARsC4AgDAgIbAg==
and so on.
How to decode this to extract the real command? How to emit the command if the code always change?
Any help welcome

The codes look much as I would expect. As for never the same for the same button pressed, what would the air conditioning do when you press the button several times? If it toggles the power on and off then there could well be two different codes. If it does other things as well, there may be more.

It should only toggle the power. And since the remote don’t know if the device is on or off, the remote should send the same code everytime in my mind.
Perhaps the code contains the time when the button had been pressed, but how is it encoded? How can I construct a fresh code and emit it from Home Assistant?

I use a Broadlink universal remote, which gives similar codes. When you set that up, this is what happens:

  • The code emitted by the remote is associated with a command of your choice (“turn on”, “turn off” etc.)

  • HA saves both in a file in /config/.storage/ This is a JSON file - you should not try to edit it.

You can’t construct these codes, they are just copies of what the real remote would send.

When you come to use them, you have two choices:

Use the remote.send_command service…

service: remote.send_command
target:
  entity_id: remote.spotlight_controller_remote
data:
  device: bedroom_spotlights
  command: turn off

Or use the raw codes copied from /config/.storage/ to create switches…

  - platform: broadlink
    mac: a043b05517ac
    switches:
      - name: bedroom_spotlights
        command_on: scCUBH6eBgAKCAoJCgkKCAoJCSwKCQosCgkJCQoJCQkKLAkKCS0JCQoJCQoJCQktCQkJLQoJCQkKCQktCQkJCgktCS0JCQktCQkKCQkJCgkKCQkKCS0JCQkJCS0JCgkKCQkJCgksCQoJLAoJCgkJCgksCQoJCQkKCS0JCgkJCQoJLAosCQoJCgksCQoJCQkKCS0JCQkKCQABYgkKCQkKCQkJCgkJLAoJCS0JCgkJCQoJCQktCQkKLQkJCQoJCQkKCSwKCQktCQoJCQkKCSwKCQkKCC4JLAoJCS0JCQkKCQkJCgkKCQkJLQkKCAoJLQkKCQkJCgkKCC0JCgksCQsICgkKCC0JCgkJCQoJLQkKCAoJCgksCS0JCQkLCSwJCgkJCQoJLAkKCQoIAAFjCQoJCQkKCQkJCgksCQoJLQkKCQkJCgkJCS0JCQkuCQkJCgkJCQoJLAkKCS0JCgkKCAoJLAkKCQkJLgksCgkJLAoJCQoJCQkKCQoJCQktCQoICgktCQoJCQkKCQkJLQkKCSwJCgkKCQkJLQkJCQoJCgktCQkJCgkKCC0JLQkJCQsILQkJCgkJCgksCQoJCQkAAWMJCgkJCQkKCQkKCSwJCgktCQkKCQkKCQkJLQkJCS4JCQkKCQoICgktCAoJLQkKCQkJCwgsCQoJCQkuCSwJCgktCQkJCQoJCQoJCgkJCS0JCQkKCS0JCgkJCQoJCQktCQkJLQkKCQoJCQktCQkJCgkKCC4JCQkKCQoILQktCQkJCgktCQkJCgkKCSwJCgkJCQABZAgKCQoJCQkKCQkJLQkKCS0JCQkKCQkJCgktCQkJLQkKCQkJCgkJCS0JCgktCQkJCgkJCS0JCQoJCS0JLQkJCiwJCgkJCQoJCgkKCAoJLQgKCQkKLAkKCQoJCQkKCS0JCQktCQoJCQkKCS0ICgkKCQkJLQoJCQoJCQktCSwJCgkKCS0JCQkKCQkJLQkJCQoJAAFiCQoJCgkJCQoJCQktCQoJLQkJCQkKCQkKCSwJCgktCQoJCQkKCQkJLQkKCC4JCQkKCQkJLQkJCQoJLQktCQkJLQkKCQkJCgkKCQkJCgksCQoJCQktCQoJCgkKCAoJLQgKCS0JCgkJCQoJLAoJCQoJCQktCQoJCggKCS0JLAkKCQoJLAkKCQoJCQktCQkJCgkAAWIJCgkKCQkJCgkJCS0JCQotCQkJCgkJCQoJLAkKCS0JCgkJCQoJCQktCQoILgkJCQoJCQktCQkKCQktCS0JCggtCQoJCQkKCQoJCQkKCS0ICgkKCC0JCgkKCQoICgktCAoJLQkKCQkJCgktCQkJCgkJCS0JCgkKCAoJLQksCQoJCgksCgkJCgkJCS0JCQkKCQABYgkKCQoJCQkKCQkJLQkJCi0JCQoJCQkJCgksCQoJLQkKCQkJCgkKCC0JCQotCQkJCgkJCS0JCgkJCS0JLQkKCSwJCgkJCQoJCgkKCAoJLAoJCQoJLAkKCQoJCggKCS0JCQktCQoJCQkKCS0JCQkKCQkJLgkJCQoJCQktCSwJCgkKCS0JCQkKCQkJLQkJCQoJAAXc
        command_off: scCwBIieBgAICQoJCggKCQoICiwKCAotCQkKCQkJCgkJLQkJCS0KCQkJCgkJCQosCQoJLQkJCgkJCQoJCSwKCQktCiwJCgksCgkJCQkKCQoJCgkJCS0JCQkKCSwKCgkJCQoJCQktCQkJLQkKCQoJCQktCQkJCgkJCS4JCQkKCQkJLQksCgkJCgktCQkJCgkKCC0JCQkKCQABYgkKCQoJCQkKCQkJLQkJCiwKCQkKCQkJCgksCQoJLQkJCgkJCgkKCC0JCQkuCQkJCgkJCQoJLQgKCS0JLQkJCiwJCQoJCQoJCgkKCAoJLAkKCQoILQkKCQoJCQkKCS0ICgktCQoJCQkKCS0ICgkKCAoJLggKCQkJCgksCS0JCgkKCSwJCgkJCQoJLAoJCQoJAAFiCQoJCgkJCQkKCQktCQkJLQoJCQoJCQkKCSwJCQotCQkKCQkKCQkJLQkJCS4JCQkKCQkJCggtCQoJLQktCQkJLQkJCQoJCggLCAoJCgguCAoJCQktCQoJCgkJCQoJLAkKCS0JCgkJCQoILQkKCQkJCgktCQoJCQkKCC0JLQkKCAsJLAkKCQkJCgksCQoJCgkAAWMICgkJCgkJCQkKCS0JCQktCQoJCQoJCQkJLQkJCi0JCQkKCQkJCgktCQkJLQkKCQkJCgkJCS0JCgktCSwKCQktCQkJCgkJCQoJCgkJCS0JCgkJCS0JCgkJCQoJCggtCQoJLAkKCQoJCQktCQoJCQkKCC4JCggKCQoILQktCQkJCgktCQoICgkKCC0JCgkKCAABYwkKCQkJCgksCQoJCQoJCS0JCQoJCQoJCQktCQkJLgkJCQoJCQkKCSwJCgktCQoJCQkKCAoJLQkKCC4JLAkKCSwJCgkJCgkJCgkKCQkJLQkJCQoJLAkLCQkJCgkJCS0JCQktCQoJCgkJCS0JCQkKCQoILgkJCQoICgktCS0ICgkKCS0JCQkKCQkJLQkKCAoJAAFjCQoJCgkJCS0JCQoJCQkJLQoJCQkKCQkKCSwJCgktCQoJCQkKCQkJLQkJCS4JCQkKCQkJCgktCAoJLQktCQkJLQkJCQoJCgkKCQkJCggtCQoJCQktCQoJCgkJCQoJLAkKCS0ICwkJCQoJLAkKCQkJCgktCQoJCQkKCSwKLAkKCQoJLAkKCQkJCgktCQkJCgkAAWIJCgkJCgkJLQkJCQoJCQktCgkJCgkJCQoILQkKCS0JCQkKCQoJCQktCQkJLgkJCQkJCgkKCSwJCgktCS0JCQktCQkJCgkJCQoJCgkKCC0JCgkJCS0JCgkKCQkJCggtCQoJLAkKCQoJCgksCQoJCQkKCS0JCgkJCQoJLAktCQkJCwgtCQoJCQkKCC0JCgkKCAABYwkKCQkKCQktCQkJCgkJCS0JCgkJCQoJCQktCQoJLQkJCQoJCggKCS0JCQktCQoJCQkKCQoILQkKCS0JLQkJCS0JCQkKCQkJCgkKCQoILQkKCQkJLQkKCQoICgkKCC0JCgksCQsICgkKCSwJCgkJCQoJLQkKCQkJCgksCS0JCQkKCiwJCgkJCQoJLAkKCQoJAAFiCQoJCQoJCS0JCQkKCQkJLQoJCQkJCgkKCC0JCg==

These can be used with the switch.turn_off service…

service: switch.turn_off
target:
  entity_id: switch.bedroom_spotlights
data: {}

I don’t know the details, but I imagine your universal remote works in a similar way.

1 Like

I still don’t understand why the same button send differents code and why they are so long (the remote have at last 11 buttons!).
The universal remote work in 2 modes: first, it “learn” a code and display in the data of the device on zigbee2mqtt web interface.
Then, you could send a code. But Ididn’t get any success on this. I don’t even know if something is sent…

There’s a good explanation here.

And another here.

.

1 Like

I have the same problem here. I just wanted to turn on/off a simple LED-Light which comes with a remote like this:

But pressing the “on”-Button always results in a different code, too.
I “collected” some of them, but when i tried to send them, they didn’t work.

B3sjiBFgAhoC4BUDAWcG4BUDwD/gAyeAE0ABAWACwBdAC8ADwBMLZwZgAvubeyOsCGAC
B5QjpxFiAh0C4A8DQAEDYgJrBuALAwAdIBdAAwNiAh0CgAMCawYdIANABwNiAh0C4AEDAmsGHSADA2ICHQLgAQNAD8ADBzSclCMHCR0C
B2ojjhFiAiUC4AcDQAHAEwQlAmYGYuAGA+ADEwUlAiUCYgJAAwFmBuABA0APwAPAF8APQAfAEwtmBiUCLJxqI60IYgI=
CXkjlhE3AjcCZQKAA+AHAYAXAmsGN+ACA0APQANAE4AHwAEBawZAA0ATAmUCN2ABQAcBZQJAD0ADADdgAUAHBGUCawY3IAOABwcFnHkjqghlAg==
CqYjkRE+Aj4CYwI+YAHAB+AFAQFqBkADAGPgBgfgARMDPgJjAkAD4AUTQAECYwI+IAECagZjIAMBPgLgAwFADwFqBkAXCWMC+ZumI64IPgI=
CWAjiBFJAvEBSQJAAUAHQANAAcAHQAEBvAbgCwMB8QHAAwRJAvEBrSADgA8NNgE+8OwA0xpyA2MJ8QE=
CXEjpBEzAjMCYQKAA0AB4AkLAmsGMyADQAfAA+ADDwUzAjMCYQJAA0ALAWsGQAcCYQIz4AIBAWsGQANAE0ADgAEBawZAAwBhIAcJYQIgnHEjrghhAg==
BYIjqBEwAuAXAQGmBuAVAwJiAjBgAeADJ8ABQBvAF+ADAcATC6YGMAIXnIIjrAhiAg==
BbUhpRE/AuARAQJqAj8gAQF2BuATA4AjQAEBdgbgAQPgAwHAF+ADAQJ2BmogAwk/AnYGPwJinLUh
BVojlhEqAoABAWMC4AEDQAHgAQ8CaAYqoANAC+ADA0AXA2MCKgJAAwEqAkALwAMBKgLgAQOAEwUqAioCYwLAAwFoBsADCSoCL5xaI8cIYwI=
BnEjnBFgAiJgAeADB+AFCwFrBuALAwAi4AAXASICgAMBawbgAQPAE0AHwBdAC8ADAmsGIiADQAcJYAIYnHEjrAhgAg==
B6cjlRFiAhYC4BUDAWcG4BUDwD/gAyfAE0AHwBcAFmABQAcBYgLAEwtnBmIC/punI6oIYgI=
Cp4jjxFBAkECYwJBYAHAB+AFAQF1BuADAwBj4AYPAUECwAFAC8AD4AMB4BMTC3UGQQIqnJ4jyghBAg==
B30jqBFfAhAC4BUDAW0G4BUDwD/gAyfAE0AHwBdAC8ADwBMLbQYQAmecfSMZCRAC
B2kjjhFgAjEC4BMDBDECgwZg4AoDQBeAA8ABwA9AB+ADAUAPQAPgAwFAD8ADB1ucaSPZCDEC
BZAjjBFFAuANAQFsAoADBEUCaAZsIANAB+ANA8ABgB+AK+ADAQFoBoAD4AMBwBMLaAZFAhuckCOnCEUC
B5wjhxFhAjMCQANAAUAHQANAAUAHQAMEMwJqBmEgA0AHQAPAC0AHQAMFMwIzAmECQANACwFqBoAHAzMCYQKAAwEzAoATQA9AAUAHAWECQA+AAwkzAiecnCOsCGEC
B38jcRFiAjACwAPAAeADDwNiAmoGQAMAMCAHwANAD0ADQA8DYgIwAoADQAsCagYwIAMDYgIwAkADQAEBYgJAD0ADQAuAAwEwAkAPAWoGgAcHHJx/I6QIYgI=
B5sjkhFkAgsC4BUDAWcG4BUDwD/gAyfAE0AHwBdAC8ADwBMLZwZkAh2cmyOsCGQC
B4UjpRFgAgwC4BEDBmACDAKvBmDgBgNAE+ABAwFgAoAD4AsTQBsLrwYMAq8GcwHPAnMB

So it is not possible (yet?) to turn on this lamp via zigbee2mqtt/Home Assistant.

The zigbee2mqtt page appears to have been deleted from the docs - not sure that’s a good sign.

But in any case, surely when you “collect” these codes you have to assign names to them - on/off etc? The remote.send_command specifies commands, not the codes themselves.

service: remote.send_command
target:
  entity_id: remote.light_remote
data:
  device: bedroom_spotlights
  command: Turn off

You can send base 64 commands, though

service: remote.send_command
target:
  entity_id: remote.light_remote
data:
  command: b64:JgAcAB0dHB44HhweGx4cHR06HB0cHhwdHB8bHhwADQUAAAAAAAAAAAAAAAA=

Are you including the b64 prefix?

I don’t use the b64 prefix because the remote is not recognized as such by Home Assistant, but is only addressable as a device via MQTT (there it’s shown as a switch)
2023-07-07_11-58

So I try to switch the lamp via the service “mqtt.publish”. Sometimes the code works, but in the most times it does not.

- service: mqtt.publish
        data:
          topic: zigbee2mqtt/IR_Fernbedienung/set
          payload: '{"ir_code_to_send": "B3sjiBFgAhoC4BUDAWcG4BUDwD/gAyeAE0ABAWACwBdAC8ADwBMLZwZgAvubeyOsCGAC"}'

I’m also trying to figure out how to use Moes UFO-R11. Just like you, I’ve noticed that learned IR codes change all the time. I am still not sure how to make sense of it. Sometimes repeating the learned code works, but sometimes it does not.

I’d be curious to find out if there’s a way to construct these Base64 values if I have details of the device I want to control.

Ok, I’ve made some experiments and I found that my remote control send more than a single command in the code. It is a remote for Air Conditionner from Whirlpool and you can setup the fan speed, temperature, mode, etc.
When I press the button Power, the remote control send the power command and the previous settings : temperature, speed, mode, etc. Thus, this give plenty of differents codes.
The need to build the code from scratch is then mandatory.

2 Likes

And I thought it is emitting some sort of state. Now you confirmed it. I guess it’s quite similar with my Haier air conditioner.

If you figure out how to encode and/or decode these Base64 strings, please let us know!

I found this github repo with this issue : Help Decoding Whirlpool AC Remote · Issue #509 · crankyoldgit/IRremoteESP8266 · GitHub The decoding seems quite really difficult. Perhaps you would find data about Haier device, for me, the remote control is not decoded actually :cry:

Yes. Unfortunately, most AC remotes are stateful and emit a full state of the AC. It can be both a benefit and a drawback depending on what you are trying to do.

I have the same behavior with a Toshiba remote for my AC, it’s sending all the state so when I was learning codes the result was always different. I guess I will configure some “states” but I won’t be able to just “increase the temperature by 1” or similar cases.
Thanks for your replies guys!

1 Like

I know this is a bit old, but just for completeness:
I know there are a lot of AC units with serial ports or similar exposed on their PCB. Depending on the risk you are willing to take, maybe google your indoor units model and see if you find something. The could just hook up a wemos or even a really cheap esp01m and use esphome.

1 Like