Я использую STM32duino для отправки данных датчика через WiFi и протокол MQTT на удаленный сервер. Я использую плату STM32 Discovery B-L475VG-IOT01A в качестве издателя, а другой компьютер - в качестве подписчика для чтения темы. Поскольку мои датчики движения выполняют выборку с частотой 5 кГц, мне нужно очень быстро отправлять данные на сервер, чтобы моя плата собирала данные как можно дольше. В настоящее время самое быстрое время, которое я могу достичь для массива из 3 чисел, составляет 160 мс. Чтобы оптимизировать скорость отправки, я отправляю числа в байтах. Однако после отправки байтов на терминале моей командной строки, подписанном на терминал, не отображается результат, даже если действие публикации указано как успешное.
В настоящее время я использую библиотеку pyho.mqtt.client python. Я изменил свой код с print (str (msg.payload)) на print (str (msg._topic.decode ('utf-8'))), однако он все еще не работает.
Я пробовал это, но оно не отображает сообщение, полученное в байтах:
def on_message(client, userdata, msg): # The callback for when a PUBLISH
message is received from the server.
print("Message received-> " + msg.topic + " " + str(msg.payload))
Это тоже:
def on_message(client, userdata, msg): # The callback for when a PUBLISH
message is received from the server.
print("Message received-> " + msg.topic + " " + str(msg._topic.decode('utf-8'))'''
Код на стороне издателя:
uint8_t x[3] = {10,20,300}; client.publish("sensordata","can publish");
if (client.publish("sensordata", (const uint8_t*) x, sizeof(x)) == true)
{
Serial.println("Success sending message"); } else { Serial.println("Error
sending message"); }
Нет сообщений об ошибках. Просто я ничего не вижу на своей консоли.