
غلاف CLI بلغة Python لأداة Flipper Zero
Flipper Zero Python CLI Wrapper

يجلب هذا الإصدار الغلاف ليتوافق مع سطر أوامر Flipper Zero الحالي (تم التحقق منه على أجهزة حقيقية، البرنامج الثابت unlshd-089e):
info جديدة: flipper.info.device_info() / power_info() / power_debug_info() (الأوامر الحديثة info device / info power).power info → info power: flipper.power.info() لا يزال يعمل ويقرأ الآن info power داخلياً. تم إضافة flipper.power.otg_on()/otg_off().date: استخدم flipper.date.datetime(); تم إصلاح التحليل لتنسيق الإخراج الحالي.KB و KiB، read() يعيد الآن محتوى الملف الكامل متعدد الأسطر، ويتم تحليل بطاقات exFAT / ذات التسمية الفارغة بشكل صحيح (إصلاح #21).NECext، Kaseikyo، RCA، Pioneer، ... تلقائياً (إصلاح #15). جديد flipper.ir.protocols().debug → sysctl debug، subghz tx/rx اكتسب الوسيط device المطلوب، bt hci_info بدون تغيير.scan، dump، emulate، field، apdu، raw، mfu) مع مساعدات ذاكرة تخزين مفاتيح Mifare Classic لكل UID (import_nfc_keys، write_key_cache).ps (→ top)، music_player، nfc detect.$ pip install pyflipper
unlshd-089e)from pyflipper import PyFlipper
# منفذ تسلسلي محلي
flipper = PyFlipper(com="/dev/ttyACM0")
# أو
# خادم serial2websocket عن بعد
flipper = PyFlipper(ws="ws://192.168.1.5:1337")
# TCP
flipper = PyFlipper(tcp='192.168.89.222:22170')
# معلومات (على البرنامج الثابت الحالي يقرأ `info power` داخلياً)
info = flipper.power.info()
# إيقاف التشغيل
flipper.power.off()
# إعادة التشغيل
flipper.power.reboot()
# إعادة التشغيل في وضع DFU
flipper.power.reboot2dfu()
# تشغيل/إيقاف دبوس OTG 5V على رأس GPIO
flipper.power.otg_on()
flipper.power.otg_off()
# تثبيت تحديث من ملف .fuf
flipper.update.install(fuf_file="/ext/update.fuf")
# نسخ احتياطي لـ Flipper إلى ملف .tar
flipper.update.backup(dest_tar_file="/ext/backup.tar")
# استعادة Flipper من ملف .tar للنسخ الاحتياطي
flipper.update.restore(bak_tar_file="/ext/backup.tar")
# قائمة التطبيقات المثبتة
apps = flipper.loader.list()
# فتح تطبيق
flipper.loader.open(app_name="Clock")
# الحصول على تاريخ Flipper (كائن datetime)
date = flipper.date.datetime()
# الحصول على طابع زمني لـ Flipper
timestamp = flipper.date.timestamp()
# الحصول على قاموس معلومات الجهاز (البرنامج الثابت الحالي `info device`، مفاتيح مفصولة بنقاط)
device_info = flipper.info.device_info()
# الحصول على قاموس معلومات الطاقة (البرنامج الثابت الحالي `info power`)
power_info = flipper.info.power_info()
# معلومات تصحيح متقدمة للطاقة/المقياس
power_debug = flipper.info.power_debug_info()
# أمر `device_info` القديم (مفاتيح مفصولة بشرطة سفلية، لا يزال مدعوماً)
legacy_info = flipper.device_info.info()
# الحصول على قاموس معلومات الكومة
heap = flipper.free.info()
# الحصول على سلسلة free_blocks
free_blocks = flipper.free.blocks()
# الحصول على معلومات البلوتوث
bt_info = flipper.bt.info()
توافق البرنامج الثابت. تستهدف هذه المكتبة الآن سطر أوامر Flipper Zero الحالي (البرنامج الثابت 1.x، تم التحقق منه ضد Unleashed
unlshd-089e). تمت إزالة بعض الأوامر القديمة من البرنامج الثابت الرسمي وبالتالي لم تعد متوفرة:ps(استبدل بـtopالتفاعلي)،music_player، وnfc detect(أصبح NFC الآن قشرة فرعية تفاعلية).power infoانتقل إلىinfo power،debugانتقل إلىsysctl debug، وstorageيبلغ الآن عن الأحجام بـKiB— كل هذا يتم التعامل معه بشفافية عبر الأغلفة أعلاه.
# الحصول على معلومات نظام ملفات التخزين
ext_info = flipper.storage.info(fs="/ext")
# الحصول على قاموس /ext للتخزين
ext_list = flipper.storage.list(path="/ext")
# الحصول على قاموس شجري /ext للتخزين
ext_tree = flipper.storage.tree(path="/ext")
# الحصول على معلومات الملف
file_info = flipper.storage.stat(file="/ext/foo/bar.txt")
# إنشاء دليل
flipper.storage.mkdir(new_dir="/ext/foo")
# قراءة ملف
plain_text = flipper.storage.read(file="/ext/foo/bar.txt")
# حذف ملف
flipper.storage.remove(file="/ext/foo/bar.txt")
# نسخ ملف
flipper.storage.copy(src="/ext/foo/source.txt", dest="/ext/bar/destination.txt")
# إعادة تسمية ملف
flipper.storage.rename(file="/ext/foo/bar.txt", new_file="/ext/foo/rab.txt")
# تجزئة MD5 لملف
md5_hash = flipper.storage.md5(file="/ext/foo/bar.txt")
# كتابة ملف دفعة واحدة
file = "/ext/bar.txt"
text = """There are many variations of passages of Lorem Ipsum available,
but the majority have suffered alteration in some form, by injected humour,
or randomised words which don't look even slightly believable.
If you are going to use a passage of Lorem Ipsum,
you need to be sure there isn't anything embarrassing hidden in the middle of text.
"""
flipper.storage.write.file(path=file, text=text)
# كتابة ملف باستخدام مستمع
file = "/ext/foo.txt"
text_one = """There are many variations of passages of Lorem Ipsum available,
but the majority have suffered alteration in some form, by injected humour,
or randomised words which don't look even slightly believable.
If you are going to use a passage of Lorem Ipsum,
you need to be sure there isn't anything embarrassing hidden in the middle of text.
"""
flipper.storage.write.start(file)
time.sleep(2)
flipper.storage.write.send(text_one)
text_two = """All the Lorem Ipsum generators on the Internet tend to repeat predefined chunks as
necessary, making this the first true generator on the Internet.
It uses a dictionary of over 200 Latin words, combined with a handful of
model sentence structures, to generate Lorem Ipsum which looks reasonable.
The generated Lorem Ipsum is therefore always free from repetition, injected humour, or non-characteristic words etc.
"""
flipper.storage.write.send(text_two)
time.sleep(3)
# لا تنس إيقاف الكتابة
flipper.storage.write.stop()
# تشغيل led عام (r,b,g,bl)
flipper.led.set(led='r', value=255)
# إطفاء الـ led الأزرق
flipper.led.blue(value=0)
# تعيين قيمة الـ led الأخضر
flipper.led.green(value=175)
# تشغيل الإضاءة الخلفية
flipper.led.backlight_on()
# إطفاء الإضاءة الخلفية
flipper.led.backlight_off()
# إطفاء الـ led
flipper.led.off()
# تعيين الاهتزاز True أو False
flipper.vibro.set(True)
# تشغيل الاهتزاز
flipper.vibro.on()
# إيقاف الاهتزاز
flipper.vibro.off()
# تعيين وضع gpio: 0 - إدخال، 1 - إخراج
flipper.gpio.mode(pin_name=PIN_NAME, value=1)
# تعيين قيمة دبوس gpio: 0 - إيقاف، 1 - تشغيل
flipper.gpio.set(pin_name=PIN_NAME, value=1)
# قراءة قيمة دبوس gpio
flipper.gpio.read(pin_name=PIN_NAME)