myThings를 사용하여 ESP-WROOM-02를 통해 로봇을 움직입니다 (그리고 좌절)
이번에는 myThings를 사용하여 피콜로보를 움직입니다.
myThings
myThings는 인터넷 서비스와 제품을 사용하여 사용자에게 편리한 조합을 만들 수있는 앱입니다.
myThings
IFTTT 을 아시는 분은, Yahoo!Japan판IFTTT라고 하면, 이해하실 수 있습니까?
다양한 웹 서비스를 조합하여 자신을 위해 사용자 정의한 동작을 실현할 수 있습니다. 지금이라면, IoT라는 것으로, 웹 서비스와 수중의 디바이스를 접속하는 일도 가능합니다.
IDCF 채널
그 중에서 IFTTT 메이커 채널에 해당하는 것이 myThings IDCF 채널입니다.
아래 그림과 같이 IDCF Cloud에서 가상 머신을 시작한 다음 meshblu을 기본으로 하는 앱으로 환경을 구축합니다.
myThings는 https이며, 디바이스는 MQTT/REST API로 통신합니다.
구축 절차
여기 참조.
「일단, IoT는 잘 모르겠지만, 어쨌든 시험해 보고 싶다」라고 하는 분은, 상기와 같은 것을 구입해, 순서에 따라 시험하는 것이 제일입니다.
"IFTTT의 Maker Channel을 시도한 적이 있다"는 분은 아래의 2step을 중심으로 시도해보십시오.
서버 준비에서 가상 머신을 만들고 필요한 앱을 설치하고
myThings 앱과 연결 을 참고로, 레시피를 작성해, trigger 혹은 action에 대응하는 topic에 대해서, 디바이스측으로부터 MQTT로 제휴하는 프로그램을 준비.
myThings 조리법
지난번와 마찬가지로 myThings를 통해 트위터에서 트윗을 받아 피콜로봇을 움직입니다.
아래 그림과 같이 트리거로 Twitter 검색 키워드를 정의하고 작업으로 IDCF Channel 환경 측의 "action-1"과 연결합니다. 또한 tweet 내용을 data로 IDCF channel에 전달합니다.
arduino 스케치
Pubsubclient와 ESP8266의 샘플 코드를 참고로 다음을 준비하고 ESP-WROOM-02에 씁니다.
#include <SPI.h>
#include <PubSubClient.h>
#include <ESP8266WiFi.h>
const char* ssid = "<wifi SSID>";
const char* password = "<password>";
IPAddress server(a, b, c, d); # MQTTサーバのIP addressがa.b.c.dの場合
void callback(char* topic, byte* payload, unsigned int length) {
// Serial.print("Message arrived [");
// Serial.print(topic);
// Serial.print("] ");
for (int i=0;i<length;i++) {
Serial.print((char)payload[i]);
}
Serial.println();
}
WiFiClient wifiClient;
PubSubClient client(wifiClient);
void reconnect() {
// Loop until we're reconnected
while (!client.connected()) {
Serial.print("Attempting MQTT connection...");
// Attempt to connect
if (client.connect("<clientID>","<username>","<password>")) {
Serial.println("connected");
client.subscribe("<topic>");
} else {
Serial.print("failed, rc=");
Serial.print(client.state());
Serial.println(" try again in 5 seconds");
// Wait 5 seconds before retrying
delay(5000);
}
}
}
void setup()
{
Serial.begin(9600);
WiFi.begin(ssid, password);
client.setServer(server, 1883);
client.setCallback(callback);
delay(1500);
}
void loop()
{
if (!client.connected()) {
reconnect();
}
client.loop();
}
동작 확인
위의 myThings 레시피와 ESP-WROOM-02를 준비하고 tweet해도 ESP-WROOM-02 측의 시리얼에는 아무것도 표시되지 않습니다.
mosquitto_sub 명령으로 해당 주제를 확인하면 메시지를 볼 수 있으므로 ESP-WROOM-02 측의 스케치가 제대로 작동하지 않는 것 같습니다.
$ mosquitto_sub -h 210.140.x.x -p 1883 -t <toppic> -u <username> -P <password> -d
Client mosqsub/18634-43220800- sending CONNECT
Client mosqsub/18634-43220800- received CONNACK
Client mosqsub/18634-43220800- sending SUBSCRIBE (Mid: 1, Topic: a16d1d2e-28f4-4191-b4aa-***, QoS: 0)
Client mosqsub/18634-43220800- received SUBACK
Subscribed (mid: 1): 0
Client mosqsub/18634-43220800- received PUBLISH (d0, q0, r0, m0, 'a16d1d2e-28f4-4191-b4aa-***', ... (160 bytes))
{"topic":"message","data":{"devices":["a16d1d2e-28f4-4191-b4aa-***"],"payload":"test3 roboroborobo","fromUuid":"***"}}
Client mosqsub/18634-43220800- sending PINGREQ
Client mosqsub/18634-43220800- received PINGRESP
요약
Pubsubclient와 ESP8266의 샘플 코드를 참고로 다음을 준비하고 ESP-WROOM-02에 씁니다.
#include <SPI.h>
#include <PubSubClient.h>
#include <ESP8266WiFi.h>
const char* ssid = "<wifi SSID>";
const char* password = "<password>";
IPAddress server(a, b, c, d); # MQTTサーバのIP addressがa.b.c.dの場合
void callback(char* topic, byte* payload, unsigned int length) {
// Serial.print("Message arrived [");
// Serial.print(topic);
// Serial.print("] ");
for (int i=0;i<length;i++) {
Serial.print((char)payload[i]);
}
Serial.println();
}
WiFiClient wifiClient;
PubSubClient client(wifiClient);
void reconnect() {
// Loop until we're reconnected
while (!client.connected()) {
Serial.print("Attempting MQTT connection...");
// Attempt to connect
if (client.connect("<clientID>","<username>","<password>")) {
Serial.println("connected");
client.subscribe("<topic>");
} else {
Serial.print("failed, rc=");
Serial.print(client.state());
Serial.println(" try again in 5 seconds");
// Wait 5 seconds before retrying
delay(5000);
}
}
}
void setup()
{
Serial.begin(9600);
WiFi.begin(ssid, password);
client.setServer(server, 1883);
client.setCallback(callback);
delay(1500);
}
void loop()
{
if (!client.connected()) {
reconnect();
}
client.loop();
}
동작 확인
위의 myThings 레시피와 ESP-WROOM-02를 준비하고 tweet해도 ESP-WROOM-02 측의 시리얼에는 아무것도 표시되지 않습니다.
mosquitto_sub 명령으로 해당 주제를 확인하면 메시지를 볼 수 있으므로 ESP-WROOM-02 측의 스케치가 제대로 작동하지 않는 것 같습니다.
$ mosquitto_sub -h 210.140.x.x -p 1883 -t <toppic> -u <username> -P <password> -d
Client mosqsub/18634-43220800- sending CONNECT
Client mosqsub/18634-43220800- received CONNACK
Client mosqsub/18634-43220800- sending SUBSCRIBE (Mid: 1, Topic: a16d1d2e-28f4-4191-b4aa-***, QoS: 0)
Client mosqsub/18634-43220800- received SUBACK
Subscribed (mid: 1): 0
Client mosqsub/18634-43220800- received PUBLISH (d0, q0, r0, m0, 'a16d1d2e-28f4-4191-b4aa-***', ... (160 bytes))
{"topic":"message","data":{"devices":["a16d1d2e-28f4-4191-b4aa-***"],"payload":"test3 roboroborobo","fromUuid":"***"}}
Client mosqsub/18634-43220800- sending PINGREQ
Client mosqsub/18634-43220800- received PINGRESP
요약
Reference
이 문제에 관하여(myThings를 사용하여 ESP-WROOM-02를 통해 로봇을 움직입니다 (그리고 좌절)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/snumano/items/0e96bb3b1ed9ffc90eb5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)