プレゼンテーション
プレゼンテーションは、UPnP プロセスの最後の手順です。 デバイスにプレゼンテーション用の URL がある場合、コントロール ポイントはこの URL からページを取得し、ページをブラウザーに読み込むことができます。 プレゼンテーション ページとデバイスの機能に応じて、コントロール ポイントはデバイスを制御し、デバイスの状態を表示できます。
登録時に IUPnPRegistrar に渡されるリソース パスは、デバイスのプレゼンテーションに関連するすべてのファイルが配置される場所です。 デバイス開発者は、埋め込みデバイスごとに個別のページを提供できます。 デバイス記述テンプレートのプレゼンテーション URL には、絶対 URL または相対 URL を指定できます。 リソース パスに対する相対 URL の場合、デバイス記述テンプレートにはファイル名が含まれている必要があります。 IUPnPRegistrar は、これを実際の場所を持つ URL に変換します。 絶対 URL の場合、場所は変更されません。
プレゼンテーション ページ内のクライアント側スクリプトをサポートするために、通常、追加情報が "クエリ文字列" の形式で URL に追加されます。 追加される追加情報は、デバイス記述ドキュメントの URL と、デバイスまたは埋め込みデバイスの UDN です。 デバイス記述 URL を使用して、スクリプトに説明ドキュメントを読み込み、そのサービスを介してデバイスを制御できます。 UDN は、ルート デバイスから埋め込みデバイスを選択するために使用されます。
変更されたプレゼンテーション URL の形式は、実際のプレゼンテーション URL、疑問符 ("?")、デバイスの説明 URL、プラス記号 ("+")、デバイス UDN です。 疑問符は、クエリ文字列の先頭を示します。
デバイス記述テンプレートのプレゼンテーション URL が絶対 URL で、既に疑問符 ("?") が含まれている場合、追加情報はプレゼンテーション URL に追加されません。
説明 | URL |
---|---|
デバイスの説明テンプレートで | presentationURLMyDevice.html**/presentationURL** |
デバイス ホストによって生成されます | presentationURLhttps://machinename/deviceID/MyDevice.html/?https://machine/upnphost/udhisapi.dll?content=uuid:487394... + UDN**/presentationURL** |
クライアント側スクリプトでは、 IUPnPDescriptionDocument オブジェクトを読み込むには、プレゼンテーション URL からデバイス記述 URL を抽出する必要がある場合があります。 これを行うには、クエリ文字列を取得し、プラス記号 ("+") で終了します。
Dim QueryString
QueryString = window.location.search
Dim DescURLString
DescURLString = Trim(Mid(QueryString,2,Instr(QueryString,"+")-2))& vbCrLf
Dim LightDesc
Set LightDesc = CreateObject("UPnP.DescriptionDocument.1")
LightDesc.Load(DescURLString)
埋め込みデバイスのプレゼンテーション ページの場合は、追加の作業が必要です。 UPnPDescriptionDocument を読み込んだ後、スクリプトは埋め込みデバイスのコレクションを取得してから、クエリ文字列内の UDN に一致するデバイスを選択する必要があります。 次のスクリプトは、現在のプレゼンテーション ページの埋め込みデバイスを選択する方法を示しています。 LightDesc が既に読み込まれているものとします。
Dim LightDevice
Set LightDevice = LightDesc.RootDevice
Dim EmbeddedDevices
set EmbeddedDevices = LightDevice.Children
Dim DeviceUdnString
DeviceUdnString = Trim(Mid(QueryString,Instr(QueryString,"+")+1,Len(QueryString)))
Dim Item
set Item = EmbeddedDevices.Item(DeviceUdnString)