diff --git a/SampleSrc/mqtt01pub.ino b/SampleSrc/mqtt01pub.ino index 7d7054c..93e1b0a 100644 --- a/SampleSrc/mqtt01pub.ino +++ b/SampleSrc/mqtt01pub.ino @@ -1,4 +1,4 @@ -// MQTT Publisher example +// MQTT Publisher example //#include #include // ライブラリで PubSubClient をいれておく ★★★ 重要 ★★★ @@ -9,59 +9,65 @@ const char* server = "192.168.11.11"; // "mqtt.istlab.info"; const int port = 1883; // 注:学内ネットワークはポート制限あり。 -const char* pubTopic = "office/temp"; //"ex1/groupXX/sensor";のようにして、他の班とかぶらないようにすること。 -const char* mquser = "ex1"; -//const char* mqpass = "***PASSWORD***"; // 講義システム(三浦担当講義用)を参照すること。 -const char* mqpass = ""; // 講義システム(三浦担当講義用)を参照すること。 +const char* pubTopic = "jikken"; // 班名を入れれば他の班とかぶらない。+にはしない。ex. jikken/A4han + WiFiClient wifiClient; -char* clientid = "m5stickc01_00000001"; //デバイス個別に設定すればなんでもよい +char* clientid = "m5stickc01_00000002"; //デバイス個別に設定すればなんでもよい PubSubClient mqttClient(wifiClient); // MQTT Client void setup() { // M5.begin(); Serial.begin(115200); WiFi.begin(ssid, password); - while (WiFi.status() != WL_CONNECTED) { // 接続中... + while ( WiFi.status() != WL_CONNECTED ) { // 接続中... Serial.print("."); delay(200); } Serial.println( WiFi.localIP().toString() ); //取得したIPアドレス - // 参考:WiFiデバイスのMACアドレスを取得し、clientid として用いる - // (18行目のclientidの定義を変更し、char clientid[20]とするのがのぞましい) - // uint8_t mac[6]; - // esp_read_mac(mac, ESP_MAC_WIFI_STA); - // sprintf(clientid, "%02X:%02X:%02X:%02X:%02X:%02X", - // mac[0], mac[1], mac[2], mac[3], mac[4], mac[5] ); + mqttClient.setServer(server, port); - - if (!mqttClient.connected()) { - Serial.println("Try (re)connecting..."); + + if ( !mqttClient.connected() ) { + Serial.println("Try connecting MQTT ..."); reconnect(); } + + // 参考:WiFiデバイスのMACアドレスを取得し、送信する + uint8_t mac[6]; + esp_read_mac(mac, ESP_MAC_WIFI_STA); + char mbuf[100]; + sprintf(mbuf, "Message from %02X:%02X:%02X:%02X:%02X:%02X", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5] ); + + mqttClient.publish( pubTopic , mbuf ); // MQTT publish message + Serial.println(mbuf); //送信した内容をシリアルに表示して確認 + + Serial.println("publishするメッセージをSerialから送信してください"); } void loop() { // シリアルコンソールから書き込みがあれば, publishする - byte mbuf[100]; int pos = 0; - while (Serial.available()) { // ノンブロッキング + char mbuf[100]; int pos = 0; + while ( Serial.available() ) { // ノンブロッキング mbuf[pos] = Serial.read(); pos++; } if (pos > 0) { mbuf[pos-1] = 0; //改行をNULLに置き換える - Serial.println((char*)mbuf); + Serial.println(mbuf); + if ( !mqttClient.connected() ) reconnect(); // ブローカにデータを送信する。最後の false を true にすると、retained になる。 - bool ret = mqttClient.publish(pubTopic, mbuf, pos-1, false); - if (!ret){ - Serial.println("publish failed."); - } + // boolean ret = mqttClient.publish( pubTopic , mbuf, size, false ); + mqttClient.publish( pubTopic , mbuf ); + // if ( !ret ){ + // Serial.println("publish failed."); + // } } - delay(10); + delay(100); } void reconnect() { - while (!mqttClient.connected()) { - if (mqttClient.connect(clientid, mquser, mqpass)) { + while ( !mqttClient.connected() ) { + if ( mqttClient.connect(clientid) ) { Serial.println("Connected to MQTT Broker."); } else { Serial.printf("Connect Failed. state=%d", mqttClient.state()); @@ -69,3 +75,4 @@ } } + diff --git a/SampleSrc/mqtt01sub.ino b/SampleSrc/mqtt01sub.ino index 5504f02..2e852a2 100644 --- a/SampleSrc/mqtt01sub.ino +++ b/SampleSrc/mqtt01sub.ino @@ -1,4 +1,4 @@ -// MQTT Subscriber example +// MQTT Subscriber example // #include #include // ライブラリで PubSubClient をいれておく ★★★ 重要 ★★★ @@ -12,15 +12,14 @@ const char* server = "192.168.11.11"; // "mqtt.istlab.info"; const int port = 1883; // 注:学内ネットワークはポート制限あり。 -const char* pubTopic = "office/temp"; // 例: ex1/groupXX/sensor -const char* mquser = "ex1"; -const char* mqpass = "***PASSWORD***"; +const char* pubTopic = "+"; // 例: ex1/groupXX/sensor + WiFiClient wifiClient; char* clientid = "m5stickc01_00000001"; //デバイス個別に設定すればなんでもよい PubSubClient mqttClient(wifiClient); // MQTT Client void setup() { -// M5.begin(); + // M5.begin(); Serial.begin(115200); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { // 接続中... @@ -36,25 +35,25 @@ // mac[0], mac[1], mac[2], mac[3], mac[4], mac[5] ); mqttClient.setServer(server, port); mqttClient.setCallback(callback_on_subscribe); - + if (!mqttClient.connected()) { Serial.println("Try (re)connecting..."); reconnect(); } mqttClient.subscribe(pubTopic); - + } void loop() { - + mqttClient.loop(); // データがpublishされたら、callback_on_subscribe が呼ばれる - + delay(100); } void reconnect() { while (!mqttClient.connected()) { - if (mqttClient.connect(clientid, mquser, mqpass)) { + if (mqttClient.connect(clientid)) { Serial.println("Connected to MQTT Broker."); } else { Serial.printf("Connect Failed. state=%d", mqttClient.state()); @@ -81,3 +80,4 @@ // const char* str = sjdoc["string"]; } +