2017-05-24 159 views
1

我已編程到我的ESP8266並訂閱了一個話題以繼續收聽消息。這是將消息注入IBM Iot節點的圖形視圖。消息未從IBM Bluemix發佈到ESP8266

enter image description here

這是我的觀點注入

enter image description here

這是我的IBM物聯網節點的設置的設置。

enter image description here

這裏是我的日誌在串行監視器,它是連接和訂閱命令通道

enter image description here

到目前爲止好,當我試圖注入消息給我的IBM Iot節點,那麼它不會發布消息,因爲它沒有到達串行監視器,也沒有登錄調試視圖。在這裏你可以看到

enter image description here

這裏是源代碼:

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

const char* ssid = "shiv"; 
const char* password = "[email protected]"; 

#define ORG "2kafk4" 
#define DEVICE_TYPE "ESP8266" 
#define DEVICE_ID "5CCF7FEED6F0" 
#define TOKEN "[email protected]*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命令Cloud Foundry的日誌,這是https://pastebin.com/dfMaS1Gd

誰能暗示我什麼,我我做錯了嗎?提前致謝。

+0

@valerielampkin你有什麼想法嗎? –

+0

你對IoTin節點有什麼要求?我認爲默認情況下,期望JSON,而不是字符串。 – ValerieLampkin

+0

我遇到過一個教程,他們拿了一個字符串的例子。無論如何,我將在這裏注入JSON https://i.stack.imgur.com/hFbIa.png,像{「name」:「williams」},並將IOT節點的格式更改爲json。我希望這是你的意思 –

回答

1

確認在您的節點配置中正確指定了設備類型。目前屏幕截圖顯示0.16.2,它似乎與您註冊的設備類型和您的代碼中指定的設備類型不匹配。

+0

@ nop77svk如何?這似乎是對我的回答! –

+0

你說得對。抱歉,是我的錯。 – nop77svk