无法使用 nodemcu 在 MQTT 上发布数据

时间:2021-04-21 09:57:42

标签: mqtt publish sensors

我的项目是检索传感器数据并将其发布到 MQTT 主题上。但是在尝试发布到 MQTT 时,我遇到了数据转换问题。问题代码行如下

这是我的代码片段

int respons;
int responss;

// 网络设置。

const char* ssid = "xxxxx";
const char* password = "xxxxxxx";
const char* mqtt_server = "broker.mqtt-dashboard.com";

WiFiClient espClient;
PubSubClient client(espClient);
long lastMsg = 0;
char msg[50];
int value = 0;

void setup() {

 Serial.begin(19200);
 setup_wifi();
 client.setServer(mqtt_server, 1883);
 client.setCallback(callback);
 }

void setup_wifi() {

 delay(10);
 Serial.println();
 Serial.print("Connecting to ");
 Serial.println(ssid);

 WiFi.begin(ssid, password);

 while (WiFi.status() != WL_CONNECTED) {
 delay(500);
 Serial.print(".");
 Serial.begin(19200);

 }

 Serial.println("");
 Serial.println("WiFi connected");
 Serial.println("IP address: ");
 Serial.println(WiFi.localIP());
  }

 void callback(char* topic, byte* payload, unsigned int length) {
 Serial.print("Message arrived [");
 Serial.print(topic);
 Serial.print("] ");
 for (int i = 0; i < length; i++) {
 Serial.print((char)payload[i]);
 }

 }

void reconnect() {

// 循环直到我们重新连接

Serial.println();
while (!client.connected()) {
Serial.print("Attempting MQTT connection...");
// Attempt to connect
if (client.connect("ESP8266Client")) {
  Serial.println("connected");
  // Once connected, publish an announcement...
  char dataArray[10]; //an array to put data in
  sprintf(dataArray, "%d", responss); //turn the data into a C string
  client.publish("Topic", dataArray); //publish the data
  //delay(3000);
  // ... and resubscribe
  //client.subscribe("inTopic");
  } else {
  Serial.print("failed, rc=");
  Serial.print(client.state());
  Serial.println(" try again in 5 seconds");
  // Wait 5 seconds before retrying
  delay(5000);
   }
   }
   }

  void loop() {

  if (!client.connected()) {
  reconnect();
  }
  client.loop();
  long now = millis();
  if (now - lastMsg > 2000) {
  lastMsg = now;
  ++value;
  Serial.print("Publish message: ");
  Serial.println(respons);
//client.publish("Topic", "sensor");
  }
  Serial.begin(19200);
  byte poll[] = {0xAF, 0xFC, 0xFE, 0x40};
  Serial.write(poll, sizeof(poll));
  delay(3000);
  int x = 6;

  while (x > 0)
  {
  responss = Serial.read();
//Serial.print("output =");
  Serial.println(responss, HEX);
  delay(500);
  x--;
  }
  Serial.end();

  }

“这是我想发布传感器数据的代码,但是当我放置 const char 以外的变量时,它会出错” 请告诉我该怎么做?

0 个答案:

没有答案