import socket
import time

def configurar_epson_tmt20(ip_impresora, nueva_ip, mascara="255.255.255.0", gateway="192.168.1.1"):
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.settimeout(5)
    
    try:
        # Conecta puerto web config (80)
        sock.connect((ip_impresora, 80))
        
        # Comando IP (formato Epson PMA)
        comando = f"""POST /PMA.plf HTTP/1.1\r\n
Host: {ip_impresora}\r\n
Content-Type: application/x-www-form-urlencoded\r\n
Content-Length: 100\r\n\r\n
net.if.ip={nueva_ip}&net.if.mask={mascara}&net.if.gw={gateway}&submit=Apply""".encode()
        
        sock.send(comando)
        response = sock.recv(1024)
        print(f"✅ Respuesta: {response.decode(errors='ignore')}")
        
        # Reinicia impresora (ESC/POS puerto 9100)
        sock_raw = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        sock_raw.connect((nueva_ip, 9100))
        sock_raw.send(b'\x1B\x40')  # Reset
        sock_raw.close()
        
        return "✅ IP cambiada exitosamente"
        
    except Exception as e:
        return f"❌ Error: {e}"
    finally:
        sock.close()

# USAR:
print(configurar_epson_tmt20("192.168.1.100", "192.168.1.200"))
