"Đi học dzìa" - Kiểm tra người dùng có đang ở nhà hay không?

Thử tưởng tượng papa/mama/anh/chị/em của bạn vừa bước vào nhà thì TV sẽ tự động chào đón bằng bài "Đi học về". Bài này chỉ thực hiện được nếu nhà bạn có wifi và papa/mama/anh/chị/em có smartphone hay laptop kết nối tự động với wifi trong nhà. Hãy cùng làm nha!

1. Nguyên lý

Mỗi thiết bị smartphone hay laptop đều có địa chỉ MAC để kết nối với router wifi. Khi papa/mama/anh/chị/em từ ngoài xa vào thì thiết bị sẽ tự động khai báo MAC và kết nối với mạng. Chúng ta chỉ cần dùng một chương trình Python nhỏ quan sát MAC của mạng, hễ khi nào có kết nối thì tự động mở trang youtube heart.

2. Chuẩn bị

Tìm MAC address của thiết bị: bạn có thể mượn tạm smartphone của papa/mama/anh/chị/em, vào phần "Settings" và chép lại địa chỉ MAC wifi (ô đỏ):

Hoặc bạn có thể tải các apps như Fing trên Apple Store để tìm các MAC trong mạng.

3. Trên Raspberry

Tải chương trình quan sát mạng trên Raspberry Pi: bạn vào terminal và nhập lệnh sudo apt-get install arp-scan

Chép đoạn code dưới đây và lưu lại với tên di_hoc_ve.py, nhớ thay đổi địa chỉ MAC trong ô đỏ bằng địa chỉ MAC mà bạn vừa tìm được. Lưu ý là bạn phải viết thường (không viết hoa) ký tự địa chỉ MAC nha! 

#!/usr/bin/bash
#By MonsieurVechai
import time
import webbrowser
import os, subprocess

def check_presence(address):
    command = "arp-scan -l | grep " + str(address)
    url = "https://www.youtube.com/watch?v=eBVRZK6ktzE"
    check = subprocess.Popen(command, stdout=subprocess.PIPE, shell=True)
    (output, err) = check.communicate()
    p_status = check.wait()
    if output:
        print "Device is at home. Start playing song."
        webbrowser.open(url)
    else:
        print "Device is not at home. Waiting..."
        time.sleep(5)

def main():
    while True:
        check_presence("00:00:00:00:00:00") 

if __name__ == '__main__':
    main()  

Mở terminal trong thư mục bạn lưu file python và nhập lệnh sudo python di_hoc_ve.py

4. Gợi ý

  • Bạn có thể tự thử nghiệm với điện thoại của mình bằng cách tắt wifi, chạy code sudo python di_hoc_ve.py rồi sau đó bật wifi lên.
  • Bạn có thể dễ dàng chỉnh sửa code để chơi các bài nhạc khác nhau với cho mỗi địa chỉ MAC.

5. Lưu ý

  • Địa chỉ MAC phải nằm giữa 2 dấu ngoặc kép nha: "ab:cd:ef:gh:ij:kl"
  • Bạn không thể chạy lệnh sudo python di_hoc_ve.py từ SSH mà lại chơi youtube trên TV qua HDMI được. Bắt buộc phải chạy khi bạn kết nối với TV vì Raspberry Pi chỉ chạy lênh từ chính session của nó. Tuy nhiên bạn có thể dùng crontab hẹn giờ rồi reboot nếu bạn muốn điều khiển Pi từ xa.
  • arp-scan cần quyền root nên bạn phải đăng nhập root và phải nhập sudo python.

6. Gợi ý nâng cao

  • Thay vì chơi nhạc, bạn có thể gắn LED với GPIO của Raspberry Pi và bật LED lên mỗi khi có người đăng nhập wifi.
  • Lưu tất cả MAC đã biết vào 1 file và thông báo khi có MAC "lạ" kết nối vào wifi nhà bạn,

Chúc các bạn thành công!

lên
13 thành viên đã đánh giá bài viết này hữu ích.
Các dự án được truyền cảm hứng

Select any filter and click on Apply to see results

Các bài viết cùng tác giả

(Phòng chống) Nghệ thuật hắc ám với ESP8266 - Phần 5: Bầu ơi thương lấy Bí cùng với ESP32

Bài trước tui đã hướng dẫn các bạn hô biến chiếc Casio huyền thoại thành thiết bị nhận phao wifi từ xa để thủ khoa đại học. Thể theo truyền thống "Bầu ơi thương lấy Bí cùng" của người Việt Nam chúng ta, các bạn sau khi chắc chắn 100% thủ khoa thì cũng nên ra tay nghĩa hiệp giúp đỡ các đồng môn trong thi trường hoàn thành bài thi đại học. Vì vậy, trong bài này, tui sẽ hướng dẫn các bạn làm một bộ đàm Casio để liên lạc thả thính trong phòng thi. Lưu ý là các bạn nên chế cháo cẩn thận, chớ nên buôn bán thiết bị nếu không muốn bị Công An gõ cửa hỏi thăm.

lên
19 thành viên đã đánh giá bài viết này hữu ích.
Từ khóa: 

Cùng học VBLUNO - Phần 1: Mở hộp và đánh giá

Đây là chuỗi các bài giới thiệu và hướng dẫn cho cộng đồng về các ứng dụng của bo mạch VBLUNO (VNGIoTLab BLE UNO), một sản phẩm tiên phong trong công nghệ Internet của Vạn Vật ở Việt Nam. Bài đầu tiên chúng ta sẽ xem thử ấn tượng ban đầu về bo này ra sao nha!

lên
9 thành viên đã đánh giá bài viết này hữu ích.