Mục lục:

Nhận email thông báo khi kênh trên ThingSpeak không được cập nhật trong một thời gian: 16 bước
Nhận email thông báo khi kênh trên ThingSpeak không được cập nhật trong một thời gian: 16 bước

Video: Nhận email thông báo khi kênh trên ThingSpeak không được cập nhật trong một thời gian: 16 bước

Video: Nhận email thông báo khi kênh trên ThingSpeak không được cập nhật trong một thời gian: 16 bước
Video: Bài 9: Gửi dữ liệu lên ThingSpeak 2024, Tháng mười một
Anonim
Nhận email thông báo khi kênh trên ThingSpeak không được cập nhật trong một thời gian
Nhận email thông báo khi kênh trên ThingSpeak không được cập nhật trong một thời gian

Câu chuyện nền

Tôi có sáu nhà kính tự động trải khắp Dublin, Ireland. Bằng cách sử dụng một ứng dụng điện thoại di động được tạo tùy chỉnh, tôi có thể theo dõi và tương tác từ xa với các tính năng tự động trong mỗi nhà kính. Tôi có thể mở / đóng cửa sổ theo cách thủ công khi nhiệt độ quá cao / thấp; Tôi có thể bắt đầu / ngừng tưới khi độ ẩm của đất quá thấp / cao; và tôi có thể khởi động / dừng quạt thông gió khi độ ẩm không khí quá cao / thấp. Hoặc tôi có thể chỉ cần chuyển hệ thống sang chế độ Tự động, và các loại rau sẽ được bộ não Arduino chăm sóc. Thông tin chi tiết về dự án này có thể được tìm thấy tại đây -

Kết nối từ xa với các bảng Arduino tại sáu nhà kính được thực hiện với sự trợ giúp của USB GPRS dongle, một ở mỗi vị trí (tôi đã mua thiết bị của tôi từ đâyhttps://www.aliexpress.com/item/Unlocked-New-Huawei-E353 -E353s-2-With-Antenna-3G-USB-Modem-21-6-Mbps-HSPA-Mobile / 32979630201.html? Spm = a2g0s.9042311.0.0.44cb4c4dzVUThU). Như trường hợp của kết nối dữ liệu di động (ít nhất là ở Dublin), nó giảm ngẫu nhiên, đôi khi trong vài phút, đôi khi có thể trong vài giờ. Nếu kết nối bị ngắt, Arduino được lập trình để đặt lại khóa USB sau mỗi 10 phút, để thử khởi tạo một kết nối mới. Tuy nhiên, đôi khi do (chưa) những lý do không xác định, ngay cả khi kết nối dữ liệu GPRS được bật trở lại, Arduino (và lá chắn Ethernet kèm theo) vẫn không thông báo về sự kiện này. Đây là thời điểm tôi cần đến vị trí cụ thể đó và thiết lập lại toàn bộ hệ thống theo cách thủ công.

Khi kết nối dữ liệu bị gián đoạn tại một số vị trí, tôi muốn được thông báo qua email càng sớm càng tốt, để tôi theo dõi vị trí cụ thể đó. Vì giao tiếp giữa ứng dụng điện thoại và Arduino diễn ra thông qua một dịch vụ trực tuyến do https://thingspeak.com cung cấp, cho đến gần đây (và đến ngày 31 tháng 3 năm 2019), điều này có thể thực hiện được bằng cách sử dụng một dịch vụ khác do https:// cung cấp. ifttt.com/discover và đặt ThingHTTP và React trên mỗi kênh, theo dõi thực tế là kênh cụ thể đó có được cập nhật trong một thời gian hay không. Tuy nhiên, theo email tôi nhận được từ Google, bắt đầu từ ngày 31 tháng 3 năm 2019, do không tuân thủ các yêu cầu cập nhật về bảo mật dữ liệu của họ (https://cloud.google.com/blog/products/g-suite/elerating-user -trust-in-our-api-systemss), quyền truy cập vào một số dữ liệu trong tài khoản Google của tôi sẽ không khả dụng đối với IFTTT nữa và như trong trường hợp của tôi, email là tài nguyên duy nhất mà IFTTT có quyền truy cập, tôi hiểu rằng thông báo dịch vụ được mô tả ở trên sẽ ngừng hoạt động.

Vì vậy, do đó, chúng tôi đang thực hiện một giải pháp thay thế để thông báo qua email tiếp tục đến khi kết nối dữ liệu tại các vị trí của tôi bị gián đoạn. Điều này vẫn sử dụng các tính năng ThingHTTP và React trên các kênh của tôi, chỉ có liên kết đến IFTTT được trỏ lại đến Google Drive. Vì vậy, ngoài phần cứng (trong trường hợp của tôi là Arduino), bạn có thể giao tiếp với tài khoản ThingSpeak của mình, bạn sẽ cần tạo một tài khoản Google, trong trường hợp bạn chưa có… và hãy bắt đầu!

Bước 1:

Hình ảnh
Hình ảnh

Trong Google Drive

Đầu tiên, trong Google Drive (https://drive.google.com), chúng ta cần tạo một bảng tính và một biểu mẫu đơn giản. Mở Google Drive của bạn và nhấp vào Mới - Google Trang tính - Bảng tính trống.

Bước 2:

Hình ảnh
Hình ảnh

Tôi đã đổi tên của mình là "Vị trí xuống bảng tính". Sau đó vào Công cụ - Tạo biểu mẫu.

Bước 3:

Hình ảnh
Hình ảnh

Tôi đã đổi tên biểu mẫu là "Vị trí xuống biểu mẫu" và thay đổi "Câu hỏi không có tiêu đề" thành "Trạng thái" và loại từ "Nhiều lựa chọn" thành "Câu trả lời ngắn".

Bước 4:

Hình ảnh
Hình ảnh

Sau đó, tôi đã loại bỏ tùy chọn thu thập địa chỉ email - nhấp vào "Thay đổi cài đặt" và bỏ chọn tất cả các tùy chọn trong cửa sổ hiển thị. Nhấp vào "Lưu".

Bước 5:

Hình ảnh
Hình ảnh

Đóng tab trình duyệt hiện tại chứa biểu mẫu của bạn và bạn sẽ quay lại tab Google Drive chính của mình, nơi bạn sẽ có cả biểu mẫu và bảng tính vừa tạo. Mở bảng tính và đi tới "Tệp - Chia sẻ…". Trong cửa sổ mới, nhấp vào "Nâng cao"

Bước 6:

Hình ảnh
Hình ảnh

Sau đó nhấp vào "Thay đổi…" bên cạnh nhãn "Riêng tư - Chỉ bạn mới có thể truy cập"

Bước 7:

Hình ảnh
Hình ảnh

và thay đổi thành "Bật - Bất kỳ ai có liên kết" và cũng thành "Có thể chỉnh sửa"

Bước 8:

Hình ảnh
Hình ảnh

Nhấp vào "Lưu" và "Hoàn tất" để quay lại bảng tính của bạn. Trong khi ở đó, nhấp vào "Tệp - Xuất bản lên web…", sau đó nhấp vào "Xuất bản" và "OK" cho cửa sổ hộp thoại. Đóng cửa sổ "Xuất bản lên web".

Khi vẫn ở trong bảng tính, hãy nhấp vào "Biểu mẫu - Chuyển đến biểu mẫu trực tiếp". Nhấp chuột phải bằng chuột của bạn (Tôi đang sử dụng trình duyệt Google Chrome) và chọn "Xem nguồn trang".

Bước 9:

Hình ảnh
Hình ảnh

Trong trang mới mở ra, tìm kiếm "hành động biểu mẫu" và sau đó tìm liên kết tương tự như https://docs.google.com/forms/d/e/XXXXXXXXXXXXXXXXXXXXXXXXXXXXX/formResponse. Chọn liên kết đó, sao chép và dán nó vào một số tài liệu văn bản. Bạn sẽ sử dụng nó để tạo liên kết cuối cùng cần được nhập vào ThingHTTP cho ThingSpeak.

Bước 10:

Hình ảnh
Hình ảnh

Quay lại chế độ xem nguồn của biểu mẫu của bạn và bây giờ tìm kiếm "mục nhập". Định vị và chọn toàn bộ văn bản, chẳng hạn như "entry. XXXXX". Sao chép và dán nó vào cùng một tài liệu văn bản như trên. Bây giờ bạn có thể đóng chế độ xem nguồn của biểu mẫu Google của mình.

Bước 11:

Hình ảnh
Hình ảnh

Trong tài liệu văn bản mới (nơi bạn hiện có liên kết và mục nhập mà chúng tôi đã dán trước đó), hãy tạo liên kết cuối cùng, liên kết đó sẽ giống như

docs.google.com/forms/d/e/XXXXXXXXXXXXXXXXXXXXXXXXXXX/formResponse?entry. XXXXX = LOCATION + NAME & submit = Gửi

Trong trường hợp của tôi, "VỊ TRÍ + TÊN" sẽ được thay thế bằng tên thực của từng vị trí cụ thể mà tôi cần theo dõi. Email thông báo mà tôi sẽ nhận được khi kết nối bị ngắt sẽ có dòng chữ này để tôi biết chính xác vị trí nào có vấn đề. Trên thực tế, văn bản này sẽ được gửi dưới dạng nội dung văn bản ngắn cho trường "trạng thái" trong biểu mẫu của Google. "& Submit = Submit" sẽ âm thầm gửi biểu mẫu mà không cần thêm bất kỳ hành động nào khi được ThingHTTP và React gọi ra.

Cuối cùng, chúng tôi cần thêm một tập lệnh sẽ tự động gửi thông báo qua email mỗi khi một mục nhập mới được thêm vào bảng tính. Mở bảng tính, sau đó nhấp vào "Công cụ - Trình chỉnh sửa tập lệnh". Trong cửa sổ mới mở ra, hãy thêm mã sau (với các thay đổi bắt buộc để phản ánh nhu cầu của bạn):

function newEntryNotification (e)

{

cố gắng

{

var timestamp = e.values [0];

var location = e.values [1];

var message = location + 'location is DOWN / n' + timestamp;

MailApp.sendEmail ("ĐỊA CHỈ EMAIL CỦA BẠN", "Chú ý, vị trí XUỐNG!", Tin nhắn);

}

bắt (e)

{

MailApp.sendEmail ("ĐỊA CHỈ EMAIL CỦA BẠN", "Lỗi - Chú ý, vị trí XUỐNG!", E.message);

}

}

Thay thế văn bản "ĐỊA CHỈ EMAIL CỦA BẠN" bằng địa chỉ email nơi thông báo sẽ được gửi đến và nội dung thông báo thực tế, nếu bạn muốn.

Bước 12:

Hình ảnh
Hình ảnh

Tập lệnh này cần được kích hoạt khi một mục mới được thêm vào bảng tính. Trong cùng một cửa sổ (với mã script ở trên), hãy nhấp vào biểu tượng "đồng hồ bấm giờ" trên thanh công cụ - "Trình kích hoạt của dự án hiện tại". Bạn sẽ được yêu cầu đặt tên cho dự án của mình (tôi đặt tên cho dự án của mình là "locationDown") và một tab trình duyệt khác sẽ mở ra, báo cáo rằng không tìm thấy kết quả nào (không có trình kích hoạt). Nhấp vào "tạo một trình kích hoạt mới".

Bước 13:

Hình ảnh
Hình ảnh

Trong cửa sổ mới, chọn "Từ bảng tính" cho "Chọn nguồn sự kiện"; "Trên biểu mẫu gửi" cho "Chọn loại sự kiện"; "Thông báo cho tôi ngay lập tức" đối với "Cài đặt thông báo không thành công". Nhấp vào "Lưu". Bạn sẽ được yêu cầu đăng nhập vào tài khoản Google của mình và "Cho phép" để trình kích hoạt này truy cập vào tài khoản của bạn khi được yêu cầu.

Bước 14:

Hình ảnh
Hình ảnh

Bây giờ bạn sẽ có một trình kích hoạt trong danh sách trình kích hoạt, sẽ được liên kết với tập lệnh mà chúng tôi đã tạo trước đó. Do đó, khi chèn dữ liệu mới vào bảng tính (sử dụng liên kết biểu mẫu tự động và phương pháp im lặng được mô tả ở trên), trình kích hoạt sẽ ngay lập tức gọi tập lệnh, tập lệnh này sẽ gửi thông báo đến địa chỉ email được cung cấp, chứa thông báo bạn đã chọn.

Chúng tôi đã hoàn thành về phía Google Drive và hiện chúng tôi đang chuyển sang ThingSpeak.

Bước 15:

Hình ảnh
Hình ảnh

Trong ThingSpeak Đăng nhập vào tài khoản của bạn (https://thingspeak.com/login), đi tới "Ứng dụng - ThingHTTP", sau đó nhấp vào "ThingHTTP mới". Đặt tên cho nó (tôi đã chọn tên thực của từng vị trí; "MyLocationName" cho mục đích của hướng dẫn này) và trong trường "URL", hãy dán liên kết từ tệp văn bản của bạn, liên kết trông giống như

docs.google.com/forms/d/e/XXXXXXXXXXXXXXXXXXXXXXXXXXX/formResponse?entry. XXXXX = LOCATION + NAME & submit = Gửi

Giữ nguyên tất cả các trường khác và nhấp vào "Lưu ThingHTTP".

Bước 16:

Hình ảnh
Hình ảnh

Sau đó đi tới "Ứng dụng - Phản ứng", và nhấp vào "Phản ứng mới". Đặt tên cho nó (một lần nữa, tôi đã chọn tên vị trí theo sau là từ "react", nhưng bạn có thể chọn bất kỳ tên nào bạn muốn); "Không Kiểm tra Dữ liệu" cho "Loại Điều kiện"; "10 phút một lần" cho "Tần suất kiểm tra"; tên kênh mà bạn muốn theo dõi để cập nhật, cho "Nếu Kênh"; thời gian kênh chưa được cập nhật (tôi đã chọn 15 phút), vì "chưa được cập nhật cho"; "ThingHTTP" cho "Hành động"; "MyLocationName" cho "sau đó thực hiện ThingHTTP"; "Chỉ thực hiện hành động khi điều kiện đầu tiên được đáp ứng", vì tôi chỉ muốn nhận được thông báo một lần. Điều này sẽ tự đặt lại khi kênh được cập nhật lại với dữ liệu mới đến. Nhấp vào "Save React" và bạn đã hoàn tất.

Kể từ bây giờ khi kênh của bạn chưa được cập nhật trong 15 phút (hoặc thời gian khác, tùy thuộc vào những gì bạn đã chọn), React sẽ bắt ngoại lệ đó sẽ kích hoạt ThingHTTP, từ đó sẽ âm thầm tạo một mục mới trong bảng tính. Trình kích hoạt và tập lệnh trên Bảng tính Google sẽ lấy nó từ đó, như đã được giải thích ở trên.

Đề xuất: