Abstract:
A method in gateway node ( 100 ) for handling an address of a resource of a device ( 110 ) in a communications network, the method comprising: generating a first alias representing the address of the device ( 110 ) resource, storing the generated alias, in association with the address, receiving a request from an application ( 120 ) including the address of the device ( 110 ) resource, translating the address to the stored alias, and forwarding the request including the alias to the device ( 110 ), thereby enabling the device to resolve the request by use of the alias in said request.

Description:
TECHNICAL FIELD 
       [0001]    The present disclosure relates generally to methods and nodes for handling of an address of a resource of a device in a communications network. 
       BACKGROUND 
       [0002]    The usage of machine to machine communication is expected to grow. Typically machine to machine communication is defined as communication between machines, computers, computerized systems, etc, without human interaction. Further the number of devices connected to communication networks is expected to grow in the future. With an increasing number of connected devices, capable of communication, the machine to machine communication may take advantage of the connected devices. 
         [0003]    The devices may be providing a wide variety of features. In the area of home automation, devices may be providing sensor capabilities such as, sensing temperature, humidity, open/closed/locked doors or windows, energy meters, water meters and similar, as well as various actuators such as for turning on heater/cooler, switching lights or pumps on/off, and similar applications related to home automation. Another area that can use machine to machine communication is security and surveillance related to homes and offices. Various sensors such as motion sensors, smoke detectors, cameras, etc, are connected to local or central security systems, which in turn are connected to actuators such as sirens, sprinklers, speakers, etc. Another area is automotive where vehicles may include a wide range of different kind of sensors and actuates. Another area is transportation and logistics where both logistics centers as well as vehicles for transportation may contain both sensors and actuators for tracking of or creation of documents at certain toll gates. Material and goods may contain sensors and/or actuators, for example to monitor or control that certain quality requirements are fulfilled, such as temperature or mechanical shock. 
         [0004]    Today&#39;s technology may provide substantial computing power through various processors integrated into CPU&#39;s (Central Processing Units) or other types of integrated chips. Further, it is possible to meet various bandwidth needs both through wired as well as wireless technologies for communication. Over the wired or wireless communication networks, there are a variety of protocols which may enable communication. A few examples of such protocols are: TCP/UDP IP (Transfer Control Protocol/User Datagram Protocol/Internet Protocol), UPnP (Universal Plug and Play), Bonjour, Z-wave, ZigBee, CoAP (Constrained Application Protocol), TR069 (Technical Report 069), plain text (e.g. txt files), XML (eXtensible markup Language), or JSON (JavaScript Object Notation), e-mail, http (Hypertext Transfer protocol), https (http secure), ftp (file transfer protocol), SIP (Session Initiation Protocol), Bluetooth, as well as proprietary protocols such as ANT+ (proprietary wireless sensor network technology), not limiting usage of other protocols. At least some of the above mentioned protocols are considered high level protocols. When adopting devices for connection via such protocols, it is easy for application and device developers to connect applications or devices to the Internet or other communication networks. Commonly, messages over these protocols are communicated via plain text. 
         [0005]    However, it is a desire to keep the cost of each device low, and to facilitate distribution and usage of various devices. Typically the more powerful processing unit, the higher cost. Another issue related to cost is power consumption. An increasing number of connected devices may add undesired electrical power consumption, which have a direct economical cost impact as well as going opposite to environmental policies focusing on reducing power consumption. In a case where a device is wirelessly connected to a communications network, it may carry some kind of electrical battery or other internal source of electrical energy. In such wireless device it is desired to prolong the battery life time as long as possible, to minimize the maintenance frequency, and if using a non-renewable battery, minimize the battery waste. 
         [0006]    A problem with today&#39;s solutions is a contradiction between creation of devices which are capable to use convenient support high level protocols and capable to support various application developer&#39;s desires, and at the same time keep the manufacturing cost of a single device as low as possible. Another problem is how to make communication with devices simple in such a manner that requests and responses are processed as quickly as possible. Another problem is how to minimize energy use in a wired network, or how to preserve energy in wireless devices. From a user perspective it may also be a problem how to name various devices, for example, in a home environment, such that devices are easy to recognize for everybody in a family. 
       SUMMARY 
       [0007]    It is an object of embodiment described herein to address at least some of the problems and issues outlined above. It is possible to achieve these objects and others by using methods and nodes and computer programs as defined in the attached independent claims. 
         [0008]    According to one aspect, a method is performed in a gateway node for handling an address of a resource of a device in a communications network. The method comprises generating a first alias representing the address of the device resource, and storing the generated alias, in association with the address. The method further comprises receiving a request from an application including the address of the device resource. The method further comprises translating the address to the stored alias. The method further comprises forwarding the request including the alias to the device, thereby enabling the device to resolve the request by use of the alias in said request. 
         [0009]    According to one aspect, a method is performed in a device for handling a request addressed to a resource of the device in a communications network, the method comprises generating a first alias representing the address to the device resource. The method further comprises storing the generated alias, in association with the address. The method further comprises receiving a request from a gateway node including the alias of the device resource. The method further comprises processing the request, thereby enabling the device to resolve the request by use of the alias in said request. 
         [0010]    An advantage with use of an alias instead of the original address is that an alias may be easier to resolve for a device. The device may need less CPU clock cycles, and/or less signaling messages to resolve the alias. 
         [0011]    According to another aspect, a gateway node is provided, arranged to handle an address of a resource of a device in a communications network. The gateway node is arranged to generate an alias representing the address of the device resource. The gateway node is further arranged to store the generated alias, in association with the address. The gateway node is further arranged to receive a request from an application including the address of the device resource. The gateway node is further arranged to translate the address to the alias. The gateway node is further arranged to forward the request including the alias to the device, thereby enabling the device to resolve the request by use of the alias in said request. 
         [0012]    According to another aspect, a device is provided, arranged to handle a request addressed to a resource of the device in a communications network. The device is arranged to generate a first alias representing the address to the device resource. The device is further arranged to store the generated alias, in association with the address. The device is further arranged to receive a request from a gateway node including the alias of the device resource. The device is further arranged to process the request, thereby enabling the device to resolve the request by use of the alias in said request. 
         [0013]    An advantage for a device to use the alias, instead of the original address, is that the device may have a lower cost of production due to that the CPU, etc may be less powerful. Another advantage with the use of the alias is that the device may need less electrical energy for operation, due to less CPU clock cycles and/or less signaling messages to be transmitted. Thus a battery operated device may stay operational for a longer period. 
         [0014]    According to another aspect, a computer program is provided, comprising computer readable code means, which when run in a gateway node for handling an address of a resource of a device causes the gateway node for handling an address of a resource of a device to perform the corresponding method. Further is a computer program product, comprising a computer readable medium and a computer program provided, wherein the computer program is stored on the computer readable medium. 
         [0015]    According to another aspect, a computer program is provided, comprising computer readable code means, which when run in a device for handling a request addressed to a resource of the device causes the device for handling a request addressed to a resource of the device to perform the corresponding method. Further is a computer program product, comprising a computer readable medium and a computer program provided, wherein the computer program is stored on the computer readable medium. 
         [0016]    The above method and apparatus may be configured and implemented according to different optional embodiments. In one possible embodiment, the alias is stored in a database in the gateway node. In another embodiment a second alias generated by the device is received from the device and stored in the database. In another embodiment a resource request is transmitted to the device. In another embodiment a resource inventory is received from the device. In another embodiment a request for alias generation is transmitted to a central alias node. In another embodiment the alias points to a specific memory segment of the device. In another embodiment a plurality of aliases are associated with one address. 
     
    
     
       BRIEF DESCRIPTION OF DRAWINGS 
         [0017]    The solution will now be described in more detail by means of exemplary embodiments and with reference to the accompanying drawings, in which: 
           [0018]      FIG. 1  is a communication scenario where the solution may be used. 
           [0019]      FIG. 2  is a block diagram illustrating the solution, according to some possible embodiments. 
           [0020]      FIG. 3  is a flow chart illustrating a procedure in a gateway node. 
           [0021]      FIG. 4  is a flow chart illustrating a procedure in a device. 
           [0022]      FIG. 5  is a flow chart illustrating a procedure in a gateway node, according to further possible embodiments. 
       
    
    
     DETAILED DESCRIPTION 
       [0023]    Briefly described, a solution is provided for handling of addresses of recourses in devices. An address of a resource of a device, for example a temperature indicator in a device, may be a URL (Uniform Resource Locator) or a URI (Uniform Resource Identifier). These are practical to use when connecting devices to the global Internet, or to similar closed TCP/IP-networks. Such address may in practice be defined by a long string of characters. To resolve a URL, it may take a number of messages back and forth between the device and a gateway node, and it may require the device to use a number of clock cycles for each character in the URL to resolve it. 
         [0024]    By exchanging the address with an alias, it will be possible to handle the addressing of devices connected to a network, for example, in a home environment in a simpler and faster way than handling the original address. A device may have several resources that typically need to be addressed individually. A single device may create an alias for each resource, where the alias is shorter than the original address of that resource. Alternatively the gateway node may create an alias for each resource of the device, and instruct the device to store the aliases. By this solution it may be possible for a device to resolve a request faster and with less energy consumption, than with the full long Internet URL due to the shorter length of the alias. The gateway node is further arranged to keep track of the aliases used by various devices in a communications network. When a request comes from an application, for example a request for a temperature in a specific location, the gateway node translates the address used by the application to the alias used by a device with a temperature sensor recourse at the specific location. 
         [0025]      FIG. 1 . shows a block diagram of a scenario where the solution may be used, with a gateway node  100  arranged between a device  110  and an application  120 . According to this scenario, the application  120  connects via the gateway node  100  to the device  110 . Examples of a gateway node  100  are: ADSL (Asymmetric Digital Subscriber Line) routers, wireless LAN (Local Area Network) access devices, fiber-to-the-home termination devices, access points for wireless devices, mobile terminals, vehicle arranged terminals, home automation access units, TV set top boxes, pluggable PC&#39;s (miniaturized network connected PC), and similar network access points, not limiting to other units. As an example, the gateway node  100  may be operated by computer program code according to the OSGi (Open Services Gateway initiative), as well as other unix-based systems, or other proprietary systems suitable for a gateway node  100 . Typically the gateway node  100  acts as a bridge or interconnection point between one network, such as the Internet, or other public networks. Bridging to another network, such as a private network. Examples of private networks are: home network, corporate network, vehicle network, PAN (Personal Area Network) not limiting to other similar types of networks. 
         [0026]    A few non-limiting examples of different kinds of devices  110  with sensor resources are: water meters, gas meters, electricity meters, current sensors, voltage sensors, GPSs (Global Positioning System), cameras, video cameras, microphones, motion sensors, altitude sensors, barcode readers, RFID (Radio Frequency Identification) readers and Near Field Communications readers/tags, accelerometers, gyroscopes, shock sensors, switch sensors, light sensors, air pressure sensors, wind speed sensors, soot sensors, NOx (Nitrogen oxide) and Cox (Carbon oxide) sensors, braking systems sensors, door lock sensors, air bag sensors, electronic battery sensors, tire pressure sensor, fluid (gas, oil, cooling) level sensors, not limiting other sensors to be used in this solution. A few examples of devices  110  with actuator resources are: switches, sirens, valves, speakers, heaters, coolers, breaks, not limiting other types of actuators to be used in relation to this solution. 
         [0027]    An application  120  may be a web application for presentation of data, a home automation application, facility management application, surveillance application, vehicle management application, not limiting the application to other similar areas. 
         [0028]    Now turning to  FIG. 2 , which shows an embodiment of the gateway node  100  in more detail, the gateway node  100  comprising an alias generation unit  130 , a translator unit  140 , a HMI (Human Machine Interface) unit  150  and a database  160 . In addition to the device  110  and the application  120 ,  FIG. 2  also shows an optional external alias node  170 , with a external determination unit  180 . Additionally a processor “P”  150  and a memory “M”  260  are included in the gateway node  100 .  FIG. 2  also shows a first communication unit  190  “1st Com. unit” and a second communication unit  195  “2nd Com. unit”. 
         [0029]    The alias generation unit  130  may generate a suitable alias for a resource based on an address of that resource. A non limiting example is as follows: based on a URL of a temperature sensor in a device, for example “192.168.100.2/sensors/temperature3”, the alias generation unit  130  may be arranged to determine that the alias for that resource should be represented by “/ — 3”. Another example may be that the alias generation unit  130  determines that an URL, for example “192.168.100.2/sensors/values/temperature4” should be represented by an hexadecimal string such as “0xAB12D479”. In this latter example, the alias is pointing directly at a particular memory area in a device  110 . Another example is to use the last 32 bits of an URL. The determined alias which is associated with the address of a resource may be stored in the database  160 . 
         [0030]    According to an embodiment, the translator unit  140  is arranged to translate an address included in a request from an application, where the address points to a specific resource at a specific device  110 . So when a request referring to an address is sent from an application  120  to the gateway node  100 , the gateway node  100  may translate the address to an alias and replace the address in the request with the alias, before forwarding the request to a device  110 . In an embodiment, the translator unit  140  looks up the corresponding alias for the address in the database  160 . The gateway node  100  may also perform other more conventional kinds of tasks, for example IP-address translation, port translation, protocol translation, session control, state control, etc. Such other tasks are however outside the scope of this document, and therefore not further described herein. 
         [0031]    According to an embodiment it may be possible to link or associate a plurality of aliases to one alias or to an original address of a resource. An example is where an alias may be determined by a user of a device  110  or an application  120 . Such an alias may, for example, be indicating the location of a device  110  in plain text, or its tasks. However the alias may be suitable for a user but may not be an optimal alias for the device  110 , and therefore a plurality of aliases pointing at the same resource of a device  110  may be advantageous to use. In an embodiment, a user may add or edit an alias via the HMI unit  150 . The plurality of aliases associated with a resource may be stored in the database  160 . The plurality of aliases may be defined as the first alias, the second alias, the third alias, and so on. 
         [0032]    According to an embodiment a first alias may be generated by the gateway node  100 , and a second alias may be generated by the device  110 . Thereby the both aliases may be pointing at the same original device resource. This feature is advantageous in a solution with a mix of devices both generating their own aliases as well as accepting aliases generated by the gateway node  100  or the external alias node  170 . 
         [0033]    According to an embodiment, the external alias node  170 , shown in  FIG. 2 , may be arranged to receive a request from the gateway node  100 , the request asking for which alias to use for an address. The external alias node  170  may include the external alias generation unit  180 , which may be arranged to determine a suitable alias for an address. In a non-limiting example embodiment, the external alias node  170  may be an IPSO (IP IN NETWORKS OF ‘SMART OBJECTS) Server. The first communication unit  190 , shown in  FIG. 2 , may handle communication with the application  120  and/or the external alias node  170 . The first communication unit  190  may also handle other types of external communication of the gateway node  100 . Other terms for the first communication unit  190  may be external interface, WAN (wide area network) interface, or similar. The second communication unit  195  may handle communication with the device  110 . The second communication unit  195  may also handle other types of communication on the inside of the gateway node  100 . Other terms for the second communication unit  195  may be LAN (local area network) interface, default gateway, or similar. 
         [0034]    A procedure for handling of an address, will now be described with reference to the flowchart in  FIG. 3 , illustrating procedure steps performed in a gateway node such as the above node  100 . The procedure illustrated in  FIG. 3  is thus directed to handling an address of a resource of a device. 
         [0035]    In a first step S 10 , an alias for an address of the resource is generated. The alias may be used by the gateway node  100 , instead of the original address. The generated alias thus represents the address. Examples of address types for which aliases may be generated are: a URL, an URI, or similar, not limiting other address formats to be used. Examples of alias formats that may be used are a MAC-address (Media Access Control), or a CoAP URL, such as coap://192.168.0.1:56831 — 3, In a next step S 15 , the generated alias is stored at the gateway node together with the address. The alias is thus stored such that an association is created with the address the alias represents. 
         [0036]    In step S 20 , a request is received by the gateway node  100 , typically a request from an application  120 , requesting a resource at a device  110 . The request includes an address to the resource. In step S 25  the address is translated from the address to the alias. In step S 30  the request is forwarded to the device  110 . 
         [0037]    A procedure for handling an address will now be described with reference to the flowchart in FIG.  4 ., illustrating procedure steps performed in a device such as the above device  110 . The procedure illustrated in  FIG. 4  is thus directed to handling of an address of a resource of a device. In a first step S 40 , an alias for an address is generated. The alias may be used by the gateway node  100 , instead of the original address, to reach a resource at the device  110 . The generated alias represents the address. In step S 50  a request is received to the device  110 . Typically a request from a gateway node  100 , requesting a resource at the device  110 . The request includes the alias to the resource. In step S 55  the request is processed, according to the request. 
         [0038]      FIG. 5  illustrates a more detailed example of a procedure for handling an address by generating and using an alias. The shown actions are performed by a gateway node. In various embodiments, it may be possible to perform only a subset of the shown procedure steps, and in different orders than illustrated. 
         [0039]    In step S 100 , a gateway node such as the above node  100 , may transmit a resource request to a device  110 . Such a request may ask the device  110  to provide a list of its resources including the addresses to the resources. In step S 110 , the resource inventory list is received from the device. The list may contain at least an address to a resource at the device  110 . Depending on the type of device, it may be a single sensor or single actuator at the device  110 . It may also be a plurality of sensors and/or actuators with the device  110 . In a step S 120  it may be determined, if an external alias node  170  should be consulted, or not. If it is determined in step S 120  that the gateway node  100  should generate an alias for each address, and not by an external node, the procedure continue to step S 130 , where the alias for the address is generated. If it is determined in step S 120  that the external alias node  170  should be consulted, the procedure may after S 120  continue to step S 123  where a request is transmitted from the gateway node  100  to the external alias node  170 . Such request may at least contain an address, an address to a resource at a device  110 . 
         [0040]    However, the request may also contain additional data such as networks id&#39;s, protocol information, device ids, device manufacturer, hardware and/or software versions, and similar types of relevant information. In a next step S 125  the request may be sent to the external alias node  170 . The external alias node  170  may after this step generate the suitable alias for the address provided in the request. In an embodiment, the alias may be generated by the external alias generation unit  180 . In step S 127  the external alias node  170  may respond with a generated alias which is received by the gateway node  100 . In an embodiment the external alias node  170  may contain an IPSO server. In an embodiment the external alias node  170  is a IPSO server. When the alias is generated, by the gateway node  100 , or by the external alias node  170 , the alias is in step S 140  stored in association with corresponding address. The alias may be stored in a database  160  in the gateway node  100 . A storage message may be transmitted to a device  110 , with an instruction to store the alias with the device  110 . 
         [0041]    In a step S 150  the gateway node may receive from an application a request addressed to a resource of a device. In step S 160 , the gateway node  100  may translate the address to the corresponding alias, and then forward the request to the device  110 . In a step S 170 , a response is received from the device  110  having processed the request. An advantage with usage of the alias, instead of the original address, is that the device may use less signaling recourses and less CPU clock cycles, to resolve the alias instead of the full address. 
         [0042]    When the request has been processed, by the device  110 , it may respond the result to the gateway node  100 , as of stop S 170 . In an embodiment the device  110  may be required to respond to the gateway node  100 , according to the request. In a next step S 180 , the gateway node  100  may, translate the alias of the resource of the device back to the original address provided by the application  120  and forward the response according to the request. 
         [0043]    The functional units  100 ,  110 ,  130 ,  140 ,  150 ,  160  described above may be implemented in the gateway node  100  and/or device  110 , by means of program modules of a respective computer program comprising code means which, when run by processors “P”  250  causes the gateway node  100  and/or device  110  to perform the above-described actions. The processor P  250  may comprise a single Central Processing Unit (CPU), or could comprise two or more processing units. For example, the processor P  250  may include general purpose microprocessors, instruction set processors and/or related chips sets and/or special purpose microprocessors such as Application Specific Integrated Circuits (ASICs). The processor P  250  may also comprise a storage for caching purposes. 
         [0044]    Each computer program may be carried by computer program products “M”  260  in the gateway node  100  and/or device  110 , shown in  FIG. 2   a , in the form of memories having a computer readable medium and being connected to the processors P. Each computer program product M  260  or memory thus comprises a computer readable medium on which the computer program is stored e.g. in the form of computer program modules “m”. For example, the memories M  260  may be a flash memory, a Random-Access Memory (RAM), a Read-Only Memory (ROM) or an Electrically Erasable Programmable ROM (EEPROM), and the program modules m could in alternative embodiments be distributed on different computer program products in the form of memories within the gateway node  100  and/or device  110 . 
         [0045]    While the solution has been described with reference to specific exemplary embodiments, the description is generally only intended to illustrate the inventive concept and should not be taken as limiting the scope of the solution. For example, the terms “address”, “alias” and “resource” have been used throughout this description, although any other corresponding nodes, functions, and/or parameters could also be used having the features and characteristics described here. The solution is defined by the appended claims.