-->

WE ARE CME

CENTER OF MECHANICAL ENGINEERING

Khoa học & Công nghệ

HƯỚNG DẪN CÁCH GỬI EMAIL VÀ TÍN NHẮN VĂN BẲN BẰNG CÁCH SỬ DỤNG ESP8266

Đây không hoàn toàn là một chủ đề mới vì có các hướng dẫn tương tự có sẵn trực tuyến để chỉ ra cách làm điều này. 

Bài viết này đặc biệt tập trung vào việc chỉ sử dụng Module ESP8266 và Google để gửi email hoặc tin nhắn văn bản.

Gửi văn bản và email từ NodeMCU

Gửi văn bản và email từ NodeMCU

 Yêu cầu phần cứng:

Để hiểu khái niệm này, tất cả những gì chúng ta cần là một mô-đun ESP8266 và nguồn điện cho nó, thường là cáp USB. Tôi đang sử dụng bảng NodeMCU cho thuận tiện. Chúng tôi không cần bất kỳ cảm biến hoặc những thứ khác. Để minh họa cho phương pháp, chúng tôi sẽ chỉ tạo một số ngẫu nhiên giữa các khoảng nhất định và nếu số đó vượt quá mức chúng tôi đã đặt cho giới hạn ngưỡng, chúng tôi muốn nhận email hoặc tin nhắn văn bản.

Chuẩn bị một Google Sheets:

Giống như trong http://embedded-lab.com/blog/post-data-google-sheets-using-esp8266/, chúng tôi sẽ tạo một Trang tính Google mới trong Google Drive. Vì vậy, hãy làm như sau: 
1) Mở Google Drive của bạn trong trình duyệt web và tạo Google Sheets. Bạn có thể gọi tập tin này bất cứ điều gì bạn thích. Tôi gọi nó là 'SendEmailAndText_ESP8266'. 
2) Từ Google Sheets mà bạn vừa tạo, hãy chuyển đến Công cụ> Trình chỉnh sửa tập lệnh

GAS> Công cụ> Trình chỉnh sửa tập lệnh

GAS> Công cụ> Trình chỉnh sửa tập lệnh

3) Đặt tên cho tệp chính của trình soạn thảo Script trên thanh công cụ (bất cứ điều gì bạn thích). 
4) Dán mã sau vào tệp Code.gs (giả sử bạn chưa thay đổi tên tệp mặc định). Một lần nữa, tên tệp này cũng không thành vấn đề.

 

Google Scripts Code: (copy đoạn này dán vào Scripts  vừa tạo cho nhanh)

var number = "840905629***"; // your phone number 
var domain = "tmomail.net"; // You may find your domain for you carrier at: http://www.emailtextmessages.com/
var toEmail = "YourOrFriendsEmail@gmail.com";
 
function doGet(e){
  Logger.log("--- doGet ---");
 
  // for debugging
  if (e == null){e={}; e.parameters = {value:"-1"};}
 
  try{
    // get the values from parameters to local var
    var value = e.parameters.value;
    var phoneEmail = number + "@" + domain;
 
    // Send Text Message (SMS)
    send_Email(phoneEmail, "NodeMCU here, your sensor went beyond your threshold. Sensor reported: " + value + " on:" + new Date()); 
 
    // Send Email
    var message = "<b>Dear User,</b>
 
Your equipment has reached it's threshold value. It just reported a value of " + value + ". Please take a necessary action.
";
    message += "As a valued customer, we have sent you a text message also. 
 
";
    message += "To learn more about this email, please click on the link below: 
";
    message += "<a href="http://www.embedded-lab.com/" target="new">www.Embedded-Lab.com</a>
 
 
";
    message += "Sincerely,
<b>NodeMCU ESP8266</b>";
 
    send_Email(toEmail, message)
 
    return ContentService.createTextOutput("Things went successfully.");
  }  
   catch(error) {
    Logger.log(JSON.stringify(error));
    return ContentService.createTextOutput("oops...." + error.message 
                                            + "\n" + new Date() 
                                            + "\nnumber: " + number +
                                            + "\ndomain: " + domain);
  }
 
}
 
function send_Email(address, message){
 
  MailApp.sendEmail({
          "to": address,
     "subject": "Threshold reached - ESP8266",
    "htmlBody": message      
   });
 
  Logger.log("send_textMessage: " + "Email sent to: " + address);
}

 

 

Kiểm tra tiến độ:

Như được hiển thị trong hình dưới đây, chọn doGet và nhấp vào biểu tượng lỗi để gỡ lỗi mã của bạn. Nếu bạn thực hiện đúng các bước, bạn sẽ nhận được một tin nhắn văn bản và một email từ tài khoản gmail của bạn.

Xin lưu ý rằng Google sẽ cần quyền của bạn để gửi email thay mặt bạn để khi Google yêu cầu quyền, bạn phải cung cấp nó.

GAS> Gỡ lỗi> DoGet

GAS> Gỡ lỗi> DoGet

Nếu bạn không nhận được tin nhắn văn bản hoặc email, vui lòng kiểm tra lại các bước của bạn. Nếu bạn đã nhận được thì hãy xuất bản công việc của chúng tôi để chúng tôi có thể nhận được URL mà chúng tôi có thể sử dụng trong NodeMCU. Để xuất bản, nhấp vào Xuất bản> Triển khai dưới dạng ứng dụng web

GAS> Xuất bản menu

GAS> Xuất bản menu

Hành động trên sẽ hiển thị cửa sổ sau. Đảm bảo chọn tất cả ba bước như trong hình bên dưới.

GAS> Triển khai dưới dạng ứng dụng web

GAS> Triển khai dưới dạng ứng dụng web

Khi bạn nhấp vào Cập nhật hoặc Xuất bản , bạn sẽ thấy một hộp như hình bên dưới. Từ hộp này, sao chép địa chỉ đã cho. Tôi thường lưu lại địa chỉ này vào Google Script để sử dụng trong tương lai. Chúng tôi sẽ cần địa chỉ này trong mã NodeMCU / ESP8266.

Lưu ý : chúng tôi sẽ gọi văn bản giữa / s / và / exec là GScriptID . Thông tin này là được yêu cầu trong mã NodeMCU.

GAS> Triển khai dưới dạng ứng dụng web> Kết quả

GAS> Triển khai dưới dạng ứng dụng web> Kết quả

Lấy URL từ hộp phía trên và thêm biểu tượng “? Value = -1” với nó, nó sẽ giống như thế này: 
https://script.google.com/macros/s/-YourGScriptIDGoesHere-/exec?value=-1 . Bây giờ dán URL này vào địa chỉ trình duyệt của bạn và nhấn enter. Trong vài giây, bạn sẽ nhận được email và tin nhắn văn bản.

Mã NodeMCU / ESP8266:

Vui lòng đảm bảo lấy tệp thư viện giúp chúng tôi chuyển hướng đến URL mà chúng tôi cần. Quá trình này đã được giải thích trong http://embedded-lab.com/blog/post-data-google-sheets-using-esp8266/

#include <ESP8266WiFi.h> 
#include “HTTPSRedirect.h”

const char* ssid = “–Your SSID–“; 
const char* password = “–Your Password–“;

// The ID below comes from URL 
// after publishing Google Script as Web App. 
const char *GScriptId = “–Your GScriptId–“;

const char* host = “script.google.com”; 
const char* googleRedirHost = “script.googleusercontent.com”;

const int httpsPort =     443; 
HTTPSRedirect client(httpsPort);

// Prepare the url (without the varying data) 
String url = String(“/macros/s/”) + GScriptId + “/exec?”;

const char* fingerprint = “F0 5C 74 77 3F 6B 25 D7 3B 66 4D 43 2F 7E BC 5B E9 28 86 AD”;

void setup() { 
    Serial.begin(115200); 
    Serial.println(“Connecting to wifi: “); 
    Serial.println(ssid); 
    Serial.flush();

    WiFi.begin(ssid, password); 
    while (WiFi.status() != WL_CONNECTED) { 
            delay(500); 
            Serial.print(“.”); 
    } 
    Serial.println(” IP address: “); 
    Serial.println(WiFi.localIP());

 

Serial.print(String(“Connecting to “)); 
    Serial.println(host);

    bool flag = false; 
    for (int i=0; i<5; i++){ 
            int retval = client.connect(host, httpsPort); 
            if (retval == 1) { 
                        flag = true; 
                        break; 
            } 
            else 
                    Serial.println(“Connection failed. Retrying…”); 
    }

    // Connection Status, 1 = Connected, 0 is not. 
    Serial.println(“Connection Status: “ + String(client.connected())); 
    Serial.flush(); 
     
    if (!flag){ 
            Serial.print(“Could not connect to server: “); 
            Serial.println(host); 
            Serial.println(“Exiting…”); 
            Serial.flush(); 
            return; 
    }

    // Data will still be pushed even certification don’t match. 
    if (client.verify(fingerprint, host)) { 
            Serial.println(“Certificate match.”); 
    } else { 
            Serial.println(“Certificate mis-match”); 
    } 
}

// This is the main method where data gets pushed to the Google sheet 
void sendValueToGoogle(String value){ 
    if (!client.connected()){ 
            Serial.println(“Connecting to client again…”); 
            client.connect(host, httpsPort); 
    } 
    String urlFinal = url + “value=” + value; 
    client.printRedir(urlFinal, host, googleRedirHost); 
}

// Continue pushing data at a given interval 
void loop() {

    // Here you will have your main code 
    // To demonstrate the concept we are generating a random number 
    long randomValue = random(10, 20);

    // Our lower threshold is 12 and upper threshold is 18 
    // when given vlaue goes below lower or above upper the threshold 
    // we would like to send information to GAS for email and text message 
    if (randomValue < 12 || randomValue > 18) { 
            Serial.println(“Random value outside the threshold: “ + String(randomValue)); 
            sendValueToGoogle(String(randomValue)); 
    } 
         
    delay (10000); // wait 10 sec 
}

 

File đính kèm: sendemailandtext.zip

BÀI VIẾT LIÊN QUAN:

Một công ty chế tạo phụ tùng thông minh biến mọi chiếc xe đạp thường thành xe đạp điện trong vòng vài giây, nhỏ gọn bỏ vừa balo

Chỉ với một phụ tùng nhỏ gọn, một chiếc xe đạp thường có thể biến thành một ...

Bài báo tạp chí quốc tế TIIJ

AN NEW INTEGRATED APPROACH FOR AN INTRODUCTION TO THE MECHATRONICS ENGINEERING ...

Bài báo đăng Tạp chí ngành cơ khí Việt Nam

The paper presents the researched results on design and manufacture of ...

Sửa lỗi USB hoặc thẻ nhớ SD không thể format ở Windows 10

Nếu bạn đang gặp phải vấn đề với việc format USB hay thẻ nhớ SD thì bài viết ...