أبسط عمود إذاعي على الإنترنت "كودي" أو خلاص لبنة "توت العليق"

أبسط عمود إذاعي على الإنترنت "كودي" أو خلاص لبنة "توت العليق"

المتطلبات الأساسية:

  1. توجد لوحة Raspberry Pi قديمة غير مستخدمة من الجيل الأول؛
  2. تقع اللوحة على الخزانة كوزن ساكن ولا يتم استخدامها - لوحة "الطوب" ؛

ما أود الحصول عليه:

  1. في وقت معين (على سبيل المثال، حسب الحالة المزاجية)
    تتوقف اللوحة عن كونها "لبنة"، ويتم إدخال بطاقة ذاكرة سحرية فيها؛
  2. يتم توصيل كابل إيثرنت ومقبس من مكبر صوت منزلي عادي أو سماعات رأس باللوحة؛
  3. بعد تطبيق الطاقة، "الطوب" السابق - يغني

الفكرة الرئيسية:

  1. الحد الأدنى لعدد الإيماءات لأي إعداد، في الحالة المثالية، نقوم فقط بتوصيل كابل "Ethernet" والطاقة ومكبرات الصوت، ولا نفعل أي شيء آخر، من الكلمة "على الاطلاق"؛
  2. يدعم "Brick" السابق الجاهز، على سبيل المثال، 20 محطة راديو عبر الإنترنت، والتي يمكن تبديلها في دائرة بالضغط على عجلة الماوس أو على دبوس GPIO محدد (توصيل سلكين وقصرهما (حلمي منذ الطفولة) );
  3. يتم التحكم عبر قناة راديو، ويمكن أن تكون قناة الراديو هذه عبارة عن فأرة راديو عادية؛
  4. خذ نظامًا جاهزًا وقم بتجميع التوزيع في "مشروع Yocto"
    أولئك. كالعادة، لن نفعل لك أي شيء، لأن كل شيء قد تم بالفعل.
    (يكفي فقط وضع مراقب خارجي على الجانب الآخر "تلفزيون");

وصف

أبسط عمود راديو الإنترنت “KODI”
تم تصميم التجميع للوحات Raspberry Pi 1 الأقدم
(يتجمع الغبار في مكان ما على الخزانة، ولكنه جاهز للقيام ببعض الأعمال الإضافية)

افتراضيًا، يتم استخدام قائمة m3u8 المكونة من 12 محطة راديو عبر الإنترنت.

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

عند تشغيله، يتم تكوين واجهة الشبكة الافتراضية عبر بروتوكول DHCP ويتم تشغيل آخر محطة راديو محفوظة من القائمة، ويتم التحكم في مستوى صوت التشغيل باستخدام ماوس عادي:
(أخيرًا عيّن فأرتك "رئيسًا للإدارة"، وأهنئها، فهي تستحق ذلك)

  колесико вперед  - увеличение громкости звука
  колесико назад   - уменьшение громкости звука
  длительное нажатие (3сек и более) на правую кнопку мыши
                   - выбор следующий радиостанции
  длительное нажатие (3сек и более) на левую кнопку мыши
                   - выбор предыдущей радиостанции

لإضافة قائمة خاصة بك من محطات الراديو على الإنترنت
يمكنك دائمًا توصيل كابل HDMI من جهاز التلفزيون الخاص بك
واستخدم الواجهة الرسومية القياسية لـ Kodi 17.6
(قم بإيقاف تشغيل اللوحة، وتوصيل HDMI وتشغيل محول الطاقة)

قائمة Kodi الرئيسية => “الإضافات” => “الإضافات الخاصة بي”
          => "عملاء PVR" => "عميل PVR IPTV البسيط"

التنفيذ الأولي

(ممكن)
في البداية، عندما قررت إنشاء "عمود راديو الإنترنت"، خططت لما يلي:

  • توزيع بسيط لوحدة التحكم في مشروع Yocto؛
  • يتم تشغيل دفق الصوت عبر GStreamer؛
  • يتم تكوين واجهة الشبكة عبر DHCP؛

وهذا الحل له عدد من المزايا:

  1. سريع جدًا (يستغرق الوصول إلى وضع التشغيل من مصدر الطاقة من 30 إلى 40 ثانية)؛
  2. يمكن الاعتماد عليها إلى حد ما (عدد أقل من البرامج، وعدد أقل من نقاط الفشل)؛
  3. يعد توزيع وحدة التحكم أسهل بكثير في التبديل إلى وضع القراءة فقط
    أولئك. البرامج لا تكتب أي شيء إلى نظام الملفات الجذر
    (ونظام الملفات على وسائط SDHC هو، في رأيي، المرشح الأول للفشل)؛

ملاحظة:

    В Yocto перевести корневую файловую систему (rootfs) 
    в режим только чтение можно сделать достаточно просто, 
    изменив один параметр во время сборки 

    Из коробки Yocto предлагает два варианта:
    1) Работа файловой системы в обычном режиме чтение/запись 
    (так работают все дистрибутивы общего назначения, например Ubuntu)
    2) Работа файловой системы в режиме только чтение
    (так работают специализированные дистрибутивы, например в маршрутизаторах)

    В режиме только чтение все каталоги, в которые обычно 
    записываются данные приложений и сервисов во время работы монтируются 
    в оперативную память (например каталог /var/log и т.п.)
    Данные актуальны только для текущего сеанса работы и после сброса питания
    данные теряются.

    Если в Yocto Project вы укажете при сборке использовать "read only", 
    то после сборки ваш дистрибутив будет настроен только на чтение, 
    но вы всегда можете добавить возможность динамического перевода 
    из "read only"  в "read/write", но это уже совсем другая история ...
    

وعيب رئيسي واحد:

"يجب أن يتم" أي. أحتاج إلى قضاء عدد N من الأمسيات
(عادة بعد العمل، وهذا هو الوقت الأكثر فعالية، في هذا الوقت لم يعد الدماغ يفكر، وعادة ما ينام)

ومع ذلك فقد كتبت مقالتي السابقة عن حبري حول مركز الوسائط المتعددة كودي ويوكتو تنفيذ المشاريع
وفرصة الاستمرار على نفس المنوال تغلبت على دافعي البحثي. المزيد عن هذا في الفصل التالي.

تحويل Kodi إلى مكبر صوت لراديو الإنترنت

لإضافة الوظيفة التي أحتاجها، سأضيف طريقة أخرى إلى وصفة بناء التوزيع الموضحة في الطريقة السابقة مقالة راجع الملف berserk-image.bb

GUI_SETTINGS = "home/root/.kodi/userdata/guisettings.xml"

# конфигурация запуска последнего выбранного ТВ канала (1-фон 2-передний план)
F1_LINE = "<startlast default="true">0</startlast>"
R1_LINE = "<startlast>1</startlast>"
# конфигурация вывода звука, всегда подключен только аналоговый аудио выход
F2_LINE = "<audiodevice default="true">PI:HDMI</audiodevice>"
R2_LINE = "<audiodevice>PI:Analogue</audiodevice>"
# так как HDMI по умолчанию не используется отключаю автоматическое обновление
# а то может получиться что питание уехало, а данные остались не записанными
F3_LINE = "<addonupdates default="true">0</addonupdates>"
R3_LINE = "<addonupdates>2</addonupdates>"


# метод отвечает за добавление конфигурации:
# которая превращает "Умный телевизор" в "простую Интернет Радио колонку"
add_radio_guisettings() {
    sed -i "s|${F1_LINE}|${R1_LINE}|" ${IMAGE_ROOTFS}/${GUI_SETTINGS}
    sed -i "s|${F2_LINE}|${R2_LINE}|" ${IMAGE_ROOTFS}/${GUI_SETTINGS}
    sed -i "s|${F3_LINE}|${R3_LINE}|" ${IMAGE_ROOTFS}/${GUI_SETTINGS}
}


FIND_STR = "touch ./tmp/.FIRST_RUN."
SCRIPT_FIRST_RUN = "etc/init.d/first-run.sh"
# так как HDMI выход может не использоваться, 
# то необходимо отключить "стартовое приветствие"
off_kodi_welcome() {
    sed -i "s|${FIND_STR}|#&|" ${IMAGE_ROOTFS}/${SCRIPT_FIRST_RUN}
}

تهدف الطرق إلى تعديل نظام الملفات الجذر قبل تكوين صورة التوزيع على شكل ملف خام واحد يتم كتابته على بطاقة الذاكرة مع الأمر dd

ويتم ذلك بهذه الطريقة:
ROOTFS_POSTPROCESS_COMMAND += "add_radio_guisettings; off_kodi_welcome;"

باختصار، في ملف التكوين الرئيسي لـ Kodi 17.6، تتغير "ثلاث نقاط".

  • التكوين لبدء آخر قناة تلفزيونية مختارة؛
  • تكوين إخراج الصوت، يتم دائمًا توصيل إخراج الصوت التناظري فقط؛
  • تعطيل التحديثات التلقائية.
  • ملاحظة:
        Единственное с чем у меня возникли сложности, 
        это то, что пришлось еще подтащить файл базы данных 
        в формате sqlite => TV29.db, в котором указывается 
        текущий проигрываемый ТВ канал 
        (так как по умолчанию никакой из каналов не выбран), 
        а через xml конфигурацию в Kodi этого не сделать.
        

تسلسل أكثر تفصيلاً للإجراءات لكل عنصر:

1) انقر على أيقونة الترس في الزاوية اليسرى العليا من الشاشة
وحدد "إعدادات PVR والتلفزيون" (صورة تلفزيون بقرنين)
ثم على الجانب الأيسر من القائمة، حدد "تشغيل"، وفي القسم المركزي "عام"
حدد "المتابعة من القناة الأخيرة عند بدء التشغيل" في القائمة المنسدلة
تحديد الإعداد "المقدمة".

أو بشكل أوضح:

      "Настройки PVR и ТВ" 
       => "Воспроизведение" 
       => "Продолжить с последнего канала при запуске" => "Передний план"

2) انقر على أيقونة "الترس" في الزاوية اليسرى العليا من الشاشة وحدد العنصر:

       "Системные настройки"  
       => "Дополнения" => "Обновления" => "Никогда не проверять обновления"

3) انقر على أيقونة "الترس" في الزاوية اليسرى العليا من الشاشة وحدد العنصر:

       "Системные настройки" 
       => "Аудио" => "Устройство вывода звука" => "PI: Analogue"

كيف كنت أشاهد التلفاز بطريقة خاطئة لمدة عامين.

يجب أن أعترف لك أنه منذ عامين لم أتعلم بعد كيفية مشاهدة التلفزيون بشكل صحيح.

عادة ما أشاهد التلفاز في المطبخ. يتم توصيل لوحة Raspberry Pi 2B بالتلفزيون، كما يتم توصيل موصلات Ethernet وHDMI باللوحة. يتم تشغيل اللوحة عبر كابل USB عادي، والذي يتم توصيله بمنفذ USB الخاص بالتلفزيون، أي. في الواقع، يؤدي تشغيل التلفزيون باستخدام جهاز التحكم عن بعد القياسي إلى توفير الطاقة للوحة Raspberry Pi، كما يؤدي إيقاف تشغيل التلفزيون من جهاز التحكم عن بعد أيضًا إلى إعادة ضبط الطاقة من لوحة Raspberry Pi على الفور.

نعم، أدرك جيدًا أنه لا يمكن القيام بذلك، لأن نظام الملفات الجذر لمركز وسائط Kodi (ext3) يعمل في وضع القراءة/الكتابة العادي. لكنني شخص كسول، وقررت أولاً التحقق من المدة التي يمكنني فيها إيقاف تشغيل النظام بهذه الطريقة حتى يتوقف عن التحميل تمامًا، لكن لسوء الحظ، بعد عامين لم أتمكن أبدًا من القيام بذلك (ربما كنت محظوظًا فقط، لا أعرف).

وفي رأيي، إذا كان هذا الوضع مناسبًا لجهاز التلفزيون الخاص بي، فسيكون مناسبًا أيضًا لـ "مكبر صوت بسيط لراديو الإنترنت"، وبما أنني قمت بتعطيل التحديث التلقائي لمكونات Kodi الإضافية بالقوة، فإن احتمال فشل نظام الملفات سيصبح متساويًا أقل. وحتى الآن لا أرى مشكلة في هذا

ملاحظة:

    Но вы всегда при желании можете с помощью одной yocto команды 
    IMAGE_FEATURES += "read-only-rootfs"

    и определенной магии перевести ваш дистрибутив в режим "read only"
    

إن توزيع "مكبرات صوت راديو الإنترنت" الموصوف في المقالة هو توزيع منزلي، والأهم بالنسبة لتوزيع الأسرة هو واجهة المستخدم الرسومية الجميلة. في رأيي، من الصعب جدًا أو من المستحيل تقريبًا تعليم مستخدم عادي إدخال أي أوامر سحرية غير مفهومة في وحدة التحكم، وهو لا يعرف حتى الكلمة. ولكن واجهة المستخدم الرسومية، من فضلك.

وربما تكون هذه هي حجتي الرئيسية لصالح التوزيع خارج وحدة التحكم. واجهة المستخدم الرسومية ذات المصباح الدافئ لـ Kodi، ليست هناك حاجة إليها حقًا، ولكنها موجودة.
(لقد نسيت أيضًا أن أذكر تمامًا أنه يمكن التحكم في Kodi عن بعد، على سبيل المثال من الهاتف الذكي، عن طريق تثبيت تطبيق Yatse، وربما يكون هذا ميزة إضافية بالنسبة للبعض)

تكوين Kodi للتحكم بالماوس

والآن صاروخ

<keymap>
    <global>
        <mouse>
          <wheelup>VolumeUp</wheelup>
          <wheeldown>VolumeDown</wheeldown>
          <middleclick>ChannelDown</middleclick>
          <longclick id="0">ChannelDown</longclick>
          <longclick id="1">ChannelUp</longclick>
          <!-- конфигурационный rocket -->
        </mouse>
    </global>
</keymap>

يتجاوز التكوين الأحداث العالمية للعناصر التالية:

  • قم بتمرير عجلة الماوس للأمام
  • قم بتمرير عجلة الماوس للخلف
  • النقر على زر الفأرة الأوسط
  • معالجة نقرات الماوس الطويلة (3 ثوانٍ أو أكثر)،
    0 معرف الزر الأيمن، 1 معرف الزر الأيسر

معلومات أكثر تفصيلاً حول إعداد أحداث الماوس:

kodi.wiki/view/Alternative_keymaps_for_mice
kodi.wiki/view/Action_IDs
kodi.wiki/view/Window_IDs

ماذا تفعل إذا لم يصل نظام الكابل إليك

"لكن ليس لدي أي منافذ إيثرنت مجانية في المنزل (أو لم يكن لدي مطلقًا)" ، قد يهتف بعض المالكين السعداء للوحات Raspberry Pi 1 القديمة (ربما تم شراء اللوحة للبحث وظلت مستلقية على الخزانة)

وبما أن اللوحة لا تحتوي على شبكة Wifi مدمجة، فهي لا تعمل بشكل جيد بدون اتصال Ethernet.

بالطبع، من الممكن استخدام لوحة Raspberry Pi 1 بدون Ethernet، لكن ذلك سيتطلب بعض الجهد من جانبك. عادة، تكون مثل هذه الأشياء مثيرة للاهتمام فقط كجزء من تعلم شيء جديد، أي. هذا ليس عملا مخصصا.

لذا، دعونا نفكر في حالة استخدام افتراضية للوحة بدون إيثرنت:

يمكنك توصيل USB خارجي - محول واي فاي، مسترشداً بالاعتبار
أن المحول يجب أن يعمل بشكل جيد تحت نظام Linux

ملاحظة:

    К сожалению часть WiFi адаптеров работать не будет, 
    это не особенность представленного в данной статье дистрибутива, 
    а скорее проблема конкретных драйверов WiFi адаптеров в ядре Linux. 
    Можно констатировать тот факт, что в настоящий момент вы не можете просто 
    пойти в магазин и купить любой WiFi адаптер. Скорее вы должны подобрать WiFi 
    адаптер из списка менее проблематичных и хорошо работающих под Linux.

    я проверял только следующии модели:
    - WiFi адаптер на чипсете Atheros D-Link DWA-126 802.11n (AR9271)
    - WiFi адаптер NetGear WNDA3200
    - WiFi адаптер NetGear WNA1100
    - WiFi адаптер TP-Link TL-WN722N (AR9271)
    - WiFi адаптер TL-WN322G v3
    - WiFi адаптер TL-WN422G
    - Wifi адаптер Asus USB-N53 chipset Ralink RT3572 
    

إذا كان لديك بالفعل محول USB Wifi، فيمكنك التحقق مما إذا كان يعمل بشكل جيد ضمن Linux على النحو التالي:

  • تثبيت بعض توزيعات Linux المستخدمة على نطاق واسع
    للأغراض العامة، على سبيل المثال "Ubuntu Desktop"
  • تمهيد النظام
  • قم بتوصيل محول Wifi USB الخاص بك
  • قم بتشغيل مدير الشبكة وحاول الاتصال بنقطة وصول WiFi الخاصة بك
  • إذا كان كل شيء يعمل بشكل جيد وكان اتصالك بالإنترنت مستقرًا، فإن المحول الخاص بك مدعوم جيدًا ويمكنك مواصلة عملك على توصيل هذا المحول بتوزيع متخصص وربما مع إصدارات أخرى من النواة
    (إذا لم يكن الأمر كذلك، فلا، للأسف، فمن الأفضل عدم المحاولة)

دعم محول Wifi الخارجي في Raspberry PI

لكي يعمل محول WiFi بشكل صحيح في Linux، نحتاج إلى شيئين:
1) دعم Linux kernel لمحول Wifi محدد
2) وجود وحدة kernel في النظام لمحول Wifi محدد

خذ على سبيل المثال محول TP-Link TL-WN722N. لديها هوائي رائع بكل بساطة.
دعنا نعثر على مجموعة الشرائح التي تعمل عليها اللوحة - بالنسبة لي هي "AR9271"، ملحوظة:

    что самое интересное, это то, что для одной и той же модели
    одного и того же производителя, чипсет Wifi может отличаться.
    Я например сталкивался с тем, что для TL-WN722N версии 2, 
    используется уже другой чипсет Realtek RTL8188, а он уже 
    плохо работал под Linux (на тот момент), увы такие вот дела, 
    т.е. иногда нужно еще приглядываться к маленьким цифрам 
    версии на обратной (темной) стороне адаптера.    
    

لنبحث الآن عن اسم المعلمة في تكوين kernel المسؤول عن برنامج تشغيل مجموعة الشرائح AR9271، فمن الأفضل البحث عن مجموعة الكلمات "AR9271 catee.net"
     حيث يعد "cateee.net" موقعًا رائعًا يصف تكوينات وحدات Linux kernel

نجد على الفور اسم تكوين النواة - CONFIG_ATH9K_HTC
واسم وحدة النواة التي نحتاجها ath9k_htc

ثم حدد فقط اسم الوحدة المطلوبة في ملف جزء التكوين
Linux kernel => Recipes-kernel/linux/files/rbpi.cfg، أضف السطر:
CONFIG_ATH9K_HTC=م

وبالتالي، في المستقبل، يمكنك توصيل أي معدات إضافية بنظامك (حسنًا، بالطبع، إذا كانت مدعومة بالفعل في Linux kernel)

ماذا تفعل إذا كنت من مصممي الهبرة

وتقوم بإنشاء أروع الأشياء، مثل هنا أو أنك طالب وتحلم بإنشاء شيء مماثل.

مرتجلًا، يمكنك الحصول على نوع من شاشات اللمس لـ RPI على aliexpress، وطلب بطارية مناسبة هناك، وتوصيلها جميعًا بلوحة Raspberry Pi 1,2 أو 3 (يفضل 3، نظرًا لأنها تحتوي على شبكة Wifi مدمجة)، وحدد واجهة تصميم رسومية في Kodi، مصممة لشاشة تعمل باللمس وفويلا => يمكنك الحصول على مشغل صوتي بسيط. بالطبع سيكون ضخمًا جدًا، لكنه سيكون لك.

  Примечание:
  A для того, чтобы собрать Мультимедиа центр Kodi для самой бюджетной платы 
  Raspberry Pi Zero Wifi в yocto вам достаточно изменить две строки:

  конфигурационный файл => build/conf/local.conf
      MACHINE = 'raspberrypi0-wifi'

  рецепт сборки Kodi  => recipes-mediacentre/kodi/kodi_17.bbappend
      EXTRA_OECONF_append = "${@bb.utils.contains('MACHINE', 
                            'raspberrypi0-wifi', '${BS_RPI}',  '', d)}"

  إذا كانت استجابة GUI Kodi 17.6 بسبب نواة المعالج الواحد في Zero تبدو غامضة بالنسبة لك، فيمكنك خداع أذنيك وإنشاء إصدار أقدم ولكن سريع جدًا، على سبيل المثال Kodi 15.2، فهو أكثر "ودية" في هذا الصدد (أحياناً الإرث يحل كل شيء)

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

تعليمات التجميع موجزة

    1) Установите зависимости Yocto Project (например в Ubuntu): 
    sudo apt-get install -y --no-install-suggests --no-install-recommends 
        gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential 
        chrpath socat cpio python python3 python3-pip python3-pexpect 
        xz-utils debianutils iputils-ping python3-git python3-jinja2 
        libegl1-mesa libsdl1.2-dev xterm

    2) Скачайте и установите Repo:
        mkdir ~/bin
        curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
        chmod a+x ~/bin/repo

    3) Загрузите проект с github:
        PATH=${PATH}:~/bin
        mkdir radio
        cd radio
        repo init -u https://github.com/berserktv/bs-manifest 
                  -m raspberry/rocko/radio-rpi-0.2.8.xml
        repo sync

    4) Соберите проект:
        ./shell.sh
        bitbake berserk-image
        
    можно тоже самое собрать для плат Raspberry Pi 3B Plus, 3B и 2B:
    repo init -u https://github.com/berserktv/bs-manifest 
              -m raspberry/rocko/radio-0.2.8.xml
    

تعليمات التجميع أكثر تفصيلاً
والتسجيل على بطاقة microSDHC، انظر في المادة السابقة

حاشية

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

وقد تعتقد أيضًا أنني قمت ببساطة بتخصيص المتطلبات لتناسب الحل الجاهز. يمكنني الرد على هذا وأقول لا بصراحة.

قصة السيد إرفي

    Хотите верьте, хотите нет, а дело было так:

    Наш рабочий офис граничит с фирмой по производству разного звукового
    оборудования, и однажды директор этой фирмы, назовем его мистер "Эрви"
    подошел к нашему заместителю директора филиала мистеру "Арсению"
    и спросил у него, насколько сложно повесить на плату Raspberry Pi 
    проигрывание звукового потока т.е. плата подключается к сети 
    и колонкам, и "слышен характерный звук".

    После этого мистер Арсений подошел к заместителю моего 
    начальника - мистеру "Борису" и переадресовал вопрос ему, 
    ну а я, как сторонний наблюдатель случайно эту идею запомнил
    и назвал ее "Задача трех начальников".

    В общем хотели как лучше, 
    а получилось, цитата - "Но мистер Эрви, как всегда, помог."

    Через некоторое время я поинтересовался у мистера "Бориса" 
    его мнением по поводу написания небольшой заметки на эту тему 
    на "Хабре", на что "Борис" ответил, что изменение 
    "трех пунктов меню" в Kodi, особо не привносит никакой 
    новой информации и не заслуживает отдельного упоминания. 
    Конечно я с ним полностью согласен и поэтому, я не расскажу ему, 
    что что-то написал по этому поводу.

    Статья написана исключительно для платы "Raspberry Pi 1" 
    взятой у мистера "Бориса" на время эксперимента, 
    совпадения со всеми другими платами "Raspberry Pi 1" случайны.
    

المزيد من المجالس الجيدة والمختلفة لك، وحتى الطوب السابق يغني لك هذا العام.

المصدر: www.habr.com

إضافة تعليق