Dùng curl để cấu hình IP camera

  • IP camera có giao diện cấu hình dạng web, tuy nhiên giao diện web này có thể không trình bày đầy đủ các tính năng của camera, dẫn đến một số tính năng không dùng được.
  • Một số IP camera chỉ có một số tính năng cơ bản được nhà sản xuất giới thiệu, có thể do sản phẩm giá rẻ, tuy rằng nhiều tính năng ẩn khác vẫn có thể dùng được nhờ vào khả năng có sẳn của chipsetfirmware.
  • Hầu hết IP camera dùng HTTP API như phương tiện giao tiếp với người sử dụng, qua giao thức GET hay POST. Thay vì thiết kế trang web để gởi lệnh HTTP API, curl là công cụ lý tưởng do sử dụng nhanh và đơn giản.

Thí dụ 

1. IP camera LevelOne FCS-0030 có chức năng phát hiện chuyển động (Motion Detection – MD). Khi phát hiện chuyển động nó có thể ghi hình và gọi đến các action được thiết kế sẵn như

SAVESTREAM,SNAPSHOT,EMAIL,HTTP,UDP,MULTICAST,LIGHTLED,SPEAKER

qua các method

FTP,EMAIL,SAMBA,SD

Tuy nhiên giao diện web không cho phép cấu hình các action UDP, MULTICAST, LIGHTLED, SPEAKER

Câu lệnh curl xem các tính năng của IP camera như sau

curl -s -u usr:pwd http://IP_of_camera/cgi-bin/capability.cgi?action=get

2. Có thể thiết kế để FCS-0030 ghi videoclip và gởi về RPi qua FTP, chụp snapshot và gởi về RPi qua Samba. Các tính năng này có thể thiết lập qua giao diện web, tuy nhiên không thể lập lịch làm việc cho các tính năng này, mặc định nó làm việc 24h/ngày. Chúng ta phải nhờ đến curl với action=updateEventSetting thuộc thư viện event.cgi, thí dụ, để bảo FTP và Samba làm việc ngoài giờ hành chánh

md_sched

Giờ làm việc:

1111 1111 1111 1111 1111 1111 => FFFFFF
1111 1110 0000 0000 0000 1111 => FE000F
1111 1110 0000 0000 0000 1111 => FE000F
1111 1110 0000 0000 0000 1111 => FE000F
1111 1110 0000 0000 0000 1111 => FE000F
1111 1110 0000 0000 0000 1111 => FE000F
1111 1110 0000 0111 1111 1111 => FE07FF
curl -s -u usr:pwd -d "action=updateEventSetting&sched.type=1&sched.time=FFFFFF,FE000F,FE000F,FE000F,FE000F,FE000F,FE07FF&name=FTP" http://IP_of_camera

3. Điều chỉnh thời gian ghi hình trước và sau thời điểm phát hiện chuyển động, mặc định là 5 và 5 (giây). Tính năng này không có trong giao diện web.

curl -s -u usr:pwd http://IP-of_camera/cgi-bin/event.cgi?action=getAlarmMediaInfo
preAlarmInterval=5
postAlarmInterval=5
maxBufferSize=1024

Ta sẽ điều chỉnh postAlartInterval thành 30. Điều kỳ lạ là phải dùng tham số timeAfterEvent thay cho postAlarmInterval

curl -s -u usr:pwd -d "action=setAlarmMediaInfo&timeAfterEvent=30" http://IP_of_Camera/cgi-bin/event.cgi
version=1.0.0
requestURI=cgi-bin/event.cgi
statusCode=0
statusString=successfully.

Kiểm tra lại kết quả

curl -s -u usr:pwd http://IP-of_camera/cgi-bin/event.cgi?action=getAlarmMediaInfo
preAlarmInterval=5
postAlarmInterval=30
maxBufferSize=1024

Chú thích

  • Các lệnh HTTP API tương đối giống nhau về cú pháp cho dù thuộc về nhà sản xuất camera nào. Vì nhiều nhà sản suất không công bố tài liệu về HTTP API của mình, chúng ta có thể tham khảo tài liệu của Brickcom
  • Trước khi mua IP camera, chạy câu lệnh xem tính năng của camera nếu có thể. Biết đâu có khi mua được camera dòng thấp nhưng hỗ trợ đầy đủ các tính năng cao cấp ở dạng ẩn 🙂

Leave a Comment

Filed under Software

Leave a Reply