カスタム統合API
T 778 カスタム統合 API
このマニュアルに含まれる情報は Lenbrook Industries の所有物です。
本プロトコルは専門家による使用のみを目的としています。Lenbrook Industriesは、本プロトコルの正確性について一切の責任を負いません。本プロトコルは「現状有姿」で提供され、いかなる瑕疵も含み、明示的または黙示的を問わず、いかなる種類の保証も付与されません。
API利用ポリシー
APIにアクセスすることにより、お客様は本API利用ポリシー(以下「ポリシー」)および当社の利用規約に同意するものとします。当社は、企業や個人が当社のプラットフォームに接続したり、当社のAPIを介して当社のプラットフォーム内のデータにアクセスしたりするソフトウェア、サービス、またはモジュール(以下「統合」)を作成することにより、当社のサービスを活用し、その恩恵を受けることができるよう、これらのAPIを提供しています。本ポリシーは、当社の利用規約の一部として扱われます。
本ソフトウェアは「現状有姿」で提供され、明示または黙示を問わず、商品性、特定目的への適合性、および非侵害性を含むがこれらに限定されない、いかなる種類の保証も付与されません。いかなる場合においても、著者または著作権者は、契約違反、不法行為、その他を問わず、本ソフトウェア、または本ソフトウェアの使用もしくはその他の取引に起因または関連して生じるいかなる請求、損害賠償、その他の責任についても、一切責任を負いません。
許可された使用
APIを使用してスパムを送信したり、当社の利用規約および標準利用規約に違反する行為を行ったりすることはできません。お客様は、適用されるすべての法律(プライバシー法、米国輸出管理法、欧州一般データ保護規則(GPR)および規制、経済制裁法および規制を含む)を遵守するものとします。お客様は、APIに関して当社が提供するすべてのドキュメントに従うものとします。お客様は、ハッキングやサービスの機能変更を試みないものとします。当社は、これらの規則の遵守状況を確認するためにお客様のAPI利用状況を監視する場合があります。お客様が本ポリシーに違反した場合、APIへのアクセスを拒否する場合があります。
プライバシー
あなたの 統合サービスでは、ユーザーが統合サービスを使用する際に収集する情報を詳細に記載したプライバシーポリシーをユーザー向けに提示する必要があります。ユーザーのデータにアクセスする際は、ユーザーが許可し、プライバシーポリシーで説明されている範囲内に限ります。ユーザーがデータの削除を要求した場合、またはアカウントを解約した場合は、直ちにユーザーのデータを削除する必要があります。
安全
データのセキュリティ、完全性、および機密性を保護し、維持するために、適切な技術的および組織的なセキュリティ対策を実施し、維持するものとします。これらのセキュリティ対策は、お客様が処理する個人情報または機密データへの不正アクセスまたは開示を防止するものとします。
所有
当社は、本サービスおよびAPIに関するすべての権利、権原、および権益(すべての知的財産権、商標、コード、および機能を含む)を保有します。お客様は、当社のコード、デザイン、またはコンテンツを侵害、リバースエンジニアリング、または複製してはなりません。お客様は、当社のサービスと競合するために当社のAPIにアクセスしてはなりません。本ポリシーで明示的に付与されていない権利は留保されるため、ここに記載されていない場合は、当社がお客様に付与する権利ではありません。
マークの使用
当社の名称および商標(当社のロゴ、ブランド、著作権で保護された画像)をいかなる方法でも使用することはできません。また、当社の商標に含まれる所有権表示を変更または削除することもできません。当社の名称または商標を、お客様の統合名またはロゴに使用したり、当社による推奨を暗示するような方法で使用したりすることはできません。
マークの実際的な使用
本ガイドラインは、当社の名称、商標、およびブランド資産を常にどのように使用すべきかを具体的に説明したものです。本ガイドラインをご利用いただくことで、お客様は本ガイドラインに同意したものとみなされます。また、本ガイドラインに違反してご利用いただいた場合、当社の名称、商標、およびブランド資産の使用許可が自動的に終了することをご理解ください。
- 当社の名称、商標、ブランド資産の使用は書面による明示的な許可が必要です。
- 当社のブランド資産を、色の変更、回転、伸縮など、いかなる形でも変更、修正、歪曲、複製、模倣しないでください。つまり、当社のブランド資産は元の状態のまま維持されなければなりません。
- お客様の名前やロゴと比較して、当社の名前、マーク、ブランド資産を過度に目立たせないでください。
- 当社の明示的な同意なしに、当社の名前、マーク、ブランド資産を競合マーケティングの横に表示したり、競合マーケティングのいかなる形式でも表示しないでください。
- お客様の使用は、当社がお客様の会社またはお客様の製品もしくはサービスを後援、提携、または推奨しているという誤解を消費者に与えてはなりません。
- 当社の名称、商標、およびブランド資産は当社の独占的財産です。お客様によるご利用から生じるすべての信用は、当社の利益のみに帰属します。お客様は、当社の権利または所有権に抵触するいかなる行為も行わないものとします。
- 当社の名称、商標、およびブランド資産は、敬意を持って使用する必要があります。当社、当社の製品、またはサービスに損害を与える方法、または当社の評判や当社の名称、商標、およびブランド資産に秘められた信用を毀損または毀損すると当社が判断する方法で使用してはなりません。言い換えれば、当社の資産を違法行為や違法行為と関連付けたり、欺瞞的または有害な方法で使用したりしないでください。
Examp許容される使用法:
「[製品名] (BluOSと互換性あり/動作)」
Examp不適切な使用
「[製品名] – BluOS」
「BluOS – [製品名]」
「[製品名] – BluOS搭載」
マーケティングとプレスリリース
申請が承認されると、当社の web プロパティ。通常、プレスリリースの共同発行やアプリケーションの共同マーケティングへの協力は行いません。
アプリに関するプレスリリースを配信する前に、[EMAIL]までご連絡ください。BluOSについて言及される場合は、view リリース。最終的なプレスリリースをできるだけ早くお送りいただくことをお勧めします。
免責事項
法律で認められる最大限の範囲において、当社はAPIを現状有姿で提供します。つまり、当社は明示的または黙示的を問わず、商品性や特定目的への適合性など、いかなる種類の保証も行いません。
アップデート
当社は、本サイトへの変更内容の掲載またはメールでの通知により、APIおよび本ポリシーを随時更新または変更することがあります。これらの変更は、お客様によるAPIのご利用や、お客様の統合とAPIの連携方法に影響を及ぼす可能性があります。当社がお客様にとって受け入れがたい変更を行った場合、APIのご利用を中止してください。
機密保持
お客様は、APIに固有の機密情報、専有情報、および非公開情報(以下「機密情報」といいます)にアクセスする場合があります。お客様は、APIを利用した開発にのみ、この情報を使用することができます。お客様は、当社の書面による同意なしに、機密情報を第三者に開示してはなりません。また、お客様は、自身の機密情報を保護するのと同様に、機密情報を不正使用および開示から保護するものとします。
補償
お客様は、API の使用に関連する第三者の請求から生じるいかなる損失 (弁護士費用を含む) についても当社および当社チームを補償し、免責するものとします。
残り
本ポリシーは、いかなるパートナーシップ、代理関係、または合弁事業を創出または示唆するものではありません。本ポリシーは、お客様がAPIをご利用になる限り、または当社の利用規約に従って終了するまで適用されます。本ポリシーと標準利用規約との間に矛盾が生じた場合は、標準利用規約が優先するものとします。
©2025 レンブルック・インダストリーズ・リミテッド
633 Granite Court、ピカリング、オンタリオ州、カナダ L1W 3K1
無断転載を禁じます
本書のいかなる部分も、Lenbrook Industries Limitedの書面による許可なく、いかなる形式においても複製、保存、または転送することはできません。本書の内容は発行時点で正確を期すよう万全を期しておりますが、機能および仕様は予告なく変更される場合があります。
| 改訂履歴 | ||
| バージョン | 日付 | 説明 |
| 1.0 | 6年17月2019日 | 最初のリリース |
| 1.2 | 01年12月2022日 | ソフトリブート、ドアベルのチャイム、音量の上げ下げ、キュー内のトラックの移動、直接入力コマンドを追加しました。付録LSDPに注記を追加しました。 |
| 1.4 | 04年26月2022日 | ミュート コマンドが追加され、HUB の直接入力コマンドが変更され、ストリーミングされたカスタム オーディオを再生するための再生コマンドが更新されました。 |
| 1.5 | 07年18月2022日 | Bluetooth コマンドを追加しました。LSDP を更新してクラス 5 ~ 8 を追加しました。API 使用ポリシーに「マークの実際の使用」を追加しました。 |
| 1.6 | 03年13月2024日 | セクション2のグループ化されたプレイヤーの/Statusに注釈を追加しました。 /Play?seek=seconds is=セクション4.1のtrackid; |
| 1.7 | 04年09月2025日 | セクション8.3 exを更新ample; インラインコンテキストメニューの参照要求例を追加しましたampセクション7.1にleを追加。セクション11.2に新しい直接入力選択コマンドを追加。セクション6.1を更新してプリセットに「image」属性を追加。すべての画像属性に「followRedirects=1」コメントを追加。属性の説明を更新。URL セクション7.1にadd-nowを追加 |
導入
BluOS™は、高度なオペレーティングシステム兼音楽管理ソフトウェアです。ホームネットワークを介して、最大24ビット/192kHzのロスレス音楽に各部屋からアクセスし、ストリーミング再生することができます。BluOSは、Bluesound、NAD Electronics、DALI Loudspeakersなどの製品に搭載されています。
このドキュメントは、カスタム統合(CI)マーケットプレイスで活動する開発者およびシステムインテグレーターを支援するために作成されました。このドキュメントには、BluOS API制御プロトコルに記載されているAPIリクエストのサブセットが含まれています。
このドキュメントで説明されているすべてのリクエストは、HTTP GETリクエストとして送信されます。パラメータは標準の URL エンコードされた名前と値のペア。BluOS プレーヤーはこれらのコマンドを受信し、UTF-8 でエンコードされた XML データで応答します。
すべてのリクエストは http:// の形式です。 : /どこ:
- player_ip はBluOSプレーヤーのIPアドレスです(例:192.168.1.100)
- port は通信に使用されるTCポートです。ポート11000は、CI580を除くすべてのBluOSプレーヤーで使用されます。CI580は1つのシャーシに11000つのストリーマーノードを搭載しており、ノード2はポート11010、ノード3はポート11020、ノード4はポート11030、ノードXNUMXはポートXNUMXを使用します。実際に使用するポートは、MDNSプロトコルを使用してmusc.tcpおよびmusp.tcpサービスで検出する必要があります。
- request は実際の BluOS コマンドまたはクエリ (例: Play) です。
注記: この文書では http://192.168.1.100:11000 すべての例でプレイヤーのIPとポートとしてampレ。
ステータスクエリ
ステータス クエリは、BluOS プレーヤーをクエリするために使用されます。
BluOS は、ステータスクエリを実行するための2つのメカニズム、つまり通常ポーリングとロングポーリングを提供しています。通常ポーリングはクエリ結果を即座に返します。ロングポーリングは指定された時間接続を維持し、情報が変更された場合、またはタイムアウトした場合にのみクエリ結果を返します。ロングポーリングは、プレーヤーへの呼び出し回数を大幅に削減できます。
ロングポーリングを使用しない場合、クライアントはポーリングレートを30秒ごとにXNUMXリクエスト以下に制限する必要があります。ロングポーリングを使用する場合は、最初のリクエストがXNUMX秒未満で返されたとしても、クライアントはXNUMX秒未満の間隔で同じリソースに対してXNUMX回連続してリクエストを送信してはなりません。
ロングポーリングリクエストはタイムアウトとeの2つのパラメータを取ります。tagタイムアウトはロングポーリングリクエストの持続時間であり、tag 前の応答から取得されます (応答のルート要素内の属性)。
一般的には、/Statusまたは/SyncStatusのいずれかに対してロングポーリングをアクティブにするだけで十分です。/Statusの応答には要素( ) は、/SyncStatus が変更されたかどうかを示します。プレーヤーの名前、音量、グループ化ステータスのみを知りたい場合は、/SyncStatus をポーリングする必要があります。現在の再生ステータスが必要な場合は、/Status をポーリングする必要があります。
プレーヤーがグループ化されている場合、プライマリプレーヤーがグループのメインプレーヤーになります。セカンダリプレーヤーはプライマリプレーヤーに接続されます。セカンダリプレーヤーの/Status応答はプライマリプレーヤーの応答のコピーです。各セカンダリプレーヤーの音量を追跡するには、/SyncStatus ロングポーリングが必要です。
2.1 再生ステータス
説明
/Statusエンドポイントは、音量と再生情報を照会します。このクエリは多くの応答属性を返します。
一部はこの文書には当てはまりません。文書化されていない応答は無視してください。
リクエスト
/ステータス?タイムアウト=秒&etag=etag-価値
| パラメータ | 説明 |
| タイムアウト | ロングポーリングで使用されるオプションパラメータです。推奨されるポーリング間隔は100秒ですが、60秒程度に制限し、10秒を超えないようにしてください。 |
| etag | ロングポーリングで使用されるオプションパラメータ。これはetag 属性から |
| パラメータ | 説明 |
| 前回の /Status 呼び出し応答。 |
応答
<status etag=”4e266c9fbfba6d13d1a4d6ff4bd2e1e6″>
÷(デラックス)
エド・シーラン
真実
1
159
ディーザー:142986206
/アートワーク?サービス=Deezer&ソングID=Deezer%3A142986206
0
187
1
完璧
1054
0
320000
2
ディーザー
/ソース/画像/DeezerIcon.png
0
8
19
一時停止
MP3 320 kb/s
5
完璧
エド・シーラン
÷(デラックス)
263
4
35
注記: 以下の表にはすべてのレスポンス属性が記載されているわけではありません。他の要素が存在する場合もありますが、無視してください。
| レスポンス属性 | 説明 |
| etag | レスポンスのルート要素の属性。ロングポーリングでレスポンスの変更を検出するために使用される不透明な値。前回のレスポンスから値が変更されていない場合、レスポンスは変更されていないことが保証されます(ただし、以下のsecsも参照してください)。 |
| アラーム残り秒数 | 再生がアラームの結果である場合、再生が停止するまでの秒数です。 |
| アクション | 説明については、「ストリーミングラジオステーションのアクション」セクションを参照してください。 |
| アルバム | 現在アクティブなトラックのアルバム名。title1属性も参照してください。 |
| アーティスト | 現在アクティブなトラックのアーティスト名。title1属性も参照してください。 |
| バッテリー | プレーヤーにバッテリーパックが搭載されている場合に表示されます。以下の属性が含まれます。 · レベル – 充電状態、パーセント · 充電中 – 現在充電中の場合は1 · アイコン – URL 現在の充電状態を示すプレーヤー画像 |
|
再生可能 |
現在再生中または一時停止中のコンテンツを別のプレーヤーに移動できる場合は true になります。 |
|
カンシーク |
1の場合、/Playのseekパラメータを使用して、現在のトラックを0からtotlenの範囲でスクラブすることができます。例:ample: /Play?seek=34。 |
| db | 音量レベル(dB)。 |
| グループ名 | グループの名前。プレイヤーはグループのメインプレイヤーである必要があります。 |
| グループボリューム | グループの音量レベル。プレーヤーはグループのメインプレーヤーである必要があります。 |
| 画像 | URL 現在のオーディオ(アルバム、ステーション、入力など)に関連付けられた画像。 |
| レスポンス属性 | 説明 |
| の URL /Artworkで始まる場合、リダイレクトが発生する可能性があります。パラメータ/キーを追加してください。 フォローリダイレクト=1 画像を取得するときにリダイレクトを回避できます。 | |
| ミュート | ミュート状態。音量がミュートされている場合は 1 に設定します。 |
| ミュートDb | プレーヤーがミュートされている場合、ミュートされていない音量が dB 単位で含まれます。 |
| ミュート音量 | ミュートされている場合は、ミュート解除時の音量レベルが格納されます。値は0~100です。 |
| 名前 | 現在再生中のオーディオトラックのタイトル。title1属性も参照してください。 |
| 通知するurl | URL ポップアップ通知を表示します。 |
| id | 再生キューの一意のID。/Playlistレスポンスのid属性と一致します。再生キューが変更されると、この番号も変更されます。 |
| 取り除く | 一意のプリセットID。/Presetsレスポンスのprid属性と一致します。プリセットが変更されると、この番号も変更され、/Presetsへのキャッシュされたレスポンスがすべて消去されることを示します。 |
| 品質 | 再生ソースオーディオの品質: · cd – CD品質のロスレスオーディオ · HD – CD品質またはSよりも高い解像度のロスレスオーディオamp88200秒のレートamp以下またはそれ以上 · dolbyAudio – ドルビーデジタルまたはAC3 · mqa – デコードされた有効な MQA オーディオ · mqaAuthored – 有効なMQA認証オーディオがデコードされました 数値は圧縮されたオーディオソースの品質のおおよそのビットレートです。 file. |
|
繰り返す |
0、1、または2。0は再生キューの繰り返し、1はトラックの繰り返し、2は繰り返しオフを意味します。 |
| 秒 | 現在のオーディオトラックの再生秒数。この値はeの計算には使用されません。tag 進行状況自体は、ロングポーリング呼び出しからの戻り値にはなりません。状態が再生またはストリームの場合、クライアントは応答からの間隔に基づいて再生位置をインクリメントする必要があります。 |
| サービス | 現在のオーディオのサービスID。これはUIに表示される値ではありません。 |
| レスポンス属性 | 説明 |
| 実際の文字列は公式のサービス名と異なる場合があります。 | |
| サービスアイコン | URL 現在のサービス アイコンの。 |
| シャッフル | 0 または 1。0 はシャッフルオフを意味し、1 はシャッフルオンを意味します。 |
| 寝る | スリープタイマーが作動するまでの残り時間(分)。 |
| 歌 | 再生キュー内の現在のトラックの位置。ストリームも参照してください。Url. |
| 州 | 現在のプレーヤーの状態。再生、一時停止、停止、ストリーミング、接続中など。 /Play は一時停止状態のときに再開できますが、停止状態のときは使用できません。 playとstreamは同じ意味を持つとみなされます。streamも参照してください。Url. |
|
駅画像 |
URL 現在のオーディオがラジオ局(例:Deezerラジオ)の場合、ラジオ局の画像を表示します。画像と同じになる場合があります。 |
| ストリームフォーマット | オーディオのフォーマット。 |
| ストリームUrl | この要素の存在はフラグとして扱われ、その内容は不透明な値として扱われます。存在する場合、以下のことを示します。 · 再生キューは現在のオーディオのソースではありません(曲は無関係です) · シャッフルとリピートは関係がないので、可能であれば UI から削除する必要があります。 · 次へと前へは使用できません(ただし、アクションも参照してください) |
| 同期ステータス | /SyncStatus レスポンスの変化を示す一意の ID。/SyncStatus レスポンスの syncStat 属性と一致します。同期ステータスに変化があるたびに変化します。 |
| タイトル1 | 現在のオーディオを説明する最初の行の情報。title1、title2、title3 再生中の楽曲のメタデータを3行表示するUIのテキストとして必ず使用してください。アルバム、アーティスト、名前などの値は使用しないでください。 |
| タイトル2 | 現在のオーディオを説明する 2 行目の情報。 |
| タイトル3 | 現在のオーディオを説明する 3 行目の情報。 |
| トトルン | 現在のトラックの合計の長さ(秒単位)。 |
| 1行目のタイトルXNUMX | 現在のオーディオを説明する1行のうちの最初の行。twoline_title2とtwoline_titleXNUMXが存在する場合は、XNUMXつのオーディオを表示するUIのテキストとして使用する必要があります。 |
| レスポンス属性 | 説明 |
| 再生中のメタデータの行。 | |
| 2行目のタイトルXNUMX | 現在のオーディオを説明する 2 行のうちの 2 行目。 |
| 音量 | プレーヤーの音量レベル(パーセント)tage; -1 はプレーヤーの音量が固定されていることを意味します。 |
| 秒 | 現在のオーディオ トラックが再生された秒数。 |
Example
http://192.168.1.100:11000/Status
プレーヤーの再生ステータスを取得します。
http://192.168.1.100:11000/Status?タイムアウト=100&etag=4e266c9fbfba6d13d1a4d6ff4bd2e1e6
ロングポーリングを使用してプレーヤーの再生ステータスを取得します。プレーヤーのステータスが変化した場合、100秒のタイムアウト前にのみ結果が返されます。それ以外の場合は、100秒後に結果が返されます。
2.2 プレイヤーとグループの同期ステータス
説明
SyncStatusクエリは、プレーヤー情報とプレーヤーのグループ情報を返します。このクエリは多くのレスポンス属性を返しますが、その中にはこのドキュメントには適用されないものも含まれています。ドキュメントに記載されていないレスポンスは無視してください。
リクエスト
/SyncStatus?timeout=秒&etag=etag-価値
| パラメータ | 説明 |
| タイムアウト | ロングポーリングで使用されるオプションパラメータです。ポーリング間隔(秒単位)を指定します。推奨されるポーリング間隔は180秒です。 |
| etag | ロングポーリングで使用されるオプションパラメータ。これはetag 前回の /SyncStatus 呼び出し応答からの属性。 |
応答
<SyncStatus icon=”/images/players/P300_nt.png” volume=”4″ modelName=”PULSE” name=”PULSE0278″ model=”P300″ brand=”Bluesound” etag=”23″ アウトレベル=”-62.9″ スキーマバージョン=”25″ 初期化=”true” グループ=”PULSE-0278 + 2″ 同期ステータス=”23″ id=”192.168.1.100:11000″ mac=”90:56:82:9F:02:78″> 11000
……。
注: 以下の表にはすべてのレスポンス属性が記載されているわけではありません。他の要素が存在する場合もありますが、無視してください。
| レスポンス属性 | 説明 |
| バッテリー | プレーヤーにバッテリーパックが搭載されている場合に表示されます。以下の属性が含まれます。 · レベル – 充電状態、パーセント · 充電中 – 現在充電中の場合は1 · アイコン – URL 現在の充電状態を示すプレーヤー画像 |
| ブランド | プレーヤーのブランド名。 |
| db | 音量レベル(dB)。 |
| etag | Tag /SyncStatus 応答の、ロングポーリングに使用されます。 |
| グループ | グループ名。 |
| アイコン | URL プレーヤーアイコン画像が含まれます。 |
| id | プレーヤーの IP とポート。 |
| 初期化された | Trueはプレーヤーが既にセットアップ済みであることを意味し、Falseはプレーヤーのセットアップが必要であることを意味します。プレーヤーはBluOSコントローラーアプリでセットアップする必要があります。 |
| マック | ネットワークインターフェースのプレイヤー固有ID。MACアドレスの場合もあります。 |
| マスター | マスタープレイヤーのIPアドレス。プレイヤーがグループ内のセカンダリプレイヤーである場合にのみ表示されます。属性: · port – ポート番号。 · 再接続中 – プライマリプレーヤーに再接続しようとしている場合は true |
| モデル | プレーヤーモデル ID。 |
| モデル名 | プレーヤーモデル名。 |
| ミュート | 音量がミュートされている場合は 1 に設定します。 |
| ミュートDb | プレーヤーがミュートされている場合、これはミュートされていない音量レベル(dB)です。 |
| レスポンス属性 | 説明 |
| ミュート音量 | プレーヤーがミュートされている場合、これはミュートされていない音量レベル (0..100) です。 |
| 名前 | プレイヤー名。 |
| スキーマバージョン | ソフトウェア スキーマ バージョン。 |
| 奴隷 | セカンダリプレイヤーのIPアドレス。プレイヤーがグループのプライマリプレイヤーである場合にのみ表示されます。セカンダリプレイヤーは複数存在する場合があります。属性: · id – IPアドレス · ポート – ポート番号 |
|
同期ステータス |
同期ステータスのID。/SyncStatusレスポンス内の項目が変更されるたびに変更されます。 /Status 応答内の要素。 |
| 音量 | 0~100 スケールの音量レベル。-1 は固定音量を意味します。 |
| ゾーン | 固定グループの名前。 |
| ゾーンマスター | プレイヤーが固定グループのプライマリプレイヤーである場合、これは true に設定されます。 |
| ゾーンスレーブ | プレイヤーが固定グループのセカンダリプレイヤーである場合、これは true に設定されます。 |
Example
http://192.168.1.100:11000/SyncStatus
プレイヤーとプレイヤーのグループのステータスを取得します。
http://192.168.1.100:11000/SyncStatus?タイムアウト=100&etag=4e266c9fbfba6d13d1a4d6ff4bd2e1e6
ロングポーリングを使用して、プレイヤーとグループのステータスを取得します。プレイヤーのステータスが変化した場合、100秒のタイムアウト前にのみ結果が返されます。それ以外の場合は、100秒後に結果が返されます。
ボリュームコントロール
プレーヤーの音量レベルを調整します。プレーヤーをミュートする場合にも使用します。
3.1 音量を設定する
説明
このリクエストは、プレーヤーの音量を照会または設定します。
すべてのコマンドバリアント(0~100レベル、絶対dB、相対dBパラメータのいずれを使用する場合でも)は、設定された利用可能な音量範囲(通常は-80~0)内のレベルになる値に制限されます。音量範囲は、BluOSコントローラーアプリの「設定」→「プレーヤー」→「オーディオ」ページで調整できます。
クエリはロングポーリングをサポートしています (以下には示されていません)。
リクエスト
/音量
/ボリューム?レベル=レベル&tell_slaves=オン_オフ
/ボリューム?ミュート=オン_オフ&tell_slaves=オン_オフ
/ボリューム?abs_db=db&tell_slaves=on_off
/ボリューム?db=デルタ-db&tell_slaves=オン_オフ
| パラメータ | 説明 |
| レベル | プレーヤーの絶対音量レベルを設定します。0~100の整数です。 |
| 奴隷に伝える | グループ化されたプレイヤーに適用されます。0に設定すると、現在選択されているプレイヤーのみが音量を変更します。1に設定すると、グループ内のすべてのプレイヤーの音量が変更されます。 |
| ミュート | 0に設定するとプレーヤーはミュートされます。1に設定するとプレーヤーのミュートが解除されます。 |
| 腹筋データベース | dB スケールを使用して音量を設定します。 |
| db | dB 音量スケールを使用して相対的な音量変更を行います。db は正または負の数値になります。 |
応答
<volume db=”-49.9″ mute=”0″ offsetDb=”0″ etag=”6213593a6132887e23fe0476b9ab2cba”>15</volume>
| レスポンス属性 | 説明 |
| レスポンス属性 | 説明 |
| db | 音量レベル(dB)。 |
| ミュート | プレーヤーがミュートされている場合は 1、ミュート解除されている場合は 0 です。 |
| ミュートDb | プレーヤーがミュートされている場合、これはミュートされていない音量レベル(dB)です。 |
| ミュート音量 | プレーヤーがミュートされている場合、これはミュートされていない音量レベル (0..100) です。 |
| 音量 | 現在の音量レベル: 固定音量の場合は 0..100 または -1。 |
Example
http://192.168.1.100:11000/Volume?level=15
プレーヤーの音量レベルを 15 (100 段階中) に設定します。
http://192.168.1.100:11000/Volume? tell_slaves=1&db=2
マスター プレーヤー 192.168.1.100 とそのグループ内のすべてのセカンダリ プレーヤーの音量を 2 dB 上げます。
http://192.168.1.100:11000/Volume?mute=1
プレーヤーをミュートします。
3.2音量アップ
説明
このリクエストにより、音量が特定の dB 増加します (標準値は 2 dB)。
リクエスト
/ボリューム?db=db_value
| パラメータ | 説明 |
| db | 音量増加ステップ(dB単位)(標準値 2dB) |
応答
<volume db=”-25″ mute=”0″ offsetDb=”6″ etag=”a071a168fac1c879b1de291720c8a4b8″>27</volume>
| レスポンス属性 | 説明 |
| db | 音量レベル(dB)。 |
| ミュート | プレーヤーがミュートされている場合は 1、プレーヤーがミュートされていない場合は 0 |
| レスポンス属性 | 説明 |
| オフセットDb | |
| etag |
Example
http://192.168.1.100:11000/Volume?db=2
音量を2dB上げます。
3.3音量ダウン
説明
このリクエストは、音量を特定の dB だけ下げます (標準値は -2 dB)。
リクエスト
/ボリューム?db=-db_value
| パラメータ | 説明 |
| db | 音量増加ステップ(dB単位)(標準値 -2dB) |
応答
<volume db=”-25″ mute=”0″ offsetDb=”6″ etag=”a071a168fac1c879b1de291720c8a4b8″>27</volume>
| レスポンス属性 | 説明 |
| db | 音量レベル(dB) |
| ミュート | プレーヤーがミュートされている場合は 1、プレーヤーがミュートされていない場合は 0 |
| オフセットDb | |
| etag |
Example
http://192.168.1.100:11000/Volume?db=-2
音量を2dB下げます。
3.4 ミュートオン
説明
リクエスト
/音量?ミュート=1
| パラメータ | 説明 |
| ミュート | プレーヤーをミュートするには 1 に設定します |
応答
<volume muteDb=”-43.1″ db=”100″
ミュートボリューム=”11″
ミュート=”1″
オフセットDb=”0″
etag=”2105bed56563d9da46942a696cfadd63″>0</volume
>
| レスポンス属性 | 説明 |
| ミュートDb | ミュート前の音量レベル(dB) |
| db | 音量レベル(dB) |
| ミュート音量 | ミュート前の音量レベル(パーセント) |
| ミュート | 1はプレーヤーがミュートされていることを意味します |
| オフセットDb | |
| etag |
Example
http://192.168.1.100:11000/Volume?mute=1
3.5 ミュートオフ
説明
このリクエストはプレーヤーのミュートを解除するように設定します。
リクエスト
/音量?ミュート=0
| パラメータ | 説明 |
| ミュート | プレーヤーのミュートを解除するには 0 に設定します |
応答
<volume db=”-43.1″ mute=”0″ offsetDb=”0″ etag=”e72d53db17baa526ebb5ee9c26060b1f”>11</volume>
| レスポンス属性 | 説明 |
| db | 音量レベル(dB) |
| ミュート | 0はプレーヤーがミュートされていないことを意味します |
| オフセットDb | |
| etag |
Example
http://192.168.1.100:11000/Volume?mute=0
再生コントロール
これらのコマンドは、基本的な再生制御に使用されます。コマンドには、再生、一時停止、停止、スキップ、戻る、シャッフル、繰り返しなどがあります。
4.1 プレイ
説明
現在のオーディオソースの再生を開始します。オプションのパラメータを使用すると、オーディオの再生を開始する前に、オーディオトラックにジャンプしたり、入力を選択したりできます。
リクエスト
/遊ぶ
/Play?seek=秒
/Play?seek=秒数&id=トラックID
/遊ぶ?url=エンコードされたストリームURL
| パラメータ | 説明 |
| 求める | 現在のトラックの指定された位置へジャンプします。/Statusレスポンスに. inputType および index パラメータでは使用できません。 |
| エンコードされたストリームURL | URL ストリーミングされたカスタムオーディオの URL エンコードされます。 |
応答
遊ぶ
ストリーム
| レスポンス属性 | 説明 |
|
州 |
コマンド実行後の状態。詳細については、/Status 応答状態属性を参照してください。 |
Example
http://192.168.1.100:11000/Play
現在のトラックのオーディオ再生を開始します。
http://192.168.1.100:11000/Play?seek=55
現在のトラックの 55 秒目からオーディオの再生を開始します。
http://192.168.1.100:11000/Play?seek=55&id=4
キュー内のトラック番号 55 の 5 秒目からオーディオの再生を開始します。
192.168.1.125:11000/再生しますか?url=https%3A%2F%2Fwww%2Esoundhelix%2Ecom%2Fexampレス%2Fmp3%
2FSoundHelix-ソング-1%2Emp3
オンライン MP3 オーディオの再生を開始します。
4.2一時停止
説明
現在再生中のオーディオを一時停止します。
アラームが再生されており、タイムアウトが設定されている場合は、アラームのタイムアウトはキャンセルされます。
リクエスト
/一時停止
/一時停止?トグル=1
| パラメータ | 説明 |
| トグル | 1 に設定すると、現在の一時停止状態が切り替わります。 |
応答
一時停止
| レスポンス属性 | 説明 |
| 州 | コマンド実行後の状態。詳細については、/Status 応答状態属性を参照してください。 |
Example
http://192.168.1.100:11000/Pause
現在再生中のオーディオを一時停止します。
4.3ストップ
説明
現在再生中のオーディオを停止します。アラームが再生中でタイムアウトが設定されている場合は、アラームのタイムアウトがキャンセルされます。
/停止
| パラメータ | 説明 |
| なし |
応答
停止
| レスポンス属性 | 説明 |
| 州 | 「stop」は現在のオーディオが停止していることを意味します。 |
Example
http://192.168.1.100:11000/Stop
現在再生中のオーディオを停止します。
4.4 スキップ
説明
再生キュー内の次のオーディオトラックにスキップします
再生キューから再生する場合、キュー内の次のトラックにスキップします。現在のトラックがキュー内の最後のトラックの場合、/Skip を呼び出すとキュー内の最初のトラックに移動します。繰り返し設定の状態に関係なく、キュー内の次のトラックまたは最初のトラックにスキップします。
再生キューを使用しているかどうかを確認するには、Url> /Status 応答のエントリ。
その後、/Skip コマンドを使用できます。
一部のストリーミングラジオ局では、トラックをスキップすることもできます。これは/Actionコマンドで操作できます。
TuneInや光入力などの一部のソースではスキップオプションがサポートされていません。これらのソースにはURL> エントリがありますが、/Status 応答にスキップ アクション名がありません。
リクエスト
/スキップ
| パラメータ | 説明 |
| なし |
応答
21
| レスポンス属性 | 説明 |
| id | スキップコマンド実行後のトラックID。詳細は/Statusレスポンスのsong属性を参照してください。 |
Example
http://192.168.1.100:11000/Skip
次のトラックにスキップします。
4.5 戻る
説明
トラックの再生中、4 秒以上再生されている場合は、トラックの先頭に戻ります。
それ以外の場合、backコマンドは現在のプレイリストの前の曲に戻ります。プレイリストの最初の曲にいる場合は、backコマンドを呼び出すと最後の曲に戻ります。リピート設定の状態に関係なく、キュー内の前の曲または最初の曲に戻ります。
再生キューを使用しているかどうかを確認するには、Url> /Status 応答内の要素。
その後、/Back コマンドを使用できます。
一部のストリーミングラジオ局では、トラックを戻すこともできます。これは/Actionコマンドで操作できます。
TuneInや光入力などの一部のソースでは、戻るオプションがサポートされていません。これらのソースにはUrl> 要素がありますが、/Status 応答にスキップ アクション名がありません。
リクエスト
/戻る
| パラメータ | 説明 |
| なし |
応答
19
| レスポンス属性 | 説明 |
| id | backコマンド実行後のトラックID。詳細は/Statusレスポンスのsong属性を参照してください。 |
4.6シャッフル
説明
shuffleコマンドは、現在のキューをシャッフルして新しいキューを作成します。シャッフルが無効になっている場合、元の(シャッフルされていない)キューは復元のために保持されます。
リクエスト
/シャッフル?state=0|1
| パラメータ | 説明 |
| 州 | · 0 シャッフルを無効にする · 1 を指定するとシャッフルが有効になります。キューが既にシャッフル状態の場合は効果がありません。/Status レスポンスを参照してください。要素。 |
応答
| レスポンス属性 | 説明 |
| 変更された | 1 はキューがロードされてから変更されたことを意味します。0 は変更されていないことを意味します。 |
| 長さ | 現在のキュー内のトラックの合計数。 |
| シャッフル | シャッフルの状態。1 は現在のキューがシャッフルされていることを意味します。0 は現在のキューがシャッフルされていないことを意味します。 |
| id | 現在のキュー ID。再生キューが変更されるたびに変更されます。 |
Example
http://192.168.1.100:11000/Shuffle?state=1
現在の再生キューをシャッフルします。
4.7繰り返します
説明
繰り返しオプションを設定します。繰り返しには0つの状態があります。1は現在のキューを繰り返し、2は現在のトラックを繰り返し、XNUMXは繰り返しません。繰り返しはすべて無期限、つまり停止しません。
リクエスト
/繰り返し?状態=0|1|2
| パラメータ | 説明 |
| 州 | · 0 再生キュー全体を繰り返す · 1 で現在のトラックを繰り返し再生 · 2 繰り返しをオフにする |
応答
| レスポンス属性 | 説明 |
| 長さ | 現在の再生キュー内のトラックの合計数。 |
| id | 現在のキュー ID。再生キューが変更されるたびに変更されます。 |
| 繰り返す | 現在の繰り返し状態。 |
Example
http://192.168.1.100:11000/Repeat?state=1
現在再生中のトラックを繰り返します。
4.8 ストリーミングラジオ局のアクション
説明
アクションを使用すると、Slacker、Radio Paradise、Amazon Music Prime Stationsなどの一部のストリーミングラジオ局で、曲を早送り、巻き戻し、お気に入りに追加、またはブロックすることができます。ストリーミングラジオ局は、曲を再生キューに読み込みません。代わりに、 URL 目的の機能を実現するために使用できます。
「スキップ」は次のトラックに進みます。「戻る」は前のトラックに戻ります。「Love」は音楽サービス内でトラックを「いいね」としてマークします。「Ban」は次のトラックにスキップし、音楽サービス内でトラックを「嫌い」としてマークします。
もしUrl> /Statusレスポンスのエントリと適切なアクションがあれば、これらの機能を実行できます。アクションには URL アクションを実行するために使用されます。
元はampSlacker ラジオを再生しているプレーヤーの /Status 応答からの例:
<action name=”skip” url=”/アクション?サービス=スラッカー&スキップ=4799148″/>
<action icon=”/images/loveban/love.png” name=”love” notification=”Track marked as favorite” state=”1″ text=”Love” url=”/アクション?サービス=スラッカー&ラブ=4799148″/>
<action icon=”/images/loveban/ban.png” name=”ban” notification=”Track banned from this
駅” state=”-1″ text=”禁止” url=”/アクション?サービス=スラッカー&ban=4799148″/>
この例ample、backはご利用いただけませんが、skip、love、banは可能です。
リクエスト
/Action?service=サービス名&action=アクションURL
注記: 具体的なリクエストの詳細(エンドポイントとパラメータ)は、それぞれの要素。Examp以下のセクションではすべて /Action を使用しますが、任意の URI が可能です。
| パラメータ | 説明 |
| 提供要素。 |
応答
レスポンスの場合はアクション確認を受け取ります。スキップして戻る場合は、次のものを受け取ります。
愛に対してあなたは以下を受け取ります:
1
禁止された場合、次のものを受け取ります:
1
| レスポンス属性 | 説明 |
| 応答 | レスポンスのルート要素がテキストノードはユーザーに表示される通知です。代替ルート要素が返され、通知属性が含まれている場合は、その通知が表示されます。 |
Example
http://192.168.1.100:11000/Action?service=Slacker&skip=10965139
次の Slacker ラジオ トラックにスキップします。
http://192.168.1.100:11000/Action?service=Slacker&ban=33332284
現在再生中の Slacker ラジオ トラックを禁止し、次のトラックにスキップします。
プレイキュー管理
プレーヤーの動作モードの一つは、トラックを再生キューに読み込み、その再生キューからトラックを再生することです。これらのコマンドを使用すると、 view 再生キューを管理します。
5.1 トラック一覧
説明
再生キューのステータスを返すか、再生キュー内のすべてのトラックの情報を返します。
長さまたは開始と終了のパラメータを指定せずにこのクエリを使用することはお勧めしません。そうしないと、非常に長い応答が生成される可能性があります。
リクエスト
/プレイリスト
/プレイリスト?長さ=1
/Playlist?start=first&end=last (通常はページ区切りのためにキューの一部を取得します)
| パラメータ | 説明 |
| 長さ=1 | 最上位の属性のみを返し、トラックの詳細は返しません。 |
| 始める | 応答に含めるキューの最初のエントリ(0 から始まります)。 |
| 終わり | 応答に含めるキュー内の最後のエントリ。 |
応答
再生キューのステータスの場合:
13
243
1
再生キューのリストの場合:
2002
アン・マリー
2002
ディーザー:487381362
| レスポンス属性 | 説明 |
| 名前 | 現在の再生キュー名。 |
| 変更された | 0 はキューがロードされてから変更されていないことを意味します。1 はキューがロードされてから変更されていることを意味します。 |
| 長さ | 現在のキュー内のトラックの総数 |
| id | 現在のキューの状態を表す一意のID(例:1054)。これは/Status 応答で。 |
| 歌 | 歌はいくつかのサブ要素で構成されています: · albumid = トラックが収録されているアルバムのID · サービス = トラックの音楽サービス · artistid = トラックアーティストのID · songid = 曲ID · id = 現在のキュー内のトラックの位置。トラックが現在選択されている場合、トラックIDは次のようになります。 /Status 応答で。 · title = トラック名 · art = アーティスト名 · alb = アルバム名 |
Example
http://192.168.1.100:11000/Playlist
再生キュー内のすべてのトラックを一覧表示します。
http://192.168.1.100:11000/Playlist?length=1
5.2 トラックを削除する
説明
現在の再生キューからトラックを削除します。
リクエスト
/削除?id=位置
| パラメータ | 説明 |
| id | 現在の再生キューから削除するトラックのトラック ID。 |
応答
9
| レスポンス属性 | 説明 |
| 削除されました | 削除するトラックのキュー内の位置。 |
Example
http://192.168.1.100:11000/Delete?id=9
再生キュー内の位置 9 にあるトラックを削除します。
5.3 トラックを移動する
説明
現在の再生キュー内でトラックを移動します。
リクエスト
/Move?new=移動先&old=移動元
| パラメータ | 説明 |
| 新しい | 移動されるトラック上の新しい位置。 |
| 古い | 移動中のトラックの古い位置。 |
応答
移動した
| レスポンス属性 | 説明 |
| 移動した | トラックが移動されたことを示します。 |
Example
http://192.168.1.100:11000/Move?new=8&old=2
再生キュー内の位置 2 にあるトラックを位置 8 に移動します。
5.4 キューをクリアする
説明
現在の再生キューからすべてのトラックをクリアします
リクエスト
/クリア
| パラメータ | 説明 |
| なし |
応答
| レスポンス属性 | 説明 |
| 変更された | 0 はキューがロードされてから変更されていないことを意味し、1 はキューがロードされてから変更されていることを意味します。 |
| 長さ | 現在のキュー内のトラックの合計数。 |
| id | 現在のキューの一意の ID。 |
Example
http://192.168.1.100:11000/Clear
これにより、再生キューからすべてのトラックが削除されます。
5.5 キューを保存する
説明
再生キューを名前付きの BluOS プレイリストとして保存します。
リクエスト
/Save?name=プレイリスト名
| パラメータ | 説明 |
| 名前 | 保存された再生キューの名前。 |
応答
126
| レスポンス属性 | 説明 |
| エントリー | 保存された再生キュー内のトラックの合計数。 |
Example
http://192.168.1.100:11000/Save?name=Dinner+Music
これにより、再生キューが「ディナーミュージック」として保存されます。
プリセット
プリセットリクエストを使用すると、プレーヤーのすべてのプリセットを一覧表示したり、プリセットをロードしたり、プリセットを上下に移動したりできます。プリセットの追加と削除は、BluOSコントローラーアプリを使用して行う必要があります。プリセットには、ラジオ局、プレイリスト、入力(例:
Bluetooth、アナログ、光、HDMI ARC)。
6.1 リストプリセット
説明
現在の BluOS プレーヤーのすべてのプリセットを一覧表示します。
リクエスト
/プリセット
| パラメータ | 説明 |
| なし |
応答
<preset id=”6″ name=”Serenity” url=”ラジオパラダイス:/42:4/セレニティ”
image=”https://img.radioparadise.com/channels/0/42/cover_512x512/0.jpg”/>
<preset id=”7″ name=”1980s Alternative Rock Classics” url=”/Load?service=Tidal&id=fd3f797e-
a3e9-4de9-a1e2-b5adb6a57cc7″ image=”/Artwork?service=Tidal&playlistimage=afacfc12-24034caf-a5c5-a2af28d811c8″/> </presets>
| レスポンス属性 | 説明 |
| プライド | プレイヤープリセットの一意のID。 /Status 応答で。 |
| 名前 | プリセット名。 |
| id | プリセット ID。 |
| url | プリセット URLプリセットソースです URL プリセットを読み込むために使用されます。 |
| 画像 | 画像 URL プリセットの。 URL /Artworkで始まる場合、リダイレクトが発生する可能性があります。パラメータ/キーを追加してください。 フォローリダイレクト=1 画像を取得するときにリダイレクトを回避できます。 |
Example
http://192.168.1.100:11000/Presets
プレーヤーのすべてのプリセットを一覧表示します。
6.2 プリセットをロードする
説明
プリセットの再生を開始します。特定のプリセット番号を選択できるほか、次のプリセットや前のプリセットを選択することもできます。プリセット番号は必ずしも連続している必要はありません。1,2,3、5、7、8、XNUMX、XNUMXのように、任意の番号を指定できます。プリセットは上から下、下から上へとループ再生されます。
リクエスト
/プリセット?id=プリセットID|-1|+1
| パラメータ | 説明 |
| id | 読み込むプリセットのID番号。使用可能なプリセットIDのリストは、「プリセットを表示」コマンドで確認できます。 プリセットIDが+1の場合、次のプリセットがロードされます。プリセットIDが-1の場合、前のプリセットがロードされます。 |
応答
プリセットがトラックのリストである場合は、ロードされたプリセットのトラックの数を返します。
60
プリセットがラジオの場合は、ストリームの状態を返します。
ストリーム
| レスポンス属性 | 説明 |
| サービス | 読み込まれたプリセットのサービス名 |
| エントリー | ロードされたプリセットのトラック数 |
Example
http://192.168.1.100:11000/Preset?id=4
プリセット ID 4 のプリセットをロードします。
http://192.168.1.100:11000/Preset?id=+1
コンテンツの閲覧と検索
このセクションでは、音楽サービスのコンテンツの参照と検索を行うコマンドについて説明します。
7.1 音楽コンテンツの閲覧
説明
利用可能な音楽ソース、入力、プレイリストをナビゲートします。
レスポンスのルート要素はエラー応答がない限り、ほとんどの結果は場合によっては、結果はそれぞれにシーケンスが含まれている場合すべての値は属性を使用して提供されます。テキストノードはありません。
/Browse呼び出しの結果は、ルート要素。エラーの詳細は1つにまとめられています。 0個以上テキストノード。
リクエスト
/参照?キー=キー値
/Browse?key=キー値&withContextMenuItems=1
| パラメータ | 説明 |
| 鍵 | オプションパラメータです。このパラメータを指定しない場合は、最上位レベルのブラウズが実行されます。最上位レベルの /Browse 以外のレベルの情報を返します。以前のレスポンスの「browseKey」、「nextKey」、「parentKey」、または「contextMenuKey」属性値から取得した値を使用します。 注: キー値は URL エンコードされた |
| コンテキストメニュー項目付き | オプションのパラメータ。 値は常に1です. このパラメータは、プレイリスト、アルバム、トラック、ステーション、アーティストなどの参照結果を取得するときに、インライン コンテキスト メニューを取得するために使用されます。 |
応答
トップレベルのブラウズ応答:
<item image=”/images/InputIcon.png” text=”Optical Input”
遊ぶURL=”/遊ぶ?url=Capture%3Ahw%3A1%2C0%2F1%2F25%2F2%2Finput1″ inputType=”spdif”
タイプ=”オーディオ”/>
その他のレベルの参照応答:
<browse sid=”16″ serviceIcon=”/Sources/images/DeezerIcon.png” serviceName=”Deezer”
サービス=”Deezer” 検索キー=”Deezer:検索” タイプ=”メニュー”>
アイテムの参照キー=”/プレイリスト?service=Deezer&genre=0&category=toplist” テキスト=”人気のプレイリスト”
タイプ=”リンク”/>
タイプ=”リンク”/>
タイプ=”リンク”/>
アイテムの参照キー=”/Songs?service=Deezer&genre=0&category=toplist” テキスト=”人気曲”
タイプ=”リンク”/>
| レスポンス属性 | 説明 |
| 以下の要素/属性表を参照してください |
Example
注記: すべてのキーパラメータは UTF-8 でエンコードされている必要があります。
http://192.168.1.100:11000/Browse
トップレベルの参照を行います。
http://192.168.1.100:11000/Browse?key=Tidal%3A
第 2 レベルの参照を実行し、Tidal カテゴリを返します。
http://192.168.1.100:11000/Browse?key=Tidal%3AmenuGroup%2F3
3 番目のレベルの参照を実行し、Tidal Masters (グループ XNUMX) のサブカテゴリを返します。
http://192.168.1.100:11000/Browse?key=%2FAlbums%3Fservice%3DTidal%26category%3Dmasters
第 4 レベルの参照を実行し、Tidal Masters アルバムの最初のセットを返します。
http://192.168.1.100:11000/Browse?key=%2FAlbums%3Fservice%3DTidal%26category%3Dmasters%26 start%3D30%26end%3D79
さらに第 4 レベルのブラウズを実行し、Tidal Masters アルバムの 2 番目のセットを返します。
| 要素 | 属性(および値) | 説明 | |
| サービスアイコン | 現在参照しているサービスのアイコンの URI。 | ||
| サービス名 | ユーザーに表示される、現在参照されているサービスの名前。 | ||
| 検索キー | 現在のサービス(または階層のより深い部分)を検索するための/Browseリクエストのキーパラメータとして使用する値。さらに、リクエストには検索語を含むqパラメータが必要です。 | ||
| 次のキー | 現在のページの次のアイテムを取得するための/Browseリクエストのキーパラメータに使用する値 viewページング チャンク サイズは API ユーザーによって制御されないため、この値のクエリ パラメータを解析または操作しないでください。 | ||
| 親キー | デフォルトの戻るナビゲーションを上書きする必要がある場合に、階層を上に戻るための /Browse 要求のキー パラメータに使用する値。 | ||
| タイプ | メニュー | あらゆる種類のアイテムを混在させることができるナビゲーションノード。通常は、リンクまたはオーディオアイテムのみが含まれます。 | |
| コンテキストメニュー | 指定されたタイプの項目のリスト。 | ||
| アーティスト | |||
| 要素 | 属性(および値) | 説明 | |
| 作曲家 | |||
| アルバム | |||
| プレイリスト | |||
| トラック | |||
| ジャンル | |||
| セクション | アルファベット順のセクション。 | ||
| アイテム | 一般的な結果リスト。メニューノード(type=”link”)とラジオ項目(type=”audio”)の組み合わせが最も一般的です。 | ||
| フォルダ | サブフォルダー、トラック、プレイリストのエントリが含まれる場合があります。 | ||
| 文章 | カテゴリーの見出し。 | ||
| 次のキー | カテゴリのアイテムの次のページを取得するための /Browse リクエストのキー パラメータに使用する値。 | ||
| 親キー | デフォルトの戻るナビゲーションを上書きする必要がある場合に、階層を上に戻るための /Browse 要求のキー パラメータに使用する値。 | ||
| タイプ | リンク | ブラウズ階層内の、さらに別のノードにつながる汎用ノード | |
| オーディオ | 直接プレイできるノード | ||
| アーティスト | アーティストを代表するアイテム | ||
| 要素 | 属性(および値) | 説明 | |
| 作曲家 | 作曲家を表すアイテム | ||
| アルバム | アルバムや類似のコレクションを表すアイテム | ||
| プレイリスト | プレイリストや類似のコレクションを表すアイテム | ||
| 追跡 | 1つのトラックを表すアイテム | ||
| 文章 | プレーンテキストノード。 | ||
| セクション | アルファベット順のセクション。 | ||
| フォルダ | フォルダー参照内のフォルダー。 | ||
| 文章 | 商品の説明のメインまたは最初の行 | ||
| テキスト2 | 2行目 | ||
| 画像 | アイテムのアイコンまたはアートワーク。画像が
/Artwork はリダイレクトされる可能性があります。パラメータ/キーを追加してください フォローリダイレクト=1 画像を取得するときにリダイレクトを回避できます。 |
||
| ブラウズキー | 階層を下る後続の /Browse 要求のキー パラメータに使用する値。 | ||
| 遊ぶURL | 対象のアイテムのデフォルトの再生アクションを直接呼び出すためのURIです。通常、これはキューをクリアして再生を開始するアクションです。 | ||
| 自動再生URL | トラックをキューに追加して再生し、それを含むオブジェクト(アルバムなど)から後続のトラックをオートフィルに追加するために直接呼び出すことができるURI | ||
| 要素 | 属性(および値) | 説明 |
| 再生キューのセクション。 | ||
| コンテキストメニューキー | アイテムに関連するアクションのコンテキスト メニューである結果を取得するために /Browse 要求のキー パラメータに使用する値。 | |
| アクションURL | 指定されたアクションを実行するために直接呼び出すことができる URI。 |
コンテキスト メニュー項目の type 属性には次の値を指定できます。
| 属性 | ||
| 説明 | ||
| お気に入り | -追加 | アイテムをお気に入り(または同等のもの)として追加する |
| -消去 | ユーザーのお気に入りからアイテムを削除する | |
| 追加 | 再生キューに追加 | |
| 追加 | -今 | 現在のトラックの後に再生キューに追加して今すぐ再生します |
| -次 | 現在のトラックの後に再生キューに追加します | |
| -最後 | 再生キューの最後に追加 | |
| すべて追加 | -今 | マルチトラックオブジェクトを再生キューに追加して今すぐ再生 |
| -次 | 現在のトラックまたはマルチトラックオブジェクトの後にマルチトラックオブジェクトを再生キューに追加します | |
| -最後 | マルチトラックオブジェクトを再生キューの最後に追加します | |
| ラジオを再生する | アイテムに関連するラジオ局を再生する | |
| 消去 | オブジェクト(通常はプレイリスト)を削除します。ユーザーに確認を求めます。 |
パラメータ「withContextMenuItem=1」を使用してブラウジングすると、結果にはインライン コンテキスト メニューが含まれます。
Example
http://192.168.1.100:11000/Browse?key=%2FAlbums%3Fservice%3DDeezer%26genre%3D0%26category %3Dtoplist&withContextMenuItems=1
インライン コンテキスト メニューで、Deezer => What's Hot => Popular Albums のリクエストを実行します。
応答
レスポンスにはインラインが含まれています各項目ごとに。
<item text=”Essonne History X” contextMenuKey=”Deezer:contextMenu/Album?albumid=693798541″
遊ぶURL=”/Add?service=Deezer&albumid=693798541&playnow=1″ 画像=”/Artwork?service=Deezer&albumid=693798541″
browseKey=”Deezer:アルバム?artist=Ziak&album=Essonne%20History%20X&albumid=693798541″ text2=”Ziak” type=”アルバム”>
<item text=”Favorite” type=”favourite-add” actionURL=”/AddFavourite?service=Deezer&albumid=693798541″/>
<item text=”Play now” type=”add-now”
アクションURL=”/Add?service=Deezer&playnow=1&clear=0&shuffle=0&where=nextAlbum&albumid=693798541″/>
<item text=”Shuffle” type=”add-shuffle”
アクションURL=”/Add?service=Deezer&shuffle=1&playnow=1&where=nextAlbum&albumid=693798541″/>
<item text=”Add next” type=”addAll-next” actionURL=”/Add?service=Deezer&playnow=-1&where=nextAlbum&albumid=693798541″/>
<item text=”Add last” type=”addAll-last” actionURL=”/Add?service=Deezer&playnow=-1&where=last&albumid=693798541″/>
…
実装に関する注意事項とヒント
アイテムの type 属性は、さまざまな表示オプションを容易にするヒントとして提供されます。
アイテムの内容を閲覧できるかどうかは、browseKey属性の有無で判断されます。アイテム全体を再生できるかどうかは、play属性の有無で判断されます。URL (自動再生も可能)URL)属性。アイテムにはbrowseKey属性とplay属性の両方がある場合があります。URL 属性。
両方がプレイするときURL 自動再生URL 利用可能な属性は複数ありますが、デフォルトの再生オプションとしてどれを使用するかはユーザーの好みに応じて決定されます。
URI値は通常、絶対パス要素を含む相対URIになります。相対URIはRFC 3986に従って絶対URIに解決されます。
browseKey、contextMenuKey、および searchKey 属性値は、/Browse リクエストのキー パラメータの値として使用されるときは、他のリクエスト パラメータと同様に、常に URI エンコード (パーセント エスケープ) される必要があります。
参照階層を下っていくときに、親ノードと祖父母ノードのタイトル (テキスト) を使用して、UI ページ ヘッダーに何らかのパンくずリストを表示すると便利な場合があります。
子要素を参照するときに親要素のコンテキスト メニューを使用できるようにすると便利な場合があります。
子要素の表示方法を決めるときに、親要素のタイプを考慮すると便利な場合があります。
7.2 音楽コンテンツの検索
説明
サービス内を検索するコマンド。
リクエスト
/参照?key=キー値&q=検索テキスト
| パラメータ | 説明 |
| 鍵 | 以前のレスポンスの「searchKey」属性値から取得された値 |
| q | 検索文字列。キーパラメータ(レスポンスのsearchKey属性から取得)で指定されたコンテキストの検索を実行します。キーパラメータがない場合、トップレベルの検索を実行します。 |
応答
<browse sid=”16″ serviceIcon=”/Sources/images/DeezerIcon.png” serviceName=”Deezer”
サービス=”Deezer” 検索キー=”Deezer:検索” タイプ=”メニュー”>
検索結果の最上位レベルを返します。アーティスト、アルバム、曲、プレイリストなどの詳細な検索結果を表示するには、「browseKey」をキーとして指定した参照コマンドが必要です。
例えばampアルバムの検索結果を表示するには、次のコマンドを送信します。
http://192.168.1.100:11000/Browse?key=%2FAlbums%3Fservice%3DDeezer%26expr%3Dmichael
応答は通常の /Browse コマンドへの応答と同じになります。
| レスポンス属性 | 説明 |
| 参照コマンドで要素/属性テーブルを参照する |
Example
http://192.168.1.100:11000/Browse?key=Deezer:Search&q=michael 検索する Deezer 音楽サービス内の「michael」。
プレイヤーのグループ化
このセクションでは、デフォルトのプレーヤーのグループ化とグループ解除を行うコマンドについて説明します。BluOS は固定グループ化もサポートしていますが、これはこのドキュメントの範囲外です。
BluOSでは、プライマリプレーヤーとセカンダリプレーヤーという用語を使用します。プライマリプレーヤーはグループ内のメインプレーヤーです。プライマリプレーヤーは音楽ソースの選択に使用します。プライマリプレーヤーは1つだけです。セカンダリプレーヤーはプライマリプレーヤーに接続されます。セカンダリプレーヤーは複数存在できます。
プレーヤーがセカンダリプレーヤーの場合、多くのリクエストはセカンダリプレーヤー宛てであれば、内部的にプライマリプレーヤーにプロキシされます。これには、/Status、再生制御、再生キュー管理、コンテンツの閲覧と検索リクエストが含まれます。
8.1 グループXNUMXのプレーヤー
説明
1 人のセカンダリ プレーヤーをプライマリ プレーヤーにグループ化します。
リクエスト
/AddSlave?slave=セカンダリプレイヤーIP&port=セカンダリプレイヤーポート&group=グループ名
| パラメータ | 説明 |
| 奴隷 | セカンダリプレーヤーの IP アドレス。 |
| ポート | セカンダリプレーヤーのポート番号。デフォルトのポート番号は11000です。NAD CI580のように、XNUMXつのIPアドレスでXNUMXつのプレーヤーが接続できるプレーヤーは、複数のポートを使用します。 |
| グループ | オプション、グループ名。指定しない場合は、BluOS によってデフォルトのグループ名が付けられます。 |
応答
| レスポンス属性 | 説明 |
| スレーブポート | グループ化されたセカンダリ プレーヤーのポート番号。 |
| Id | グループ化されたセカンダリ プレーヤーの ID。 |
Example
http://192.168.1.100:11000/AddSlave?slave=192.168.1.153&port=11000
これにより、プレイヤー192.168.1.153がプレイヤー192.168.1.100にグループ化されます。プレイヤー192.168.1.100がプライマリプレイヤーです。
8.2 複数のプレイヤーをグループに追加する
説明
2 人以上のプレイヤーをプライマリ プレイヤーにグループ化します。
リクエスト
/AddSlave?slaves=セカンダリプレイヤーIP&ports=セカンダリプレイヤーポート
| パラメータ | 説明 |
| 奴隷 | プライマリ プレーヤーに追加するセカンダリ プレーヤーの IP アドレス。IP アドレスはコンマで区切られます。 |
| ポート | プライマリプレーヤーに追加するセカンダリプレーヤーのポート番号。ポート番号はカンマで区切られます。 |
応答
| レスポンス属性 | 説明 |
| ポート | グループ化されたセカンダリ プレーヤーのポート。 |
| Id | グループ化されたセカンダリープレーヤーの ID。 |
Example
http://192.168.1.100:11000/AddSlave?slaves=192.168.1.153,192.168.1.120&ports=11000,11000
セカンダリ プレーヤー 192.168.1.153 と 192.168.1.120 をプライマリ プレーヤー 192.168.1.100 にグループ化します。
8.3 グループからXNUMX人のプレイヤーを削除する
グループからプレイヤーを削除します。グループからセカンダリープレイヤーを削除すると、セカンダリープレイヤーはグループから外れます。3人以上のプレイヤーのグループからプライマリープレイヤーを削除すると、プライマリープレイヤーはグループから外れ、残りのセカンダリープレイヤーは新しいグループを形成します。
リクエスト
/RemoveSlave?slave=セカンダリプレイヤーIP&port=セカンダリプレイヤーポート
| パラメータ | 説明 |
| 奴隷 | 別のプレイヤー (プライマリ) に追加するプレイヤー (セカンダリ) の IP。 |
| ポート | 別のプレーヤー (プライマリ) に追加するプレーヤー (セカンダリ) のポート。 |
応答
<SyncStatus icon=”/images/players/P300_nt.png” volume=”4″ modelName=”PULSE” name=”PULSE0278″ model=”P300″
ブランド=”ブルーサウンド” etag=”25″ outlevel=”-62.9″ schemaVersion=”25″ initialized=”true” group=”PULSE-0278+POWERNODE-0A6A” syncStat=”25″ id=”192.168.1.100:11000″mac=”90:56:82:9F:02:78″>
| レスポンス属性 | 説明 |
| 詳細については、/SyncStatus を参照してください。 |
Example
http://192.168.1.100:11000/RemoveSlave?slave=192.168.1.153&port=11000
プライマリプレーヤー 192.168.1.153 のグループからプレーヤー 192.168.1.100 をグループ解除します。
8.4 グループから複数のプレイヤーを削除する
説明
グループから 2 人以上のプレイヤーを削除します。
リクエスト
/RemoveSlave?slaves=セカンダリプレイヤーIP&ports=セカンダリプレイヤーポート
| パラメータ | 説明 |
| 奴隷 | プライマリ プレーヤーから削除されるセカンダリ プレーヤーの IP アドレス。IP アドレスはコンマで区切られます。 |
| パラメータ | 説明 |
| ポート | プライマリプレーヤーから削除するセカンダリプレーヤーのポート。ポート番号はカンマで区切られます。 |
応答
<SyncStatus icon=”/images/players/P300_nt.png” volume=”4″ modelName=”PULSE” name=”PULSE0278″ model=”P300″ brand=”Bluesound” etag=”41″ outlevel=”-62.9″ schemaVersion=”25″ initialized=”true” syncStat=”41″ id=”192.168.1.100:11000″ mac=”90:56:82:9F:02:78″></SyncStatus>
| レスポンス属性 | 説明 |
| 詳細については、/SyncStatus を参照してください。 |
Example
http://192.168.1.100:11000/RemoveSlave?slaves=192.168.1.153,192.168.1.120&ports=11000,11000
プレーヤー 192.168.1.153 と 192.168.1.120 をプライマリ プレーヤー 192.168.1.100 のグループから削除します。
プレイヤーの再起動
このセクションでは、プレーヤーのソフトリブートのコマンドについて説明します。
9.1 プレーヤーを再起動する
説明
プレーヤーをソフトリブートします。
リクエスト
POSTコマンド /reboot パラメータ yes (任意の値)
| パラメータ | 説明 |
| はい | 任意の値(例:1)。 |
応答
設定が更新されました
再起動しています。このウィンドウを閉じてください。
お待ちください…
Example
curl -d yes=1 192.168.1.100/再起動
ドアベルチャイム
このセクションでは、プレーヤーのドアベルチャイムのコマンドについて説明します。
10.1 ドアベルチャイム
説明
ドアベルのチャイムをアクティブにします。
リクエスト
http://PLAYERIP:PORT/Doorbell?play=1
| パラメータ | 説明 |
| 遊ぶ | ドアベルを鳴らす(常に1) |
応答
| レスポンス属性 | 説明 |
| 有効にする | チャイムを鳴らす |
| 音量 | チャイム音量 |
| チャイム | チャイムオーディオ |
Example
http://192.168.1.100:11000/Doorbell?play=1 play doorbell chime
直接入力
このセクションでは、入力ソースを直接選択するためのコマンドについて説明します。
11.1 アクティブ入力選択
説明
アクティブな入力ソースの選択。このコマンドは、/RadioBrowse?service=Capture への応答に表示されるアクティブな入力に対して機能します。BluOS HUB の入力選択は、このコマンドでのみサポートされます。
リクエスト
/遊ぶ?url=URL_価値
| パラメータ | 説明 |
| url | の URL /RadioBrowse?service=Capture への応答からの属性 |
応答
ストリーム
| レスポンス属性 | 説明 |
| 州 | 入力が再生中であることを示す |
Example
ステップ1. URLパラメータの_value url
リクエスト: http://192.168.1.100:11000/RadioBrowse?service=Capture
応答:
<item playerName=”Tick
チェックマーク” text=”Bluetooth” inputType=”bluetooth” id=”input2″ URL=”Capture%3Abluez%3Abluetooth” 画像=” /images/BluetoothIcon.png” タイプ=”audio”/>
<item playerName=”Tick Tick” text=”Analog
入力” inputType=”アナログ” id=”input0″ URL=”Capture%3Aplughw%3Aimxnadadc%2C0%2F48000%2F 24%2F2%3Fid%3Dinput0″ image=”/images/capture/ic_analoginput.png” type=”audio”/>
<item playerName=”Tick Tick” text=”Optical
入力” inputType=”spdif” id=”input1″ URL=”Capture%3Ahw%3Aimxspdif%2C0%2F1%2F25%2F2%3Fid%
3Dinput1″ 画像=”/images/capture/ic_opticalinput.png” タイプ=”audio”/>
<item playerName=”Tick
チェックマーク” text=”Spotify” id=”Spotify” URL=”Spotify%3Aplay” image=”/Sources/images/SpotifyIcon.png” サービス
タイプ=”クラウドサービス” タイプ=”オーディオ”/>
<remoteitem playerName=”Test Hub” text=”Analog Input” inputType=”analog” id=”hub192168114911000input0″
URL=”Hub%3A%2F%2F192.168.1.149%3A11000%2Finput0″
画像=”/images/capture/i
c_analoginput.png”
タイプ=”オーディオ”/>
<remoteitem playerName=”Test Hub” text=”Coaxial Input” inputType=”spdif” id=”hub192168114911000input3″
URL=”Hub%3A%2F%2F192.168.1.149%3A11000%2Finput3″
画像=”/images/capture/ic
_opticalinput.png”
タイプ=”オーディオ”/>
<remoteitem playerName=”Test Hub” text=”HDMI ARC” inputType=”arc” id=”hub192168114911000input4″
URL=”Hub%3A%2F%2F192.168.1.149%3A11000%2Finput4″
画像=”/images/capture/ic
_tv.png”
タイプ=”オーディオ”/>
<remoteitem playerName=”Test Hub” text=”Optical Input” inputType=”spdif” id=”hub192168114911000input2″
URL=”Hub%3A%2F%2F192.168.1.149%3A11000%2Finput2″
画像=”/images/capture/ic
_opticalinput.png”
タイプ=”オーディオ”/>
<remoteitem playerName=”Test Hub” text=”Phono Input” inputType=”phono” id=”hub192168114911000input1″
URL=”Hub%3A%2F%2F192.168.1.149%3A11000%2Finput1″
画像=”/images/capture/ic
_vinyl.png”
タイプ=”オーディオ”/>
ステップ2. プレーヤーでアナログ入力を再生する
http://192.168.1.100:11000/Play?url=Capture%3Aplughw%3A2%2C0%2F48000%2F24%2F2%3Fid%3Dinput0 or play Analog Input of a HUB named “Test Hub”
http://192.168.1.100:11000/Play?url= Hub%3A%2F%2F192.168.1.149%3A11000%2Finput0
注記: ソースが接続されており、非表示になっていないことを確認します。
11.2 外部入力選択
説明
外部入力ソースの選択。非アクティブな外部入力は、応答に表示されない場合があります。
/RadioBrowse?service=Capture。このコマンドは、アクティブな入力選択と非アクティブな入力選択の両方に機能します。CI外部入力選択に推奨されます。
リクエスト(BluOSファームウェアv3.8.0以降、v4.2.0以前のバージョン)
/Play?inputIndex=インデックスID
| パラメータ | 説明 |
| 入力インデックス | /Settings?id=capture&shcemaVersion=1(32は最新のスキーマバージョン)への応答に表示される入力のインデックス(32から始まる)を数値順で示します。Bluetoothは除外されます。 |
応答
ストリーム
| レスポンス属性 | 説明 |
| 州 | 入力が再生中であることを示す |
Example
ステップ1. inputIndex値を取得する
リクエスト: http://192.168.1.100:11000/Settings?id=capture&schemaVersion=32
応答:
<menuGroup icon=”/images/settings/ic_capture.png” url=”/setting” id=”キャプチャ”
displayName=”ソースをカスタマイズ”>
<setting icon=”/images/settings/ic_bluetooth.png” refresh=”true” url=”/オーディオモード”
id=”bluetooth” displayName=”Bluetooth” value=”3″ name=”bluetoothAutoplay” description=”Disabled” interpretation=”手動モードでは、ナビゲーションドロワーでソースを切り替えることができます。自動モードでは、接続されたBluetoothデバイスがオーディオの再生を開始すると、Bluetoothソースに切り替わります。その後、ナビゲーションドロワーでソースを切り替えることができます。ゲストモードでは、接続されたBluetoothデバイスがオーディオの再生を開始すると、Bluetoothソースに切り替わります。別のソースに変更すると、Bluetoothは切断されます。Bluetoothソースはナビゲーションドロワーに表示されません。無効にすると、ナビゲーションドロワーからソースが削除され、他のデバイスがプレーヤーにBluetoothとして接続できなくなります。
出典。
…
<menuGroup icon=”/images/capture/ic_analoginput.png” url=”/setting” id=”captureinput0″
displayName=”アナログ
入力”>
<menuGroup icon=”/images/capture/ic_opticalinput.png” url=”/setting” id=”capture-input1″
displayName=”光入力”>
応答には、Bluetooth、アナログ入力、光入力が表示されます。Bluetoothは除外されているため、アナログ入力のinputIndex値は1、光入力のinputIndex値は2になります。
ステップ 2. プレーヤーで光入力を再生します。
http://192.168.1.100:11000/Play?InputId=2
リクエスト(BluOSファームウェアv4.2.0以降)
/Play?inputTypeIndex=$typeIndex
| パラメータ | 説明 |
| 入力タイプインデックス | typeIndexの形式は次の通りです タイプインデックス 入力のリストは次のとおりです。 タイプ: spdif(光入力) アナログ(アナログ入力、ライン入力)同軸(同軸入力)Bluetooth アーク(HDMI ARC) Earc (HDMI eARC) フォノ (ビニール) コンピューター aesebu (AES/EBU) バランス (Balanced In) マイク(マイク入力) の 索引 1から始まります。同じタイプの入力が複数ある場合、入力1には 索引 1、入力2には 索引 2、以下同様。 |
応答
ストリーム
| レスポンス属性 | 説明 |
| 州 | 入力が再生中であることを示す |
Example
リクエスト: http://192.168.1.100:11000/Play?inputTypeIndex=spdif-2 で光入力2を選択
応答:ストリーム
ブルートゥース
このセクションでは、Bluetooth モードを変更するコマンドについて説明します。
12.1 Bluetoothモードの変更
説明
Bluetooth モードを変更します: 手動、自動、ゲスト、無効。
リクエスト
/audiomodes?bluetoothAutoplay=値
| パラメータ | 説明 |
|
Bluetooth自動再生 |
Bluetoothモード 価値 0 は手動、1 は自動、2 はゲスト、3 は無効を意味します。 |
応答なし
Example
リクエスト: http://192.168.1.100:11000/audiomodes?bluetoothAutoplay=3 で Bluetooth を無効にします
付録
13.1 Lenbrookサービス検出プロトコル
導入
mDNSやSSDPなどの一般的な検出方法は、UDPマルチキャスト通信を利用し、これに依存しています。Lenbrookの現在の製品のほとんどは、検出にmDNSを使用しています。しかしながら、多くのお客様のホームネットワークではマルチキャストトラフィックが正しく機能せず、デバイスを確実に検出できないことが判明しました。その結果、販売代理店から多くの製品返品や苦情が発生しています。
この問題を解決するため、UDPブロードキャストを利用するLSDPというカスタム検出プロトコルを開発しました。初期テストでは、mDNSベースの検出よりもはるかに信頼性が高いことが確認されています。
プロトコルオーバーview
このプロトコルの目標の一つは、比較的シンプルにすることです。メモリが非常に限られた組み込みデバイスでも使用できます。
このプロトコルは、UDP ポート 11430 との間で送受信されるすべての UDP ブロードキャスト パケットを使用します。このポートは IANA に登録されており、27 年 2014 月 XNUMX 日現在、LSDP 用に Lenbrook に割り当てられています。
定常状態では、広告するサービスを持つ各ノードは、約 1 分ごとにアナウンス メッセージをブロードキャストします。
起動時およびサービスリストまたはネットワークパラメータが変更された場合、初期検出と変更の迅速な伝播を可能にするため、7つのパケットを短い間隔でブロードキャストする必要があります。サービスを広告するノードの場合、これらの最初の7つのパケットにはアナウンスメッセージを含める必要があります。サービスを検出しようとするノードの場合、最初の7つのパケットにはクエリメッセージを含める必要があります。利用できなくなったサービスの場合、これらの7つのパケットには削除メッセージを含める必要があります。
UDPパケットの信頼性が低いため、これらの初期パケットは7回送信されます。万が一、7つのパケットすべてが失敗した場合でも、1分間の定期的なアナウンスメッセージからしばらくするとサービスが検出されます。
ノードがアドバタイズしているサービス クラスのクエリ メッセージを受信すると、短いランダムな時間遅延の後にアナウンス メッセージで応答し、現在のアナウンス タイムアウトをリセットします。
パケットヘッダーとすべてのメッセージブロックには長さフィールドが含まれています。これにより柔軟性が高まり、将来的に後方互換性を維持した変更が可能になります。将来的には、古い実装では解析時にスキップされる可能性のある追加フィールドやメッセージタイプが追加される可能性があります。後方互換性を維持しない変更を行う場合は、パケットヘッダーにインクリメント可能なバージョンフィールドも用意されています。
このプロトコルでは、TXTレコードをサービス広告に含めることも可能であり、TXTレコードは
mDNSと連携することで、サービスに任意のメタデータを追加できる柔軟性が大幅に向上します。
プロトコルを変更せずに広告を表示します。
プロトコルの詳細
タイミング
衝突を避けるために、送信されるすべてのパケットはランダムなタイミングまたは遅延でスケジュールされる必要があります。
- 起動パケットのタイミング:7つのパケットを[0, 1, 2, 3, 5, 7, 10秒] + (0~250msのランダム) のタイミングで送信します。これらは絶対時間であり、遅延ではありません。7つのパケットはすべて約10秒以内に送信される必要があります。
- メインアナウンス期間: 57秒+ (0~6秒ランダム)
- クエリ応答遅延: (0~750ms ランダム)
ノードID
各ノードは、ノードを識別するために使用できる一意のIDを持つものとします。この一意のIDは、アナウンスメッセージと削除メッセージに含まれます。クライアントは、値をキャッシュする際の主キーとして、またノードを一意に識別するためにこの値を使用できます。この一意のIDはMACアドレスでも構いませんが、ノードが複数のインターフェースでアドバタイズしている場合は、各インターフェースで同じである必要があります。
パケット構造
各パケットはパケットヘッダーから始まり、その後に任意の数のメッセージブロックが続きます。各メッセージブロックは長さフィールドから始まるため、認識できないメッセージはスキップされます。特に指定がない限り、すべてのマルチバイト数値はビッグエンディアン(最上位バイトが先頭)で保存されます。特に指定がない限り、すべての数値は符号なし値です。例えば、amp0 バイトの長さは 255 から XNUMX までの値を取ることができます。
パケットヘッダー
| 分野 | バイト | 説明 |
| 長さ | 1 | このフィールドを含むヘッダーの合計長。 |
| 魔法の言葉 | 4 | このフィールドは「LSDP」の4つのASCIIバイトです。これにより、パケットが使用目的のものであるかどうかを識別できるため、予期しないソースからのランダムデータを解析する必要がなくなります。 |
| プロトコルバージョン | 1 | プロトコルのバージョン。将来、プロトコルに後方互換性のない変更が行われた場合、このバージョンは |
| 分野 | バイト 説明 | |
| 変更されます。現在のバージョンは1です。 | ||
クエリメッセージ
| 分野 | ||
| バイト | 説明 | |
| 長さ | 1 | このフィールドを含むメッセージの合計長。 |
| メッセージタイプ | 1 | 「Q」 = 0x51: ブロードキャスト応答のための標準クエリ。 「R」 = 0x52: ユニキャスト応答のためのクエリ。 |
| カウント | 1 | 照会するクラスの数。 |
| 1年生 | 2 | 16 ビット (2 バイト) のクラス識別子。 |
| … | 追加クラスごとに前のフィールドを繰り返します。 | |
アナウンスメッセージ
アナウンスヘッダー
| 分野 | ||
| バイト | 説明 | |
| 長さ | 1 | 完全なアナウンス ヘッダーとアナウンス レコードを含むメッセージの合計長。 |
| メッセージタイプ | 1 | 「A」 = 0x41 |
| ノードIDの長さ | 1 | ノード ID フィールドの長さ。 |
| ノードID | 変数 | アナウンスメントを送信するノードの一意のノードID。これは通常、ノードインターフェースの1つのMACアドレスです。 |
| アドレスの長さ | 1 | アドレスフィールドの長さ。IPv4の場合、これは4となります。 |
| 分野 | ||
| バイト | 説明 | |
| 住所 | 変数 | ノードの IP アドレス。 |
| カウント | 1 | フォローするアナウンスレコードの数。 |
記録を発表
| 分野 | バイト | 説明 |
| クラス | 2 | 16 ビット (2 バイト) のクラス識別子。 |
|
TXT数 |
1 |
続くTXTレコードの数。0の場合、後続のフィールドは省略されます。 |
| キー1の長さ | 1 | キー名の長さ。 |
| キー1 | 変数 | キー名。 |
| 値1の長さ | 1 | 値のテキストの長さ。 |
| 価値1 | 変数 | 値のテキスト。 |
|
… |
追加の TXT レコードごとに前の 4 つのフィールドを繰り返します。 |
メッセージを削除
| 分野 | ||
| バイト | 説明 | |
| 長さ | 1 | このフィールドを含むメッセージの合計長。 |
| メッセージタイプ | 1 | 「D」 = 0x44 |
| ノードIDの長さ | 1 | ノード ID フィールドの長さ。 |
| ノードID | 変数 | メッセージを送信するノードの一意のノードID。これは通常、いずれかのノードのMACアドレスです。 |
| 分野 | ||
| バイト | 説明 | |
| インターフェースの頂点を体現しています。 | ||
| カウント | 1 | 受講するクラスの数。 |
| 1年生 | 2 | 16 ビット (2 バイト) のクラス識別子。 |
| … | 追加クラスごとに前のフィールドを繰り返します。 | |
クラスIDの割り当て
| クラスID | 説明 | mDNS 相当 |
| 0x0001 | BluOSプレーヤー | _musc._tcp |
| 0x0002 | BluOS サーバー | _muss._tcp |
| 0x0003 | BluOS プレーヤー (CI580 などのマルチゾーン プレーヤーのセカンダリー) | _musp._tcp |
| 0x0004 | 製造テストに使用される sovi-mfg。 | _sovi-mfg._tcp |
| 0x0005 | soviキーパッド | _sovi-keypad._tcp |
| 0x0006 | BluOS プレーヤー (ペアスレーブ) | _musz._tcp |
| 0x0007 | リモート Web アプリ(AVR OSD Web ページ) | _リモート-web-ui._tcp |
| 0x0008 | BluOSハブ | _mush._tcp |
| 0xFFFF | すべてのクラス – クエリ メッセージで使用できます。 |
注1:
LSDP パケット全体をバイナリ データとして扱う必要があります。
注2:
580 つのアナウンス メッセージにすべてのノード情報を保持できない場合 (特に CI2)、XNUMX つ以上のアナウンス メッセージに分割され、各メッセージにはヘッダーとレコードが含まれ、各メッセージにはノード全体の情報が保持されます。
BluOS カスタム統合 API バージョン 1.7
ドキュメント / リソース
![]() |
BluOS T 778 カスタム統合 API [pdf] ユーザーマニュアル T 778、T 778 カスタム統合 API、T 778、カスタム統合 API、統合 API、API |
