python-internet-off-thing

Những thứ được sử dụng trong dự án này

Những thứ được sử dụng trong dự án này
Những thứ được sử dụng trong dự án này

MÃ HTML CHO UI

<!DOCTYPE html><html>   <head>       <title>Automatically_Controlled_Lighting_System</title>       <script type="text/javascript" src="https://cloud.boltiot.com/static/js/boltCommands.js"></script>       <script>setKey('{{ApiKey}}','{{Name}}');</script>   </head>   <body>       <center>       <div class="ON">           <button class="button button1" onclick="digitalWrite(0, 'HIGH');digitalWrite(1,'HIGH');">ON</button>       </div>       <div class="MACHINE">           <button class="button button3" onclick="digitalWrite(1, 'LOW');">MACHINE</button>       </div>       <div class="OFF">           <button class="button button2" onclick= "digitalWrite(0, 'LOW');digitalWrite(1, 'HIGH');">OFF</button>       </div>       </center>       <style type="text/css">           body {               margin:0;               padding:0;           }           div {               height: 33.3vh;               width: 60.9vh;               align-content: center;           }           .ON{background-color: #FFFFFF;}           .MACHINE{background-color: #FFFFFF;}           .OFF{background-color: #FFFFFF;}           .button {               border: none;               color: black;               padding: 16px 30px;               text-align: center;               width:210px;               height:70px;               text-decoration: none;               display: block;               font-size: 35px;               font-family: Impact, bold, sans-serif;               box-shadow: 1px 1px 6px 0px purple;           }           .button1 {background-color: #099924;               position: absolute;               top: 8%;               left:22%;           }           .button2 {background-color: #099924;               position: absolute;               top: 27%;               left:22%;           }           .button3 {background-color: #099924;               position: absolute;               top: 71%;               left:22%;           }       </style>    </body></html>

Mã này chỉ đơn giản là tạo ra ba nút BẬT, TẮT và MÁY và tất cả chúng đều có chức năng độc đáo. Nút BẬT được sử dụng để bật đèn led và nút TẮT được sử dụng để tắt đèn led. Và nút MÁY được sử dụng để làm cho toàn bộ hệ thống tự phụ thuộc.

MÃ PYTHON CHO NÚT MÁY

print("----------Starting the program------------");import confidentials,time,json,math,statisticsfrom boltiot import Bolt,Emailmybolt = Bolt(confidentials.api_key, confidentials.device_id)def compute_bounds(history_data,frame_size,factor):    if len(history_data)<frame_size :        return None    if len(history_data)>frame_size :        del history_data[0:len(history_data)-frame_size]    Mn=statistics.mean(history_data)    Variance=0    for data in history_data :        Variance += math.pow((data-Mn),2)    Zn = factor * math.sqrt(Variance / frame_size)    High_bound = history_data[frame_size-1]+Zn    Low_bound = history_data[frame_size-1]-Zn    return [High_bound,Low_bound]mailer = Email(confidentials.MAILGUN_API_KEY, confidentials.SANDBOX_URL, confidentials.SENDER_EMAIL, confidentials.RECIPIENT_EMAIL)history_data=[]while True :    if json.loads(mybolt.digitalRead('1'))['value'] == '0' :        time.sleep(10);        sensor_value = int(json.loads(mybolt.analogRead("A0"))["value"]);        print("Current sensor value is = " + str(sensor_value));        time.sleep(10);                bound = compute_bounds(history_data,confidentials.FRAME_SIZE,confidentials.MUL_FACTOR)        if not bound:            required_data_count=confidentials.FRAME_SIZE-len(history_data)            print("Not enough data to compute Z-score. Need ",required_data_count," more data points")            history_data.append(sensor_value);            time.sleep(10)            continue                try:            if sensor_value > bound[0] :                print ("The light intensity increased suddenly. Sending an EMAIL.")                print("Making request to Mailgun to send an email")                response = mailer.send_email("Alert", "Light intensity increased suddenly in the room. The current light intensity value is " +str(sensor_value))                response_text = json.loads(response.text)                print("Response received from Mailgun is: " + str(response_text['message']))            elif sensor_value < bound[1]:                print ("The light intensity decreased suddenly. Sending an EMAIL.")                print("Making request to Mailgun to send an email")                response = mailer.send_email("Alert", "Light intensity decreased suddenly in the room. The current light intensity value is " +str(sensor_value))                response_text = json.loads(response.text)                print("Response received from Mailgun is: " + str(response_text['message']))            history_data.append(sensor_value);                except Exception as e:            print ("Error",e)        if sensor_value < 100 :            print("Since the value is now below the thresholdlower value therefore, Now turning ON the LED");            print(mybolt.digitalWrite('0',"HIGH"));            time.sleep(10);        elif sensor_value > 900 :            print("Since sensor value is now above the thresholdupper value therefore, Now turing OFF the LED");            print(mybolt.digitalWrite('0',"LOW"));            time.sleep(10);        else :            sv = (sensor_value - 100)/3.13725;            sv = 255 - sv            print("Adjusting intensity of led according to the light in the room");            time.sleep(1);            print("intensity of led should be = " + str(sv));            print(mybolt.analogWrite('0',int(sv)));            time.sleep(10);        print("loop end");    else :        print("waiting till user click on MACHINE button");        time.sleep(10);

Mã này chỉ được viết để thực hiện chức năng của nút MÁY, đây là tính năng chính của dự án. Mã này chỉ đơn giản là sử dụng cảm biến LDR để tìm nạp cường độ ánh sáng ở xung quanh tức là trong phòng và sau đó tính toán cường độ ánh sáng cần có trong phòng bằng cách sử dụng công thức do tôi (nhà sản xuất dự án) tạo ra và sau đó bật đèn led nhiều cường độ cần thiết theo tình hình hiện tại của cường độ ánh sáng trong phòng. Ngoài ra nếu cần thì đèn led có thể tự tắt. Ngoài ra nếu bất kỳ anamoly nào được phát hiện thì nó sẽ gửi một cảnh báo email cho điều đó.

Công thức được sử dụng để tính cường độ Led

led_intensity = ( sensor_value – 100 )/3.13725

Cường độ của đèn led dao động từ 0 đến 255. Như tất cả đều biết cường độ của đèn led là bắt buộc nếu trong phòng có rất tối và ánh sáng led cường độ thấp là bắt buộc nếu có đủ ánh sáng trong phòng. Tương tự công thức này hoạt động. Theo công thức này, không có ánh sáng cần thiết nếu cảm biến_value đạt 900 trở lên và ánh sáng cường độ đầy đủ sẽ được yêu cầu nếu cảm biến_value là 100 hoặc thấp hơn, tức là đối với 100 hoặc thấp hơn cường độ của đèn led sẽ là 255, cường độ tối đa của đèn led và đối với cảm biến_value ở trên hoặc bằng 900 thì cường độ của đèn led phải bằng 0, không có gì ngoài TẮT đèn led. Và đối với cảm biến_value trong khoảng từ 100 đến 900, cường độ của đèn led được điều chỉnh theo cường độ ánh sáng xung quanh với việc sử dụng công thức này.

Hồ sơ bí mật

# This is confidentials file which contains all the confidentials information ## for Bolt device details :-api_key = '#############################'device_id  = "##########################"# for using Mailgun :-MAILGUN_API_KEY = "#####################"SANDBOX_URL=  '#########################'SENDER_EMAIL = "########################"RECIPIENT_EMAIL = "#####################"# for the limits of the light intensity :-thresholdLower = 100thresholdUpper = 900# for z-score analysis :-FRAME_SIZE = 10MUL_FACTOR = 6

Phân tích điểm Z

Phân tích điểm z được sử dụng ở đây để phát hiện anamoly, tức là bất cứ khi nào có sự thay đổi đột ngột về cường độ ánh sáng xung quanh thì cảnh báo email sẽ tự động được kích hoạt cho người dùng để thông báo cho điều đó. Ở đây, thay đổi đột ngột có nghĩa là cảm biến_value của LDR vượt ra ngoài giới hạn trên hoặc đi dưới giới hạn dưới. các giá trị được đặt tại thời gian chạy tức là trong khi chạy chương trình.

Các giá trị ràng buộc trên và giới hạn dưới có thể được đặt khi lấy ít nhất mười (10) LDR sensor_value. Do đó, lần đầu tiên khi chương trình chạy, phải mất một thời gian để thu thập mười cảm biến_value, do đó, phân tích điểm z này có thể được sử dụng. Sau đó, phân tích điểm z lấy mười giá trị cuối cùng, tức là mười giá trị gần đây của LDR sensor_value.

Biểu đồ cho điểm z giống như

Biểu đồ cho điểm z giống như

CÔNG THỨC SỬ DỤNG

CÔNG THỨC SỬ DỤNG

Tin nhắn thông báo qua email

thong bao email

Dịch vụ email bằng mailgun

 email bằng mailgun

Đám mây Bolt

Sử dụng khóa API và mã khóa thiết bị để kết nối mô-đun wifi với mã python

Sử dụng khóa API và mã khóa thiết bị

Tạo sản phẩm và liên kết nó với thiết bị

san pham lien ket thiet bi

Và viết mã html của bạn ở đây trong phần cấu hình

viết mã html của bạn ở đây trong phần cấu hình

Giao diện trang thiết bị trông như

giao dien trang thiet bi

Kết nối phần cứng

Kết nối phần cứng

module wifi iot

module wifi iot

trong mô-đun wifi Bolt iot

 wifi Bolt iot

Tổng số kết nối giữa mô-đun và Breadboard

ĐẦU RA TRÊN MÀN HÌNH:

1 Lần đầu tiên khi chương trình bắt đầu

giao dien chuiong trinh

Nó yêu cầu tối thiểu 10 sensor_values ​​để đặt giới hạn.

2 Khi nhấp vào nút BẬT hoặc TẮT

bat tat may

Nó hiển thị một thông báo rằng nó đang đợi cho đến khi người dùng nhấp vào nút Máy.

3 Khi nhấp vào nút Máy

nhap vao nut may

Nó lấy cường độ ánh sáng xung quanh và điều chỉnh cường độ của led theo đó.

4 Khi phát hiện Anamoly bằng phân tích điểm z

Anamoly

Một thông báo email sẽ được gửi bằng mailgun khi có sự thay đổi đột ngột về cường độ ánh sáng xung quanh.

Để lại một bình luận