Halo,
Habra Giktayms-reader! Hari ini saya akan mengajari Anda cara mendapatkan manfaat dari fungsi yang tidak berguna. Kami akan menerima dengan contoh rumah pintar dari perusahaan Xiaomi yang terkenal dan produknya dalam bentuk gateway ZigBee.
Pemilik komponen rumah pintar Xiaomi tahu bahwa sebagian besar dari mereka dibagi menjadi mereka yang dapat berkomunikasi melalui zigbee atau bluetooth. Kami akan tertarik dengan gateway untuk perangkat zigbee versi 2, karena di sanalah fungsi radio muncul, yang secara default hanya dapat memutar stasiun radio Internet Cina.

Tentu saja, ada proyek di Internet dengan bantuan yang Anda tidak bisa rumit menambahkan berbagai stasiun radio lain, tetapi kami akan pergi ke arah lain dan akan membuat speaker nirkabel dari gateway.
Apa yang kamu butuhkan
Untuk keberhasilan pelaksanaan operasi yang Anda butuhkan:
- Sebenarnya, versi gateway ZigBee setidaknya 2 (radio muncul di dalamnya)
- Server web apa pun
- Ponsel cerdas yang memiliki root dan perangkat lunak yang diinstal MiHome dengan negara yang dipilih China Daratan
Apa yang akan kita lakukan
Untuk membuat speaker nirkabel keluar dari gerbang kami, Anda harus berpura-pura menjadi aliran radio Internet dan melatih gateway yang Anda perlukan untuk mengetuk daftar stasiun kepada kami, dan bukan ke API China.
Untuk memahami bagaimana aplikasi pada ponsel berkomunikasi dengan server Cina, Anda dapat mengendus lalu lintas, tetapi saya akan menyelamatkan Anda dari wasir ini :) Jika Anda ingin memperluas wawasan Anda, Anda dapat melakukan ini secara opsional.
Jadi, kami akan tertarik pada tiga permintaan dan, karenanya, jawaban untuk API Cina, yang tinggal di api.ximalaya.com:
- / openapi-gateway-app / live / radio
- / openapi-gateway-app / live / get_radios_by_ids
- / openapi-gateway-app / search / radio
Kata openapi di jalan mengisyaratkan sesuatu yang terbuka, tetapi saya tidak menemukan spesifikasi publik. Permintaan dilengkapi dengan parameter yang tidak diperlukan untuk tujuan kami, jadi kami membuangnya.
Saya menggunakan nginx sebagai server web, ini adalah konfigurasi:
server { listen *:80; server_name api.io.mi.com ximalaya.com www.ximalaya.com api.ximalaya.com mobile.ximalaya.com open.ximalaya.com ximiraga.ru www.ximiraga.ru; root /opt/xiaomiradio/www; index index.php index.html index.htm; access_log /var/log/nginx/radio_access.log; error_log /var/log/nginx/radio_error.log; location @ximalaya { proxy_pass http://api.ximalaya.com; } }
Buat hierarki yang sama di root server web Anda. Selain itu, buat folder radio dan hls di root server web. Semua panggilan di jalur ini harus menampilkan JSON yang sama, jadi masuk akal untuk membuat tautan ke file, yang akan kita sebut stasiun.json
Berikut isinya:
{ "total_page":1, "total_count":1, "current_page":0, "radios":[ { "id":527782023, "kind":"radio", "program_name":"AirSound1", "radio_name":"AirSound1", "radio_desc":"", "schedule_id":0, "support_bitrates":[ 64 ], "rate24_aac_url":"", "rate64_aac_url":"http://< >/hls/live1.m3u8", "rate24_ts_url":"", "rate64_ts_url":"", "radio_play_count":1, "cover_url_small":"http://< >/radio/527782023/cover_small.png", "cover_url_large":"http://< >/radio/527782023/cover_big.png", "updated_at":0, "created_at":0 } ] }
Seperti yang Anda lihat, semuanya sederhana di sini - kami memberikan berbagai radio yang menunjukkan ke mana harus mencari aliran. Jika Anda memiliki beberapa gateway - Anda dapat membuat beberapa saluran. Catatan penting - alamat yang ditunjukkan di sini harus dapat diakses dari gateway!
Agar aplikasi melihat perubahan Anda, Anda perlu mengedit host pada ponsel cerdas Anda dan mendaftar api.ximalaya.com agar sesuai dengan alamat server web Anda.
Sekarang tentang cara mendapatkan aliran. Saya memutuskan untuk mengeluarkan semuanya dari kartu suara saya dari PC yang digunakan server web. Untuk ini kita akan menggunakan ffmpeg:
Perhatikan jalur dan alamat server web - gantikan alamat Anda.
Pada prinsipnya, ini semua untuk pekerjaan yang berhasil - jalankan skrip ffmpeg, ia akan mulai membuat segmen dengan suara dari kartu suara Anda, meluncurkan aplikasi di telepon dan memilih stasiun Anda - setelah satu atau dua detik, suara dari PC akan keluar.