Thiết bị ngoại vi — mở barie, cửa cuốn, còi, đèn từ camera TingPush
Camera TingPush điều khiển được thiết bị bên ngoài: barie, cửa cuốn, khóa cửa từ, còi, đèn, màn LED…
- Camera tự điều khiển khi đọc được biển hoặc có sự kiện AI — VD xe trong danh sách cho vào đến cổng là barie tự mở. Luật chạy ngay trên camera nên mất mạng vẫn mở được.
- Điều khiển từ xa qua máy chủ TingPush: nút Mở barie trên app, web xem camera, phần mềm Windows; hoặc phần mềm bãi xe của bạn gọi API.
Mỗi lần đóng / mở, camera ghi lại ai mở, vì sao (sự kiện loại io) — xem trong mục Sự kiện AI trên app / web.
1. Nối thiết bị vào camera
Mỗi camera có tối đa 8 thiết bị, mỗi thiết bị chọn một trong 3 kiểu nối:
| Kiểu nối | Dùng khi | Cần gì |
|---|---|---|
| Rơ-le trên bo (GPIO) | Barie / cửa cuốn có cổng nút bấm mở (tiếp điểm khô), đặt gần camera | Mô-đun rơ-le 3,3 V có opto cách ly, dây tín hiệu từ chân GPIO của bo camera |
| RS485 / cổng nối tiếp | Bộ điều khiển barie, bảng rơ-le, màn LED nhận lệnh qua RS485 / RS232 | Cổng UART của bo (/dev/ttyS…) + mạch chuyển RS485 (loại tự đảo chiều), hoặc USB-RS485 |
| Rơ-le mạng (URL) | Thiết bị ở xa camera, hoặc đã có rơ-le WiFi / LAN | Rơ-le mạng có API HTTP: Shelly, Sonoff (Tasmota), USR-IO, ESP32 tự làm, bộ điều khiển barie có API… cùng mạng nội bộ với camera |
Rơ-le trên bo (GPIO)
Bo camera Mô-đun rơ-le (opto) Bộ điều khiển barie
───────── ─────────────────── ───────────────────
3,3 V ───────────────── VCC
GND ───────────────── GND
GPIO ───────────────── IN COM ──────────────── OPEN / nút mở (chung)
NO ──────────────── OPEN / nút mở
- Không bao giờ nối thẳng chân GPIO vào mô-tơ, cuộn hút hay nguồn 12/24 V — chân GPIO chỉ chịu 3,3 V, vài mA.
- Số GPIO là số Linux: với chip Rockchip, chân
GPIOx_yz=x × 32 + (y: A=0, B=1, C=2, D=3) × 8 + z. VDGPIO3_A1= 3×32 + 0×8 + 1 = 97. Chân trống trên bo camera xem trong sơ đồ của hãng sản xuất bo. - Mức bật: mô-đun rơ-le kích mức cao chọn Mức cao; loại kích mức thấp chọn Mức thấp.
- Barie thường chỉ cần xung (giống bấm nút mở trên điều khiển): đặt Thời gian mở 300–1000 ms.
RS485 / cổng nối tiếp
- Chọn cổng (VD
/dev/ttyS1), tốc độ (thường 9600), nhập chuỗi lệnh mở và (nếu có) chuỗi lệnh tắt dạng hex, VD bảng rơ-le LCUS phổ biến: mở kênh 1A0 01 01 A2, tắtA0 01 00 A1. - Chuỗi lệnh do hãng thiết bị quy định — xem tài liệu của bộ điều khiển barie / bảng rơ-le. Bảng rơ-le Modbus RTU: nhập nguyên khung lệnh (kể cả CRC).
- Cổng 8N1, không bắt tay. Dùng mạch RS485 tự đảo chiều (auto-direction).
Rơ-le mạng (gọi URL)
Camera gọi URL trong mạng nội bộ của nó (không đi qua máy chủ). Ví dụ:
| Thiết bị | URL mở / bật | URL tắt |
|---|---|---|
| Shelly Gen1 | http://192.168.1.50/relay/0?turn=on |
http://192.168.1.50/relay/0?turn=off |
| Shelly Gen2+ | http://192.168.1.50/rpc/Switch.Set?id=0&on=true |
…&on=false |
| Tasmota | http://192.168.1.51/cm?cmnd=Power%20On |
…Power%20Off |
| Shelly có hẹn giờ tự tắt | http://192.168.1.50/relay/0?turn=on&timer=1 |
(bỏ trống) |
- Phương thức GET / POST / PUT; POST / PUT gửi kèm Nội dung (VD JSON).
- Header xác thực (VD
Authorization: Basic dXNlcjpwYXNz) được lưu trên camera và không bao giờ trả lại qua app / API (chỉ hiện "Đã đặt"). - Camera coi mã HTTP 2xx là thành công; mã khác hoặc không kết nối được thì ghi lỗi (hiện cạnh tên thiết bị).
Mở (xung) và Bật / Tắt
- Thời gian mở > 0 (barie, khóa cửa): lệnh Mở = bật rồi tự tắt sau ngần ấy mili-giây.
- Thời gian mở = 0 (đèn, còi): Bật / Tắt giữ nguyên trạng thái tới lệnh sau.
2. Cài đặt
Chủ camera cài ở một trong các nơi (cùng một cấu hình, lưu trên camera tại /userdata/lpr/io.conf):
- App TingPush Camera → Cài đặt camera → Thiết bị ngoại vi
- Web https://webrtc.tingpush.com → Camera của tôi → nút Thiết bị
- Phần mềm Windows → Cài đặt camera → tab Ngoại vi
- Trang cấu hình trên camera (
http://<IP camera>/) → tab Ngoại vi (dùng khi chưa có Internet)
Sau khi thêm thiết bị, bấm Mở thử để kiểm tra dây nối trước khi tạo luật.
3. Luật tự động
Mỗi camera tối đa 16 luật: khi <sự kiện> thì <thiết bị> <mở / bật / tắt>.
| Sự kiện | Khi nào |
|---|---|
Biển trong danh sách cho vào (plate_allow) |
Camera xác nhận một biển có trong danh sách xe và còn hạn |
Biển không trong danh sách (plate_deny) |
Camera có danh sách nhưng biển không có (VD bật đèn vàng / còi báo bảo vệ) |
Đọc được biển bất kỳ (plate_any) |
Mọi biển được xác nhận (bãi xe mở tự do, chỉ ghi lại) |
Xâm nhập vùng cấm (intrusion) |
Có người / xe vào vùng cấm (tính năng AI) |
Quá đông (occupancy) |
Số người / xe bên trong vượt ngưỡng |
Người quen / người lạ (face_known / face_unknown) |
Nhận diện khuôn mặt |
Chấm công thành công (attend_ok) |
Chấm công khuôn mặt — mở khóa cửa / cổng xoay cho nhân viên (Chấm công bằng khuôn mặt — camera TingPush làm máy chấm công) |
AI tùy chỉnh (custom:<id>) |
Model AI tùy chỉnh phát hiện (cài trên trang cấu hình camera) |
- Giờ chạy: bỏ trống = cả ngày; VD
06:00-22:00hoặc nhiều khoảng06:00-11:30,13:00-22:00; qua nửa đêm được (20:00-02:00). - Không lặp lại (giây): luật đã chạy thì chờ ngần ấy giây mới chạy lại (VD còi báo 30 giây).
- Một sự kiện có thể kích nhiều luật (VD vừa mở barie vừa bật đèn).
Ví dụ cổng chung cư: Biển trong danh sách → Barie vào → Mở; Biển không trong danh sách → Đèn vàng → Mở (xung 5000 ms), bảo vệ thấy đèn thì bấm Mở barie trên app sau khi kiểm tra.
4. Danh sách xe cho vào
Danh sách lưu trên máy chủ TingPush, mỗi tài khoản tối đa 50 danh sách × 20.000 xe:
- App → Cài đặt camera → Danh sách xe cho vào; web → Danh sách xe; phần mềm Windows → Danh sách xe.
- Mỗi danh sách gán cho một hoặc nhiều camera (chỉ camera mình là chủ). Một camera dùng gộp mọi danh sách được gán.
- Mỗi xe: biển số, tên chủ xe / ghi chú, hiệu lực từ ngày – đến hết ngày (bỏ trống = không thời hạn). Hết hạn thì camera tự từ chối, không cần xóa.
- Biển kết thúc bằng
*là mẫu:51F*= mọi biển bắt đầu bằng 51F (xe công ty, xe công vụ…). - Nhập nhiều xe từ Excel / CSV: mỗi dòng
biển số, tên, từ ngày, đến ngày, ghi chú(ngàydd/MM/yyyy, dấu phẩy, chấm phẩy hoặc tab; dòng tiêu đề tự bỏ qua). Chọn Thay toàn bộ để đồng bộ nguyên danh sách từ phần mềm khác.
Camera giữ bản sao: khi danh sách đổi (sau ~2 giây), khi camera kết nối lại, và rà lại mỗi 10 phút, máy chủ gửi
lệnh để camera tải bản mới (có kiểm SHA-256). Camera lưu ở /userdata/lpr/allow.db và tra cứu ngay trên camera, nên
mất Internet barie vẫn mở cho xe trong danh sách. Trạng thái "Camera đang giữ N xe — bản mới nhất" hiện ở trang
Thiết bị ngoại vi và trang Danh sách xe; có nút Gửi lại xuống camera và Thử 1 biển số.
Biển số gửi đi (về TingPush hoặc API riêng) có thêm "allowed": true|false và
"allow_name" khi camera có danh sách.
5. Mở barie từ xa — quyền điều khiển
| Ai | Được mở barie / bật tắt thiết bị |
|---|---|
| Chủ camera | Luôn được |
| Người được chia sẻ "Chỉ xem" | Chỉ khi chủ tích Được mở barie (lúc chia sẻ, hoặc bật / tắt sau trong danh sách người được xem) |
| Khóa API | Chỉ khóa tạo với tùy chọn Điều khiển thiết bị & sửa danh sách xe |
Nút mở hiện trên: màn xem camera của app (nút to dưới video, và nổi trên video khi xem toàn màn hình), lưới camera trên web (góc dưới trái mỗi ô), phần mềm Windows (chuột phải ô camera → Mở barie / thiết bị, và thanh công cụ cửa sổ xem riêng). Lệnh đi: app → máy chủ → kết nối camera tự mở ra máy chủ, thường dưới 1 giây; camera phải đang trực tuyến.
6. API cho phần mềm bãi xe
Dùng khóa API như Hướng dẫn API công khai TingPush — lấy dữ liệu biển số đã lưu (X-Api-Key: tp_…, gói có quyền API).
Các lệnh thay đổi (mở barie, sửa danh sách) cần khóa có quyền Điều khiển thiết bị & sửa danh sách xe — khóa chỉ
đọc nhận 403.
`GET /api/v1/cameras/
{ "data": [ { "index": 0, "name": "Barie cổng vào", "type": "gpio", "pulse_ms": 500,
"state": { "on": false, "last": 1792170903, "last_by": "API: Phần mềm bãi xe", "error": "" } } ] }
`POST /api/v1/cameras/
curl -X POST -H "X-Api-Key: tp_xxx" -H "Content-Type: application/json" \
-d '{"action":"pulse"}' https://apiwebrtc.tingpush.com/api/v1/cameras/LPR-9MHK902C8J5Z/outputs/0/trigger
action: pulse (mở — mặc định), on, off. Trả {"ok":true,"message":"Mở Barie cổng vào — API: Phần mềm bãi xe"}.
Lỗi: 403 (khóa chỉ đọc / không có quyền điều khiển camera), 404 (không có camera), 503 (camera mất kết nối hoặc
thiết bị báo lỗi — message ghi lý do).
Danh sách xe
| Lệnh | |
|---|---|
GET /api/v1/platelists |
các danh sách: id, name, count, cameras (id, name, synced) |
GET /api/v1/platelists/{id}/entries?q=&offset=&limit= |
xe trong danh sách (tối đa 1000 / lần) |
POST /api/v1/platelists/{id}/entries |
thêm / cập nhật 1 xe (theo biển) |
DELETE /api/v1/platelists/{id}/entries/{biển} |
xóa 1 xe (biển viết kiểu nào cũng được: 51G-123.45, 51G12345) |
POST /api/v1/platelists/{id}/import |
gộp / thay cả danh sách từ CSV |
# xe tháng hết hạn cuối ngày 31/10/2026 (valid_to là mốc kết thúc, không tính)
curl -X POST -H "X-Api-Key: tp_xxx" -H "Content-Type: application/json" \
-d '{"plate":"51G-123.45","name":"Nguyễn Văn A","valid_to":"2026-11-01T00:00:00+07:00"}' \
https://apiwebrtc.tingpush.com/api/v1/platelists/3/entries
# đồng bộ nguyên danh sách từ phần mềm quản lý vé tháng (mỗi đêm)
curl -X POST -H "X-Api-Key: tp_xxx" -H "Content-Type: application/json" \
-d '{"text":"51G12345,Nguyễn Văn A,01/10/2026,31/10/2026\n30A99999,Xe giám đốc","replace":true}' \
https://apiwebrtc.tingpush.com/api/v1/platelists/3/import
Một xe: {"id","plate","plate_display","name","note","valid_from","valid_to","active"} — active = đang trong hiệu lực.
Import trả {"added","updated","removed","errors":[…]} (tối đa 20 lỗi đầu, các dòng lỗi bị bỏ qua).
Lịch sử đóng / mở
GET /api/v1/events?type=io — mỗi lần đóng / mở (tự động hoặc bằng tay) một bản ghi:
{ "type": "io", "summary": "Mở Barie cổng vào — biển 51G-123.45 trong danh sách: Nguyễn Văn A",
"data": { "output": 0, "output_name": "Barie cổng vào", "action": "pulse", "trigger": "plate_allow",
"by": "biển 51G-123.45 trong danh sách: Nguyễn Văn A", "plate": "51G12345", "ok": true } }
trigger = sự kiện của luật, hoặc manual khi bấm tay / gọi API (by = tên người kèm (app / web), hoặc
API: <tên khóa>). Lỗi: "ok": false, "error": "…". Sự kiện io không tính vào hạn mức sự kiện AI của gói. Trên
app / web / phần mềm Windows: mục Sự kiện AI, lọc loại Thiết bị ngoại vi.
7. Câu hỏi thường gặp
Mất Internet thì sao? Luật tự động và danh sách xe nằm trên camera → vẫn mở cho xe trong danh sách. Chỉ nút mở từ xa (app / web / API) cần Internet.
Camera mất điện? Barie đóng / mở theo bộ điều khiển của nó; camera khởi động lại không tự bật thiết bị nào (chỉ chạy khi có luật / lệnh). Nên giữ nút mở tay song song cho bảo vệ.
Biển đọc sai một ký tự thì không mở? Đúng — camera chỉ mở cho biển khớp. Tăng Số lần đọc đúng để gửi trong Cài
đặt đọc biển số để giảm đọc sai; hoặc dùng mẫu * cho nhóm xe.
Có mở 2 lần khi xe dừng lâu ở cổng không? Camera không gửi lại cùng một biển trong Chống gửi lặp (mặc định 60 giây); luật cũng có Không lặp lại riêng.