1

私は ESP8266 にプログラムし、1 つのトピックをサブスクライブしてメッセージを聞き続けました。これは、IBM IoT ノードにメッセージを注入する私のグラフィカル ビューです。

ここに画像の説明を入力

これは私の挿入ビューの設定です

ここに画像の説明を入力

これが私のIBM IoTノードの設定です。

ここに画像の説明を入力

これがシリアル モニターでの私のログです。これは cmd チャネルに接続され、サブスクライブされています。

ここに画像の説明を入力

これまでのところ、IBM IoT ノードにメッセージを挿入しようとしても、シリアル モニターに到達せず、デバッグ ビューにログオンしないため、メッセージがパブリッシュされません。ここで見ることができます

ここに画像の説明を入力

ソースコードは次のとおりです。

#include <ESP8266WiFi.h>
#include <PubSubClient.h> // https://github.com/knolleary/pubsubclient/releases/tag/v2.3

const char* ssid = "shiv";
const char* password = "manmohan@12345";

#define ORG "2kafk4"
#define DEVICE_TYPE "ESP8266"
#define DEVICE_ID "5CCF7FEED6F0"
#define TOKEN "opKF7v3@8jRM*mGkb_"

char server[] = ORG ".messaging.internetofthings.ibmcloud.com";
char topic[] = "iot-2/cmd/test/fmt/String";
char authMethod[] = "use-token-auth";
char token[] = TOKEN;
char clientId[] = "d:" ORG ":" DEVICE_TYPE ":" DEVICE_ID;

WiFiClient wifiClient;

void callback(char* topic, byte* payload, unsigned int payloadLength) {
  Serial.print("callback invoked for topic: "); Serial.println(topic);

  for (int i = 0; i < payloadLength; i++) {
    Serial.print((char)payload[i]);
  }
}
PubSubClient client(server, 1883, callback, wifiClient);

void setup() {
  Serial.begin(115200);
  Serial.println();
  wifiConnect();
  mqttConnect();
}

void loop() {
  if (!client.loop()) {
    mqttConnect();
  }
}

void wifiConnect() {
  Serial.print("Connecting to "); Serial.print(ssid);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.print("nWiFi connected, IP address: "); Serial.println(WiFi.localIP());
}

void mqttConnect() {
  if (!client.connected()) {
    Serial.print("Reconnecting MQTT client to "); Serial.println(server);
    while (!client.connect(clientId, authMethod, token)) {
      Serial.print(".");
      delay(500);
    }
    initManagedDevice();
    Serial.println();
  }
}

void initManagedDevice() {
  if (client.subscribe(topic)) {
    Serial.println("subscribe to cmd OK");
  } else {
    Serial.println("subscribe to cmd FAILED");
  }
}

cfコマンドを使用してクラウド ファウンドリーのログを確認しようとしました。こちらはhttps://pastebin.com/dfMaS1Gdです。

誰かが私が間違っていることを教えてもらえますか? 前もって感謝します。

4

1 に答える 1