Читайте байт по данным, опубликованным в теме MQTT - PullRequest
0 голосов
/ 18 июня 2019

Я использую 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"); }

Нет сообщений об ошибках. Просто я ничего не вижу на своей консоли.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...