質問編集履歴

1 現在のできているところ、ソースコードを追記しました。

umi_kappa

umi_kappa score 12

2015/11/25 23:25  投稿

ESP-WROOM-02をWi-FiモジュールとしてArduinoに接続(SoftwareSerial)してMilkcocoa Arduino SDKを使用する方法について
###前提・実現したいこと
ArduinoにESP-WROOM-02をあくまでWi-FiモジュールとしてSoftwareSerialで接続した場合(ESP-WROOM-02にはプログラミングは行わない)、
どのようにしたらMilkcocoa Arduino SDKでMilkcocoaとやり取りできるようになるのでしょうか?
###ここまではできました  
[ESP-WROOM-02とArduino UNOでhttp通信](http://www.mkbtm.jp/?p=644)のサンプルを基にSoftwareSerialでArduino~ESP8266のシリアル通信・サーバー上のPHPから値取得はできています。SoftwareSerialをMilkcocoa Arduino SDKに渡す部分で悩み中です。  
###SoftwareSerialからEthernetClientへ置換えられないか
[ESP8266やArduinoでMilkcocoaを使う方法(Milkcocoa Arduino SDK)](http://blog.mlkcca.com/iot/milkcocoa-arduino/)
にて、
```
// 'client'は、Ethernet or WiFiのClient
Milkcocoa milkcocoa = Milkcocoa(&client, MQTT_SERVER, MILKCOCOA_SERVERPORT, MILKCOCOA_APP_ID, MQTT_CLIENTID);
```
Milkcocoaコンストラクタの第1引数にArduino基本クラスのEthernetClientのインスタンスを渡すとのことなのですが、ArduinoとESP-WROOM-02間はSoftwareSerialでシリアル通信しているので、そこをEthernetClientへ置き換えられればうまくいくのではないかと考えたのですが、解決方法がわからずこちらで質問させていただきました。
###ソースコード  
ほぼ上記の記事のサンプルのままです。それにSoftwareSerialを追記しています。  
```Arduino  
#include "ESP8266.h"  
#include <SoftwareSerial.h>  
#include <Milkcocoa.h>  
 
/************************* WiFi Access Point *********************************/  
 
#define WLAN_SSID      "...SSID..."  
#define WLAN_PASS      "...PASS..."  
 
 
/************************* Your Milkcocoa Setup *********************************/  
 
#define MILKCOCOA_APP_ID     "...YOUR_MILKCOCOA_APP_ID..."  
#define MILKCOCOA_DATASTORE  "esp8266"  
 
/************* Milkcocoa Setup (you don't need to change this!) ******************/  
 
#define MILKCOCOA_SERVERPORT 1883  
 
/************ Global State (you don't need to change this!) ******************/  
 
SoftwareSerial mySerial(12, 11); /* RX:12, TX:11 */  
ESP8266 wifi(mySerial);  
 
const char MQTT_SERVER[] PROGMEM   = MILKCOCOA_APP_ID ".mlkcca.com";  
const char MQTT_CLIENTID[] PROGMEM = __TIME__ MILKCOCOA_APP_ID;  
 
Milkcocoa milkcocoa = Milkcocoa(mySerial, MQTT_SERVER, MILKCOCOA_SERVERPORT, MILKCOCOA_APP_ID, MQTT_CLIENTID);  
 
void setup() {  
 Serial.begin(115200);  
 delay(10);  
 
 Serial.println(F("Milkcocoa SDK demo"));  
 
 /*  
 // Connect to WiFi access point.  
 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());  
 */  
 Serial.println( milkcocoa.on(MILKCOCOA_DATASTORE, "push", onpush) );  
};  
 
void loop() {  
 milkcocoa.loop();  
 
 DataElement elem = DataElement();  
 elem.setValue("v", 1);  
 
 milkcocoa.push(MILKCOCOA_DATASTORE, elem);  
 delay(7000);  
};  
 
void onpush(DataElement elem) {  
 Serial.println("onpush");  
 Serial.println(elem.getInt("v"));  
};  
 
```  
###Milkcocoaを使いたい!
この壁さえ越えられれば、私のような趣味で電子工作をやっている人間でもArduinoからMilkcocoaを使って楽しい電子工作ライフを満喫できると思うので、なんとかして実現したいです。。
  • Arduino

    1329 questions

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

  • Milkcocoa

    114 questions

    Milkcocoaとは、バックエンド機能を提供するBaaSサービスの一つです。サーバを準備することなく、フロントエンドのコーディングだけでデータの保存・更新・取得、またPub/Sub通信行うことが可能です。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る