mbed OS5 지원 버전 milkcocoa 라이브러리
(milkcocoa는 이전 기사을 참조하십시오.)
mbed OS5 대응이란?
mbed OS5에 대응하는 것은 mbed OS5의 API나 서비스에 대응했다는 것입니다.
이번 milkcocoa 라이브러리는 mbed OS5 Network API 및 RTOS을 지원했습니다.
Network API
API에 대응시키는 것으로, I/F의 전환을 편하게 할 수 있습니다. 인터넷 서비스인 milkcocoa에 연결하기 위한 Ethernet이나 Wi-Fi등의 I/F의 API는 공식으로 정의되고 있으므로, 향후는 이 정의에 따른 API를 가진 라이브러리가 늘어나갈 것이라고 생각 합니다. 현재는 이더넷(LAN)을 가진 mbed OS5 대응 보드용의 라이브러리와 ESP8266의 라이브러리가 대응하고 있습니다.
RTOS
milkcocoa와의 통신을 은폐하기 위해서 통신 부분을 thread화하고 있습니다. 통신은 뒤에서 움직이기 때문에 어플리케이션으로부터는 함수를 정기적으로 호출할 필요없고, 송신할 때도 통신 대기로 블록되지 않게 하고 있습니다.
라이브러리 및 샘플
mbed OS5 대응판 milkcocoa 라이브러리는 이하의 URL로 공개하고 있습니다.
htps : //로 ゔぇぺぺr. m베 d. 오 rg / 우세 rs / jk 소 ft / 코데 / 미 lk 여기 아오 s /
샘플 프로그램은 다음과 같습니다.
이더넷 버전
htps : //에서 ゔぇぺぺr. m베 d. 오 rg/우세 rs/jk 소 ft/코데/미 lk 여기 아오사 mpぇ_에 th/
Wi-Fi(ESP8266) 버전
htps : //로 ゔぇぺぺr. m베 d. 오 rg/우세 rs/jk 소 ft/코데/미 lk 여기 아오사 mpぇ_에 SP8266/
라이브러리 사용법
샘플 프로그램은 다음과 같습니다.
이더넷 버전의 샘플이지만 코멘트를 추가하고 있으므로 참고하십시오.
main.cpp
#include "mbed.h"
#include "MQTTInterface.h"
#include "MQTTClient.h"
#include "Milkcocoa.h"
#include "MClient.h"
#include "EthernetInterface.h"
EthernetInterface eth;
RawSerial pc(USBTX,USBRX);
/************************* Your Milkcocoa Setup *********************************/
#define MILKCOCOA_APP_ID "...YOUR_MILKCOCOA_APP_ID..."
#define MILKCOCOA_DATASTORE "mbed_lan"
/************* Milkcocoa Setup (you don't need to change this!) ******************/
#define MILKCOCOA_SERVERPORT 1883
/************ Global State (you don't need to change this!) ******************/
const char MQTT_SERVER[] = MILKCOCOA_APP_ID ".mlkcca.com";
const char MQTT_CLIENTID[] = __TIME__ MILKCOCOA_APP_ID;
extern void onpush(MQTT::MessageData& md);
int main() {
pc.baud(9600);
pc.printf("Milkcocoa mbed os ver demo\n\r\n\r\n\r");
// Ethernet I/Fの準備
int ret = eth.connect();
if (ret != 0) {
printf("\r\nConnection error\r\n");
return -1;
}
pc.printf("\n\rEthernet connected\n\r");
// 第1引数がインターフェースです。mbed OS5のAPIに対応したクラスを指定します。
// EthernetでもWi-Fiでもここで指定すれば違いなく使えます。
Milkcocoa* milkcocoa = new Milkcocoa(ð, MQTT_SERVER, MILKCOCOA_SERVERPORT, MILKCOCOA_APP_ID, MQTT_CLIENTID);
//Milkcocoaのサーバに接続します。
milkcocoa->connect();
// Subscribeの設定をする。
pc.printf("%d\n\r",milkcocoa->on(MILKCOCOA_DATASTORE, "push", onpush));
// Milkcocoaのサーバに繋げる周期を設定する
milkcocoa->setLoopCycle(5000);
// Milkcocoのサーバとの通信を開始する。
milkcocoa->start();
while(1) {
DataElement elem = DataElement();
elem.setValue("v", 1);
// データをプッシュする
// (実際はキューに入れるだけで実際にサーバに送信するのは、通信のタイミング)
milkcocoa->push(MILKCOCOA_DATASTORE, elem);
Thread::wait(7000);
}
}
// データを受け取った際にコールされる関数
void onpush(MQTT::MessageData& md)
{
MQTT::Message &message = md.message;
DataElement de = DataElement((char*)message.payload);
pc.printf("onpush\n\r");
pc.printf("%d\n\r",de.getInt("v"));
}
마지막으로
mbed OS5도 Milkcocoa도 사양이 바뀌면 순차 대응해 가고 싶습니다.
만약 버그 픽스나 개수가 있으면 풀릭해 주세요.
Reference
이 문제에 관하여(mbed OS5 지원 버전 milkcocoa 라이브러리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/jksoft/items/33e10de32cdf6f226b9b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)