Integração Python com Broadlink RM4 Mini

Se você deseja controlar ou integrar o RM4 Mini, pode usar APIs ou ferramentas específicas, como a biblioteca python-broadlink

Para controlar o dispositivo, você precisa conectá-lo à sua rede local, e configurar o dispositivo com o aplicativo Broadlink.

Identificação do RM4 (IP e MAC)

sudo nmap -sP 192.168.0.0/24
Nmap scan report for 192.168.0.21
Host is up (0.011s latency).
MAC Address: 24:DF:A7:F9:4D:84 (Hangzhou BroadLink Technology)

Configuração

Para fins de testes. iremos executar o seguinte comando:

docker run --rm -it python:3.12 /bin/bash

E dentro do container:

apt update && apt install vim -y

Instalação (Use o pip3 para instalar a versão mais recente deste módulo.)

pip3 install broadlink

Teste de conexão

cat << EOF > /opt/conexao.py

import broadlink

# Configurações do Broadlink
host = ('192.168.0.21', 80)  
mac_address = bytearray.fromhex("24DFA7F94D84")  
device_type = 0x61A2  # Tipo do dispositivo (RM4 Mini) / RM4 Pro: 0x648D

# Conectar ao dispositivo Broadlink
device = broadlink.gendevice(device_type, host, mac_address)
device.auth()

print("Conexão bem-sucedida!")

EOF

Execute

python /opt/conexao.py

Após mensagem de *Conexão bem-sucedida!* vamos capturar os comando do controle remoto.

cat << EOF > /opt/aprendizado.py

import broadlink
import time

# Configurações do Broadlink
HOST = ('192.168.0.21', 80)  
MAC_ADDRESS = bytearray.fromhex("24DFA7F94D84") 
DEVICE_TYPE = 0x61A2 

# Inicializar o dispositivo Broadlink
print("Conectando ao dispositivo Broadlink...")
device = broadlink.gendevice(DEVICE_TYPE, HOST, MAC_ADDRESS)
device.auth()
print("Conexão bem-sucedida!")

print("\nO modo de aprendizado está ativo. Aponte o controle remoto e pressione os botões.")
print("Pressione Ctrl+C para encerrar o programa.\n")

try:
    while True:
        print("Aguardando código IR...")
        device.enter_learning()
        time.sleep(5)  # Aguarda até 5 segundos para capturar o código

        try:
            learned_data = device.check_data()
            if learned_data:
                ir_code = learned_data.hex()
                print("\nCódigo IR capturado:")
                print(ir_code)
            else:
                print("Nenhum código foi capturado. Tente novamente.")
        except broadlink.exceptions.StorageError:
            print("Erro: O armazenamento do dispositivo está cheio. Reiniciando o modo de aprendizado.")
            time.sleep(2)  # Pequena pausa antes de tentar novamente

except KeyboardInterrupt:
    print("\nEncerrando o programa.")

EOF

Execute

python /opt/aprendizado.py