Qiita 内の Amazon MQ エントリー数 No.1 (5/25時点) の松下です。
ワイもく! Vol.8 の中の 「第5回 M5Stack もくもく会」に参加、M5Stack と PubSubClient で SORACOM Beam 越しに MQTT で Amazon MQ と Pub/Sub を試してみました。
構成
残念なことに 通信部分はモバイルルーターを使ってます (^^;;;
実装
以下、実装です。
コード(スケッチ)
#include <WiFi.h>
#include <WiFiClient.h>
#include <PubSubClient.h>
#include <M5Stack.h>
char *ssid = "SSID";
char *password = "Pass";
#define __VERSION__ "1.0.0"
#define LOOP_INTERVAL (6000)
char *THING_NAME = "M5Stack";
////////////////////////////////////////////////////////////////////////////////
WiFiClient netClient;
PubSubClient MqttClient;
void callback(char* topic, byte* payload, unsigned int length) {
String buf_t = String(topic);
Serial.print("Incoming: "); Serial.println(buf_t);
payload[length] = '\0';
String buf_s = String((char*) payload);
M5.Lcd.clear();
M5.Lcd.setCursor(10, 10);
if (length == 1) {
int n = buf_s.toInt();
M5.Lcd.setTextSize(1);
M5.Lcd.printf("setTextSize = %d\n", n);
M5.Lcd.setTextSize(n);
} else {
M5.Lcd.clear();
int src_len = buf_s.length() + 1;
char s[src_len];
buf_s.toCharArray(s, src_len);
M5.Lcd.printf(s);
}
}
void setup_network() {
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println();
Serial.println("WiFi Connected.");
}
void connect() {
setup_network();
Serial.print("ThingName(mqtt_id): "); Serial.println(THING_NAME);
MqttClient.setServer("beam.soracom.io", 1883);
MqttClient.setCallback(callback);
MqttClient.setClient(netClient);
if (!MqttClient.connect(THING_NAME)) {
Serial.println(MqttClient.state());
}
MqttClient.subscribe("m5stack/sub/#");
}
void setup() {
Serial.begin(115200);
M5.begin();
connect();
M5.Lcd.fillScreen(BLACK);
M5.Lcd.setTextColor(WHITE);
M5.Lcd.setTextSize(1);
M5.Lcd.printf("Ready");
}
void loop() {
unsigned long next = millis();
while (millis() < next + LOOP_INTERVAL) {
MqttClient.loop();
}
Serial.println("loop");
MqttClient.publish("m5stack/ping", "(^^)");
}
Amazon MQ と SORACOM Beam
詳しくはこちらで。
- Amazon MQにmosquitto(MQTT)とMQTT over Websocketで接続してみる
- SORACOM Beam(MQTT → MQTTS変換サービス) で Amazon MQ に接続する
おわりに
うーん、M5Stack にセルラー通信が入ってくれると嬉しい。ケースには入ってるし、モニターもついてるし、電池も入ってるし!!
ワイもく!さんは「コラボ推奨」とのことで、みんなでワイワイやれたのは楽しかったです!
EoT