質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

MQTT

MQTT(Message Queue Telemetry Transport)とは、TCP/IPネットワークで利用可能な通信プロトコルの一つで、IoT/M2M向けに開発された軽量なプロトコルです。ヘッダ部分は最小2バイトと小さく、通信量・CPU負荷・電力消費量などを抑えることができます。

受付中

esp 8266 wroom 02 Arduino 上で MQTT を実施する際バッファ最大値を超え LmacRxBlk:1 というエラーが頻発する

退会済みユーザー

退会済みユーザー

総合スコア0

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

MQTT

MQTT(Message Queue Telemetry Transport)とは、TCP/IPネットワークで利用可能な通信プロトコルの一つで、IoT/M2M向けに開発された軽量なプロトコルです。ヘッダ部分は最小2バイトと小さく、通信量・CPU負荷・電力消費量などを抑えることができます。

2回答

0評価

0クリップ

3233閲覧

投稿2016/09/22 12:07

編集2022/01/12 10:55

お世話になります。

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); } ``` ```

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

MQTT

MQTT(Message Queue Telemetry Transport)とは、TCP/IPネットワークで利用可能な通信プロトコルの一つで、IoT/M2M向けに開発された軽量なプロトコルです。ヘッダ部分は最小2バイトと小さく、通信量・CPU負荷・電力消費量などを抑えることができます。