myThings를 사용하여 ESP-WROOM-02를 통해 로봇을 움직입니다 (그리고 좌절)

지난번 IFTT T를 사용하여 피콜로보를 움직이는 데모를했습니다.
이번에는 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
    

    요약


  • 이번에는 myThings를 사용하여 트위터에서 로봇 조작에 도전하고 결과, 동작 확인까지 할 수 없었습니다. ESP-WROOM-02측의 스케치 결함이라고 생각되므로, 나중에, 잘라내고 싶습니다.
  • 구성 자체는 IFTTT의 maker channel과 같이 MQTT/REST API를 사용하는 것을 알았습니다만, IT계에 익숙하지 않은 사람은, 환경 구축이나 디버그에서의 풀 포인트라고 생각합니다.
  • 좋은 웹페이지 즐겨찾기