التثبيت¶
هناك ثلاث طرق لتثبيت klipper-auto-eject. كلها تنتهي بالنتيجة نفسها: ملفان في مجلد إعدادات Klipper:
| الملف | وظيفته | يتحدّث تلقائيًا؟ |
|---|---|---|
auto_eject.cfg |
الماكروهات | نعم (هو رابط إلى المستودع) |
auto_eject_settings.cfg |
إعداداتك | أبدًا. هذا ملفك أنت، عدّله كما تريد |
الماكروهات لا تحتاج إلا Klipper. أما الإشعارات ومزرعة الطابعات فتعمل كخدمة صغيرة اسمها klipper-auto-eject،
وتحتاج Python 3.9 أو أحدث (موجود في Debian 11 Bullseye وما بعده).
الطريقة الأولى: سكربت التثبيت (الموصى بها)¶
افتح طرفية على الطابعة عبر SSH. على Windows استخدم PowerShell واكتب ssh pi@<printer address>، وضع اسم المستخدم في طابعتك بدل pi. ثم الصق هذا السطر:
cd ~ && if [ -d klipper-auto-eject ]; then git -C klipper-auto-eject pull --ff-only; else git clone https://github.com/ahmedbebars/klipper-auto-eject.git; fi && ./klipper-auto-eject/install.sh
يعرض السكربت أولًا ما يمكنه تجهيزه في شاشة واحدة. ضع علامة على ما تريد بمفتاح Space ثم اضغط Enter، ومفتاح Esc يوقفه دون أن يغيّر شيئًا. وإذا وجد Spoolman على شبكتك تجده معلَّمًا ومعه عنوانه:
┌──────────────────── klipper-auto-eject ────────────────────┐
│ Space ticks or clears a line, Enter goes on, Esc stops. │
│ │
│ [*] blade The blade pushes the prints off this printer │
│ [*] web The auto-eject page in Mainsail │
│ [ ] remote Your phone, from anywhere (Tailscale) │
│ [ ] push Notifications on the phone │
│ [ ] farm All your printers on one page │
│ [ ] notify Messages on Telegram, Discord or ntfy │
│ [*] spoolman Spoolman at http://192.168.1.50:7912 │
│ │
│ <Ok> <Cancel> │
└─────────────────────────────────────────────────────────────┘
| السطر | معناه |
|---|---|
blade |
ستدفع هذه الطابعة طبعاتها خارج السرير بالشفرة. أزل العلامة إذا كنت تريد صفحة الويب أو مزرعة الطابعات فقط |
web |
صفحة الإزالة التلقائية في Mainsail: خريطة السرير وقائمة الطباعة والإعدادات |
remote |
مشاهدة الطابعة والتحكم فيها من هاتفك من أي مكان، بحساب Tailscale مجاني |
push |
إشعارات على الهاتف عندما تحتاجك الطابعة. تحتاج السطر السابق |
farm |
كل طابعاتك في صفحة واحدة (مزرعة الطابعات). تحتاج سطر web |
notify |
رسائل عبر Telegram أو Discord أو تطبيق ntfy |
spoolman |
ربط Spoolman، لتتوقف القائمة قبل أن تنفد البكرة |
إذا اخترت الإشعارات دون الوصول من الهاتف، أو المزرعة دون صفحة الويب، تعود الشاشة وتشرح السبب.
وإذا لم يكن whiptail موجودًا (أو مع --plain) يسأل الأسئلة نفسها واحدًا بعد الآخر. اضغط
Enter لتقبل الإجابة المقترحة (وهي الحرف الكبير بين القوسين):
[auto-eject] Will this printer push its prints off with the blade? (No: only the web page or the farm) [Y/n]
[auto-eject] Add the auto-eject page to Mainsail (bed map, print queue, settings)? [Y/n]
[auto-eject] Watch and control the printer from your phone, from anywhere? (a free Tailscale account) [y/N]
[auto-eject] Notifications on your phone when the printer needs you? [Y/n]
[auto-eject] More than one Klipper printer? See them all on one page (printer farm)? [y/N]
تظهر الأسئلة بالإنجليزية كما في الأعلى. هذا معنى كل سؤال:
| السؤال | معناه | الإجابة عند ضغط Enter |
|---|---|---|
Will this printer push its prints off with the blade? |
هل ستدفع هذه الطابعة طبعاتها خارج السرير بالشفرة؟ أجب بـ «لا» إذا كنت تريد صفحة الويب أو مزرعة الطابعات فقط | نعم |
Add the auto-eject page to Mainsail? |
هل تضيف صفحة الإزالة التلقائية إلى Mainsail؟ فيها خريطة السرير وقائمة الطباعة والإعدادات | نعم |
Watch and control the printer from your phone, from anywhere? |
هل تريد مشاهدة الطابعة والتحكم فيها من هاتفك من أي مكان؟ يحتاج ذلك حساب Tailscale مجانيًا | لا |
Notifications on your phone when the printer needs you? |
هل تريد إشعارات على هاتفك عندما تحتاجك الطابعة؟ | نعم |
More than one Klipper printer? See them all on one page? |
هل عندك أكثر من طابعة Klipper؟ هل تريد رؤيتها كلها في صفحة واحدة (مزرعة الطابعات)؟ | لا |
[Y/n] تعني أن الإجابة المقترحة هي «نعم»، و[y/N] تعني أنها «لا». اكتب y لنعم أو n للا، ثم اضغط Enter.
بعد ذلك يقوم السكربت بما يلي:
- يضع رابطًا لـ
auto_eject.cfgفي مجلد الإعدادات، وينشئauto_eject_settings.cfg، وهو ملف إعداداتك الخاص الذي لا تغيّره التحديثات أبدًا. - يضيف أسطر
[include]إلىprinter.cfgبجوار أسطر[include]الخاصة بك في أعلى الملف (أو فوق كتلةSAVE_CONFIGإن لم يوجد منها شيء هناك)، ويذكر رقم السطر. - يضيف أقسام Klipper التي تحتاجها الإزالة التلقائية إذا لم تكن في إعداداتك (انظر بالأسفل).
- يضيف قسم
[update_manager klipper-auto-eject]إلىmoonraker.conf، فتصلك التحديثات من لوحة التحديثات في Mainsail أو Fluidd. - يجهّز ما أجبت عنه بنعم: صفحة الويب، والوصول من الهاتف، والإشعارات، ومزرعة الطابعات.
- يعرض عليك إعادة تشغيل Klipper، ولا يفعلها إلا إذا كانت الطابعة لا تطبع.
- يخبرك بالخطوة التالية: ركّب الشفرة وشغّل الإعداد الموجّه.
قبل أن يغيّر السكربت أي ملف، يحفظ منه نسخة احتياطية (printer.cfg.bak-auto-eject-<date>). لا يعمل
السكربت بصلاحيات root أبدًا، ويطلب كلمة المرور (sudo) فقط من أجل صفحة الويب وخدمة الإشعارات. يمكنك
تشغيله مرة أخرى في أي وقت، وما جُهّز من قبل يبقى كما هو.
ما يحتاجه printer.cfg¶
تستخدم الإزالة التلقائية ثلاثة أقسام من Klipper. أغلب الإعدادات فيها هذه الأقسام بالفعل (ملفات *.cfg
الخاصة بـ Mainsail وFluidd فيها [respond])، والسكربت يضيف الناقص منها:
[exclude_object] # where every part is, from the sliced file
[respond] # messages and dialogs in the console
[save_variables] # remembers the parts across restarts
filename: ~/printer_data/config/variables.cfg
معنى كل قسم:
[exclude_object]: يعرف مكان كل قطعة على السرير من الملف الذي جهّزه برنامج التقطيع.[respond]: يعرض الرسائل والنوافذ في الكونسول.[save_variables]: يتذكر القطع الموجودة على السرير حتى بعد إعادة التشغيل.
إذا كان في printer.cfg قسم [save_variables] من قبل (يضيفه DEMON وغيره من مجموعات الماكرو)، فاتركه كما هو:
الإزالة التلقائية تستخدم الملف الذي يحدده أيًّا كان، والقسم الثاني ينقل قيم المجموعة الأخرى إلى ملف آخر.
خيارات السكربت¶
| الخيار | القيمة الافتراضية | استخدمه عندما |
|---|---|---|
-c, --config-dir DIR |
~/printer_data/config |
عندك أكثر من نسخة Klipper على الجهاز نفسه، أو مجلد إعدادات قديم بالشكل ~/klipper_config |
-r, --repo-dir DIR |
~/klipper-auto-eject |
تريد وضع المستودع في مكان آخر |
-b, --branch NAME |
main |
تريد تجربة فرع تطوير |
--no-include |
تدير أسطر [include] بنفسك |
|
--no-update-manager |
لا تستخدم Moonraker، أو تدير moonraker.conf بنفسك |
|
-w, --web |
تريد أيضًا تجهيز صفحة الويب على http://<printer>/auto-eject/ ورابطها في القائمة الجانبية في Mainsail. يحتاج sudo مرة واحدة من أجل nginx (web-page.md) |
|
-R, --remote |
تريد أيضًا تجهيز الوصول عن بعد عبر Tailscale، لتفتح الطابعة من هاتفك من أي مكان. يسأل قبل كل خطوة (remote-access.md) | |
-P, --push |
تريد أيضًا تثبيت خدمة klipper-auto-eject: فتصل الإشعارات إلى تطبيق الإزالة التلقائية حتى وهو مغلق، وتعمل مزرعة الطابعات. الإشعارات تحتاج HTTPS (--remote)، وsudo مرة واحدة (notifications.md) |
|
-F, --farm |
تريد كل طابعاتك في صفحة واحدة: يجهّز صفحة الويب وخدمة klipper-auto-eject التي تجد الطابعات الأخرى على الشبكة. الطابعات الأخرى لا تحتاج أي تثبيت (farm.md) |
|
-N, --notify |
تريد أيضًا إرسال إشعارات إلى هاتفك عبر تطبيق ntfy أو Telegram أو Discord: قطعة ما زالت على السرير، أو طباعة انتهت. يسأل قبل كل خطوة (notifications.md) | |
--plain |
تريد الأسئلة واحدًا بعد الآخر، دون شاشة العلامات | |
-S, --spoolman |
تريد ربط Moonraker بـ Spoolman عندك، لتتوقف القائمة قبل مهمة لا تكفيها البكرة. يسأل عن عنوان Spoolman ويتأكد أنه يرد عليه (البكرة وSpoolman) | |
--demon |
مع DEMON Klipper Essentials، على طابعة عليها الإزالة التلقائية من قبل: يعمل فحص السرير داخل أول خطوة في DEMON بدل G-code البداية في برنامج التقطيع، ولا يتغير شيء غير ذلك. والتثبيت يفعل ذلك أيضًا (integration.md) | |
-u, --uninstall |
تريد إزالة ما أضافه السكربت: الرابط، وأسطر include، وقسم مدير التحديثات، وصفحة الويب، ونطاق Tailscale الذي أضافه إلى trusted_clients |
مثال لطابعة ثانية تعمل كنسخة Klipper أخرى على الجهاز نفسه:
الطريقة الثانية: التثبيت اليدوي¶
- انسخ
config/auto_eject.cfgوconfig/auto_eject_settings.cfgإلى مجلد الإعدادات (مثلًا ارفعهما من Mainsail أو Fluidd). - أضف إلى
printer.cfg: - تأكد أن في
printer.cfgقسم[exclude_object]. - نفّذ
FIRMWARE_RESTART.
في هذه الطريقة ستحتاج إلى استبدال auto_eject.cfg بيدك عند كل تحديث.
الطريقة الثالثة: مدير التحديثات في Moonraker فقط¶
إذا نسخت المستودع بنفسك ووضعت رابطًا لـ auto_eject.cfg، أضف هذا إلى moonraker.conf لتصلك
التحديثات من لوحة التحديثات في Mainsail أو Fluidd:
[update_manager klipper-auto-eject]
type: git_repo
path: ~/klipper-auto-eject
origin: https://github.com/ahmedbebars/klipper-auto-eject.git
primary_branch: main
is_system_service: False
بعدها أعد تشغيل Moonraker.
بعد التثبيت¶
- تأكد أن في
printer.cfgهذه الأقسام، وأضف الناقص منها: - فعّل Label objects في برنامج التقطيع (OrcaSlicer: Process → Others → Label objects؛ PrusaSlicer: Print Settings → Output options → Label objects: Firmware-specific).
- اضبط الشفرة: انظر hardware.md (بالإنجليزية) وconfiguration.md (بالإنجليزية).
التحديث¶
- من Moonraker: اضغط Update بجانب
klipper-auto-ejectفي لوحة التحديثات. - من الطرفية:
git -C ~/klipper-auto-eject pull
بعدها نفّذ FIRMWARE_RESTART. التحديثات لا تلمس ملف auto_eject_settings.cfg أبدًا. الإعدادات الجديدة
تعمل فورًا بقيمها الافتراضية، والملف CHANGELOG.md (بالإنجليزية) يذكرها إذا أردت
تغييرها.
إلغاء التثبيت¶
قبلها وبعدها خطوة بخطوة: إزالة المشروع.
~/klipper-auto-eject/install.sh --uninstall
rm -rf ~/klipper-auto-eject # optional
rm ~/printer_data/config/auto_eject_settings.cfg # optional
السطر الأول يلغي التثبيت. السطران الأخيران اختياريان: الأول يحذف المستودع، والثاني يحذف ملف إعداداتك.