Category Archives: Software

Đếm mail được postfix gởi đi

Mail server cài đặt trên RPi thường phải dùng IP động, IP loại này phần lớn nằm trong blacklists khiến cho email gởi đi có thể bị từ chối.

Cách giải quyết thông thường là dùng relay host. Mail server của chúng ta gởi nhờ email qua trung gian các mail server uy tín khác. Các SMTP relay này phần lớn là chỉ miễn phí 200-300 email một ngày, riêng Gmail miễn phí 500 email một ngày với điều kiện không gởi trong một lần.

Với doanh nghiệp nhỏ 15-20 nhân viên, có thể dùng 1-2 tài khoản Gmail để gởi mail là đủ. Vấn đề là làm sao đếm số email được gởi qua một tài khoản đã đủ định mức để chuyển sang dùng tài khoản khác.

Continue reading

Comments Off on Đếm mail được postfix gởi đi

Filed under Software

Onvif: Lỗi kết nối với camera

Mỗi kiểu camera của mỗi hãng đều có các hạn chế về số kết nối đồng thời với camera. Trường hợp camera vẫn hoạt động bình thường nhưng thiết bị bên ngoài thử kết nối lại nhiều lần (thí dụ reboot) thì có thể không kết nối được nữa.

Một thí dụ là script onvif-motion-recorder chạy trên RPi và RPi định kỳ reboot theo lịch thì sau đó script onvif-motion-recorder không thể kết nối với camera.

Một giải pháp là reboot camera trước khi thử kết nối lại

Continue reading

Comments Off on Onvif: Lỗi kết nối với camera

Filed under Software

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.

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