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

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

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

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

Q&A

解決済

1回答

3020閲覧

Milkcocoaからのデータを取得しArduino可したESP-EROOM-02のLEDON/OFF

coconico

総合スコア7

Arduino

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

0グッド

0クリップ

投稿2016/08/02 09:27

編集2016/08/02 10:09

はじめまして。
お世話になります。
Milkcocoaからのデータを取得し
Arduino可したESP-WROOM-02(以下WROOM)のLEDON/OFFを考えています。

WROOMへプログラムを書込み
Milkcocoa Testerから「SEND TEST」で
state ON
または
state OFF
を送信すれば、LEDが希望通りに動きます。

しかし、しばらく(正確な時間は分かりません5分位)
放置し、再度Milkcocoa TesterでSENDしても
WROOMのLEDが反応しなくなります。

どなたか、原因が分かる方、ご教授お願いいたします。

ArduinoIDEのバージョンは 1.6.10
以下、WROOMへ書込みしたソースコードです。
よろしくお願いいたします。

#include <ESP8266WiFi.h> #include <Milkcocoa.h> /************************* WiFi Access Point *********************************/ // Wi-Fi SSID #define WLAN_SSID "-----" // Wi-Fi PASSWORD #define WLAN_PASS "-----" /************************* Your Milkcocoa Setup *********************************/ #define MILKCOCOA_APP_ID "----------" #define MILKCOCOA_DATASTORE "---" /************* Milkcocoa Setup (you don't need to change this!) ******************/ #define MILKCOCOA_SERVERPORT 1883 /************ Global State (you don't need to change this!) ******************/ // Create an ESP8266 WiFiClient class to connect to the MQTT server. WiFiClient client; const char MQTT_SERVER[] PROGMEM = MILKCOCOA_APP_ID ".mlkcca.com"; const char MQTT_CLIENTID[] PROGMEM = __TIME__ MILKCOCOA_APP_ID; Milkcocoa milkcocoa = Milkcocoa(&client, MQTT_SERVER, MILKCOCOA_SERVERPORT, MILKCOCOA_APP_ID, MQTT_CLIENTID); // LEDを接続するピン const int ledPin = 5; #define LED_ON LOW #define LED_OFF HIGH // Wifi setup void setupWiFi() { Serial.println(); Serial.println(); Serial.print("Connecting to "); Serial.println(WLAN_SSID); WiFi.begin(WLAN_SSID, WLAN_PASS); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); } //--------------------------------------------------- void setup() { Serial.begin(115200); delay(10); // Serial.println(F("Milkcocoa SDK demo")); // LED Pin 出力 初期化 digitalWrite(ledPin,LED_OFF); pinMode(ledPin, OUTPUT); // 出力に設定 setupWiFi(); // Milkcocoaへデータがsendされたか監視 milkcocoa.on(MILKCOCOA_DATASTORE, "send", onSend); }; //--------------------------------------------------- void loop() { milkcocoa.loop(); }; //--------------------------------------------------- void onSend(DataElement *pelem) { // データの取得 String data = pelem->getString("state"); // 取得した文字列が"ON"ならば if (data == "ON") { Serial.println("ON"); digitalWrite(ledPin,LED_ON); } // 取得した値がON以外ならば else { Serial.println("OFF"); digitalWrite(ledPin,LED_OFF); } };

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

一応同じコードでやってみて、十数分後も動きました。どこまで処理が動いているか、限定していくと良いかもしれません。

WROOMのLEDが反応しなくなります。

とのことですが Serial.println("ON");は動いているのかなど。

もしくは、もしかしたらこれが関係あるかなと思いました。

https://github.com/milk-cocoa/Milkcocoa_Arduino_SDK/issues/3

投稿2016/08/02 13:35

編集2016/08/02 13:37
ShuheiHiya

総合スコア110

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ShuheiHiya

2016/08/02 14:04 編集

クライアントからのpingがないことが問題のようなので、ping APIを追加したバージョンを作ってみました。 https://github.com/milk-cocoa/Milkcocoa_ESP8266_SDK/archive/issue-1.zip こちらのライブラリを使って以下をコンパイルすると、どうなりますでしょう。 変更部分だけ書いています。(主にloop内) ``` int count = 0; void loop() { milkcocoa.loop(); count = count + 1; if(count >= 24) { milkcocoa.ping(); Serial.println("PING"); count = 0; } delay(1000); }; ```
coconico

2016/08/02 23:24

ShuheiHiya 様 早速の連絡、ありがとうございます。 最初は、コンパイルができず、調べてみると <Milkcocoa.h>がダブっているのが原因のようだったので Milkcocoa_ESP8266_SDK-masterを消して Milkcocoa_ESP8266_SDK-issue-1を追加。 これで、コンパイルできるようになりました。 10分ほど経過しても、通信は正常のようです。 ありがとうございます。 結果からして 「一定時間、Milkcocoaサーバーと無通信にすると切断されてしまう」 との解釈でよういのでしょうか? もし、上記の理由なら 頻繁にアクセスはサーバーに負担がかかるので 最低限、切断されない時間間隔でPingを送れば、と考えています。 よろしくお願いいたします。
ShuheiHiya

2016/08/03 01:22

> 結果からして > 「一定時間、Milkcocoaサーバーと無通信にすると切断されてしまう」 > との解釈でよういのでしょうか? はい、その解釈で問題ありません。18秒から36秒の間くらいが良いです(情報ソースがなくてすみません。。)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問