2017-10-24 28 views
0

itemsboard.io 대시 보드에 esp_mqtt 라이브러리를 사용하여 센서 데이터를 게시하려고합니다. 그러나 도서관과 스물 보드 사이의 연결은 확립되지 않습니다. esp8266 nodeMCU v2 및 platformIO를 사용 중입니다.esp_mqtt 라이브러리를 thingsboard.io에 연결하는 방법은 무엇입니까?

다음은 esp_mqtt 라이브러리 설명서에 대한 링크입니다. 당신은 당신이 결코 효과가 있을까되지 않는 ESP8266에 브로커를 실행하지 않는 localhost에 연결하려고

#include <ESP8266WiFi.h> 
    #include <MQTT.h> 


    #define CLIENT_ID "client1" 
    #define TOPIC "v1/devices/me/telemetry" 
    #define TOKEN "access token" 

    MQTT myMqtt(CLIENT_ID,"localhost",1883); 
    const char* ssid  = "ssid"; 
    const char* password = "password"; 


    void setup() { 
    Serial.begin(115200); 
    delay(1000); 
    setup_wifi(); 
    Serial.println("Connecting to MQTT server"); 

    // setup callbacks 
    myMqtt.onConnected(myConnectedCb); 
    myMqtt.onDisconnected(myDisconnectedCb); 
    myMqtt.onPublished(myPublishedCb); 
    myMqtt.onData(myDataCb); 

    Serial.println("connect mqtt..."); 
    myMqtt.setClientId(CLIENT_ID); 
    myMqtt.setUserPwd(TOKEN,""); 

    myMqtt.connect(); 
    Serial.println("subscribe to topic..."); 
    myMqtt.subscribe(TOPIC); 
    delay(10); 
    } 


     void loop() { 

    float value = analogRead(A0); 
    String temp=String(value); 

    // publish value to topic 
    String payload = "{"; 
    //payload += "\"temperature\":"; payload += temperature; payload += ","; 
    payload += "\"temperature\":"; payload += temp; 
    payload += "}"; 

    // Send payload 
    char attributes[100]; 
    payload.toCharArray(attributes, 100); 
    //String(attributes); 
    boolean result = myMqtt.publish("v1/devices   
    /me/telemetry",attributes,100,1,0); 
     delay(1000); 
     } 

답변

1

: 여기 https://github.com/tuanpmt/esp_mqtt/blob/master/README.md

는 코드입니다.

thingsboard.io의 브로커의 호스트 이름을 확인하고 localhost을 해당 값으로 바꿔야합니다. 포트 번호도 변경해야 할 수 있습니다.

나는 또한 클라이언트 ID를 추측하고있어 TB MQTT의 API의 경우 고유하지 않아도 client1

+0

클라이언트 ID보다 좀 더 독특한 뭔가해야 할 수도 있습니다. 사용자 이름은 액세스 토큰을 포함해야합니다. – Andrew