Cea mai simplă coloană de radio pe Internet „Kodi” sau salvarea cărămizii „Zmeură”.

Cea mai simplă coloană de radio pe Internet „Kodi” sau salvarea cărămizii „Zmeură”.

Cerințe preliminare de bază:

  1. Există o placă veche Raspberry Pi de prima generație, nefolosită;
  2. Placa se află pe dulap ca o greutate moartă și nu este folosită - placa „Brick”;

Ce ai vrea sa primesti:

  1. La un anumit moment în timp (de exemplu, după starea de spirit)
    placa încetează să mai fie o „cărămidă”, iar un card de memorie magic este introdus în ea;
  2. Un cablu Ethernet și o mufă de la un difuzor obișnuit de uz casnic sau căști sunt conectate la placă;
  3. După energizarea fostei „cărămizi” - cântă

Ideea principală:

  1. Numărul minim de gesturi pentru orice setare, în cel mai ideal caz, conectăm doar cablul „Ethernet”, alimentare și difuzoare, și nu facem nimic altceva, din cuvânt "deloc";
  2. De exemplu, sprijinim fostul „Brick” din cutie, de exemplu, 20 de posturi de radio pe Internet, a căror comutare într-un cerc poate fi agățată apăsând rotița mouse-ului sau pe un anumit pin GPIO (conectați două fire și inchide-le (visul meu din copilarie));
  3. Controlul se realizează printr-un canal radio, iar acest canal radio poate fi un mouse radio obișnuit;
  4. Luați un sistem gata făcut, asamblați kitul de distribuție în „Proiectul Yocto”
    acestea. Ca de obicei, nu vom face nimic cu tine, deoarece totul a fost deja făcut.
    (este suficient să plasezi un observator din exterior pe cealaltă parte "TELEVIZOR");

descriere

Cea mai simplă coloană de radio pe internet „KODI”
Ansamblu conceput pentru plăcile vechi Raspberry Pi 1
(adună praf undeva pe dulap, dar care sunt gata să lucreze mai mult)

Lista m3u8 de 12 posturi de radio pe Internet este utilizată implicit.

Se presupune că placa funcționează fără ieșire HDMI și, pentru a o opri, trebuie doar să deconectați adaptorul de alimentare de la priză. Și ca telecomandă fără fir ultra modernă, poți folosi super mouse-ul radio (bine, sau conecta una obișnuită gri cu coadă).

Când este pornită, interfața de rețea este configurată implicit prin protocolul DHCP și este redat ultimul post de radio memorat din listă, volumul de redare este controlat de un mouse obișnuit:
(numiți-vă mouse-ul în sfârșit ca „șef de management” și felicitați-o, ea merită)

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

Pentru a adăuga propria ta listă de posturi de radio pe Internet
puteți conecta oricând un cablu HDMI de la televizor
și utilizați interfața interfață grafică Kodi 17.6
(opriți placa, conectați HDMI și porniți adaptorul de alimentare)

Meniul principal Kodi => „Suplimente” => „Suplimentele mele”
          => "Clienți PVR" => "Client simplu PVR IPTV"

Implementare inițială

(posibil)
Inițial, când m-am hotărât să fac o „Coloană Radio pe Internet”, am planificat următoarele:

  • Distribuție minimalistă de consolă în Proiectul Yocto;
  • Fluxul audio este redat prin GStreamer;
  • Interfața de rețea este configurată prin DHCP;

Și această soluție are o serie de avantaje:

  1. Suficient de rapid (ieșire în modul de funcționare de la sursa de alimentare 30-40 de secunde);
  2. Suficient de fiabil (mai puține programe, mai puține puncte de eșec);
  3. Distribuția consolei este mult mai ușor de pus în modul numai citire
    acestea. programele nu scriu nimic în sistemul de fișiere rădăcină
    (un sistem de fișiere pe suport SDHC este după părerea mea primul candidat pentru eșecuri);

Nota:

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

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

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

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

Și un dezavantaj major:

„Trebuie făcut”, adică Trebuie să petrec N număr de seri
(de obicei după muncă, iar acesta este cel mai ineficient moment, în acest moment creierul nu mai gândește, de obicei doarme)

Și totuși, am scris articolul meu anterior despre Habré despre centrul multimedia Kodi și Yocto proiect
iar oportunitatea de a continua în aceeași ordine de idei, mi-a depășit impulsul explorator. Mai multe despre asta în capitolul următor.

Transformarea Kodi într-un difuzor radio pe internet

Pentru a implementa funcționalitatea de care am nevoie, voi adăuga încă o metodă la rețeta de construire a distribuției descrisă mai sus articol vezi fișierul 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}
}

Metodele sunt destinate modificării sistemului de fișiere rădăcină înainte de formarea imaginii de distribuție sub forma unui singur fișier brut, care este scris pe cardul de memorie prin comanda dd

Acest lucru se face în acest fel:
ROOTFS_POSTPROCESS_COMMAND += "add_radio_guisettings; off_kodi_welcome;"

Pe scurt, în fișierul principal de configurare al lui Kodi 17.6, „trei puncte” se schimbă

  • Lansați configurația ultimului canal TV selectat;
  • Configurare ieșire audio, numai ieșirea audio analogică este întotdeauna conectată;
  • Dezactivarea actualizărilor automate;
  • Nota:
        Единственное с чем у меня возникли сложности, 
        это то, что пришлось еще подтащить файл базы данных 
        в формате sqlite => TV29.db, в котором указывается 
        текущий проигрываемый ТВ канал 
        (так как по умолчанию никакой из каналов не выбран), 
        а через xml конфигурацию в Kodi этого не сделать.
        

o secvență mai detaliată de acțiuni pentru fiecare articol:

1) Faceți clic pe pictograma „roată” din colțul din stânga sus al ecranului
și selectați „Setări PVR și TV” (imaginea unui televizor cu două claxone)
mai departe, în partea stângă a meniului, selectați elementul „Redare”, iar în secțiunea centrală „General”
selectați „Continuați de la ultimul canal la pornire” din lista derulantă
selectând setarea „Prim plan”.

sau mai clar:

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

2) Faceți clic pe pictograma „roată” din colțul din stânga sus al ecranului și selectați elementul:

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

3) Faceți clic pe pictograma „roată” din colțul din stânga sus al ecranului și selectați elementul:

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

Cum mă uit greșit la televizor de doi ani.

Trebuie să vă mărturisesc că în doi ani nu am învățat să mă uit corect la televizor.

De obicei mă uit la televizor în bucătărie. O placă Raspberry Pi 2B este conectată la televizor, iar conectorii Ethernet și HDMI sunt conectați la placă. Placa este alimentată printr-un cablu USB obișnuit, care este conectat la portul USB al televizorului. de fapt, pornirea televizorului cu ajutorul telecomenzii de serie furnizează și energie plăcii Raspberry Pi, iar oprirea televizorului de la telecomandă resetează imediat alimentarea de la placa Raspberry Pi.

Da, știu bine că acest lucru nu se poate face, deoarece sistemul de fișiere rădăcină al centrului multimedia Kodi (ext3) funcționează în modul meu normal de citire/scriere. Dar sunt o persoană leneșă și, pentru început, m-am hotărât să verific cât timp durează oprirea sistemului, până când se oprește deloc încărcarea, dar din păcate de doi ani nu am reușit să fac asta (poate că am a fost doar norocos, nu știu).

Și, după părerea mea, dacă acest mod este potrivit pentru televizorul meu, atunci este potrivit și pentru un „difuzor simplu de radio pe Internet”, iar din moment ce am dezactivat cu forța actualizarea automată a pluginurilor Kodi, probabilitatea unei eșecuri a sistemului de fișiere va deveni chiar mai puțin. Pana acum nu vad nici o problema cu el.

Nota:

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

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

Kit-ul de distribuție „Difuzoare radio pe internet” descris în articol este unul de uz casnic, iar ceea ce este cel mai important pentru un kit de distribuție de uz casnic este o interfață grafică frumoasă. În opinia mea, este foarte dificil sau aproape imposibil să înveți un utilizator obișnuit să conducă orice comenzi magice de neînțeles în consolă și nici măcar nu știe un cuvânt ca acesta. Și aici este GUI, vă rog.

Și acesta este poate argumentul meu principal în favoarea unei distribuții non-console. Interfața grafică pentru lampă caldă a lui Kodi, nu este cu adevărat necesară, dar există.
(De asemenea, am uitat complet să menționez că Kodi poate fi controlat de la distanță, de exemplu de pe un smartphone prin instalarea aplicației Yatse, și poate pentru cineva, acesta va fi un plus)

Configurație Kodi, pentru controlul mouse-ului

iar acum rachetă

<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>

Configurația înlocuiește evenimentele globale pentru următoarele elemente:

  • roata mouse-ului derulați înainte
  • rotița mouse-ului derulați înapoi
  • apăsând butonul din mijloc al mouse-ului
  • procesarea unui clic lung de mouse (3 secunde sau mai mult),
    0 ID butonul dreapta, 1 ID butonul stânga

mai multe informații despre configurarea evenimentelor mouse-ului:

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

Ce să faci dacă sistemul de cablu nu a venit la tine

„Dar nu am porturi Ethernet gratuite acasă (sau nu am avut niciodată)”, ar putea exclama unii dintre fericiții proprietari ai vechilor plăci Raspberry Pi 1 (poate că placa a fost cumpărată pentru cercetare și a rămas întinsă pe dulap)

Și din moment ce nu există Wifi încorporat pe placă, fără conexiune Ethernet, nu este foarte funcțional.

Desigur, există posibilitatea de a utiliza placa Raspberry Pi 1 fără Ethernet, dar va necesita ceva efort din partea dvs. De obicei, astfel de lucruri sunt interesante de făcut doar ca parte a studiului a ceva nou, de ex. aceasta nu este un job personalizat.

Deci, să luăm în considerare un caz de utilizare ipotetic pentru o placă fără Ethernet:

Puteți conecta un adaptor extern USB - Wifi, ghidat de considerație
că adaptorul ar trebui să funcționeze bine sub Linux

Nota:

    К сожалению часть 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 
    

Dacă aveți deja un adaptor USB Wifi, puteți verifica dacă funcționează bine sub Linux astfel:

  • Instalați o distribuție Linux populară
    scop general, cum ar fi „Ubuntu Desktop”
  • Porniți sistemul
  • Conectați adaptorul USB Wifi
  • Lansați managerul de rețea și încercați să vă conectați la hotspot-ul WiFi
  • Dacă totul funcționează bine și conexiunea dvs. la Internet este stabilă, atunci adaptorul este bine acceptat și vă puteți continua munca de conectare a acestui adaptor într-o distribuție specializată și, eventual, cu alte versiuni de kernel
    (dacă nu, atunci nu, vai - e mai bine să nu încerci)

Suport pentru adaptor Wifi extern în „Raspberry PI”

Pentru ca adaptorul WiFi să funcționeze corect în Linux: avem nevoie de două lucruri:
1) Suport kernel Linux pentru un adaptor Wifi specific
2) Prezența în sistem a unui modul kernel pentru un adaptor Wifi specific

Să luăm ca exemplu adaptorul TP-Link TL-WN722N. Are o antenă grozavă.
Să găsim chipsetul pe care funcționează placa - o am "AR9271", Notă:

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

Acum să găsim numele parametrului în configurația nucleului responsabilă pentru driverul chipset-ului AR9271, cel mai bine este să căutați o combinație a cuvintelor „AR9271 cateee.net”
     unde „cateee.net” este un site grozav care descrie configurațiile modulelor kernel-ului Linux

Găsim imediat numele configurației kernelului - CONFIG_ATH9K_HTC
și numele modulului kernel de care avem nevoie ath9k_htc

și apoi specificați doar numele modulului dorit în fișierul fragment de configurare
Nucleu Linux => recipes-kernel/linux/files/rbpi.cfg, adăugați linia:
CONFIG_ATH9K_HTC=m

Astfel, în viitor, puteți conecta orice echipament suplimentar la sistemul dvs. (bine, dacă, desigur, este deja acceptat în nucleul Linux)

Ce să faci dacă ești un tocilar habra - constructor

Și tu creezi cele mai tari lucruri precum aici sau ești student și visezi să creezi ceva asemănător.

Apoi, de la îndemână, puteți lua un fel de ecran tactil pentru RPI pe aliexpress, puteți comanda o baterie potrivită acolo, conectați totul la placa Raspberry Pi 1,2 sau 3 (mai bine la 3, deoarece are Wifi încorporat), selectați o interfață temă de design grafic în Kodi, concepută pentru ecranul tactil și voilà => puteți obține un player audio simplu. Desigur, va fi destul de voluminos, dar va fi al tău.

  Примечание:
  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)}"

  Dacă capacitatea de răspuns a interfeței grafice Kodi 17.6 datorită unui nucleu de procesor din Zero ți se pare misterioasă, atunci poți să faci o simțire cu urechile și să construiești o versiune mai veche, dar foarte rapidă, de exemplu Kodi 15.2, este mai „prietenos” în acest sens (uneori moștenirea decide totul)

Din păcate, nu am o tablă, așa că nu o pot verifica, dar, conform sentimentelor mele, ar trebui să funcționeze.

Instrucțiuni scurte de asamblare

    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
    

instrucțiuni de asamblare mai detaliate
și înregistrarea pe un card microSDHC, vezi în articolul precedent

post-scriptum

Desigur, ideea rubricii de radio pe Internet este tipică, este cunoscută de toată lumea și pe Habré veți găsi multe articole pe acest subiect, de exemplu aici

Și ați putea crede, de asemenea, că tocmai am ajustat cerințele pentru o soluție gata făcută. La asta pot să replic și să spun nu, sincer sincer.

Povestea domnului Ervey

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

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

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

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

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

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

Mai multe adunări bune și diferite pentru tine și lasă-ți până și fosta cărămidă să cânte pentru tine anul acesta.

Sursa: www.habr.com

Adauga un comentariu