Skip to content

Instantly share code, notes, and snippets.

@ya-ma-cho
Created December 17, 2018 08:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ya-ma-cho/e8ee31e3147ac8043f2c6d9568927af2 to your computer and use it in GitHub Desktop.
Save ya-ma-cho/e8ee31e3147ac8043f2c6d9568927af2 to your computer and use it in GitHub Desktop.
#include <M5Stack.h>
#include <WiFi.h>
#include <WiFiClient.h>
WiFiClient client;
// WiFi設定
const char* ssid = "*****";
const char* password = "*****";
// IFTTT設定
String event = "*****";
String Secretkey = "*****";
// LEDを接続するピン
const int ledPin = 22;
// TOTOウォシュレットの流す赤外線信号データ設定
//お尻
unsigned int data_oshiri[] = {604,290,66,45,64,162,64,45,72,40,69,44,67,45,64,45,72,42,67,45,67,45,72,37,69,154,64,50,64,45,66,45,66,45,69,45,64,47,67,43,66,45,66,47,67,44,62,48,64,48,66,159,64,157,71,40,69,46,64,45,64,48,66,45,64,50,64,157,64,159,64,50,64,45,66,45,64,48,69,45,67,4045,603,294,64,45,66,159,67,44,64,47,64,45,66,47,64,45,66,47,62,48,64,48,64,48,64,162,72,37,72,40,69,44,67,45,62,48,66,45,66,45,64,50,64,45,64,48,66,45,64,50,64,157,66,157,64,50,64,45,64,48,64,50,66,45,64,45,66,159,64,159,64,45,66,45,64,48,69,45,64,45,66,4079,606,290,66,47,67,156,62,48,64,48,64,48,66,47,64,47,64,45,64,48,69,45,67,44,64,157,63,48,64,50,64,45,66,45,66,45,69,45,64,47,64,45,66,47,67,45,67,45,67,43,64,159,64,162,72,37,66,45,66,47,67,45,64,45,66,45,66,159,64,157,71,40,66,47,67,45,62,47,64,48,66,4081,604,290,64,50,64,157,66,47,64,47,67,45,64,45,69,45,64,45,66,47,62,48,64,47,66,159,67,45,64,45,66,45,69,44,64,157,64,48,64,48,64,162,72,37,64,159,64,50,64,157,72,42,67,44,67,43,64,48,66,45,67,45,66,47,62,159,66,159,64,47,64,45,64,162,61,50,64,157,69,45,64,3579,603,290,69,44,67,154,64,48,61,50,66,47,61,48,66,45,66,45,69,45,64,47,67,43,66,157,66,45,64,47,64,48,61,50,64,161,64,45,64,50,69,152,66,45,64,159,69,45,67,154,64,48,61,50,64,48,64,47,64,48,64,48,69,45,67,154,61,162,64,50,64,45,66,159,64,47,62,159,64,48,64,3635,608,289,62,47,64,162,66,45,64,47,64,45,72,40,69,45,64,47,67,42,69,43,66,47,64,157,64,48,66,45,69,45,64,47,64,157,66,45,66,48,62,161,66,47,64,157,66,45,66,159,64,47,64,47,61,48,66,45,64,50,64,45,64,50,61,162,64,157,64,48,64,50,61,160,69,43,66,159,64,47,62};
//流す
unsigned int data_nagasu[] = {601,297,59,50,64,160,69,45,67,45,64,45,64,48,66,48,67,44,59,50,59,53,66,47,62,159,64,48,61,50,61,53,64,45,64,47,64,48,61,53,67,43,66,45,64,48,69,44,67,156,61,48,61,164,67,154,61,51,61,50,64,50,61,48,61,162,61,52,64,157,61,162,61,53,64,45,64,48,61,50,61,3889,601,295,64,48,61,164,59,50,61,50,61,50,61,53,61,48,64,48,61,51,61,53,64,48,61,162,67,45,67,45,64,45,59,53,66,47,67,44,59,50,61,51,61,50,64,50,62,48,64,160,69,45,67,154,61,162,61,51,66,45,64,47,64,48,61,164,59,50,61,162,61,164,64,45,64,50,64,47,62,50,59};
//ストップ
unsigned int data_stop[] = {606,290,66,45,66,157,64,50,64,45,66,48,61,48,64,50,64,47,64,47,62,48,69,45,64,157,64,50,64,47,64,47,64,47,62,50,61,50,62,50,62,51,61,48,63,48,66,48,64,46,64,48,66,45,69,45,64,47,64,48,64,45,66,47,67,45,67,43,64,48,69,45,64,47,64,47,67,45,64,47,64,4847,601,292,64,50,64,159,64,47,64,47,64,47,67,43,64,50,64,47,64,47,64,45,64,48,66,159,64,45,66,45,64,48,69,45,67,45,64,45,66,47,64,47,64,47,64,48,64,48,64,47,64,48,62,48,64,50,61,48,63,50,61,48,64,48,63,48,66,48,61,48,64,50,61,48,66,47,64,48,64,48,61,4532,601,294,61,48,64,160,66,45,66,48,67,45,64,47,64,47,64,45,66,48,64,47,64,45,66,157,66,47,64,45,66,45,64,48,66,47,64,48,64,45,66,47,67,45,67,45,64,45,66,45,66,47,67,45,64,45,64,50,64,45,64,50,67,43,66,47,64,48,62,50,64,45,64,50,64,47,61,50,64,45,64,4532,606,289,64,47,64,160,64,45,64,48,63,48,64,50,64,45,66,45,64,50,64,47,64,47,64,157,66,47,62,50,62,47,63,162,64,48,64,157,66,47,64,159,64,45,64,160,69,45,67,157,64,157,64,50,64,157,66,157,66,47,61,162,64,45,66,47,64,159,69,154,61,162,64,45,66,45,69,45,64,47,64,3189,601,293,66,45,64,162,64,47,64,45,64,48,63,48,66,47,64,45,64,50,61,48,64,50,64,157,64,50,64,47,67,45,64,157,66,47,62,162,64,45,71,154,67,45,62,160,63,48,66,159,64,159,61,50,62,159,64,162,67,45,62,160,64,48,63,48,64,162,64,157,66,159,64,45,64,48,66,45,66,48,64,3226,603,290,66,47,64,159,67,45,64,47,65,47,64,47,61,50,64,47,64,47,64,45,64,48,66,159,64,47,64,45,66,47,61,162,62,48,64,160,69,45,64,157,66,48,64,159,64,45,66,157,66,159,62,48,64,162,61,162,67,43,66,157,66,47,64,46,63,160,66,159,64,157,63,50,64,47,64,48,64,45,64};
// 起動から現在の経過時間
unsigned long now;
// 待ち開始時間
unsigned long waitStartMicros;
void setup(void) {
Serial.begin(115200);
M5.begin();
M5.Lcd.fillScreen(BLACK);
M5.Lcd.setCursor(10, 10);
M5.Lcd.setTextColor(WHITE);
M5.Lcd.setTextSize(3);
M5.Lcd.printf("START");
pinMode(ledPin, OUTPUT);
// Start WiFi
Serial.println("Connecting to ");
Serial.print(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
// WiFi Connected
Serial.println("\nWiFi Connected.");
M5.Lcd.setCursor(10, 40);
M5.Lcd.setTextColor(WHITE);
M5.Lcd.setTextSize(3);
M5.Lcd.printf("WiFi Connected.");
delay(3000);
M5.Lcd.setBrightness(50);
M5.Lcd.drawJpgFile(SD, "/baba.jpg");
}
void loop() {
if(M5.BtnA.wasPressed()) {
M5.Lcd.drawJpgFile(SD, "/01.jpg");
M5.update();
sendSignal(data_oshiri,sizeof(data_oshiri)/sizeof(data_oshiri[0]));
delay(500);
sendSignal(data_oshiri,sizeof(data_oshiri)/sizeof(data_oshiri[0]));
delay(2500);
iftttSend("{\"value1\":\"お尻洗いを始めました。\"}");
}
if(M5.BtnB.wasPressed()) {
M5.Lcd.drawJpgFile(SD, "/02.jpg");
M5.update();
sendSignal(data_stop,sizeof(data_stop)/sizeof(data_stop[0]));
delay(3000);
iftttSend("{\"value1\":\"お尻洗いを止めました。\"}");
}
if(M5.BtnC.wasPressed()) {
M5.Lcd.drawJpgFile(SD, "/03.jpg");
M5.update();
sendSignal(data_nagasu,sizeof(data_nagasu)/sizeof(data_nagasu[0]));
delay(3000);
iftttSend("{\"value1\":\"水を流しました。\"}");
}
M5.Lcd.drawJpgFile(SD, "/baba.jpg");
M5.update();
}
/*
赤外線信号の送出
*/
void sendSignal(unsigned int *data, int dataSize) {
for (int i = 0; i < dataSize; i++) {
unsigned long dataLength = data[i] * 10;
now = micros();
do {
digitalWrite(ledPin, 1 - i % 2);
wait(8);
digitalWrite(ledPin, 0);
wait(7);
} while (long(now + dataLength - micros()) > 0);
}
Serial.println("Send Signal");
}
void wait(signed long waitTime) {
waitStartMicros = micros();
while (micros() - waitStartMicros < waitTime) {};
}
/*
IFTTTへの送出
*/
void iftttSend(String message) {
if (client.connect("maker.ifttt.com", 80)) {
Serial.println("connection");
client.println("POST /trigger/" + event + "/with/key/" + Secretkey + " HTTP/1.1");
client.println("Host: maker.ifttt.com");
client.println("User-Agent: ESP8266/1.0");
client.println("Connection: close");
client.println("Content-Type: application/json");
client.print("Content-Length: ");
client.println(message.length());
client.println();
client.println(message);
delay(10);
Serial.println("OK");
} else {
Serial.println("Err");
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment