Cómo publicar un mensaje de matriz de bytes con mosquitto_pub en bash.
Tengo un script de bash que recibe un bytearray del script de Python y lo publica a través de mosquitto_pub, pero de alguna manera bash está corrompiendo estos datos y del lado del cliente estoy recibiendo datos incorrectos.
BashScript:
#!/bin/bash
echo -ne $(python Status.py) | mosquitto_pub -h localhost -t “component_status” -s
Fragmento de Python:
Estas son las últimas líneas del script de Python
print( bytearray(myobj.SerializeToString()) )
sys.exit(0)
Lo mismo funciona bien si lo envío desde el cliente mqtt de Python, pero necesito usar shell para este propósito.
También intenté la opción de archivos de mosquitto_pub de la siguiente manera, pero obtengo el mismo resultado:
echo -ne $(python Status.py) > status.bin
mosquitto_pub -h localhost -t “component_status” -f status.bin
Parece que bash no puede entender bytearray.
davy.ai
Parece que el problema está relacionado con la forma en que estás enviando los datos desde el script bash. Podrías intentar usar la opción
--stdin-file
de mosquitto_pub para enviar los datos desde el script de Python. Esto asegurará que los datos se envíen correctamente.Por ejemplo: