نظرة سريعة
- الحالة
- يعمل اليوم
- الجهاز
- وحدات تحكم، منصات تحكم في الدخول، سكربت على حاسوب أو Raspberry Pi
- ما يستخدمه الأعضاء
- بطاقات، وجوه (معرّف الجهاز)، QR، رمز PIN لمرة واحدة
- المتطلبات
- HTTPS إلى api.chronixhub.com ورمز Bearer
كيف يتصل
- العضو يمرّر أو يكتب أو يعرض وجهه
- وحدة التحكم أو السكربت
- POST /api/v1/access/verify
- يُفتح الباب فقط عند granted: true
يوفّر Chronix Hub نقطة وصول واحدة محايدة تجاه الشركات المصنّعة. يرسل جهازك (أو الصندوق الذي أمامه) معرّف الجهاز وبيانات الاعتماد التي قرأها للتو. يجيب Chronix Hub بقرار وسبب، ولا يفتح الجهاز إلا عند «نعم» صريحة.
المصادقة بمفتاح جهاز من نوع Bearer. كل مفتاح يخص جهازًا واحدًا ولا يستطيع إلا طرح أسئلة التحكم في الدخول، فلا يتيح مفتاح مسرَّب قراءة بيانات الأعضاء.
ما الذي يُعدّ داعمًا لـ HTTPS
الاختبار بسيط: هل يستطيع استدعاء واجهة ويب عند كل محاولة دخول والتصرف بحسب الرد؟
- منصات ووحدات تحكم في الدخول لديها خطوة قرار عبر HTTP أو webhook.
- وسيط أو خدمة مخصصة من المدمج بين القارئ والقفل.
- سكربت صغير على حاسوب أو Raspberry Pi بجوار القارئ، مع مرحّل نحو القفل.
- جهاز وجه يستطيع وسيطه إرسال معرّفه الخاص بالشخص.
- الأجهزة التي تتحدث بروتوكولها الخاص فقط لا تدعم HTTPS بذاتها. راجع صفحات ZKTeco وHikvision وSuprema وKisi.
ما الذي يمكن للأعضاء استخدامه
أي شيء يستطيع جهازك قراءته، ما دام يرسل أحد أنواع بيانات الاعتماد هذه.
بطاقة
رقم البطاقة كما يقرؤه القارئ. أضف الرقم نفسه أولًا في تبويب «الدخول» لدى العضو.
الوجه
معرّف الجهاز الخاص بالشخص، مربوطًا بالعضو. لا تُخزَّن صور أو بيانات بيومترية في Chronix Hub.
بطاقة QR
قارئ يمسح رموز QR يرسل النص الكامل الممسوح بنوع qr. يعرضه العضو من «عضوياتي». يتجدد كل 30 ثانية ويعمل مرة واحدة.
رمز PIN لمرة واحدة
لوحة مفاتيح ترسل الرمز المكوّن من 6 أرقام الذي كتبه العضو بنوع pin. يأتي الرمز من «إظهار PIN» في البوابة، ويدوم 5 دقائق ويعمل مرة واحدة.
اربطه خطوة بخطوة
ستحتاج إلى صلاحية الإدارة وإلى الشخص الذي يضبط الجهاز.
أنشئ الباب والجدول
تبويب «الأبواب»: سمِّ الباب واختر جدولًا وحدّد منع التمرير المزدوج. راجع النظرة العامة للتفاصيل.
أضف الجهاز
تبويب «الأجهزة»، «إضافة جهاز». سمِّه، واختر الشركة المصنّعة «أخرى» (أي جهاز يستطيع استدعاء واجهة ويب) والباب. أضف عنوان IP العام للنادي إلى قائمة السماح.
انسخ المفتاح ومعرّف الجهاز
يظهر المفتاح مرة واحدة. احفظه في مخزن أسرار الجهاز لا في مستند مشترك. ويدخل معرّف الجهاز (أو اسمه بالضبط) في كل طلب.
اجعل الجهاز يرسل POST عند كل لمسة
أرسل الطلب أدناه إلى نقطة التحقق مع المفتاح كرمز Bearer. افتح الباب فقط عندما يكون الرد 200 مع granted: true.
أرسل نبضة اتصال
اختياريًا: أرسل إلى نقطة نبضة الاتصال نحو مرة كل دقيقة ليعرض تبويب «الأجهزة» حالة «متصل» (سُمع منه خلال آخر دقيقتين).
جرّب ببطاقة حقيقية
مرّر بطاقة عضو وراقب السجل المباشر. يجب أن ترى المحاولة وسببها خلال ثوانٍ.
الواجهة في شاشة واحدة
هذا هو العقد الكامل الذي يحتاجه الجهاز. deviceId هو معرّف الجهاز أو اسمه بالضبط. والمرجع الكامل في وثائق الواجهة.
curl -X POST https://api.chronixhub.com/api/v1/access/verify -H "Authorization: Bearer $CHRONIX_DEVICE_KEY" -H "Content-Type: application/json" -d '{
"deviceId": "Front turnstile",
"credential": { "type": "card", "value": "0012345678" }
}'HTTP 200
{
"granted": true,
"reason": "active_membership",
"memberId": "clx...",
"memberName": "Sara Haddad",
"expiresAt": "2026-12-31T23:59:59.000Z",
"displayMessage": "Welcome, Sara"
}HTTP 200
{
"granted": false,
"reason": "membership_frozen",
"displayMessage": "Membership is frozen"
}أنواع بيانات الاعتماد
أرسل بيانات اعتماد واحدة بالضبط في كل طلب.
| نوع بيانات الاعتماد | القيمة المطلوب إرسالها |
|---|---|
card | رقم البطاقة كما يقرؤه القارئ. |
pin | الرمز المكوّن من 6 أرقام لمرة واحدة الذي كتبه العضو. |
face | معرّف الجهاز الخاص بالشخص. |
qr | النص الكامل الذي مسحه القارئ من رمز QR الخاص بالعضو. |
curl -X POST https://api.chronixhub.com/api/v1/access/heartbeat -H "Authorization: Bearer $CHRONIX_DEVICE_KEY" -H "Content-Type: application/json" -d '{ "deviceId": "Front turnstile", "firmwareVersion": "1.4.2" }'
HTTP 200
{ "ok": true, "serverTime": "2026-10-21T08:30:00.000Z" }// Open the door ONLY on an explicit yes. Everything else is "no".
const res = await fetch("https://api.chronixhub.com/api/v1/access/verify", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.CHRONIX_DEVICE_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ deviceId, credential: { type, value } }),
});
const open = res.status === 200 && (await res.json()).granted === true;
if (open) unlockDoor();قواعد يجب أن يلتزم بها تكاملك
- فقط HTTP 200 مع granted: true يفتح الباب. عامل كل حالة أخرى وكل انتهاء مهلة على أنه «لا».
- كل قرار، بما فيه الرفض، يعود بـ 200. أي حالة غير 200 تعني مشكلة في الطلب أو المفتاح: 400 أو 401 أو 403 أو 404 أو 429 أو 5xx.
- لا تضع المفتاح أبدًا في سلسلة استعلام أو عنوان URL. استخدم ترويسة Authorization.
- اعرض displayMessage على شاشة الجهاز إن وُجدت. هي قصيرة وآمنة للعرض.
- رمز PIN المرفوض لا يتضمن اسم عضو أبدًا، فلا تتوقعه.
- التزم بالحالة 429 بالانتظار قبل إعادة المحاولة. الحد الافتراضي 60 محاولة في الدقيقة لكل جهاز.
- الفتح عند الانقطاع إعداد لحالة عجز الجهاز عن الوصول إلى Chronix Hub إطلاقًا. خطأ الخادم ليس إذنًا بالفتح أبدًا.
استكشاف الأخطاء وإصلاحها
| ما تراه | السبب المرجّح | الحل |
|---|---|---|
| 401 من استدعاء التحقق | المفتاح مفقود أو خاطئ أو أُعيد توليده. | انسخ المفتاح الحالي مجددًا، أو أعد توليد المفتاح وحدّث الجهاز. |
| 403 من استدعاء التحقق | عنوان IP خارج قائمة السماح، أو نوع مفتاح خاطئ، أو التحكم في الدخول غير مشمول في خطة النادي. | طابق قائمة السماح مع عنوان IP العام للنادي وتأكد من الخطة. |
| 404 من استدعاء التحقق | معرّف الجهاز أو الباب لا يطابق هذا المفتاح. | استخدم معرّف الجهاز أو اسمه بالضبط، وسمِّ بابه هو فقط. |
| 400 validation_failed | الجسم مشوّه، أو المفتاح في سلسلة الاستعلام. | أرسل JSON يحتوي deviceId وcredential، والمفتاح في الترويسة فقط. |
| 429 في أوقات الذروة | بلغ الجهاز حدّه في الدقيقة. | ارفع الحد للجهاز في الإدارة (حتى 600). |
| دائمًا unknown_credential | البطاقة غير مسجّلة أو أُلغيت أو أن صيغة الرقم مختلفة. | أضف بيانات الاعتماد في «الدخول» بالرقم تمامًا كما يرسله القارئ. |
| الجهاز يظهر غير متصل | لا لمسة ولا نبضة اتصال خلال دقيقتين. | تحقق من الاتصال ومهمة نبضة الاتصال. |
ما الذي تسأله للمُركِّب
أرسل هذه القائمة قبل أن يقدّم عرض السعر.
- هل تستطيع وحدة التحكم أو الوسيط إرسال HTTPS POST برمز Bearer عند كل محاولة دخول والفتح بحسب الرد؟
- هل يمكنه إرسال رقم بطاقة ورمز مكتوب ومعرّف جهاز وجه ورمز QR ممسوح كقيمة لبيانات الاعتماد؟
- هل سيعامل كل خطأ وانتهاء مهلة وحالة غير 200 على أنه رفض؟
- هل يستطيع إرسال نبضة اتصال كل دقيقة تقريبًا؟
- أين سيُخزَّن مفتاح الجهاز، ومن يستطيع قراءته؟
- ما عنوان IP العام للنادي لنضيفه إلى قائمة السماح؟
الأسئلة الشائعة
هل يجب أن أكون مطوّرًا؟
يجب أن يضبط أحدهم الجهاز أو يكتب السكربت الصغير. كثير من منصات التحكم في الدخول تفعل ذلك بالإعدادات وحدها. وإن لم تستطع منصتك، يمكن لمدمج بناؤه وفق العقد أعلاه.
هل يوجد تكامل رسمي لعلامتي التجارية؟
لا يضم Chronix Hub تكاملات مع الشركات المصنّعة اليوم، وليس شريكًا رسميًا لأي مصنّع أجهزة. أي شيء يستطيع استدعاء الواجهة المفتوحة يعمل.
هل يمكنني التجربة دون باب حقيقي؟
نعم. أنشئ جهازًا وأرسل طلب curl ببطاقة أضفتها وراقب السجل المباشر. الواجهة هي نفسها.
ما سرعة الإجابة؟
تستغرق الإجابة المعتادة بضعة أجزاء من مئة من الثانية في بيئة الإنتاج، إضافة إلى زمن شبكتك إلى الواجهة.
وماذا عن أجهزة الوجه؟
يرسل الجهاز أو وسيطه معرّفه الخاص بالشخص بنوع face. تربطه بعضو من «الدخول»، «إضافة بيانات اعتماد»، «الوجه». يمكن إبلاغ نقطة التسجيلات بالوجوه التي يحتفظ بها الجهاز ولم تربطها، فتظهر في «التسجيلات المعلّقة».
هل يمكن للعضو نفسه استخدام بطاقة وPIN؟
نعم. منع التمرير المزدوج يتم لكل عضو لا لكل بيانات اعتماد، فبطاقة يتبعها PIN عند الباب نفسه خلال النافذة تُرفض.
طرق ربط أخرى
أسماء المنتجات ملك لأصحابها. Chronix Hub ليست شريكًا معتمدًا أو رسميًا لأي مصنّع أجهزة ولا تبيع أجهزة.
هل تريد رؤية التحكم في الدخول على ناديك؟
احجز عرضًا توضيحيًا قصيرًا وسنراجع معك بابك وأجهزتك وخطط العضوية.