# Các thiết bị ngày càng dễ dàng điều khiển hoạt động bởi chương trình máy tính.
# Mọi thứ chạy hệ điều hành như công tắc, ổ cắm, camera, cảm biến,... xu hướng mọi thứ trở nên thông minh nhờ đó phát triển
# Thống nhất nền tảng điều hành và nền tảng giao tiếp giữa các thiết bị tạo điệu kiện xây dựng hệ thống thông minh đầy đủ.
# Internet cho mọi thứ - Internet of Things đạt thành tựu đáng kể và dần phổ biến sẽ là con đường trao đổi thông tin giữa các thiết bị với nhau.
# Nhà tự động - home automation, nhà thông minh -smarthome - phát triển trong những năm gần đây và người người dùng bắt đầu biết tới.
# Tham khảo thêm chương trình mã nguồn mở với chức năng tự động đóng, mở cửa khi mọi người rời khỏi nhà, áp dụng với sản phẩm của smartthings
/**
* Khóa khi tôi rời nhà
* Author: SmartThings
* Date: 2013-02-11
* Modifier: Võ Thanh Minh
* Date: 2015-01-12
*/
definition(
name: "Khóa khi tôi rời nhà",
namespace: "smartthings",
author: "SmartThings, VTMS",
description: "Khóa khi cảm biến hiện diện hoặc điện thoại thông minh rời ngôi nhà bạn",
category: "Safety & Security",
iconUrl: "https://s3.amazonaws.com/smartapp-icons/Convenience/Cat-Convenience.png",
iconX2Url: "https://s3.amazonaws.com/smartapp-icons/Convenience/Cat-Convenience%402x.png",
oauth: true
)
preferences {
section("Khi tôi rời...") {
input "presence1", "capability.presenceSensor", title: "Ai?", multiple: true
}
section("Khóa ổ khóa...") {
input "lock1","capability.lock", multiple: true
input "unlock", "enum", title: "Mở khóa khi nhận thấy cảm biến hiện diện?", options: ["Yes","No"]
input "spam", "enum", title: "Gửi thông báo cho tôi?", options: ["Yes","No"]
}
}
def installed()
{
subscribe(presence1, "presence", presence)
}
def updated()
{
unsubscribe()
subscribe(presence1, "presence", presence)
}
def presence(evt)
{
if (evt.value == "present") {
if (unlock == "Yes") {
def anyLocked = lock1.count{it.currentLock == "unlocked"} != lock1.size()
if (anyLocked) {
sendMessage("Cửa mở khóa lúc $evt.linkText")
}
lock1.unlock()
}
}
else {
def nobodyHome = presence1.find{it.currentPresence == "present"} == null
if (nobodyHome) {
def anyUnlocked = lock1.count{it.currentLock == "locked"} != lock1.size()
if (anyUnlocked) {
sendMessage("Cửa ra vào được khóa sau khi mọi người rời khỏi")
}
lock1.lock()
}
}
}
def sendMessage(msg) {
if (spam == "Yes") {
sendPush msg
}
}
* Ảnh được lấy từ nguồn miễn phí iconarchive.com và ảnh chụp màn hình