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

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

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

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

Q&A

2回答

1443閲覧

ESP-WROOM-02(Arduino)からMilkcocoaへPushできない

chibita

総合スコア12

Arduino

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

0グッド

0クリップ

投稿2019/05/31 14:35

前提・実現したいこと

ESP-WROOM-02開発ボード使用して、
アナログ値(センサー)をMilkcocoaへPushしたい。

発生している問題・エラーメッセージ

sendはonsendで通知は受け取れている。

pushしてもデータストアに保存されず、onpushでキャッチできていない。

MIlkcocoaのfreeboardでリアルタイムで通知状況を見ていても
sendは受信しているが、pushは受信できていない。

該当のソースコード

SSID等は書き換えてます。

#include <ESP8266WiFi.h> #include <Milkcocoa.h> //********************************************************************** //定数宣言 //WiFi Access Point #define WLAN_SSID "ssid" #define WLAN_PASS "pass" //Milkcocoa Setup #define MILKCOCOA_APP_ID "app_id" #define MILKCOCOA_DATASTORE "esp8266" #define MILKCOCOA_SERVERPORT 1883 #define MILKCOCOA_API_KEY "api_key" #define MILKCOCOA_ARI_SELECT "api_select" // 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); Milkcocoa *milkcocoa = Milkcocoa::createWithApiKey(&client, MQTT_SERVER, MILKCOCOA_SERVERPORT, MILKCOCOA_APP_ID, MQTT_CLIENTID, MILKCOCOA_API_KEY, MILKCOCOA_ARI_SELECT); //loop関数で使用 int loopCounter = 0; //********************************************************************** //Wi-Fi接続処理関数 void setupWiFi() { // Connect to WiFi network Serial.println(); Serial.print("Connecting to "); Serial.println(WLAN_SSID); //WiFi start WiFi.begin(WLAN_SSID, WLAN_PASS); int wifiCounter = 0; //WiFi接続完了までループ while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); //20回失敗したらリセット→再試行 if(wifiCounter > 20) { Serial.println("Failed to connect WiFi. Reset now."); delay(500); ESP.deepSleep(2 * 1000 * 1000); delay(1000); } delay(50); wifiCounter++; } Serial.println(""); Serial.println("WiFi connected"); // 接続成功 IP address表示 Serial.println(WiFi.localIP()); Serial.println("====================================="); Serial.println(""); } //Milkcocoa接続処理関数 void connectToMilkcocoa() { //接続できなかったら失敗したとみなして再起動 if(!milkcocoa->loop()){ Serial.println("Failed to connect Milkcocoa. Reset now."); delay(500); ESP.deepSleep(2 * 1000 * 1000); delay(1000); } Serial.println("connected Milkcocoa."); } //Milkcocoaにデータが書き込まれると呼び出される //つまり送信成功→書き込まれたデータを取得しシリアル出力 //60分後に再起動 void onpush(DataElement *elem) { Serial.println("Onpush comming."); Serial.print("Get value: "); Serial.println(elem->getInt("moisture")); Serial.println("Sleep start, reset after 60 minutes."); delay(500); //Test 10秒 ESP.deepSleep(10 * 1000 * 1000); //本稼働時は60分DeepSleep // ESP.deepSleep(3600 * 1000 * 1000); delay(1000); } void onsend(DataElement *elem) { Serial.println("Onsend comming."); } //********************************************************************** //初期処理 void setup() { //シリアル出力起動 Serial.begin(115200); delay(10); //Wi-Fi接続処理 setupWiFi(); //Milkcocoa 接続 if( milkcocoa->on(MILKCOCOA_DATASTORE, "push", onpush) ){ Serial.println("Milkcocoa on sucesss○"); } else { Serial.println("Milkcocoa on failure×"); } if( milkcocoa->on(MILKCOCOA_DATASTORE, "send", onsend) ){ Serial.println("Milkcocoa on send sucesss○"); } else { Serial.println("Milkcocoa on send failure×"); } Serial.println(); } //メイン処理 void loop() { int sensorValue = 0; //Milkcocoa接続処理 connectToMilkcocoa(); delay(1000); //土壌湿度センサー値取得 sensorValue = analogRead(A0); Serial.print("Moisture Sensor Value:"); Serial.println(sensorValue); //Milkcocoaへのデータ作成 DataElement elem = DataElement(); elem.setValue("moisture", sensorValue); //作成データ送信(1回目のループのときのみ) if(loopCounter == 0){ milkcocoa->push(MILKCOCOA_DATASTORE, &elem); delay(10000); // milkcocoa->send(MILKCOCOA_DATASTORE, &elem); } //ループが10回呼ばれたら失敗したとみなす if(loopCounter > 10){ Serial.println("Failed to push data to Milkcocoa. Reset now."); delay(500); //Max値失敗したらリセット→再試行 ESP.deepSleep(2 * 1000 * 1000); delay(1000); } loopCounter++; }

シリアルモニタの出力内容

Connecting to aterm-1ee3cb-g ....... WiFi connected 192.168.10.9 ===================================== Milkcocoa on sucesss○ Milkcocoa on send sucesss○ Connecting to MQTT... MQTT Connected! connected Milkcocoa. Moisture Sensor Value:9 connected Milkcocoa. Moisture Sensor Value:9 connected Milkcocoa. Moisture Sensor Value:9 connected Milkcocoa. Moisture Sensor Value:9 connected Milkcocoa. Moisture Sensor Value:9 connected Milkcocoa. Moisture Sensor Value:9 connected Milkcocoa. Moisture Sensor Value:9 connected Milkcocoa. Moisture Sensor Value:9 connected Milkcocoa. Moisture Sensor Value:8 connected Milkcocoa. Moisture Sensor Value:9 connected Milkcocoa. Moisture Sensor Value:9 connected Milkcocoa. Moisture Sensor Value:9 Failed to push data to Milkcocoa. Reset now.

試したこと

・接続にAPI Key認証ありなしでも変わらない。(いづれもsendはできている)
・push後にdelayかけても変わらない。
・ボードマネージャを変えてもできない
2.3.0
2.4.0-rc2
2.4.0(コンパイルエラーになる)
2.5.1(コンパイルエラーになる)
2.5.2(コンパイルエラーになる)

補足情報(FW/ツールのバージョンなど)

Arduino IDE:1.8.9
ボードマネージャ:2.3.0/2.4.0-rc2
ESP-WROOM-02開発ボード
秋月電子通商さんの開発ボードを使用しています。
http://akizukidenshi.com/catalog/g/gK-12236/

どうか皆様の知恵をお借り致したく。
宜しくお願い致します。

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

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

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

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

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

guest

回答2

0

アプリを作り直してみてはどうでしょうか?
同じような現象になり、新しくアプリを作ってみると、データストアに正しく追加・更新されるようになりました。

投稿2019/06/26 08:29

KKinoshita

総合スコア23

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

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

chibita

2019/06/26 13:10

KKinoshita様 ご回答ありがとうございます。 新しく作り直して、再度試してみます。
guest

0

Milkcocoaの記事を見てたら、無料プランではpush数に上限があるというはなしですが、
そこらへんは大丈夫でしょうか

投稿2019/05/31 22:23

y_waiwai

総合スコア87719

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

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

chibita

2019/06/01 00:01

y_waiwai様 ご回答ありがとうございます。 上限数の件は以下ですね。 https://mlkcca.com/price.html メッセージ数は20件程度のsendをしたのみで、上限には程遠いです。 初めからpushがされずデータストアには何も追加されないので保存データ数の上限にも達してません。 接続数は1台のみ。 ご指摘の内容については問題無いと思います。 ルーターの1883ポート解放も試しましたがこれも該当しませんでした。 色々と調べてますが、困り果ててます。 過去記事は問題なく動いているとの内容ばかりで…。 何がいけないのでしょう?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問