Tools cho ổ đĩa đám mây

cloudup

Giám sát một thư mục và upload lên ổ đĩa đám mây các thay đổi trong thư mục đó.

Trong thư mục nguồn này có thể chứa các symlink trong các thư mục con cho đến cấp 2. Điều này giúp gom các thư mục nguồn về một nơi và tổ chức các thư mục ở ổ đĩa đám mây gọn gàng hơn.

Thí dụ thư mục autosync chứa 2 symlink và thư mục con backup chứa 4 symlink

/autosync
├── backup
│   ├── EloQ-backup -> /mnt/EloQ
│   ├── move2new -> /mnt/move2new
│   ├── tool -> /mnt/tool
│   └── wordpress.sql.gz -> /mnt/backup/wordpress.sql.gz
├── lyntuan -> /mnt/backup/lyntuan
└── picture -> /mnt/minidlna/picture

## hình 1 ##
Continue reading

Comments Off on Tools cho ổ đĩa đám mây

Filed under Software

Xác thực kiểu Digest

  • Xác thực kiểu Basic dùng base64 để mã hóa thông tin. Nó không an toàn vì có thể giải mã dễ dàng.
  • Xác thực kiểu Digest dùng băm với mã hóa MD5 và có thêm giá trị nonce để ngăn chặn các cuộc tấn công dò tìm lặp đi lặp lại.

Ngày nay, xác thực digest được dùng phổ biến. Thí dụ khi lấy ảnh snapshot của camera với username/password.

Continue reading

Comments Off on Xác thực kiểu Digest

Filed under Software

Đóng gói ứng dụng Nodejs với npm

Một ứng dụng nodejs thông thường liên kết với rất nhiều module từ nhiều nguồn khác nhau.

Mỗi lần cài đặt một ứng dụng thì ngoài tải về các module của ứng dụng đó còn phải tải về nhiều module phụ thuộc khác. Nếu mỗi ứng dụng cài đặt trong một thư mục khác nhau thì có thể phải tải về các module phụ thuộc trùng lặp nhưng nằm ở các vị trí khác nhau, làm lãng phí không gian đĩa. Có thể tránh điều này bằng cách cài đặt tất cả ứng dụng nodejs vào cùng một thư mục, khi đó chúng chia sẻ các module phụ thuộc ở thư mục con node_modules, tuy cũng có nhiều bất tiện. Ngay cả tìm cách đóng gói ứng dụng trong file exe cũng chỉ che dấu chứ không tránh được việc lãng phí không gian đĩa.

Khi phân phối ứng dụng nodejs, chỉ cần đóng gói các file/module của mình. Các module khác có thể tải về từ các nguồn khác thì không bao gồm trong gói phân phối mà đặt chỉ dẩn để npm tải về.

Continue reading

Comments Off on Đóng gói ứng dụng Nodejs với npm

Filed under Software

PM2 Process Management 

PM2 là ứng dụng dòng lệnh, quản lý các tiến trình chạy thường trực, ngay cả khi khởi động lại.

Cài đặt

npm install pm2@latest -g

Chạy một ứng dụng

$ pm2 start app.js
$ pm2 start bashscript.sh
$ pm2 start python-app.py --option
$ pm2 start binary-file -- --port 1520

# Có thể bao gồm "app_name param" trong chuỗi
$ pm2 start "binary-file --port 1520"
Continue reading

Comments Off on PM2 Process Management 

Filed under Software

Ghi hình camera và RPi

Cách đây hơn 10 năm, tôi mua camera Level One độ phân giải WXGA với giá khoảng 2 triệu đồng, ghi hình lên thẻ nhớ. Sau đó có RPi thì cho ghi về HDD vì camera này hỗ trợ FTP Samba, một thời gian sau đó thì dùng rclone để tạo bản sao trên Google Drive. Cảm thấy rất hài lòng về camera này!

Cho đến nay, những camera Level One này vẫn chạy tốt, có điều chỉ lấy hình được qua FTP, không nhận được hình từ Samba nữa.

Continue reading

Comments Off on Ghi hình camera và RPi

Filed under Software

Ghi hình chuyển động #5: Onvif

Khi phát hiện chuyển động, camera phát ra cặp tín hiệu “bắt đầu” và “kêt thúc”. Chúng ta có thể căn cứ vào tín hiệu này để ghi video.

Tuy nhiên, trong khi một số camera như Imou phát tín hiệu theo kiểu đơn luồng thì camera như HIKvision lại phát kiểu đa luồng: nhiều tín hiệu “bắt đầu” được phát ra đan xen với nhiều tín hiệu “kết thúc” và số tín hiệu “bắt đầu” và “kết thúc” có thể không bằng nhau. Nếu ghi đúng theo cặp tín hiệu thì chúng ta có được các clip rất ngắn, vài giây.

Phương pháp “trì hoãn”
Continue reading

Comments Off on Ghi hình chuyển động #5: Onvif

Filed under Software

Ghi hình chuyển động #4: Onvif

Chúng ta sẽ xây dựng 3 module:

  • fRec: ghi video từ rtsp qua ứng dụng ffmpeg
  • pMotionRecorder: lấy event từ Onvif camera qua phương thức pull
  • sMotionRecorder: lấy event từ Onvif camera qua dữ liệu web

Để đơn giản, các module pMotionRecorder sMotionRecorder được tối ưu cho dòng camera IMOU, tuy không phải model nào cũng tương thích.

Continue reading

Comments Off on Ghi hình chuyển động #4: Onvif

Filed under Software

Ghi hình chuyển động #3: Onvif

Việc phát hiện chuyển động là một tính năng cơ bản của camera, nó làm việc này bằng phần cứng hoặc nhờ vào server của hãng. Nếu chúng ta biết được khi nào có chuyển động thì việc ghi hình không cần phải dò tìm chuyển động, khi đó RPi có thể làm việc với vài chục camera. Có thể nhờ vào ONVIF để biết điều gì xảy ra ở camera. Tuy nhiên, nhiều camera tuyên bố hợp chuẩn ONVIF nhưng lại không đúng hoặc chỉ theo kiểu ONVIF để không phải trả tiền cho ONVIF.

node.js có các thư viện thuận tiện để kết nối với camera ONVIF.

Continue reading

Comments Off on Ghi hình chuyển động #3: Onvif

Filed under Software

Ghi hình chuyển động #2: ffmpeg

FFmpeg là một framework hàng đầu về đa phương tiện (xử lý audio, video). Nó có thể decode (giải mã), encode (mã hóa), transcode (chuyển mã), mux (ghép kênh), demux (phân kênh, tách kênh), stream (ví dụ như livestream trên youtube, facebook,..), filter (lọc) và play (chạy, phát video) rất nhiều thứ mà con người hay máy móc tạo ra.

ffmpeg đã bao gồm trong motion. Tuy nhiên chúng ta có thể chỉ dùng ffmpeg để ghi hình.

# cài đặt
apt install ffmpeg

# Cú pháp
ffmpeg [global_options] {[input_file_options] -i input_url} {[output_file_options] output_url}
Continue reading

Comments Off on Ghi hình chuyển động #2: ffmpeg

Filed under Software

Ghi hình chuyển động #1: motion

  • Với các camera IP hỗ trợ FTP, Samba hay NAS thì việc ghi hình đã trở nên đơn giản hơn rất nhiều.
  • Với các camera IP hỗ trợ ONVIF và đám mây nhưng không cho tùy biến thì hầu như chỉ có thể ghi hình qua đầu ghi của hãng. Tuy nhiên các camera này đều hỗ trợ RTSP nên có thể ghi luồng video này xuống đĩa. Vấn đề đặt ra là làm sao chỉ ghi hình khi phát hiện chuyển động để tiết kiệm đĩa.
Continue reading

Comments Off on Ghi hình chuyển động #1: motion

Filed under Software