Bỏ qua, đến nội dung chính
Nastrotek
Giải pháp IoTIoT SolutionsMới

Chuông cửa video ưu tiên riêng tư: Thiết kế xử lý cục bộ

Cách mình thiết kế chuông cửa video dùng camera RTSP, Frigate và Home Assistant để nhận diện người, lưu clip trong nhà và hạn chế dữ liệu đi lên cloud.

Chia sẻ

LinkedInFacebookX
A wired privacy-first video doorbell installed beside the entrance of a Vietnamese townhouse

Chuông cửa video là một trong những thiết bị khiến mình cân nhắc kỹ chuyện local AI và cloud. Camera nhìn ra lối vào cả ngày, microphone có thể nghe được âm thanh gần cửa, còn lịch sử chuyển động vô tình cho biết lúc nào nhà có người. Tiện thì rất tiện, nhưng mình không muốn toàn bộ video phải đi qua server bên ngoài chỉ để biết có người đứng trên thảm cửa.

Thiết kế mình chọn không cố nhét mọi thứ vào chính chiếc chuông. Camera ở cửa chỉ lo lấy hình, nút bấm và âm thanh. Một mini PC đặt trong nhà nhận luồng RTSP, chạy nhận diện người bằng Frigate, lưu clip vào SSD rồi gửi sự kiện sang Home Assistant. Khi Internet mất, chuông, ghi hình và cảnh báo trong mạng nội bộ vẫn hoạt động.

“Local” nên được hiểu tới đâu?

Xử lý cục bộ có ba mức khá khác nhau:

Cách làmVideo thô đi đâu?Điểm đổi lại
Cloud-firstRa Internet để phân tích và lưuDễ cài, nhưng phụ thuộc dịch vụ và chính sách của hãng
AI ngay trên chuôngChỉ metadata hoặc clip đã lọc rời thiết bịRiêng tư và gọn, nhưng bị giới hạn nhiệt, điện và model
AI trên edge server trong nhàCamera gửi RTSP tới mini PC trong LANDễ nâng cấp model và lưu trữ, nhưng mình phải vận hành server

Với mình, lựa chọn thứ ba cân bằng nhất. Chuông cửa không cần nóng lên vì chạy model liên tục, còn mini PC có thể xử lý thêm vài camera sau này. “Local” ở đây nghĩa là video thô không cần rời khỏi mạng nhà; nó không có nghĩa là mọi phép tính phải diễn ra trên bo mạch gắn ngoài cửa.

Kiến trúc mình sẽ dùng

Luồng chính khá ngắn:

Chuông cửa PoE / RTSP
        ↓
VLAN camera → go2rtc / Frigate trên mini PC
        ↓                 ↓
  clip trên SSD       sự kiện MQTT
                           ↓
                    Home Assistant
                           ↓
                 thông báo điện thoại

Mini PC, switch PoE, UPS và ổ SSD xử lý video chuông cửa ngay trong mạng gia đình

Camera chỉ tạo luồng video. Mini PC trong nhà mới là nơi phát hiện người, lưu clip và gửi sự kiện sang Home Assistant.

Phần cứng cho một camera không cần quá lớn:

  • Chuông cửa hoặc camera intercom có RTSP/ONVIF, ưu tiên H.264 và nguồn PoE.
  • Switch PoE nhỏ, hoặc PoE injector nếu nhà chỉ có một thiết bị.
  • Mini PC Intel N100/N150 với iGPU, RAM 8–16 GB.
  • SSD riêng cho video; dung lượng tùy bitrate và số ngày lưu.
  • UPS nhỏ cho switch, mini PC và router nếu muốn chuông vẫn chạy khi mất điện ngắn.

Frigate hỗ trợ OpenVINO trên iGPU Intel. Với một luồng detect độ phân giải thấp, N100 đã là điểm bắt đầu hợp lý; CPU detector thuần chỉ nên dùng để thử. Điều mình thích là motion detection chạy nhẹ trước, rồi chỉ gửi frame cần thiết sang object detector thay vì chạy AI nặng trên mọi frame.

Chọn camera trước khi chọn model AI

Camera phải mở được luồng local mà không cần app cloud giữ vai trò trung gian. Checklist của mình gồm:

  • Có RTSP hoặc ONVIF thật, không chỉ ghi chữ “works with NVR”.
  • Có mainstream để ghi và substream nhẹ cho detect.
  • Doorbell press xuất hiện như ONVIF event, digital input hoặc API local.
  • Cho tạo user riêng chỉ có quyền xem stream.
  • Có H.264; H.265 tiết kiệm dung lượng nhưng tương thích trình duyệt và tích hợp có thể khó hơn.
  • Hai chiều audio được kiểm chứng với go2rtc/Home Assistant nếu đây là tính năng bắt buộc.
  • Có nguồn dây. Camera pin thường ngủ để tiết kiệm điện và việc đánh thức có thể phụ thuộc vào cloud.

Mình nghiêng về PoE vì chỉ cần một sợi cáp cho nguồn và dữ liệu, stream ổn định hơn Wi-Fi và không phải tháo chuông ra sạc. Tuy vậy, kéo dây mới là phần tốn công nhất. Nếu dùng dây chuông cửa 12–24 V có sẵn, bạn cần chọn đúng phần cứng tương thích và tuyệt đối không nối thẳng nó vào GPIO hay cổng Ethernet.

Kiểm tra đầu nối Ethernet và gioăng chống nước khi lắp chuông cửa video dùng PoE

PoE cho nguồn và dữ liệu trên cùng một sợi cáp, nhưng đầu nối, gioăng và đường đi dây vẫn phải được kiểm tra như một hạng mục ngoài trời.

Ngoài trời, một đầu RJ45 cắm đúng vẫn chưa đủ. Mình kiểm tra gioăng, strain relief, hướng nước chảy, vị trí mối nối và test cáp trước khi đóng mặt chuông. Switch PoE cũng phải đúng chuẩn của thiết bị; không nên dùng injector passive chỉ vì đầu cắm vừa.

Tách luồng detect và record

Không cần đưa video 2K hoặc 4K vào detector ở 15–30 fps. Với một cửa ra vào, substream khoảng 640×360 hoặc 720p ở 5 fps thường đã đủ để phát hiện người. Mainstream giữ chất lượng cao chỉ dùng để ghi.

Ví dụ cấu hình rút gọn dưới đây nhằm minh họa cách chia vai trò; tên stream và tọa độ zone phải đổi theo camera thật:

cameras:
  front_door:
    ffmpeg:
      inputs:
        - path: rtsp://camera/low
          roles: [detect]
        - path: rtsp://camera/high
          roles: [record]
    detect:
      width: 640
      height: 360
      fps: 5
    zones:
      doorstep:
        coordinates: 0.20,0.95,0.82,0.95,0.70,0.38,0.30,0.38
    record:
      enabled: true
      alerts:
        retain:
          days: 7

Mục tiêu không phải là tối đa FPS. Mục tiêu là nhận ra một người tiến vào vùng trước cửa đủ nhanh để gửi cảnh báo, trong khi mainstream vẫn lưu được gương mặt hoặc gói hàng rõ ràng nếu sau này cần xem lại.

Privacy bắt đầu từ góc đặt camera

Mask không thể sửa hoàn toàn một góc quay quá rộng. Trước khi mở Frigate, mình chỉnh wedge mount để camera nhìn xuống thảm cửa và tránh cửa sổ nhà đối diện. Sau đó mới tạo:

  • Privacy mask cho vùng nhà hàng xóm hoặc không gian không nên ghi lại.
  • Motion mask cho cây rung, đồng hồ timestamp hay đường xe chạy ở rìa ảnh.
  • Zone doorstep chỉ bao gồm phần lối vào thuộc nhà mình.
  • Required zone để một người đi ngang ngoài đường không tạo alert.

Thiết lập vùng phát hiện trước thảm cửa và che vùng nhà hàng xóm trên hình ảnh chuông cửa

Đặt góc quay đúng trước, sau đó dùng zone và mask để hệ thống chỉ quan tâm phần lối vào thuộc nhà mình.

Với chuông cửa, mình không bật nhận diện khuôn mặt mặc định. Phân loại person và sự kiện bấm chuông đã giải quyết phần lớn nhu cầu. Nếu sau này cần nhận biết người quen, đó nên là một tính năng opt-in riêng, có dữ liệu mẫu, thời hạn giữ và nút xóa rõ ràng; không nên lén thêm vào pipeline chỉ vì model có sẵn.

Microphone cũng cần quyết định tương tự. Nếu không dùng đàm thoại, tắt ghi audio ở camera hoặc trong luồng record. Nếu dùng, mình ưu tiên push-to-talk thay vì mở mic điện thoại liên tục.

Lưu ít hơn nhưng giữ đúng đoạn cần xem

Privacy-first không đồng nghĩa với “lưu local mãi mãi”. Mình đặt chính sách đơn giản:

  • Không lưu continuous video, hoặc chỉ giữ 24 giờ để debug.
  • Clip có người trong zone giữ 7 ngày.
  • Sự kiện bấm chuông có thể được giữ lâu hơn nếu thực sự cần.
  • Snapshot dùng cho notification tự xóa cùng event.
  • Video đã đánh dấu cần giữ được chuyển sang thư mục riêng bằng thao tác chủ động.

Frigate cho đặt retention khác nhau cho continuous, motion, alert và detection, kèm pre/post capture. Với cửa nhà, vài giây trước và sau alert thường hữu ích hơn lưu cả ngày. Nếu ổ gần đầy, cần có monitoring dung lượng và kiểm tra rằng quá trình xóa cũ đang chạy đúng.

SSD chứa video vẫn là dữ liệu nhạy cảm. Nếu mini PC có thể bị lấy đi, mình sẽ dùng full-disk encryption và không để mật khẩu camera trong file backup không mã hóa. Backup cấu hình cần thiết; backup toàn bộ clip lên một cloud khác lại đi ngược mục tiêu ban đầu.

Tách mạng camera và chặn đường ra Internet

Camera nằm trên VLAN riêng, chỉ được nói chuyện với NVR, NTP nội bộ và DNS nếu thật sự cần. Firewall chặn camera đi trực tiếp ra Internet. Mini PC có quyền lấy stream từ camera; Home Assistant chỉ nhận event và xem stream đã được restream, không cần dùng tài khoản quản trị camera.

Mình kiểm tra bằng một bước rất đơn giản: rút WAN nhưng giữ LAN. Nếu live view, doorbell press, detection và clip vẫn chạy thì đường local đã đúng. Sau đó, chặn egress của camera và xem log vài ngày để phát hiện tính năng nào còn âm thầm phụ thuộc vào server của hãng.

Truy cập từ xa nên đi qua VPN như WireGuard/Tailscale hoặc một reverse proxy có xác thực mạnh. Không mở thẳng cổng RTSP, go2rtc hay giao diện Frigate ra Internet. Notification dạng chữ có thể tới điện thoại mà không mang video; để xem snapshot từ ngoài nhà, điện thoại cần một đường truy cập an toàn đến Home Assistant.

Nút chuông phải hoạt động độc lập với AI

Đừng để object detector quyết định có ai vừa bấm chuông. Nút bấm là một event riêng, có debounce và tạo tiếng “ding-dong” tại chỗ ngay cả khi NVR đang restart. Home Assistant có thể ghép event này với snapshot gần nhất để gửi notification, nhưng chime trong nhà không nên phụ thuộc vào Internet hoặc model AI.

Hai chiều audio là phần mình test trước khi mua nhiều thiết bị. RTSP thường lo video và âm thanh từ camera về nhà, còn chiều nói ngược lại có thể dùng giao thức riêng. go2rtc hỗ trợ nhiều backchannel, nhưng không phải model nào cũng chạy giống nhau. Nếu audio local chưa ổn, một câu trả lời thu sẵn phát qua speaker thường đáng tin hơn là cố làm full-duplex ngay ở bản đầu.

Checklist trước khi dùng hằng ngày

  • Chặn Internet của camera và thử lại toàn bộ luồng.
  • Đi bộ ngang ngoài zone 20 lần; không được nhận alert.
  • Đi vào thảm cửa ở sáng, tối và lúc ngược sáng.
  • Bấm chuông khi Frigate, MQTT hoặc Home Assistant đang restart.
  • Đo thời gian từ lúc vào zone tới khi điện thoại nhận thông báo.
  • Kiểm tra clip pre/post capture có đủ ngữ cảnh.
  • Xác nhận clip hết hạn thực sự bị xóa.
  • Đổi mật khẩu mặc định, dùng user chỉ xem stream và cập nhật firmware có kiểm soát.
  • Test UPS và theo dõi nhiệt độ mini PC khi detect liên tục.

Với mình, một chuông cửa video privacy-first tốt không cần khoe rằng nó chạy model lớn. Nó cần trả lời nhanh khi có người ở đúng trước cửa, lưu đúng đoạn cần xem và tiếp tục hoạt động khi Internet biến mất. Cloud vẫn có thể là lựa chọn để gửi notification hoặc backup có chủ đích, nhưng nó là phần bổ sung — không phải nơi camera buộc phải gửi mọi khung hình.

Tài liệu tham khảo

Chia sẻ

LinkedInFacebookX

Tiếp tục khám phá

Đọc tiếp

Bài viết liên quan

Xem thêm trong Giải pháp IoT

Nastrotek sử dụng cookie để phân tích truy cập và cá nhân hóa quảng cáo, giúp hiểu cách website được sử dụng. Bạn có thể chấp nhận hoặc từ chối các cookie không thiết yếu.