JP6627568B2 - 情報処理装置、情報処理プログラムおよび情報処理方法 - Google Patents

情報処理装置、情報処理プログラムおよび情報処理方法 Download PDF

Info

Publication number
JP6627568B2
JP6627568B2 JP2016034642A JP2016034642A JP6627568B2 JP 6627568 B2 JP6627568 B2 JP 6627568B2 JP 2016034642 A JP2016034642 A JP 2016034642A JP 2016034642 A JP2016034642 A JP 2016034642A JP 6627568 B2 JP6627568 B2 JP 6627568B2
Authority
JP
Japan
Prior art keywords
information
function
client
address
driver
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2016034642A
Other languages
English (en)
Other versions
JP2017151799A (ja
Inventor
坂本 拓也
拓也 坂本
和明 二村
和明 二村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2016034642A priority Critical patent/JP6627568B2/ja
Priority to EP17152769.0A priority patent/EP3211865B1/en
Priority to US15/415,151 priority patent/US10149266B2/en
Publication of JP2017151799A publication Critical patent/JP2017151799A/ja
Application granted granted Critical
Publication of JP6627568B2 publication Critical patent/JP6627568B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W60/00Affiliation to network, e.g. registration; Terminating affiliation with the network, e.g. de-registration
    • H04W60/06De-registration or detaching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/35Network arrangements, protocols or services for addressing or naming involving non-standard use of addresses for implementing network functionalities, e.g. coding subscription information within the address or functional addressing, i.e. assigning an address to a function
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/12Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
    • H04L67/125Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks involving control of end-device applications over a network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/51Discovery or management thereof, e.g. service location protocol [SLP] or web services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/08Protocols for interworking; Protocol conversion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/08Protocols for interworking; Protocol conversion
    • H04L69/085Protocols for interworking; Protocol conversion specially adapted for interworking of IP-based networks with other networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/50Service provisioning or reconfiguring
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W60/00Affiliation to network, e.g. registration; Terminating affiliation with the network, e.g. de-registration
    • H04W60/04Affiliation to network, e.g. registration; Terminating affiliation with the network, e.g. de-registration using triggered events
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2101/00Indexing scheme associated with group H04L61/00
    • H04L2101/60Types of network addresses
    • H04L2101/681Types of network addresses using addresses for wireless personal area networks or wireless sensor networks, e.g. Zigbee addresses
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/80Services using short range communication, e.g. near-field communication [NFC], radio-frequency identification [RFID] or low energy communication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W84/00Network topologies
    • H04W84/18Self-organising networks, e.g. ad-hoc networks or sensor networks

Description

本発明は、情報処理装置、情報処理プログラムおよび情報処理方法に関する。
最近、さまざまなデバイスやセンサがネットワークに接続されるIoT(Internet of Things)の実現が進められている。携帯網や無線LAN(Local Area Network)などを介して直接にインターネットに繋がる機能を持つデバイスもあるが、Bluetooth(登録商標)やZigbee(登録商標)などの低消費電力の近距離無線規格を使い、近くにあるスマートフォンなどと接続して利用するものもある。例えば、電池で動作する体重計や血圧計といったデバイスには、計測結果が得られた時のみBluetoothでの接続が可能となる仕組みを持ったものが存在する。
一方で、スマートフォンやPC(Personal Computer)は、携帯網やWi−Fiによりインターネットに接続し、Web技術(HTTPやWebSocketなどの通信プロトコルおよびHTML/JavaScriptと言ったプログラミング言語)を使ってサーバにアクセスしてそのサーバが提供するサービスを使用することができる。さまざまなサービスがWeb技術を利用して提供されていることから、Web技術を取り扱える技術者は非常に多い。そのため、Web技術により、スマートフォンやPCなどのクライアントからさまざまなデバイスにアクセスできることが、デバイスの活用を促進すると考えられる。
そこで、例えば、W3C(World Wide Web Consortium)ではWoT(Web of Things)と呼ぶ、Web技術でデバイスに接続して利用する方法の検討が行われている。そこでは、前述したようなBluetoothを使うデバイスに、Web技術でアクセスできるようにプロトコル変換をするゲートウェイも検討されている。ゲートウェイは、クライアントから来たアクセスをもとに、必要に応じてデバイスにアクセスし、またデバイスから情報を受け取った場合は、必要に応じて適切な形式でクライアントに送信する機能を持つ。
一方、複数のインタフェースを備え、プラグアンドプレイでデバイスドライバをインストールすることでアクセス可能なデバイスを増やす技術がある(例えば、特許文献1等を参照)。この技術では、サーバが提供するサービスから扱うことができるデバイスが動的に変わることになり、サービスに応じたデバイスドライバの取得を容易にすることができる。しかし、Web APIアクセスをゲートウェイ(プロトコル変換)する技術ではなく、上述したWoTに適用することはできない。
特表2009−536415号公報
上述したWoTを実現する上で、ゲートウェイにはプロトコル変換を行うデバイスドライバが必要となる。デバイスドライバの提供する機能は、どのようなデバイスに対応するかによって変わるため、デバイスに合わせて開発する必要がある。そのため、例えば、ゲートウェイを部屋に一台置いておき、新しくデバイスを購入して設置したとし、これにもアクセスできるようにゲートウェイに機能を提供して欲しいとユーザが考えた場合、ユーザは何らかの手続きを行って、ゲートウェイ内のデバイスドライバを変更することが必要である。しかし、それはユーザにとっては手間であり、また、ユーザにはそれをするための知識が要求され、誰にとっても容易に行えるものではない。
なお、Web APIアクセスをBluetooth等のプロトコルに変換する場合を中心に説明したが、Web APIアクセスを異なるプロトコルのWeb APIアクセスに変換する場合も対象とすることができる。これにより、統一したWeb APIアクセスによりデバイスを利用することが可能となる。
そこで、開示の形態は、一側面では、ユーザに負担をかけることなくゲートウェイでのデバイスドライバを動的に配備する仕組を提供することを目的とする。
開示の形態は、デバイスに対応するデバイスドライバを取得して配備する手段と、クライアントから前記デバイスの機能を呼び出すためのアドレスを生成し、前記デバイスドライバへのパスと対応付けて登録する手段と、デバイスごとの提供する機能が記述された第1の情報と前記アドレスから、前記デバイスの機能と前記アドレスを含む第2の情報を生成して、前記デバイスの機能の呼び出しを受け付ける第2のサーバに登録する手段と、前記第2の情報を取得するための参照アドレスを、前記クライアントが共通に参照する第1のサーバに登録するか、または、周辺のクライアントに対して報知する手段と、を備える。
開示の形態は、ユーザに負担をかけることなくゲートウェイでのデバイスドライバを動的に配備することができる。
第1の実施例にかかるシステムの構成例を示す図である。 ゲートウェイを中心とした機能構成例を示す図である。 ゲートウェイ等のハードウェア構成例を示す図である。 第1の実施例における処理例を示すフローチャートである。 提供機能情報の例を示す図である。 URL対応表の例を示す図である。 機器情報の例を示す図である。 クライアントからのWeb API呼び出しに対する処理例を示す図である。 第2の実施例においてデバイスドライバから提供機能情報を取得する例を示す図である。 第2の実施例におけるサーバ側とやりとりする処理の例を示すフローチャートである。 第3の実施例におけるサーバ側とやりとりする処理の例を示すフローチャートである。 一覧情報およびゲートウェイUIの例を示す図である。 第4の実施例における処理例を示すフローチャートである。 第5の実施例における処理例を示すフローチャートである。 提供機能情報の例を示す図である。 第6の実施例における処理例を示すフローチャートである。 第7の実施例における処理例を示すフローチャートである。 第8の実施例における処理例を示すフローチャートである。
以下、本発明の好適な実施形態につき説明する。
<第1の実施例>
[構成]
図1は第1の実施例にかかるシステムの構成例を示す図である。図1において、インターネット等のネットワーク1上にはサーバ(サーバ装置)としてのドライバストア2とデバイスレポジトリ3とが設けられている。ドライバストア2は、利用される可能性のある複数のデバイス6(6A、6B等)に対応するデバイスドライバを格納しているとともに、各デバイス6の提供する機能(ゲートウェイ5の提供する機能でもある)についての情報(提供機能情報)を格納している。デバイス6として、最近は、Bluetooth low energy(BLE)もしくはBluetooth Smartと呼ばれるBluetooth 4.0以降の規格で接続するデバイス(周辺デバイス)が、iPhoneやAndroidなどのスマートフォンで対応されていることもあって増加傾向にあり、スマートウォッチや脈拍・体温などを測定するヘルスケアデバイス等が市販されている。デバイスレポジトリ3は、ユーザがデバイス6を制御するために使用するスマートフォンやPC(Personal Computer)といったクライアント(クライアント端末)7からデバイス6にアクセスするために必要な情報(機器情報)を格納している。なお、後述する他の実施例において説明するが、クライアント7からゲートウェイ5へのアクセス方法によっては、デバイスレポジトリ3が実質的に不要となるケースもある。
ゲートウェイ5は、2つ以上のネットワークインタフェースを持つ。例えば、1つはWi-Fiで、もう一つはBluetooth等である。ゲートウェイ5は、1つのネットワークインタフェースからアクセスポイント4を経由してサーバ(ドライバストア2、デバイスレポジトリ3)やクライアント7と接続して通信することができる。また、ゲートウェイ5は、もう1つのネットワークインタフェースを経由してデバイス6と接続することができる。
なお、ドライバストア2とデバイスレポジトリ3は物理的に分かれている必要はなく、1つの機器上に両方の機能が搭載されていてもよい。また、これらのサーバのどちらかもしくは両方がゲートウェイ5と一体の機器となっていることもありうる。
図2はゲートウェイ5を中心とした機能構成例を示す図である。図2において、ゲートウェイ5は、ネットワークインタフェース51、52とゲートウェイ機能管理部53とドライバ管理部54とデバイスドライバ55とURL対応表56とWebサーバ部57とドライバ/Webサーバ間接続・変換管理部58とを備えている。
ネットワークインタフェース51は、ドライバストア2、デバイスレポジトリ3およびクライアント7と接続するためのものであり、例えばWi-Fiにより通信を行うものある。ネットワークインタフェース52は、デバイス6と接続するためのものであり、例えばBluetoothやBLEにより通信を行うものある。
ゲートウェイ機能管理部53は、ゲートウェイ5を全体的に管理する機能を有しており、ネットワークインタフェース52によるデバイススキャン、ネットワークインタフェース51を介したドライバストア2からの提供機能情報の取得、Web呼び出しのアドレスであるURL(Uniform Resource Locator)の生成、URLとデバイスドライバ55へのパスとの対応付けのURL対応表56への登録、機器情報(TD:Thing Description)の生成およびデバイスレポジトリ3への登録等を行う。ドライバ管理部54は、ネットワークインタフェース51を介してドライバストア2からデバイスドライバを取得し、使用可能な状態に配備する機能を有している。デバイスドライバ55は、ネットワークインタフェース52を介してデバイス6と接続して制御を行う。
Webサーバ部57は、クライアント7のアプリ(アプリケーションプログラム)71からデバイス6の機能を利用するWeb呼び出しを受け付け、後続のドライバ/Webサーバ間接続・変換管理部58に渡すとともに、ドライバ/Webサーバ間接続・変換管理部58からデバイス6側からの応答をクライアント7のアプリ71に渡す機能を有している。ドライバ/Webサーバ間接続・変換管理部58は、Webサーバ部57から渡されたWeb呼び出しのURLからURL対応表56を参照してデバイスドライバ55へのパスを取得し、呼び出しを変換してデバイスドライバ55に渡すとともに、デバイスドライバ55からの応答を変換してWebサーバ部57に渡す機能を有している。
図3はゲートウェイ5等(ドライバストア2、デバイスレポジトリ3、クライアント7も同様)のハードウェア構成例を示す図である。図3において、ゲートウェイ5等は、バス507を介して相互に接続されたCPU(Central Processing Unit)501、ROM(Read Only Memory)502、RAM(Random Access Memory)503、HDD(Hard Disk Drive)/SSD(Solid State Drive)504、接続I/F(Interface)505、通信I/F506を備えている。CPU501は、RAM503をワークエリアとしてROM502またはHDD/SSD504等に格納されたプログラムを実行することで、ゲートウェイ5等の動作を統括的に制御する。接続I/F505は、ゲートウェイ5等に接続される機器とのインタフェースである。通信I/F506は、ネットワークを介して他の情報処理装置と通信を行うためのインタフェースである。図2で説明したゲートウェイ5等の機能は、CPU501において所定のプログラムが実行されることで実現される。プログラムは、記録媒体を経由して取得されるものでもよいし、ネットワークを経由して取得されるものでもよいし、ROM組込でもよい。
[動作]
図4は第1の実施例における処理例を示すフローチャートである。図4において、ゲートウェイ5での処理は、大きく分けて、サーバ(ドライバストア2、デバイスレポジトリ3)側とやりとりする処理と、クライアント7側とやりとりする処理に分けられる。まずは、サーバ側とやりとりする処理について説明する。
ゲートウェイ5のゲートウェイ機能管理部53は、デバイススキャン(ステップS101)によって、デバイス6を発見しようとする。例えば、BLE対応デバイスは、定期的にアドバタイズと呼ばれる処理が実行されており、アドバタイジングパケットを定期的に送信しているので、ゲートウェイ5はそれを受信することで、デバイス6を発見することができる。
そして、新たにデバイス6が発見された場合(ステップS102のYes)、ゲートウェイ機能管理部53は、デバイス6から得られる情報をもとに、ドライバストア2から対応する提供機能情報を取得する(ステップS103)。ドライバストア2はさまざまなデバイスタイプ用の提供機能情報を提供しているため、その中からどの提供機能情報を取得するかを判定して取得する。この判定には、BLE対応デバイスの場合は、アドバタイジングパケットの中の情報を用いることができる。アドバタイジングパケットの中には、デバイス6ごとに重複しないように割り振られたアドレスやデバイス名、デバイスベンダ独自記述部分、サービスUUID(Universally Unique Identifier)等が含まれている。サービスUUIDを使うことで、デバイス6がどのようなサービスを提供しているかを識別することができる。サービスUUIDは、Bluetooth special interest groupによって定義されており、通常はそれを使う(例えば、血圧サービスは0x1810)。しかし、デバイスベンダが、例えば独自サービス向けに、独自の値を使うことも可能である。例えば、このサービスUUIDをドライバストア2に送信し、ドライバストア2はそのサービスUUIDに合う提供機能情報を応答する。
提供機能情報には、特定のデバイス6がどのようなAPI(Application Programming Interface)を提供するかが記述されている。図5は提供機能情報の例を示している。この例では、提供機能情報全体の情報として、機能情報名(name)、そして、API個々の情報として、APIの種別(@type)、API名(name)、読み込み・書き込みするデータの型(outputData)、書き込みできるか(writable)、を記述している。なお、@typeはどのように使えるAPIかを表しており、Propertyは属性を読み書きするAPIを意味している。
次いで、図4に戻り、ドライバ管理部54は、ドライバストア2からデバイスドライバ55を取得(ダウンロード)する(ステップS104)。デバイスドライバについても、ドライバストア2で複数のデバイスドライバが提供されている中から、発見したデバイス6に合ったものを取得する。そのため、ドライバ管理部54は、提供機能情報と同様にサービスUUID等をドライバストア2に送信することで、対応するデバイスドライバを取得することが考えられる。しかし、デバイスドライバは、サービスUUIDごとではなく、同じサービスを提供するデバイスであっても、異なるベンダごとやさらには異なる機種ごとに提供されるのが通常である。そのため、サービスUUIDに加えて、デバイスベンダ独自記述部分(例えば、この中にベンダIDや機種名を入れる)をドライバストア2に送信することで、その区別をすることが可能になる。
次いで、ドライバ管理部54は、デバイスドライバをダウンロードした後、デバイスドライバを配備し、配備したデバイスドライバ55を呼び出すための方法(パス)を取得する(ステップS104)。このパスとしては、例えばデバイスドライバがJavaScript(登録商標)で記述されたものである場合、JavaScriptのインスタンスを用いることができる。
次いで、ゲートウェイ機能管理部53は、ゲートウェイとして提供するWeb APIにクライアント7がアクセスするためのURLを生成する。その上で、URLとパスの対応付けを行い、URL対応表56に記憶する(ステップS105)。
図6は、図5に示した提供機能情報のデバイス"MyLED"に対して生成したURL"http://192.168.0.10:8445/MyLED"と、デバイスドライバのJavaScriptのインスタンスをパス"driver["MyLED"]"として登録した例を示している。このURLにAPI名(ledOnOff)を追加することでWeb APIを呼び出すことができる。このURLは、ゲートウェイ5が持つ、アクセスポイント4に割り振られたIPアドレス(192.168.0.10)とWeb APIを受信するためにリッスンしているポート番号(8445)と提供機能情報から取得した機能情報名(MyLED)で構成している。なお、このURLはWeb APIへのアクセスを提供機能情報ごとに区別できる方法であれば、どのような方法で作成しても問題ない。例えば、追番でIDを生成して、それを使ってもよい(例えば、最初のデバイス用にはhttp://192.168.0.10:8445/0、次のデバイス用はhttp://192.168.0.10:8445/1等)。
なお、デバイスドライバはどのような言語で書かれていてもよいが、本実施例ではJavaScriptで記述されていることを想定している。配備として、JavaScriptで記述されたデバイスドライバを実行することで、JavaScriptからアクセス可能なデバイスドライバのインスタンスを作成する。そして、そのインスタンスをパスとしてURLと対応付けてURL対応表56に記憶する。図6のURL対応表56内のdriver["MyLED"]がデバイスドライバのインスタンスである。
次いで、図4に戻り、ゲートウェイ機能管理部53は、生成したURLをもとに機器情報を生成する(ステップS106)。図7は、図5に示した提供機能情報のデバイス"MyLED"に対応する機器情報の例を示している。なお、機器情報の例は、W3CのWeb of Things Interest Groupで検討されているTD(Thing Description)の記述形式をもとにしている。機器情報の中には、作成したURL(符号aで示す部分)と提供機能情報(符号bで示す部分)が含まれている。クライアント7はこれを取得することで、ゲートウェイ5のWeb APIにアクセスすることができるようになる。
次いで、図4に戻り、ゲートウェイ機能管理部53は、作成した機器情報をデバイスレポジトリ3に登録する(ステップS107)。デバイスレポジトリ3への登録の仕方は、通常のHTTP-POSTなどを使えばよい。なお、機器情報は、クライアント7がデバイス6にアクセスするときに、どのデバイス6にアクセスするかを選択しやすいように、場所の情報や所有者の情報などを含んでもよい。それらの情報は、ゲートウェイ5で設定したり、場所であればGPS(Global Positioning System)情報から自動で取得したりするなどの方法が考えられる。機器情報の登録の後、デバイススキャン(ステップS101)から処理を繰り返す。
次に、クライアント7側とやりとりする処理について説明する。クライアント7上には、デバイス6と連携して動作するアプリ71が動作している。例えば、体温計や体重計、血圧計のデバイス6などと連携して、日々測定した結果を管理するヘルスケアアプリや、電灯や家電機器などのリモコンとして使用可能なリモコンアプリなどである。クライアント7は、デバイスレポジトリ3にアクセスし、機器情報を取得する(ステップS111)。なお、登録された複数の機器情報の中から、クライアント7を操作するユーザがアクセスしたいデバイス6を選択するために、機能情報名や場所・所有者の情報などで検索する方法を提供することが望ましい。
次いで、クライアント7は、機器情報を取得した後、そこに記述されたAPI情報を用いて、ゲートウェイ5に対してWeb APIアクセスを行う(ステップS112)。例えば、図7に示した機器情報を取得した場合には、部分bに記述された"ledOnOff"を使用し、LEDランプをオンにするものとすると、部分aに記述されたuriを用い、図8に示すように、"http://192.168.0.10:8445/MyLED/ledOnOff"のURLに対して、ボディ部に、{value:"true"}を記述してHTTP-POSTを行う(ステップS11)。なお、プロトコルはHTTPに限られず、CoAPやWebSocketといった他のプロトコルを使ってもよい。
図4に戻り、ゲートウェイ5のWebサーバ部57は、Web APIアクセスを待っており(ステップS113)、クライアント7からWeb APIが呼び出されることで(ステップS112)、このWeb APIを受信する(ステップS114)。Webサーバ部57から受信した呼び出しを渡されたドライバ/Webサーバ間接続・変換管理部58は、アクセスしてきたURLとURL対応表56をもとにデバイスドライバ55へのパスを取得する(ステップS115)。そして、ドライバ/Webサーバ間接続・変換管理部58は、そのパス経由で、Web APIアクセスで受信した情報をもとに変換を行ってデバイスドライバ55を呼び出す(ステップS116、S117)。また、その際には、Webサーバ部57へ結果を返答するために、Web APIを識別する情報(Web API識別情報)も含める。その後、デバイスドライバ55はデバイス6にアクセスし、デバイス6が要求された動作を行って結果を返す。デバイスドライバ55がその情報を受信すると(ステップS118)、ドライバ/Webサーバ間接続・変換管理部58およびWebサーバ部57を介してクライアント7にWeb API呼び出しに対する応答を送信し(ステップS119)、クライアント7は応答を受信する(ステップS120)。
Web API呼び出しを受けた場合の処理を図8を用いて説明する。ドライバ/Webサーバ間接続・変換管理部58は、呼び出しの内容を渡されると(ステップS12)、まず、アクセスしてきたURL"http://192.168.0.10:8445/MyLED/ledOnOff"からAPI名に相当する"ledOnOff"以降を取り除いた部分をもとにURL対応表56から、パスとしてJavaScriptのインスタンスである"driver["MyLED"]"を取得する。そして、"driver["MyLED"]"がもつexec関数を、API名およびHTTP-POSTのボディ部として渡された情報と、Web APIを識別する情報(Web API識別情報)"1"を引数として呼び出す(ステップS13)。このWeb API識別情報"1"はWeb APIへのアクセスごとにカウントアップして使う。これにより、デバイスドライバ55はAPI名と引数、応答に必要となるWeb API識別情報を渡されたことになる。なお、この例では、API名(ledOnOff)をそのままexec関数の引数として使用したが、例えば、別に表を持っておき、その表をもとに別の引数に置き換えるなどしてもかまわない。表を持つことで、デバイスドライバ55とWeb APIの関数名を合わせる必要がなくなる。また、exec関数を呼び出す前に、呼び出されたAPIが機器情報として記述したAPIであるかを確認してもよい。上記の変換方法では、機器情報に存在しないAPIも呼び出すことが可能であり、デバイスドライバ55の公開していない内部関数を呼び出されることが考えられるが、チェックによりクライアント7による不正利用を防止することができる。
デバイスドライバ55は、渡された情報にもとづきデバイス6へアクセスを行う(ステップS14)。この場合は、プロパティ"ledOnOff"に対して"true"が渡されたので、LEDランプを点灯するための処理を行う。デバイス6がBLE対応デバイスであれば、接続してなければ、まずBLEのGATTプロトコルで接続した上で、サービスの検索や点灯機能に対応するCharacteristicのreadなどを行い、そのCharacteristicにwriteを行う処理などをすることになる。
そして、デバイスドライバ55はデバイス6から結果を受信して(ステップS15)、結果をドライバ/Webサーバ間接続・変換管理部58に渡す(ステップS16)。ドライバ/Webサーバ間接続・変換管理部58は形式の変換を行ってWebサーバ部57に渡す(ステップS17)。これは、例えば、デバイスドライバ55を呼び出すときに引数として渡された情報を、JavaScript APIであるthing.notifyを引数付きで呼び出すことで行う。thing.notifyはWebサーバ部57に値を渡すための関数である。複数のWeb APIアクセスがあった場合でも、対応するWeb APIアクセスに対して結果を応答する必要があるため、識別するための情報として、デバイスドライバ呼び出し時に引数として与えたWeb API識別情報"1"を引数として追加している。したがって、この方式の場合、Webサーバ部57はWeb APIアクセスにより設立されたセッションとWeb API識別情報を対応付けて記憶しておく。なお、JavaScriptで記述されたデバイスドライバ55を動的に入れ替える方法を用いたために、Web API識別情報を使用する方法で説明したが、デバイスドライバ55からの応答を適切にWeb APIアクセスの応答として返すことができればよいため、この方法には限られない。
Webサーバ部57は得られた結果を、対応するクライアント7からのWeb API呼び出しに対する応答として送信する(ステップS18)。この例では、正しく値が変更された(点灯した)ことを示すために、{"value":true}を応答している。
以上の処理により、クライアント7からのアクセスを、発見したデバイス6に応じてゲートウェイする機能を自動構成する仕組を実現することができる。
<第2の実施例>
第1の実施例では、提供機能情報をドライバストア2から取得する方法を説明したが、この情報が、取得したデバイスドライバ55に含まれていてもよい。例えば、デバイスドライバ55がzipファイル化されていて、2つのファイル(デバイスドライバのファイルと提供機能情報のファイル)が同時に取得できるのでもよい。また、デバイスドライバ55の中にその情報を取得するためのAPIが定義されていてもよいし、デバイスドライバ55のコードをパーズして、その結果から作成できてもよい。
図9は第2の実施例においてデバイスドライバ55から提供機能情報を取得する例を示す図である。図9(a)は、デバイスドライバ55の中でgetInfo関数を定義していて、デバイスドライバ55の配備後にそのgetInfo関数を実行することで提供機能情報を取得することができる。図9(b)は、デバイスドライバ55の中に、コメントとしてAPIの情報が書かれており、これから提供機能情報を取得(抽出)することができる。コメントアウトした部分に書かれた内容からAPIの仕様を取得することは、例えば、Java言語のJavadocという、コメントを元にAPI仕様書を作成する技術で使われており、同様の手法により実現することができる。
図10は第2の実施例におけるサーバ側とやりとりする処理の例を示すフローチャートであり、デバイスドライバ55から提供機能情報を取得する処理を含み、図4のステップS101〜S107に置き換わるものである。他の処理は図4と同様である。システム構成および機能構成についても図1および図2と同様である。
図10の処理は、図4のステップS103の処理が除去されるとともに、ステップS104の処理の後に、提供機能情報を取得するためのAPI呼び出しまたはドライバパーズの処理(ステップS204)が挿入された点が異なる。ステップS201は図4のステップS101に、ステップS202は図4のステップS102に、ステップS203は図4のステップS104に、ステップS205は図4のステップS105に、ステップS206は図4のステップS106に、ステップS207は図4のステップS107に、それぞれ対応している。
<第3の実施例>
第1の実施例では、提供機能情報の取得とデバイスドライバ55の取得を、デバイス6の発見をトリガとして行ったが、それに限定されない。ここでは、提供機能情報が別のトリガで行われる例を説明する。
例えば、Bluetoothでは、対応機器同士を接続するための事前手続きとしてペアリングという処理が規定されている。なお、Classic Bluetoothとも呼ばれるBluetooth 4.0以前の仕様では、ペアリングをすることが必須であり、Bluetooth 4.0以降(BLEを含む)では、ペアリングは必須ではない。ペアリングは、異なる機器に接続することを防ぐ仕組みであり、通常、片方の機器をペアリングモードにしたうえで、もう一方の機器からスキャンをして相手の機器を確認し、ユーザがPIN(Personal Identification Number)の入力やPINの確認をすることで行う。デバイスの発見時ではなく、このペアリング処理時に提供機能情報の取得とデバイスドライバの取得を行ってもよい。
また、ユーザによる設定や、他の機器からの要求をトリガとして提供機能情報の取得とデバイスドライバの取得を行ってもよい。図11はユーザ設定をトリガとして提供機能情報の取得とデバイスドライバの取得を行う処理例を示しており、図4のステップS101〜S107に置き換わるものである。他の処理は図4と同様である。システム構成については図1と同様である。機能構成については、ドライバストア2がゲートウェイUIを表示するための一覧情報を保持し、ゲートウェイ機能管理部53がその取得を行ってゲートウェイUIを提供する機能が追加される以外は図2と同様である。
図11において、ゲートウェイ5においてユーザ操作に応じてユーザ設定が開始されると(ステップS301)、ゲートウェイ機能管理部53は、ドライバストア2から一覧情報を取得する(ステップS302)。一覧情報には、サービスUUIDやデバイスを識別するためのIDが含まれている。図12(a)は一覧情報の例を示しており、「ヘルスケア」という分類の下に「血圧サービス」等が含まれ、その下に「血圧計A(A社)」等が含まれることを示している。なお、「ヘルスケア」の他に「家電操作」等の分類が並列に存在する。
図11に戻り、ゲートウェイ機能管理部53は、取得した一覧情報に基づいてゲートウェイUI(User Interface)を表示してユーザから選択を受け付けて設定を行う(ステップS303)。図12(b)はゲートウェイUIの例を示しており、左の画面から「ヘルスケア」が選択され、中央の画面から「血圧サービス」が選択され、右の画面から「血圧計A(A社)」が選択された状態を示している。
図11に戻り、ゲートウェイ機能管理部53は、ユーザ設定されたデバイスに対応する提供機能情報をドライバストア2から取得する(ステップS304)。その後のステップS305〜S308の処理は、図4のステップS104〜S107と同様である。
なお、設定のためのUIをゲートウェイ5自身が提供する場合について説明したが、ゲートウェイ5がサーバとなってPCやスマートフォンなどの別の機器から設定を行うことができるようになっていてもよい。また、単純に、UIを使わずに、サーバからの要求に応じて指定された提供機能情報とデバイスドライバを取得するようにしてもよい。
<第4の実施例>
第1の実施例では、クライアント7がゲートウェイ5へのアクセス方法としての機器情報を取得する手段として、デバイスレポジトリ3を使用した。しかし、その方法に限られず、機器情報は、ゲートウェイ5のWebサーバ部57がWeb APIを提供するのと同様に、ゲートウェイ5が提供してもよい。その場合には、機器情報を取得するための方法をクライアント7が知る必要がある。それを伝える方法として、機器情報をデバイスレポジトリ3に登録する代わりに、デバイスレポジトリ3に機器情報アクセス用のURLを登録する方法や、UPnPなどのデバイス発見技術と同様にマルチキャストを使ってローカルネットワーク内の機器にURLを伝える方法、近距離無線(例えばNFC(Near Field Communication)など)を使ってURLを伝える方法がある。
図13は第4の実施例における処理例を示すフローチャートである。システム構成については図1と同様である。機能構成については、ゲートウェイ5が機器情報59を保持し、ゲートウェイ機能管理部53が機器情報を提供する機能が追加される以外は図2と同様である。
図13において、図4の処理と異なるのは、サーバ側とのやりとりとしては、ステップS407において機器情報を登録する先がゲートウェイ5内の機器情報59になる点と、ステップS408において機器情報アクセス用の機器情報URLを生成してデバイスレポジトリ3に登録する点である。また、クライアント7側の処理としては、ステップS411においてデバイスレポジトリ3から取得するのが機器情報URLになる点と、ステップS412において機器情報URLに基づいてゲートウェイ5から機器情報を取得する点である。ゲートウェイ5側は、ステップS414、S415において機器情報の取得のためのアクセスなのかWeb APIアクセスなのかを判断して処理を分岐する点と、ステップS416においてゲートウェイ機能管理部53が機器情報を提供する点である。他の処理は図4と同様である。
マルチキャストや近距離無線を使う場合は、ステップS408のゲートウェイ5による機器情報URL登録およびステップS411のクライアント7による機器情報URL取得が、デバイスレポジトリ3を経由する代わりに、マルチキャストや近距離無線を使うことになる。
<第5の実施例>
これまで説明した実施例では、デバイスドライバ55の取得後にクライアント7は機器情報を取得可能になったが、機器情報の取得はデバイスドライバ55の取得前でもかまわない。その代わり、デバイスドライバ55の取得前にクライアント7がデバイス6にアクセスする可能性があるため、ゲートウェイ5はデバイスドライバ55を配備していない状態で応答をする必要がある。Bluetooth搭載のデバイス6では、省電力を実現するために、測定後にのみ一定時間(例えば1分)だけ発見されるためのアドバタイズを行う血圧計などが存在する。デバイス6がアドバタイズを始める前に、クライアント7が機器情報にアクセスできることで、例えば、血圧計の存在をユーザに通知して、血圧測定を促すようなことが可能になる。
図14は第5の実施例における処理例を示すフローチャートである。システム構成については図1と同様である。機能構成については、ゲートウェイ5がデフォルト値情報510を保持し、ゲートウェイ機能管理部53がURLをパスと対応させずにURL対応表56に登録し、デバイスドライバ55の取得後にURLにパスを対応付ける機能が追加され、Webサーバ部57がURLに対応するパスがない場合にデフォルト値を取得して応答する機能が追加される以外は図2と同様である。
図14において、ステップS501〜S504の処理は、図11に示した第3の実施例のステップS301〜S304と同様に行っている。なお、提供機能情報はこれまでの実施例のものを拡張し、デフォルト値を含んだものとしている。図15は拡張した提供機能情報の例を示しており、デフォルト値"default"を含んでいる。図示の例の"rgbValueWhite"については"outputData": "xsd:unsignedByte"に対応させて"0"が設定され、"ledOnOff"については"outputData": "xsd:boolean"に対応させて"true"が設定されている。
図14に戻り、ゲートウェイ機能管理部53は、提供機能情報に含まれるデフォルト値を、後で応答するときに使うためにデフォルト値情報510に登録する(ステップS505)。次いで、ゲートウェイ機能管理部53はURLを作成するが、デバイスドライバ55はまだ配備しておらず、対応するパスはないため、URLだけをURL対応表56に登録する(ステップS506)。次いで、ゲートウェイ機能管理部53は、機器情報を生成し(ステップS507)、生成した機器情報をデバイスレポジトリ3に登録する(ステップS508)。この結果、クライアント7はデバイスレポジトリ3から機器情報を取得して、Web APIにアクセスできるようになる。
その後、ゲートウェイ機能管理部53は、デバイススキャンを行い(ステップS509)、デバイス6を発見した場合(ステップS510のYes)、デバイスドライバ55の取得および配備を行い(ステップS511)、URL対応表56のURLにパスを対応付ける(ステップS512)。
一方、クライアント7からのアクセスについては、URLからパスの取得を試み(ステップS525)、パスがあるか否か判断し(ステップS526)、ない場合はデフォルト値情報510からデフォルト値を取得(ステップS527)して応答(ステップS531)する以外は、図4のステップS111〜S120と同様である。
なお、応答するデフォルト値は、提供機能情報として提供されている値を使用したが、提供機能情報を使わずに、単にエラーコードを返すような実装もありうる。例えば、{"error": true, "description": "no connection error"}のような、どのWeb APIが呼ばれても、同じ応答を返してもよい。
<第6の実施例>
これまで説明した実施例は、デバイス6が発見されて、それ以降、利用可能な状態であるところまでについて記述した。ここでは、デバイス6が存在しなくなった場合について述べる。Bluetoothなどで接続されるデバイス6は、省電力を実現するために、発見のためのアドバタイズを一定時間して、発見・接続された後、しばらく経つと、ネットワーク機能をオフにする血圧計などが存在する。このような機器の場合は、切断に応じた処理が必要である。
図16は第6の実施例における処理例を示すフローチャートであり、デバイス消失時の処理である。なお、この処理の前提として、第1の実施例の仕組みにより、デバイススキャンによりデバイス6を発見して、機器情報をデバイスレポジトリ3経由で公開しているとする。
図16において、ゲートウェイ5のゲートウェイ機能管理部53は、デバイス6の消失を判断するために、デバイススキャンをする(ステップS601)。そして、発見済みでデバイスドライバ55を配備しているデバイス6が消失しているかどうかを判定する(ステップS602)。消失している場合(ステップS602のYes)、そのデバイス6に接続中であるか判定する(ステップS603)。多くのデバイス6では、デバイス6が接続された後、アドバタイズを止めるため、デバイスに接続している間は、デバイススキャンを行ったとしても、発見できない。そのためにこのチェックが必要である。
そして、デバイス6が消失しており接続中でない場合(ステップS603のNo)、ゲートウェイ機能管理部53は、デバイスレポジトリ3に登録した機器情報の削除要求を行い(ステップS604)、デバイスレポジトリ3は登録した機器情報を削除する。なお、登録した機器情報を削除するために、機器情報が持つ名前を指定して行ってもよいし、ゲートウェイ5もしくはデバイスレポジトリ3がその機器情報用のIDを生成して、それを管理しておき、IDを指定することで削除してもよい。また、デバイスレポジトリ3は、その機器情報の削除に応じて、クライアント7に通知する(ステップS614)。この通知についても、名前やIDを通知することでクライアント7はどのデバイス6がアクセスできなくなったのかを判定することができる。クライアント7は、それまでのWeb API呼び出しの処理(ステップS611〜S613)の後に機器情報の削除の通知を受けると(ステップS614)、ユーザに使えなくなった旨などを通知する(ステップS615)。
次いで、ゲートウェイ5のゲートウェイ機能管理部53は、自身の内部から機器情報を削除した後、配備したデバイスドライバ55を削除し(ステップS605)、URL対応表56に登録したURLとパスの対応情報を削除する(ステップS606)。URLとパスの対応付けがなくなったことにより、もしクライアント7がWeb APIにアクセスしてきたとしても、対応するパスを取得できないことから、現在提供していないWeb APIであることが判断することができる。そのため、Web APIの提供を終了した状態になる。これにより、デバイス6の消失時の対応を実現することができる。
なお、第5の実施例で述べた方法と合わせて、デバイスドライバ55の配備/削除と機器情報の登録/削除のタイミングを別にしてもよい。図16では、機器情報の削除処理を行ったが、これに関しては、例えば、ユーザの設定の変更により、設定・削除を行うとし、デバイスドライバ55については、発見・消失に合わせて行うようにすることができる。ユーザの設定の変更については、第3の実施例で説明した方法を使用することができる。図12(b)では設定をするためのUIを示したが、例えば、このチェックを外すタイミングで機器情報の削除処理を行えばよい。そして、デバイス6の消失時には、機器情報の削除は行わずにデバイスドライバ55の削除とURL/パスの削除のうち、パスの削除のみを行う。これにより、第5の実施例で述べたURL作成した結果だけが登録された状態、すなわち、デバイスドライバ55の取得前の状態となる。以降は、第5の実施例と同様に動作する。
<第7の実施例>
ここまで説明した実施例では、Web APIとして提供するデバイスと実デバイス/デバイスドライバが1対1で、さらに、デバイスドライバ55が提供する機能をWeb APIとして提供するだけであった。しかし、それらの関係は1対1に限られず、また、デバイスドライバ55では提供できない機能を追加することができる。
まず、一つのデバイス6が複数の機能を提供しており、その結果として、複数の機器情報を提供する場合を考える。例えば、腕時計型デバイスが、体温計機能と脈拍測定機能の両方の機能を持っている、といった場合である。このような場合は、この2つの機能を1つのデバイスとして見せてもよいが、体温計デバイスと脈拍測定デバイスの2つのデバイスとして、クライアント7に見せても構わない。第1の実施例では、どの提供機能情報を取得するかを決めるために、アドバタイジングパケットのサービスUUIDを利用した。デバイス6が複数の機能を提供する場合は、アドバタイジングパケットには複数のサービスUUIDが記述されている。したがって、この複数分の提供機能情報を取得すればよい。しかし、デバイス自体は1つであるため、デバイスドライバ55は1つである。したがって、作成するURLは提供機能情報の数にしたがって2つになるが、それに対応付けられるデバイスドライバ55は1つであるため、それらの機能に対応するWeb APIはそれぞれ異なるURLではあるが、同じパスを使って呼び出すことになる。したがって、URL対応表56のパスに同じ情報が入ることになる。
なお、それ以外に、複数のデバイス6を組み合わせてマッシュアップした機能を1つのWeb APIで見せたり、デバイスドライバ55では提供できない機能を追加したりするためにデバイスドライバ55を制御するアプリを合わせて配備することができる。マッシュアップとは、例えば、Web APIとして目覚ましAlarmを提供する場合に、存在するデバイスによって何によって通知するのか(時計デバイス、音楽プレイヤ、カーテン自動開閉機構、それらの組み合わせなど)が変わるようにすることである。ゲートウェイ5がデバイス6個々へのWeb APIを提供して、クライアント7側でマッシュアップしてもよいが、ゲートウェイ5側で取りまとめることで、その目覚まし設定された時間にクライアント7がひとつずつ制御するのではなく、ゲートウェイ5側に事前に設定しておくことで、クライアント7は目覚まし設定された時間にはアクセスする必要がなくなる。また、前述したように、省電力を実現するために、ネットワーク機能を常時提供していないデバイスが存在する。そのようなデバイスへのキャッシュ情報をアプリに蓄えておくことができれば、クライアント7はいつでもデバイスの情報にアクセスできるようになる。以下、この場合の処理について説明する。
図17は第7の実施例における処理例を示すフローチャートである。この例では、第5の実施例と同様に提供機能情報の取得はユーザ設定によって行うものをベースにしている。また、本実施例では、ドライバストア2がゲートウェイアプリも提供するものとしてゲートウェイアプリ/ドライバストア2'に拡張されている。また、ゲートウェイ5のドライバ管理部54(またはゲートウェイ機能管理部53)はゲートウェイアプリの取得および配備を行うように拡張されている。
図17において、提供機能情報の取得まで(ステップS701〜S704)は、第5の実施例と同様である。そして、ドライバ管理部54は、提供機能情報を取得するのに合わせてゲートウェイアプリを取得して配備する(ステップS705)。デバイスドライバはある固有のデバイスに対応付けられているのに対して、ゲートウェイアプリは固有のデバイスに対応付けられておらず、デバイスドライバ経由でデバイスにアクセスするものである。一方で、デバイスドライバと同様に、Webサーバ部57と連携してクライアント7からのWeb APIアクセスをもとに呼び出されることができる。
ゲートウェイアプリが配備された後、ゲートウェイ機能管理部53は、提供機能情報に対応するURLを作成した後、配備したゲートウェイアプリを呼び出すためのパスを対応付けてURL対応表56に登録する(ステップS706)。そして、ゲートウェイ機能管理部53は、提供機能情報に対応する機器情報を生成して(ステップS707)、デバイスレポジトリ3に登録する(ステップS708)。そして、ゲートウェイ機能管理部53は、デバイススキャンを行い(ステップS709)、デバイス6を発見した場合(ステップS710のYes)、デバイスドライバ55を取得して配備する(ステップS711)。また、デバイス6を発見してデバイスドライバ55を配備したことを受けて、ゲートウェイアプリにそのデバイスドライバ55を呼び出すためのパスを伝える。これにより、ゲートウェイアプリはデバイスドライバ55を呼び出すことができるようになる。
そして、クライアント7がデバイスレポジトリ3から機器情報を取得し(ステップS721)、API呼び出しを行い(ステップS722)、ゲートウェイ5のWebサーバ部57が、クライアント7からのWeb APIへのアクセスを受けると(ステップS723、S724)、URL対応表56からパスを取得する(ステップS725)。取得したパスは、デバイスドライバ55へのパスではなく、ゲートウェイアプリへのパスであり、このパスを通して、ゲートウェイアプリを呼び出す(ステップS726)。ゲートウェイアプリを呼び出す時の変換方法は、これまでの実施例のデバイスドライバ55を呼び出す時の変換方法と同じである。ゲートウェイアプリは、その呼び出しに応じて、必要であれば、デバイスドライバ55にアクセスする(ステップS727)。デバイスドライバ55はデバイス6にアクセスして(ステップS728、S729)、デバイス6からの応答をゲートウェイアプリに返す。ゲートウェイアプリは、Web API呼び出しに対する応答を返し、Webサーバ部57はクライアント7に応答を返し(ステップS730)、クライアント7はAPI呼び出し結果を受信する(ステップS731)。例えば、ゲートウェイアプリにキャッシュ機能が実装されていた場合であれば、デバイス6が見つからない場合、つまり、デバイスドライバ55が配備されておらず、デバイスドライバ55へのパスがない場合には、ゲートウェイアプリは、デバイスドライバ55にアクセスすることなく、以前に取得した値を返す。デバイス発見後は、デバイスドライバ55経由でデバイス6から情報を取得して、その取得した情報を記憶しておくことになる。
<第8の実施例>
デバイスドライバを介在することによりデバイスの違いを吸収した上で、Web APIを提供することが可能である。しかし、クライアントが、デバイス特有の機能を使いたい場合もありうる。一つの方法としては、機器情報には、すべてのデバイス特有の機能用のWeb APIも用意しておく方法である(1)。そして、その機能を持っていないデバイスを使っている場合は、その機能に対するWeb APIアクセスに対して、例えば、エラーを返す。これであれば、これまでに述べた実施例で実現できている。もう一つの方法は、別のデバイスとして扱う方法である(2)。デバイスレポジトリには別のデバイスとしてそれぞれの機器情報を登録する。クライアントからは、別のデバイスとしてアクセスでき、それぞれの独自機能を利用可能である。さらにもう一つの方法は、同じデバイスとして取り扱うが、発見したデバイスが以前発見したデバイスと異なる独自機能を持つ場合に、機器情報を更新する方法である(3)。(1)と(2)についてはこれまでの実施例で実現できるため、(3)について以下に説明する。
図18は第8の実施例における処理例を示すフローチャートである。図18において、最初の機器情報の登録まで(ステップS801)は、第5の実施例と同様でよい。次いで、ゲートウェイ機能管理部53は、デバイススキャンを行い(ステップS802)、デバイス6を発見した場合(ステップS803のYes)、ドライバストア2から独自提供機能情報を取得する(ステップS804)。独自提供機能情報は提供機能情報と同じフォーマットでよい。
そして、ゲートウェイ機能管理部53は、作成済みの機器情報に対してこの独自提供機能分のAPI情報を追加することで機器情報を更新し、デバイスレポジトリ3上にある機器情報についても更新を行う(ステップS805)。デバイスレポジトリ3は、機器情報の更新を受けて、クライアント7に通知し、クライアント7は受信する(ステップS822)。これらは、第6の実施例として述べたデバイスの消失時と、更新か削除かの違いだけであり、動作自体は同様でよい。
そして、ゲートウェイ機能管理部53は、デバイスドライバ55を取得して配備し(ステップS806)、URL対応表56を新たなデバイスドライバ55へのパスに更新することで(ステップS807)、クライアント7はデバイス独自の機能にWeb APIを通してアクセス可能になる。すなわち、APIアクセスに対するゲートウェイ5の処理(ステップS813〜S820)は第5の実施例と同様であり(デフォルト値の取得は省略)、クライアント7は、最初は機器情報を取得しAPI呼び出しを行って結果を受信する(ステップS811、S812、S821)。機器情報の更新通知を受けると(ステップS822)、機器情報を更新し(ステップS823)、それに基づいてAPI呼び出しを行い(ステップS824)、結果を受信する(ステップS825)。なお、ここでは、一つの機器情報に共通機能と独自機能の両方を記述し、クライアント7からは一つのデバイスとして扱う場合を説明したが、共通機能と独自機能を別のデバイスとして取り扱い、2つの機器情報を提供する仕組みにしてもかまわない。
<総括>
以上説明したように、本実施形態によれば、ユーザに負担をかけることなくゲートウェイでのデバイスドライバを動的に配備することができる。
以上、好適な実施の形態により説明した。ここでは特定の具体例を示して説明したが、特許請求の範囲に定義された広範な趣旨および範囲から逸脱することなく、これら具体例に様々な修正および変更を加えることができることは明らかである。すなわち、具体例の詳細および添付の図面により限定されるものと解釈してはならない。
以上の説明に関し、更に以下の項を開示する。
(付記1)
デバイスに対応するデバイスドライバを取得して配備する手段と、
クライアントから前記デバイスの機能を呼び出すためのアドレスを生成し、前記デバイスドライバへのパスと対応付けて登録する手段と、
デバイスごとの提供する機能が記述された第1の情報と前記アドレスから、前記デバイスの機能と前記アドレスを含む第2の情報を生成して登録する手段と、
を備えたことを特徴とする情報処理装置。
(付記2)
前記クライアントから前記第2の情報に基づく機能の呼び出しを受け付けた場合に、呼び出しを受けたアドレスに対応するデバイスドライバに呼び出しを変換して送信する手段と、
前記デバイスドライバから機能の呼び出しに対する結果を受信し、結果を変換して前記クライアントに送信する手段と、
を備えたことを特徴とする付記1に記載の情報処理装置。
(付記3)
前記第1の情報を前記デバイスドライバとは別に取得する手段、または、前記第1の情報を前記デバイスドライバを介して取得する手段、
を備えたことを特徴とする付記1または2に記載の情報処理装置。
(付記4)
前記第1の情報または前記デバイスドライバの取得を、周辺に存在するデバイスの発見、ペアリングの設定、ユーザによる設定、または、他の機器からの要求、のいずれかをトリガとして行う、
ことを特徴とする付記1乃至3のいずれか一項に記載の情報処理装置。
(付記5)
前記第2の情報を、前記クライアントが共通に参照する第1のサーバ、または、前記デバイスの機能の呼び出しを受け付ける第2のサーバに登録し、該第2のサーバに登録する場合は、前記第2の情報を取得するための参照アドレスを、前記第1のサーバに登録するか、または、周辺のクライアントに対して報知する、
ことを特徴とする付記1乃至4のいずれか一項に記載の情報処理装置。
(付記6)
前記呼び出しを受けたアドレスに対応するデバイスドライバが配備されていない場合、前記第1の情報で規定された値またはエラーを応答する手段、
を備えたことを特徴とする付記2に記載の情報処理装置。
(付記7)
前記デバイスが発見できなくなったことまたは前記デバイスとの接続が切断されたことをトリガとして、配備した前記デバイスドライバの削除、前記アドレスと前記デバイスドライバへのパスとの対応付けの削除、前記デバイスの機能の呼び出しの受け付けの終了、または、前記第2の情報の削除、を行う、
ことを特徴とする付記1乃至6のいずれか一項に記載の情報処理装置。
(付記8)
前記デバイスの機能を補助するアプリを取得する手段と、
前記デバイスドライバへのパスに代えて前記アプリへのパスを登録する手段と、
前記アプリと前記デバイスドライバとを対応付ける手段と、
を備えたことを特徴とする付記1乃至7のいずれか一項に記載の情報処理装置。
(付記9)
前記クライアントから機能の呼び出しを受け付けた場合に、前記第2の情報に含まれる機能であるか否かを確認し、含まれる機能である場合に処理を継続する、
ことを特徴とする付記2に記載の情報処理装置。
(付記10)
前記デバイスが発見できなくなり、他のデバイスが発見され、機能に差分がある場合に、該差分に応じて前記第2の情報を更新する手段、
を備えたことを特徴とする付記1乃至9のいずれか一項に記載の情報処理装置。
(付記11)
デバイスに対応するデバイスドライバを取得して配備し、
クライアントから前記デバイスの機能を呼び出すためのアドレスを生成し、前記デバイスドライバへのパスと対応付けて登録し、
デバイスごとの提供する機能が記述された第1の情報と前記アドレスから、前記デバイスの機能と前記アドレスを含む第2の情報を生成して登録する、
処理をコンピュータに実行させることを特徴とする情報処理プログラム。
(付記12)
前記クライアントから前記第2の情報に基づく機能の呼び出しを受け付けた場合に、呼び出しを受けたアドレスに対応するデバイスドライバに呼び出しを変換して送信し、
前記デバイスドライバから機能の呼び出しに対する結果を受信し、結果を変換して前記クライアントに送信する、
ことを特徴とする付記11に記載の情報処理プログラム。
(付記13)
前記第1の情報を前記デバイスドライバとは別に取得し、または、前記第1の情報を前記デバイスドライバを介して取得する、
ことを特徴とする付記11または12に記載の情報処理プログラム。
(付記14)
前記第1の情報または前記デバイスドライバの取得を、周辺に存在するデバイスの発見、ペアリングの設定、ユーザによる設定、または、他の機器からの要求、のいずれかをトリガとして行う、
ことを特徴とする付記11乃至13のいずれか一項に記載の情報処理プログラム。
(付記15)
前記第2の情報を、前記クライアントが共通に参照する第1のサーバ、または、前記デバイスの機能の呼び出しを受け付ける第2のサーバに登録し、該第2のサーバに登録する場合は、前記第2の情報を取得するための参照アドレスを、前記第1のサーバに登録するか、または、周辺のクライアントに対して報知する、
ことを特徴とする付記11乃至14のいずれか一項に記載の情報処理プログラム。
(付記16)
前記呼び出しを受けたアドレスに対応するデバイスドライバが配備されていない場合、前記第1の情報で規定された値またはエラーを応答する、
ことを特徴とする付記12に記載の情報処理プログラム。
(付記17)
前記デバイスが発見できなくなったことまたは前記デバイスとの接続が切断されたことをトリガとして、配備した前記デバイスドライバの削除、前記アドレスと前記デバイスドライバへのパスとの対応付けの削除、前記デバイスの機能の呼び出しの受け付けの終了、または、前記第2の情報の削除、を行う、
ことを特徴とする付記11乃至16のいずれか一項に記載の情報処理プログラム。
(付記18)
前記デバイスの機能を補助するアプリを取得し、
前記デバイスドライバへのパスに代えて前記アプリへのパスを登録し、
前記アプリと前記デバイスドライバとを対応付ける、
ことを特徴とする付記11乃至17のいずれか一項に記載の情報処理プログラム。
(付記19)
前記クライアントから機能の呼び出しを受け付けた場合に、前記第2の情報に含まれる機能であるか否かを確認し、含まれる機能である場合に処理を継続する、
ことを特徴とする付記12に記載の情報処理プログラム。
(付記20)
前記デバイスが発見できなくなり、他のデバイスが発見され、機能に差分がある場合に、該差分に応じて前記第2の情報を更新する、
ことを特徴とする付記11乃至19のいずれか一項に記載の情報処理プログラム。
(付記21)
デバイスに対応するデバイスドライバを取得して配備し、
クライアントから前記デバイスの機能を呼び出すためのアドレスを生成し、前記デバイスドライバへのパスと対応付けて登録し、
デバイスごとの提供する機能が記述された第1の情報と前記アドレスから、前記デバイスの機能と前記アドレスを含む第2の情報を生成して登録する、
処理をコンピュータが実行することを特徴とする情報処理方法。
(付記22)
前記クライアントから前記第2の情報に基づく機能の呼び出しを受け付けた場合に、呼び出しを受けたアドレスに対応するデバイスドライバに呼び出しを変換して送信し、
前記デバイスドライバから機能の呼び出しに対する結果を受信し、結果を変換して前記クライアントに送信する、
ことを特徴とする付記21に記載の情報処理方法。
(付記23)
前記第1の情報を前記デバイスドライバとは別に取得し、または、前記第1の情報を前記デバイスドライバを介して取得する、
ことを特徴とする付記21または22に記載の情報処理方法。
(付記24)
前記第1の情報または前記デバイスドライバの取得を、周辺に存在するデバイスの発見、ペアリングの設定、ユーザによる設定、または、他の機器からの要求、のいずれかをトリガとして行う、
ことを特徴とする付記21乃至23のいずれか一項に記載の情報処理方法。
(付記25)
前記第2の情報を、前記クライアントが共通に参照する第1のサーバ、または、前記デバイスの機能の呼び出しを受け付ける第2のサーバに登録し、該第2のサーバに登録する場合は、前記第2の情報を取得するための参照アドレスを、前記第1のサーバに登録するか、または、周辺のクライアントに対して報知する、
ことを特徴とする付記21乃至24のいずれか一項に記載の情報処理方法。
(付記26)
前記呼び出しを受けたアドレスに対応するデバイスドライバが配備されていない場合、前記第1の情報で規定された値またはエラーを応答する、
ことを特徴とする付記22に記載の情報処理方法。
(付記27)
前記デバイスが発見できなくなったことまたは前記デバイスとの接続が切断されたことをトリガとして、配備した前記デバイスドライバの削除、前記アドレスと前記デバイスドライバへのパスとの対応付けの削除、前記デバイスの機能の呼び出しの受け付けの終了、または、前記第2の情報の削除、を行う、
ことを特徴とする付記21乃至26のいずれか一項に記載の情報処理方法。
(付記28)
前記デバイスの機能を補助するアプリを取得し、
前記デバイスドライバへのパスに代えて前記アプリへのパスを登録し、
前記アプリと前記デバイスドライバとを対応付ける、
ことを特徴とする付記21乃至27のいずれか一項に記載の情報処理方法。
(付記29)
前記クライアントから機能の呼び出しを受け付けた場合に、前記第2の情報に含まれる機能であるか否かを確認し、含まれる機能である場合に処理を継続する、
ことを特徴とする付記22に記載の情報処理方法。
(付記30)
前記デバイスが発見できなくなり、他のデバイスが発見され、機能に差分がある場合に、該差分に応じて前記第2の情報を更新する、
ことを特徴とする付記21乃至29のいずれか一項に記載の情報処理方法。
1 ネットワーク
2 ドライバストア
2' ゲートウェイアプリ/ドライバストア
3 デバイスレポジトリ
4 アクセスポイント
5 ゲートウェイ
51、52 ネットワークインタフェース
53 ゲートウェイ機能管理部
54 ドライバ管理部
55 デバイスドライバ
56 URL対応表
57 Webサーバ部
58 ドライバ/Webサーバ間接続・変換管理部
59 機器情報
510 デフォルト値情報
6、6A、6B デバイス
7 クライアント
71 アプリ

Claims (11)

  1. デバイスに対応するデバイスドライバを取得して配備する手段と、
    クライアントから前記デバイスの機能を呼び出すためのアドレスを生成し、前記デバイスドライバへのパスと対応付けて登録する手段と、
    デバイスごとの提供する機能が記述された第1の情報と前記アドレスから、前記デバイスの機能と前記アドレスを含む第2の情報を生成して、前記デバイスの機能の呼び出しを受け付ける第2のサーバに登録する手段と、
    前記第2の情報を取得するための参照アドレスを、前記クライアントが共通に参照する第1のサーバに登録するか、または、周辺のクライアントに対して報知する手段と、
    を備えたことを特徴とする情報処理装置。
  2. 前記クライアントから前記第2の情報に基づく機能の呼び出しを受け付けた場合に、呼び出しを受けたアドレスに対応するデバイスドライバに呼び出しを変換して送信する手段と、
    前記デバイスドライバから機能の呼び出しに対する結果を受信し、結果を変換して前記クライアントに送信する手段と、
    を備えたことを特徴とする請求項1に記載の情報処理装置。
  3. 前記第1の情報を前記デバイスドライバとは別に取得する手段、または、前記第1の情報を前記デバイスドライバを介して取得する手段、
    を備えたことを特徴とする請求項1または2に記載の情報処理装置。
  4. 前記第1の情報または前記デバイスドライバの取得を、周辺に存在するデバイスの発見、ペアリングの設定、ユーザによる設定、または、他の機器からの要求、のいずれかをトリガとして行う、
    ことを特徴とする請求項1乃至3のいずれか一項に記載の情報処理装置。
  5. 前記呼び出しを受けたアドレスに対応するデバイスドライバが配備されていない場合、前記第1の情報で規定された値またはエラーを応答する手段、
    を備えたことを特徴とする請求項2に記載の情報処理装置。
  6. 前記デバイスが発見できなくなったことまたは前記デバイスとの接続が切断されたことをトリガとして、配備した前記デバイスドライバの削除、前記アドレスと前記デバイスドライバへのパスとの対応付けの削除、前記デバイスの機能の呼び出しの受け付けの終了、または、前記第2の情報の削除、を行う、
    ことを特徴とする請求項1乃至のいずれか一項に記載の情報処理装置。
  7. 前記デバイスの機能を補助するアプリを取得する手段と、
    前記デバイスドライバへのパスに代えて前記アプリへのパスを登録する手段と、
    前記アプリと前記デバイスドライバとを対応付ける手段と、
    を備えたことを特徴とする請求項1乃至のいずれか一項に記載の情報処理装置。
  8. 前記クライアントから機能の呼び出しを受け付けた場合に、前記第2の情報に含まれる機能であるか否かを確認し、含まれる機能である場合に処理を継続する、
    ことを特徴とする請求項2に記載の情報処理装置。
  9. 前記デバイスが発見できなくなり、他のデバイスが発見され、機能に差分がある場合に、該差分に応じて前記第2の情報を更新する手段、
    を備えたことを特徴とする請求項1乃至のいずれか一項に記載の情報処理装置。
  10. デバイスに対応するデバイスドライバを取得して配備し、
    クライアントから前記デバイスの機能を呼び出すためのアドレスを生成し、前記デバイスドライバへのパスと対応付けて登録し、
    デバイスごとの提供する機能が記述された第1の情報と前記アドレスから、前記デバイスの機能と前記アドレスを含む第2の情報を生成して、前記デバイスの機能の呼び出しを受け付ける第2のサーバに登録し、
    前記第2の情報を取得するための参照アドレスを、前記クライアントが共通に参照する第1のサーバに登録するか、または、周辺のクライアントに対して報知する、
    処理をコンピュータに実行させることを特徴とする情報処理プログラム。
  11. デバイスに対応するデバイスドライバを取得して配備し、
    クライアントから前記デバイスの機能を呼び出すためのアドレスを生成し、前記デバイスドライバへのパスと対応付けて登録し、
    デバイスごとの提供する機能が記述された第1の情報と前記アドレスから、前記デバイスの機能と前記アドレスを含む第2の情報を生成して、前記デバイスの機能の呼び出しを受け付ける第2のサーバに登録し、
    前記第2の情報を取得するための参照アドレスを、前記クライアントが共通に参照する第1のサーバに登録するか、または、周辺のクライアントに対して報知する、
    処理をコンピュータが実行することを特徴とする情報処理方法。
JP2016034642A 2016-02-25 2016-02-25 情報処理装置、情報処理プログラムおよび情報処理方法 Active JP6627568B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2016034642A JP6627568B2 (ja) 2016-02-25 2016-02-25 情報処理装置、情報処理プログラムおよび情報処理方法
EP17152769.0A EP3211865B1 (en) 2016-02-25 2017-01-24 Apparatus, method, and program for managing iot devices
US15/415,151 US10149266B2 (en) 2016-02-25 2017-01-25 Apparatus, method, and storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016034642A JP6627568B2 (ja) 2016-02-25 2016-02-25 情報処理装置、情報処理プログラムおよび情報処理方法

Publications (2)

Publication Number Publication Date
JP2017151799A JP2017151799A (ja) 2017-08-31
JP6627568B2 true JP6627568B2 (ja) 2020-01-08

Family

ID=58053976

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016034642A Active JP6627568B2 (ja) 2016-02-25 2016-02-25 情報処理装置、情報処理プログラムおよび情報処理方法

Country Status (3)

Country Link
US (1) US10149266B2 (ja)
EP (1) EP3211865B1 (ja)
JP (1) JP6627568B2 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170374154A1 (en) * 2016-06-23 2017-12-28 Hewlett Packard Enterprise Development Lp Generating a response to a client device in an internet of things domain
US10650621B1 (en) 2016-09-13 2020-05-12 Iocurrents, Inc. Interfacing with a vehicular controller area network
JP6639430B2 (ja) * 2017-01-31 2020-02-05 キヤノン株式会社 情報処理装置、制御方法およびプログラム
JP6566070B1 (ja) * 2018-03-23 2019-08-28 日本電気株式会社 フロー管理サーバ、フロー管理システム、フロー管理方法およびフロー管理プログラム
WO2019192722A1 (en) * 2018-04-06 2019-10-10 Telefonaktiebolaget Lm Ericsson (Publ) Thing description to resource directory mapping
WO2020052576A1 (en) * 2018-09-16 2020-03-19 U-Thing Technology Ltd Method and system for enabling usb devices to operate as internet of thing (iot) devices based on thing description model
CN111224797B (zh) * 2018-11-23 2023-03-10 杭州海康威视系统技术有限公司 一种设备接入方法、装置及电子设备
JP7283155B2 (ja) * 2019-03-19 2023-05-30 富士フイルムビジネスイノベーション株式会社 データ収集システム及びデータ収集方法
US11218374B2 (en) * 2019-07-30 2022-01-04 Microsoft Technology Licensing, Llc Discovery and resolution of network connected devices
US11558390B2 (en) 2020-07-01 2023-01-17 International Business Machines Corporation System to control access to web resources based on an internet of things authorization mechanism

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003131839A (ja) 2001-10-29 2003-05-09 Canon Inc ネットワークシステム、情報処理装置、情報処理方法、及び、制御プログラム
CN101484889B (zh) 2006-05-03 2011-12-28 克劳德系统有限公司 用于管理、路由和控制设备与设备间连接的系统和方法
JP4336721B2 (ja) * 2007-04-10 2009-09-30 シャープ株式会社 制御システム、プログラム、コンピュータ読み取り可能な記録媒体、画像装置制御システム
JP4936551B2 (ja) * 2007-11-16 2012-05-23 キヤノン株式会社 管理装置、管理方法、及びコンピュータプログラム
JP5893298B2 (ja) * 2011-08-31 2016-03-23 キヤノン株式会社 情報処理装置及びその制御方法、並びにプログラム
JP5980040B2 (ja) * 2012-08-10 2016-08-31 キヤノン株式会社 管理装置、管理装置の制御方法およびコンピュータプログラム
US10021220B2 (en) * 2015-11-02 2018-07-10 Adobe Systems Incorporated Object amalgamation based on categorization and protocol granularization

Also Published As

Publication number Publication date
US20170251325A1 (en) 2017-08-31
US10149266B2 (en) 2018-12-04
EP3211865B1 (en) 2021-01-20
EP3211865A1 (en) 2017-08-30
JP2017151799A (ja) 2017-08-31

Similar Documents

Publication Publication Date Title
JP6627568B2 (ja) 情報処理装置、情報処理プログラムおよび情報処理方法
US11368522B2 (en) Lightweight IoT information model
US10893403B2 (en) Deployment of proximity beacon drives
Appavoo et al. Indriya 2: A heterogeneous wireless sensor network (WSN) testbed
KR101478903B1 (ko) 인스턴스 호스팅 환경에서 노드의 프로파일에 기반하여 노드의 정보를 처리하기 위한 방법 및 시스템
KR101478902B1 (ko) 인스턴스 호스팅 환경에서 노드 별 특성에 따른 프로파일에 기초하여 서비스를 제공하는 방법 및 시스템
US11218855B2 (en) Managing interaction constraints
US20170026307A1 (en) System And Method For Remote Managing Applications In A Network Appliance
WO2022052758A1 (zh) 配网方法及设备
KR101723172B1 (ko) 사물 인터넷 서비스 제공 방법
JP2011170689A (ja) 情報処理装置、情報処理方法およびプログラム
JP2015210744A (ja) 固有情報送信システム、通信機器、通信機器用プログラム及び固有情報送信方法
US20150113099A1 (en) Method and device for making available a content, stored on a server in energy standby mode
JP2017175411A (ja) デバイス判別システム、情報端末、デバイス判別装置及びデバイス判別方法
Rodríguez Molina et al. A proposal for an internet of things-based monitoring system composed by low capability, open source and open hardware devices
JP2008310532A (ja) コマンド実行方法及びミドルデバイス
JP2006251893A (ja) アプリケーション取得方式及びアプリケーション取得方法及び記憶装置
JP2010067198A (ja) ドライバ更新システム
Tsoupos et al. Models for Plug-and-Play IoT Architectures
Le Smart Shopping System
JP2012137879A (ja) 認証情報設定システム
Björnström et al. Comparison and Implementation of Software Frameworks for Internet of Things
KR20140137495A (ko) 인스턴스 호스팅 환경에서의 외부 인터페이스 연결을 위한 서비스 제공 방법 및 서비스 제공 시스템

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20181112

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190730

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190903

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191023

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20191105

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20191118

R150 Certificate of patent or registration of utility model

Ref document number: 6627568

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150