صفحة البداية: كل أدوات البيت في شاشة واحدة

صفحة تتحدث بياناتها كل خمس دقائق، تعرض ما إذا كانت كل أداة في البيت تعمل أم متوقفة، ومتى توقفت، والمهام المجدولة ونتائجها، ومساحة السيرفر وسرعة الإنترنت.

في البيت عندي أدوات كثيرة: السيرفر، وتطبيقات عليه، وT3، وتطبيقات بنيتها. ولكل واحدة رابطها. لذلك بنيت صفحة واحدة تجمعها كلها، لا تفتح إلا على شبكتي الخاصة، وتتحدث بياناتها كل خمس دقائق.

هذه الصفحة تطبيق مستقل، وسأكتب عنها مقالًا كاملًا لاحقًا، وأضع رابطه هنا. هنا فقط المهام التي تغذيها.

الفحص: كل خمس دقائق

يمر سكربت للقراءة فقط على كل أداة في قائمة، ويتحقق من أنها تعمل. وتحفظ الفحوصات حوالي أسبوع، فتستطيع الصفحة أن تعرض لي:

  • هل كل أداة تعمل أم متوقفة، ومنذ متى توقفت.
  • عدد المرات التي كانت تعمل فيها خلال الأسبوع، محسوبًا من الفحوصات، وشريطًا ساعة بساعة لآخر يوم.
  • آخر مرات توقفت فيها.

وفيها لوحة مثل لوحة المغادرة في المطار، تعرض المهام المجدولة: متى عملت كل واحدة آخر مرة، وهل نجحت أم لا (من نتيجة المهمة نفسها وملف الحالة الخاص بها)، ومتى موعدها التالي. ومعها ملفات الحالة للمهام الأخرى، مثل النسخ الاحتياطي والحارس وصحة الكمبيوتر، ومساحة الكمبيوتر وذاكرته.

وإذا فشل أحد الأقسام الإضافية، يعرض فشله، وتستمر الفحوصات الأساسية كالمعتاد.

السيرفر: كل نصف ساعة

تطلب مهمة أخرى من السيرفر في البيت تقريرًا للقراءة فقط: المساحة المستخدمة، وأكثر قرص امتلاء، وحالة الـ parity، وسرعة الإنترنت. وتعرضها الصفحة.

ويظهر تنبيه للسيرفر عندما توجد مشكلة فعلية: فشل فحص parity، أو اقتراب قرص من الامتلاء، أو فشل قراءة أو عودتها ناقصة.

كيف تبني واحدة مثلها

ابن لي صفحة بداية لأدوات البيت:
1. ملف tools.json فيه كل أداة: الاسم، والرابط، وكيف أتحقق من أنها تعمل.
2. سكربت للقراءة فقط يفحص كل أداة كل خمس دقائق، ويحفظ النتيجة أسبوعًا في قاعدة بيانات SQLite.
3. صفحة HTML ثابتة تعرض كل أداة: هل تعمل أم متوقفة، ومنذ متى، ونسبة الوقت الذي كانت تعمل فيه خلال الأسبوع.
4. قسم للمهام المجدولة: آخر مرة والمرة التالية من systemctl --user list-timers، وحالة الخدمة من systemctl --user show <job>.service -p Result -p ActiveState، وملف الحالة لكل مهمة إذا كان لديها، وتحقق من allOk وعمر الملف. وما يزال قيد التشغيل أو حالته غير معروفة أو قديم، أظهره بوضوح، ولا تحسبه نجاحًا أبدًا.
5. إذا فشل جزء، يكتب أنه فشل، وتستمر بقية الصفحة.
6. أي رقم لم تستطع قراءته، اكتب أنه لم يقرأ، ولا تكتب صفرًا.
Prompt

واجعلها على شبكتك الخاصة، مثلًا عن طريق Tailscale، وليس على الإنترنت.

ما تعلمته

  • ما لم يقرأ ليس صفرًا. إذا لم تستطع الصفحة قراءة المساحة، تقول “لم يقرأ”، وليس 0%. لأن الصفر يطمئنك على شيء لا تعرفه.
  • الإضافات لا تعطل الأساس. إذا فشل قسم إضافي، يكتب الفشل في مكانه، ويستمر فحص ما إذا كانت الأدوات تعمل أم متوقفة.
  • يجب أن تكون المشكلة فعلية. إذا ظهر كل شيء بالأحمر، فلن ترى الأحمر الذي يهم.

الأدوات

المقال التالي في السلسلة: تطبيق المدرسة.

المصادر

    العودة إلى القائمة