2017-01-05 4 views
0

Следующий код был использован для подключения к платформе ibm watson. Значение chk производится 0, так как сейчас у меня нет dth11. Я просто хочу видеть работу. Но на серийном мониторе он показывает, что он подключается. Вот код:Этот код подключен к платформе ibm watson

#include <SPI.h> 
    #include <Ethernet.h> 
    #include <PubSubClient.h> 
    #include <dht11.h> 

    byte mac[] = {0xDE, 0xED, 0xBA, 0xFE, 0xFE, 0xED }; 
    char macstr[] = "deedbafefeed"; 
    byte localserver[] = {192, 168, 1, 98 }; 
    byte ip[]  = {192, 168, 1, 20 }; 

    char servername[]="quickstart.messaging.internetofthings.ibmcloud.com"; 
    String clientName = String("d:quickstart:arduino:") + macstr; 
    String topicName = String("iot-2/evt/status/fmt/json"); 

    dht11 DHT11; 
    float tempF = 0.0; 
    float tempC = 0.0; 
    float humidity = 0.0; 
    EthernetClient ethClient; 

     PubSubClient client(servername, 1883, 0, ethClient); 

    void setup() 
     { 

    Ethernet.begin(mac, ip); 
    Serial.begin(9600); 
    DHT11.attach(3); 

     } 

     void loop() 
     { 
    char clientStr[34]; 
     clientName.toCharArray(clientStr,34); 
     char topicStr[26]; 
    topicName.toCharArray(topicStr,26); 
     getData(); 
     if (!client.connected()) { 
     Serial.print("Trying to connect to: "); 
     Serial.println(clientStr); 
     client.connect(clientStr); 
     } 
     if (client.connected()) { 
     String json = buildJson(); 
     char jsonStr[200]; 
    json.toCharArray(jsonStr,200); 
    boolean pubresult = client.publish(topicStr,jsonStr); 
     Serial.print("attempt to send "); 
    Serial.println(jsonStr); 
    Serial.print("to "); 
    Serial.println(topicStr); 
    if (pubresult) 
    Serial.println("successfully sent"); 
    else 
    Serial.println("unsuccessfully sent"); 
    } 
    delay(5000); 
     } 

    String buildJson() { 
    String data = "{"; 
     data+="\n"; 
     data+= "\"d\": {"; 
     data+="\n"; 
     data+="\"myName\": \"Arduino DHT11\","; 
     data+="\n"; 
      data+="\"temperature (F)\": "; 
     data+=(int)tempF; 
     data+= ","; 
     data+="\n"; 
     data+="\"temperature (C)\": "; 
      data+=(int)tempC; 
     data+= ","; 
     data+="\n"; 
      data+="\"humidity\": "; 
     data+=(int)humidity; 
     data+="\n"; 
     data+="}"; 
     data+="\n"; 
     data+="}"; 
      return data; 
     } 

     void getData() { 
     int chk = DHT11.read(); 
     chk=0; 
     switch (chk) 
     { 
     case 0: 
     Serial.println("Read OK"); 
     humidity = (float)DHT11.humidity; 
      tempF = DHT11.fahrenheit(); 
     tempC = DHT11.temperature; 
     break; 
     case -1: 
     Serial.println("Checksum error"); 
     break; 
     case -2: 
     Serial.println("Time out error"); 
      break; 
     default: 
     Serial.println("Unknown error"); 
     break; 
      } 
     } 

Это output shown.

Также консоль ipconfig составляет here.

если делают несколько изменений и использование client.state(), чтобы проверить состояние, то это показывает, -1, что является «клиент отключен чисто»

Что такое ошибка?

+0

Я не уверен, почему вы предоставили снимок экрана из ваших ipconfig windows, отображающий адрес ip-адреса auto-config. Это потому, что вы пытаетесь использовать Wi-Fi-соединение на вашем компьютере Windows? Если это так, вы можете попробовать другое устройство (например, ноутбук), чтобы проверить, что мост является успешным, и что у устройства есть доступ в Интернет, или попробуйте один из примеров эскизов - возможно, https://github.com/knolleary/pubsubclient/blob /master/examples/mqtt_esp8266/mqtt_esp8266.ino? –

+0

И я бы добавил еще немного отладки в ваш код, чтобы сузить место его остановки. – amadain

+0

ip-адрес, который я использовал в своем эскизе, - это моя локальная сеть, и я хотел знать, какой ip должен использоваться при подключении к облачным сервисам. Один из-за подключения к сети Ethernet или один из-за беспроводного соединения –

ответ

0

Проблема решена, но теперь устройство продолжает непрерывно подключаться и отключать быстрый запуск Следующее изображение. enter image description here

Любая помощь для этого.

+0

Вы все еще используете один и тот же идентификатор устройства - я вижу записи в журнале, говорящие: «Запрос на аутентификацию задерживается или слишком много запросов на аутентификацию». Если вы можете попробовать другой идентификатор, мы сможем сузить ваши попытки и что может быть причиной разъединений. – ValerieLampkin

+0

ok Я пробовал, но ничего не произошло. Я сделаю это еще раз и проинформирую вас @ValerieLampkin –

+0

deedbafe2ee2 - это новый идентификатор, который я использовал –

 Смежные вопросы

  • Нет связанных вопросов^_^