ibm watsonプラットフォームへの接続には、フォローインコードが使用されています。 chkの値は0になります。なぜなら、私はdonotに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コンソールはです。状態を確認するために
メイクいくつか変更された場合やclient.stateを使用するには、()、それは示し-1「クライアントがきれいに切断された」であること
エラーとは何ですか?
私はあなたのWindows ipconfigのスクリーンショットを自動設定IPアドレスを表示している理由は分かりません。それはあなたのWindowsマシン上で無線LAN接続を共有しようとしているからですか? 他のデバイス(ラップトップのような)を使ってブリッジが成功し、そのデバイスがインターネットにアクセスできるかどうかを確認するか、サンプルスケッチのいずれかを試してみてください。多分https://github.com/knolleary/pubsubclient/blob /master/examples/mqtt_esp8266/mqtt_esp8266.ino? –
そして、私はあなたのコードにいくつかのデバッグを追加して、どこで停止するか絞り込みます。 – amadain
私のスケッチで使用したIPアドレスは私のローカルネットワークであり、私はクラウドサービスに接続する際にどのIPを使うべきかを知りたいと思っていました。イーサネット接続によるものか無線接続によるものか –