How2ESP32MQTT
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[SiioLaboratory]]
*ESP-WROOM-32でMQTTする [#g8f0904a]
こちらも参考にしてください。
- http://is.ocha.ac.jp/~siio/?How2Homebridge_Mqttthing
- http://is.ocha.ac.jp/~siio/?How2HomeKit_MQTT
- http://is.ocha.ac.jp/~siio/?How2Homebridge
- http://is.ocha.ac.jp/~siio/?How2MQTT
- http://is.ocha.ac.jp/~siio/?How2NodejsRaspberryPi
- http://is.ocha.ac.jp/~siio/?.How2DockerQNAP
- http://is.ocha.ac.jp/~siio/?.How2autolock408
**ESP32開発ボード [#p19c2e74]
ESP32開発ボードは、AliExpressで450円+送料で買えるArduino...
WiFiとBluetoothが載ってます。技適マークもついてます。
https://s.click.aliexpress.com/e/_AXsnSv
ESP32の本体は、銀色のシールドに覆われた部分で、Espressif...
[[M5Stack:https://www.switch-science.com/catalog/7362/]]...
これに、USBコネクタ、USBシリアル変換チップ、5V-3.3V変換チ...
部品のレイアウトが違う製品がいくつかありますが([[スイッ...
https://ae04.alicdn.com/kf/Hd95147dfa8bf4b49b67870b452f59...
**Arduino IDEでプログラムする [#h93bc4d7]
こちらのサイトで、Arduino IDEでの使い方が説明されてます。
https://docs.espressif.com/projects/arduino-esp32/en/late...
これに書いてある、
https://raw.githubusercontent.com/espressif/arduino-esp3...
という文字列を、Arduino IDEのPreferencesの「追加のボード...
&ref(preferences.jpg);
すると、「ツール」「ボード:」メニューの中で、esp32が選べ...
&ref(board.jpg);
インストールが終了すると、「ツール」「ボード」「ESP32 Ard...
**Lチカする [#t240bbe0]
Lチカして動作を確認します。ボード上にGPIO接続されたLEDは...
プログラムをダウンロードする際にエラーが出ることもあるの...
int LED=13;
void setup() {
pinMode(LED, OUTPUT);
}
void loop() {
digitalWrite(LED, HIGH);
delay(1000);
digitalWrite(LED, LOW);
delay(1000);
}
**EspMQTTClientライブラリを使ってみる [#sa83da2d]
「ツール」「ライブラリを管理」を選び、espmqttで検索すると...
こちら、
http://is.ocha.ac.jp/~siio/?How2Homebridge_Mqttthing
では、PubSubClientというライブラリを使いましたが、これを...
WiFi基地局とMQTTブローカの接続や、これらが途切れた時の再...
これをインストールします。
&ref(libmanager.jpg);
More Infobの部分をクリックすると、開発ページにジャンプし...
また、元になるPubSubClientがまだインストールされていない...
&ref(pubsub.jpg);
先の開発ページにある、一番簡単な例のように、
#include "EspMQTTClient.h"
EspMQTTClient client(
"WifiSSID",
"WifiPassword",
"192.168.1.100", // MQTT Broker server ip
"", // MQTTUsername. Can be omitted if not needed
"", // MQTTPassword. Can be omitted if not needed
"TestClient" // Client name that uniquely identif...
);
void setup() {}
void onConnectionEstablished() {
client.subscribe("mytopic/test", [] (const String &pay...
Serial.println(payload);
});
client.publish("mytopic/test", "This is a message");
}
void loop() {
client.loop();
}
とすると、MQTTブローカを介して読み書きができます。
**MQTT経由でLチカする [#rd2103c2]
以下のようにスイッチとLEDを付けて、MQTTブローカに接続する...
&ref(diagram.jpg);
プログラムは以下です。MQTTとの接続などに関しては、こちら
http://is.ocha.ac.jp/~siio/?How2Homebridge_Mqttthing
をご覧ください。
//ESP32 MQTT simple example
//LED and Switch
#include "EspMQTTClient.h"
//input & output pins
const int PushSW=12; //push to GND sw
const int BlinkLED=13; //LED indicator
int currentSWstate=-999; //current state of the PushSw
//MQTT
EspMQTTClient client(
"siiolab408_2G", //WiFi SSID
"xxxxxxxx", //WiFi password
"192.168.108.75", // MQTT Broker server ip
"", // Can be omitted if not needed
"", // Can be omitted if not needed
"TestClient" // Client name that uniquely identif...
);
const char SUBTOPIC[] = "mqttthing/test/set"; //mqtt to...
const char PUBTOPIC[] = "mqttthing/test/get"; //mqtt to...
void setup() {
//Digital I/O
pinMode(BlinkLED, OUTPUT);
pinMode(PushSW, INPUT_PULLUP);
digitalWrite(BlinkLED, LOW); //off the LED
currentSWstate = -999; //force to update Sw state in t...
//Serial
Serial.begin(115200);
while (!Serial);
Serial.println("Serial started.");
}
void onMessageReceived(const String& msg) {
Serial.println(msg);
if(msg.compareTo("true")==0) {
digitalWrite(BlinkLED, HIGH); //turn LED on
}
else if(msg.compareTo("false")==0) {
digitalWrite(BlinkLED, LOW); //turn LED off
}
currentSWstate = -999; //force to update Sw state in t...
}
void onConnectionEstablished() {
Serial.println("Connection established.");
client.subscribe(SUBTOPIC, onMessageReceived);
client.publish(PUBTOPIC, "ESP32 is ready.");
currentSWstate = -999; //force to update Sw state in t...
}
void loop() {
client.loop();
int newSWstate=digitalRead(PushSW);
if(currentSWstate!=newSWstate) { //update only when LE...
Serial.println("Switch is turned on or off.");
if(newSWstate==LOW) client.publish(PUBTOPIC,"Switch ...
else client.publish(PUBTOPIC,"Switch is false");
}
currentSWstate=newSWstate;
delay(1000);
}
これで、
% mosquitto_pub -h 192.168.108.75 -t mqttthing/test/set ...
% mosquitto_pub -h 192.168.108.75 -t mqttthing/test/set ...
などでLEDをon/offできますし、
% mosquitto_sub -h 192.168.108.75 -t mqttthing/test/# -v
などでスイッチのon/offを知ることができます。
終了行:
[[SiioLaboratory]]
*ESP-WROOM-32でMQTTする [#g8f0904a]
こちらも参考にしてください。
- http://is.ocha.ac.jp/~siio/?How2Homebridge_Mqttthing
- http://is.ocha.ac.jp/~siio/?How2HomeKit_MQTT
- http://is.ocha.ac.jp/~siio/?How2Homebridge
- http://is.ocha.ac.jp/~siio/?How2MQTT
- http://is.ocha.ac.jp/~siio/?How2NodejsRaspberryPi
- http://is.ocha.ac.jp/~siio/?.How2DockerQNAP
- http://is.ocha.ac.jp/~siio/?.How2autolock408
**ESP32開発ボード [#p19c2e74]
ESP32開発ボードは、AliExpressで450円+送料で買えるArduino...
WiFiとBluetoothが載ってます。技適マークもついてます。
https://s.click.aliexpress.com/e/_AXsnSv
ESP32の本体は、銀色のシールドに覆われた部分で、Espressif...
[[M5Stack:https://www.switch-science.com/catalog/7362/]]...
これに、USBコネクタ、USBシリアル変換チップ、5V-3.3V変換チ...
部品のレイアウトが違う製品がいくつかありますが([[スイッ...
https://ae04.alicdn.com/kf/Hd95147dfa8bf4b49b67870b452f59...
**Arduino IDEでプログラムする [#h93bc4d7]
こちらのサイトで、Arduino IDEでの使い方が説明されてます。
https://docs.espressif.com/projects/arduino-esp32/en/late...
これに書いてある、
https://raw.githubusercontent.com/espressif/arduino-esp3...
という文字列を、Arduino IDEのPreferencesの「追加のボード...
&ref(preferences.jpg);
すると、「ツール」「ボード:」メニューの中で、esp32が選べ...
&ref(board.jpg);
インストールが終了すると、「ツール」「ボード」「ESP32 Ard...
**Lチカする [#t240bbe0]
Lチカして動作を確認します。ボード上にGPIO接続されたLEDは...
プログラムをダウンロードする際にエラーが出ることもあるの...
int LED=13;
void setup() {
pinMode(LED, OUTPUT);
}
void loop() {
digitalWrite(LED, HIGH);
delay(1000);
digitalWrite(LED, LOW);
delay(1000);
}
**EspMQTTClientライブラリを使ってみる [#sa83da2d]
「ツール」「ライブラリを管理」を選び、espmqttで検索すると...
こちら、
http://is.ocha.ac.jp/~siio/?How2Homebridge_Mqttthing
では、PubSubClientというライブラリを使いましたが、これを...
WiFi基地局とMQTTブローカの接続や、これらが途切れた時の再...
これをインストールします。
&ref(libmanager.jpg);
More Infobの部分をクリックすると、開発ページにジャンプし...
また、元になるPubSubClientがまだインストールされていない...
&ref(pubsub.jpg);
先の開発ページにある、一番簡単な例のように、
#include "EspMQTTClient.h"
EspMQTTClient client(
"WifiSSID",
"WifiPassword",
"192.168.1.100", // MQTT Broker server ip
"", // MQTTUsername. Can be omitted if not needed
"", // MQTTPassword. Can be omitted if not needed
"TestClient" // Client name that uniquely identif...
);
void setup() {}
void onConnectionEstablished() {
client.subscribe("mytopic/test", [] (const String &pay...
Serial.println(payload);
});
client.publish("mytopic/test", "This is a message");
}
void loop() {
client.loop();
}
とすると、MQTTブローカを介して読み書きができます。
**MQTT経由でLチカする [#rd2103c2]
以下のようにスイッチとLEDを付けて、MQTTブローカに接続する...
&ref(diagram.jpg);
プログラムは以下です。MQTTとの接続などに関しては、こちら
http://is.ocha.ac.jp/~siio/?How2Homebridge_Mqttthing
をご覧ください。
//ESP32 MQTT simple example
//LED and Switch
#include "EspMQTTClient.h"
//input & output pins
const int PushSW=12; //push to GND sw
const int BlinkLED=13; //LED indicator
int currentSWstate=-999; //current state of the PushSw
//MQTT
EspMQTTClient client(
"siiolab408_2G", //WiFi SSID
"xxxxxxxx", //WiFi password
"192.168.108.75", // MQTT Broker server ip
"", // Can be omitted if not needed
"", // Can be omitted if not needed
"TestClient" // Client name that uniquely identif...
);
const char SUBTOPIC[] = "mqttthing/test/set"; //mqtt to...
const char PUBTOPIC[] = "mqttthing/test/get"; //mqtt to...
void setup() {
//Digital I/O
pinMode(BlinkLED, OUTPUT);
pinMode(PushSW, INPUT_PULLUP);
digitalWrite(BlinkLED, LOW); //off the LED
currentSWstate = -999; //force to update Sw state in t...
//Serial
Serial.begin(115200);
while (!Serial);
Serial.println("Serial started.");
}
void onMessageReceived(const String& msg) {
Serial.println(msg);
if(msg.compareTo("true")==0) {
digitalWrite(BlinkLED, HIGH); //turn LED on
}
else if(msg.compareTo("false")==0) {
digitalWrite(BlinkLED, LOW); //turn LED off
}
currentSWstate = -999; //force to update Sw state in t...
}
void onConnectionEstablished() {
Serial.println("Connection established.");
client.subscribe(SUBTOPIC, onMessageReceived);
client.publish(PUBTOPIC, "ESP32 is ready.");
currentSWstate = -999; //force to update Sw state in t...
}
void loop() {
client.loop();
int newSWstate=digitalRead(PushSW);
if(currentSWstate!=newSWstate) { //update only when LE...
Serial.println("Switch is turned on or off.");
if(newSWstate==LOW) client.publish(PUBTOPIC,"Switch ...
else client.publish(PUBTOPIC,"Switch is false");
}
currentSWstate=newSWstate;
delay(1000);
}
これで、
% mosquitto_pub -h 192.168.108.75 -t mqttthing/test/set ...
% mosquitto_pub -h 192.168.108.75 -t mqttthing/test/set ...
などでLEDをon/offできますし、
% mosquitto_sub -h 192.168.108.75 -t mqttthing/test/# -v
などでスイッチのon/offを知ることができます。
ページ名: