お世話になります。
MQTTのテストをesp 8266 wroom 02 で実施しています。
一定量を超えるデータをサブスクライブした段階で以下エラーが頻発(1分で50回程度)します。
サブスクライブしたデータ量が最大値になっているのでエラーが出ているようなのですが、
Pubsubを継続的に実施する為、本エラーを取り除きたいです。
質問は、本エラーに対する具体的な対応コードがわかりませんので
教えてください。宜しくお願い致します。
◆該当エラー
LmacRxBlk:1
◆環境は以下になります。
esp 8266 wroom 02
Arduino 1.6.11
◆スケッチは以下になります。
#include <MQTT.h> #include <PubSubClient.h> #include <ESP8266WiFi.h> #include <PubSubClient.h> #define DF_LED_12 12 // LED #define DF_LED_14 14 // LED // アクセスポイント接続情報 const char *wifi_ssid = "xxxxx"; // SSID const char *wifi_pass = "xxxxx"; // パスワード // MQTT接続情報 const char *mqtt_host = "xxxxx"; // 接続先のホスト名 2あるのでどちらか const char *mqtt_user = "xxxxx"; // ユーザー名 const char *mqtt_pass = "xxxxx"; // パスワード const char *mqtt_topic = "xxxxx/office/tokyo/3F/temp"; // アクセス先トピック const char *mqtt_client = "xxxxx"; int count = 0; WiFiClient wclient; PubSubClient client(wclient, mqtt_host); #define BUFFER_SIZE 100 void callback(const MQTT::Publish& pub) { // Serial.print(pub.topic()); // Serial.print(" => "); if (pub.has_stream()) { uint8_t buf[BUFFER_SIZE]; int read; while (read = pub.payload_stream() ->read(buf, BUFFER_SIZE)){ Serial.write(buf, read); } pub.payload_stream() ->stop(); Serial.println(""); } else Serial.println(pub.payload_string()); } void setup() { Serial.begin(115200); pinMode(DF_LED_12, OUTPUT); // LED pinMode(DF_LED_14, OUTPUT); // LED delay(10); Serial.println(); Serial.println(); } void loop() { if (WiFi.status() != WL_CONNECTED) { Serial.print("Connecting to "); Serial.print(wifi_ssid); Serial.println("..."); WiFi.begin(wifi_ssid, wifi_pass); if (WiFi.waitForConnectResult() != WL_CONNECTED) { return; } Serial.println("WiFi connected"); } //MQTTサーバーへ接続する if (WiFi.status() == WL_CONNECTED) { if (!client.connected()) { Serial.println("Connecting to MQTT server"); if (client.connect(MQTT::Connect(mqtt_client).set_auth(mqtt_user, mqtt_pass))) { Serial.println("Connected to MQTT server"); client.set_callback(callback); client.subscribe(mqtt_topic); } else { Serial.println("Could not connect to MQTT server"); } } Serial.print("---------->>>>>> Publishing: "); String message = String("count ") + count; Serial.println(message); client.publish(mqtt_topic, message); count++; digitalWrite(DF_LED_12, HIGH); delay(200); digitalWrite(DF_LED_12, LOW); delay(100); if (client.connected()) { client.loop(); } } delay(10000); } ``` ```
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。