Abstract:
A method and system for print device control includes a set of networked print devices that communicate with an application server, and a separate hosted server that sends commands to the application server. A firewall restricts communication between the hosted server and the application server, but the hosted server may deliver commands to the application server in response to queries that the hosted server receives from the application server. The application server then identifies which of its print devices are relevant to each command, and the application server delivers the commands to the relevant print devices for implementation.

Description:
CROSS REFERENCE TO RELATED APPLICATIONS 
       [0001]    This application is related to U.S. patent application Ser. No. 11/______ (attorney docket no. 20061682Q-US-NP/121782.19121), titled “Method and System for Remote Management of Print Devices”, and filed on Sep. 11, 2007. 
     
    
     BACKGROUND 
       [0002]    It is often desirable for companies to provide print device product support or management from a location that is remote from that of the print device itself. A method for managing digital printers and servers via a network is found in U.S. Pat. No. 7,187,461. Sometimes, such support may be administered by a call center that receives and transmits requests or items of monitored data. Often a call center is operated by a business or company and is used to administer incoming product support or answer inquiries from a client. A call center agent may directly respond to issues raised by the calls or data. Alternatively, service representatives may be dispatched or assigned to handle the issues at a client location. 
         [0003]    Remote support representations may want to modify one or more settings or features of one or more printing devices within a client&#39;s firewall. However, it is typically difficult for the call center agent to directly interact with the client&#39;s printing device because the agent may not be able to retrieve information from inside, or pass new settings, functions or other data through, a company&#39;s firewall. 
         [0004]    Often when a printing device inside a firewall needs to be upgraded, a hosted server may only upgrade the printing device after obtaining permission from the company&#39;s firewall administrator. In order for the remote agent to access the printing device from the hosted server, the company&#39;s firewall administrator must reconfigure the company&#39;s system to permit the external hosted server to interact with the printing device. Alternatively, in order for a remote call center agent to access information about the printing device, the call center agent would have to dispatch a service agent to the client&#39;s site. 
       SUMMARY 
       [0005]    In an embodiment, a method of controlling a print device from a remote location may include receiving, by a first server, a command corresponding to an action to be implemented by a print device. Communication between the print device and the first server may be restricted by a firewall. The first server may receive a query from a second server. Communication between the second server and the print device may not be restricted by the firewall. The first server may transmit a reply to the query. The reply may be directed to the second server and may include data sufficient for the second server to determine that the command corresponds to an action to be implemented by the print device. 
         [0006]    In an embodiment, the first server may determine whether the command is relevant to the second server and may only deliver the reply if the command is relevant to the second server. In an embodiment, determining may include identifying whether the command corresponds to an action to be implemented by any print device that is in communication with the second server, The command may cause an instruction to be generated that, when the instruction is executed by the print device, may cause the print device to perform at least one of the following actions: change a setting on the print device, reboot the print device, upgrade firmware in the print device, retrieve consumable level information from the print device, retrieve print meter information from the print device, troubleshoot the print device, and perform a test print on the print device. 
         [0007]    In an embodiment, the command, when executed by the second server, may change a setting on the second server. In an embodiment, the command, when executed by the second server, may cause the second server to perform at least one of the following actions. modify a discovery schedule, modify a discovery parameter, modify an alert generation criterion, modify a schedule to report asset information, and modify a schedule to report site information. In an embodiment, the command may satisfy a schema of commands that may be accepted by the second server. In an embodiment, the transmitting may include sending a reply that uses hypertext transfer protocol. 
         [0008]    In an alternate embodiment, a method of controlling a resource from a remote location, may include receiving, by a first server, a command corresponding to an action to be implemented by a resource. Communication between the resource and the first server may be restricted by a firewall. The first server may receive a query from a second server. Communication between the second server and the resource may not be restricted by the firewall. The first server may transmit a reply to the query. The reply may be directed to the second server and may include data sufficient for the second server to determine that the command corresponds to an action to be implemented by the resource. 
         [0009]    In an alternate embodiment, a print device control system may include a call center that is in communication with a hosted server, a client site including a plurality of networked print devices that are in communication with an application server, a communication portal that sends and receives communication between the hosted server and the application server, a firewall that restricts communication between the hosted server and the application server, and a first set of program instructions. When the first set of program instructions are implemented by the application server, the application server may poll the hosted server to determine whether the call center has posted a relevant command at the hosted server. If the call center has posted a relevant command, the command may be received by the application server via a response to the query. The application server may identify which of the networked print devices are relevant to the received command. The application server may send an instruction corresponding to the command to each relevant networked print device. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0010]    Aspects, features, benefits and advantages of the embodiments described herein will be apparent with regard to the following description, appended claims, and accompanying drawings where: 
           [0011]      FIG. 1  depicts an exemplary system for managing print devices from a remote location according to an embodiment. 
           [0012]      FIG. 2  depicts an exemplary method of executing a command using a hosted server and an application server according to an embodiment. 
       
    
    
     DETAILED DESCRIPTION  
       [0013]    Before the present methods, systems and materials are described, it is to be understood that this disclosure is not limited to the particular methodologies, systems and materials described, as these may vary. It is also to be understood that the terminology used in the description is for the purpose of describing the particular versions or embodiments only, and is not intended to limit the scope. For example, as used herein and in the appended claims, the singular forms “a,” “an,” and “the” include plural references unless the context clearly dictates otherwise. In addition, the word “comprising” as used herein is intended to mean “including but not limited to.” Unless defined otherwise, all technical and scientific terms used herein have the same meanings as commonly understood by one of ordinary skill in the art. 
         [0014]    A “resource” or “print resource” is a device that performs a processing function in a document production environment. A resource may include, but is not limited to, a printing device, a multifunction device such as a print/scan/copy/fax device, a router, a web application used in connection with a printing device and other devices. A printing device is an electronic device that is capable of receiving commands and printing text and/or images on a substrate and/or scanning a document. Printing devices may include, but are not limited to, network printers, production printers, copiers, facsimile devices, other devices using ink or toner, and scanners. As used herein, the terms ink and toner are used interchangeably to refer to wet or dry material that forms an image or text on a substrate. Printing devices may also perform a combination of functions such as printing/scanning/copying/faxing, in which case such devices may be considered to be multifunctional devices. 
         [0015]    An “application server” includes a processor, a processor readable storage medium, and a communication interface. The application server provides applications and/or software programs to monitor and/or control print resources. 
         [0016]    A “hosted server” includes a processor, a processor readable storage medium and a communication interface. The hosted server stores and/or transmits a command to an application server. 
         [0017]    A “firewall” is an information technology security device which is configured to permit or deny data connections between external devices and internal devices. Internal devices are devices protected by a firewall. 
         [0018]    The terms “poll,” “query” and “request” are used interchangeably herein to refer to the transmission by a first device of a request for information from a second device, where the poll includes identification, address or other unique data relating to each of the first device and second device. 
         [0019]    A “call center” is an area outside of a firewall where communication is received and/or delivered regarding one or more resources within the firewall. For example, a company may operate a call center to answer and/or send information to a client site that contains a print resource provided by the company. A centralized entity may handle multiple companies and multiple print resources at a single location. 
         [0020]    A “command” is a type of action associated with printing. In an embodiment, a command may be executed on a print resource or an application server. A command which corresponds to an action to be implemented by a print device may be received by the application server. The application server may transmit an instruction, corresponding to the command, to be executed by the print resource. The instruction may include simple network management protocol (SNMP) and/or other print control protocols. For example, the instruction may be to reboot the print resource, troubleshoot the print resource, change a setting on the print resource, upgrade firmware in the print resource, retrieve consumable level information from the print resource, retrieve print meter information from the print resource, and/or perform a test print on the print resource. Alternatively, a command may be executed by an application server. For example, a command may change a setting on the application server. 
         [0021]    A “setting” is a property or attribute of a target device, such as an application server. In an embodiment, a command may modify a setting on an application server. For example, a setting may determine the number or set of resources that an application server will monitor, the time period between polling and/or monitoring events, or other aspects of when and/or how an application server monitors a resource. 
         [0022]      FIG. 1  depicts an exemplary system for managing print devices from a remote location according to an embodiment. The system may include one or more resources  100 ,  105 ,  110 ,  115  at one or more client sites  101 ,  102 . The system may also include one or more application servers  120 ,  125  for each site. Each application servers may communicate with one or more of the resources within a client site via an internal network. The internal network may include, but is not limited to, a local area network (LAN), a wide area network (WAN), the Internet or another communications network including a wireless network. As shown in  FIG. 1 , a first client site  101  may have a first application server  120  that communicates with resources  100 ,  110  through a first internal network  130 , and a second client site  102  may have a second application server  125  that communicates with resources  105 ,  115  through a second internal network  135 . Additional client sites and/or alternate configurations of application servers and resources are possible and are considered to be within the scope of this disclosure. 
         [0023]    The system may also include an external hosted server  140 . The hosted server  140  may store and/or transmit information relating to print resources at one or more remote sites. In an embodiment, the information may be stored in, for example, a table, a database, a chart or any other file type of format. In an embodiment, the information may be stored in a processor readable storage medium. As shown in  FIG. 1  the hosted server  140  may be located at a location that is remote from some or all of the client sites  101 ,  102 . 
         [0024]    The system may also include a call center  150 . The call center  150  may monitor and/or receive communication from the hosted server  140  regarding the one or more resources  100 ,  105 ,  110 ,  115 . Such communication may include, but is not limited to, a telephone call, an e-mail and a facsimile. In an embodiment, the hosted server  140  may be co-located with the call center  150 . In an alternate embodiment, the hosted server  140  may be remote from the call center  150 . 
         [0025]    Each customer site may include a firewall  160 ,  165  that prevents unauthorized communications between a device within the firewall and a device outside the firewall. For example, the firewall  160  may prohibit the call center  150  and/or the hosted server  140  (i.e., external devices) from initiating communication with the one or more resources  100 ,  110 , and the one or more application servers  120  (i.e., internal devices within the firewall  160 ). Data retrieved from external devices must satisfy security criteria before the data is passed through the firewall  160  to the internal devices. 
         [0026]    The external devices and the internal devices may communicate over an external network  170 . The external network  170  is a network that includes devices outside the firewall, such as a local area network (LAN), a wide area network (WAN), the Internet or another communications network including a wireless network. In an embodiment, an application server  120  or  125  may communicate with the hosted server  140  through the firewall  160  and the external network  170  to obtain a command from the hosted server  140 . 
         [0027]    Each application server may include program instructions to periodically poll the hosted server for new commands. A communication session may be initiated when an application server, such as  120 , issues a request, such as a hypertext transfer protocol (HTTP) request, to the hosted server  140 . A command from the hosted server  140  may then be permitted to pass through the firewall  160  because it is in response to the query from the application server  120 . 
         [0028]    The one or more application servers  120 ,  125  may include program instructions to periodically or intermittently poll the hosted server  140  to determine whether the hosted server received a new command from the call center  150  or elsewhere. For example, the one or more application servers  120 ,  125  may separately poll the hosted server  140  for new commands every five minutes, hourly, daily, at some other configurable time interval, or at some other random or pseudorandom time interval. 
         [0029]      FIG. 2  depicts an exemplary method of executing a command using a hosted server and an application server according to an embodiment. According to  FIG. 2 , a hosted server may receive a command  202  from a call center or from another source. The hosted server may store the command and wait to be queried by one or more application servers. An application server may transmit a request  205  that is directed to the hosted server. In an embodiment, the application server may communicate  205  with the hosted server after a preselected period, a periodic period, a random period, a sporadic period or a configurable period. In an embodiment, a setting on the application server may determine how often the application server queries  205  the hosted server. In an embodiment, the hosted server may be queried  205  by multiple application servers. 
         [0030]    In some embodiments, the hosted server may be a web server that delivers web pages or other information in Hypertext Transfer Protocol (HTTP) or a similar protocol. In such an embodiment, the application server may poll  205  the hosted server using an HTTP or similar request. 
         [0031]    When the application server polls or queries  205  the hosted server, the hosted server may determine  210  whether a relevant command has been posted at the hosted server since receipt of the application server&#39;s previous query. A command is relevant to the application server if it is a command for the application server itself, or if the command corresponds to an action to be implemented on one or more of the print servers with which the application server communicates inside the application server&#39;s firewall. 
         [0032]    If a relevant command has not been posted at the hosted server, the hosted server may either send a null (no command response)  207 , or it may simply send no response at all. The application server may then wait a preselected, calculated, variable, random or configurable length of time before polling  205  the hosted server again. 
         [0033]    If a relevant command has been posted at the hosted server, the hosted server may send and the application server may receive  215  the command. In an embodiment, the command may be downloaded or transmitted from the hosted server to the application server. In an embodiment, the command may be transferred through a communications network via an HTTP response. Other methods of delivery are possible. 
         [0034]    The command may be a single command or a portion of a bundled set of commands. The application server may review and parse the command to determine  220  the resource(s) to which the command is directed as well as whether the command is directed toward the application server itself If the command is directed toward a resource, the application server may send  225  an instruction, corresponding to the command, to be executed by the print resource. The instruction may include simple network management protocol (SNMP) and/or other print control protocols. In an embodiment, the instruction may be sent  225  to a plurality of resources at a client site. In an embodiment, the instruction may be sent  225  to one or more specified resources. The instruction may be performed or executed  230  by the resource. For example, the instruction may be executed  230  to obtain information from the resource, change a setting on the resource, reboot the resource, establish a network connection, upgrade or update firmware in the resource, retrieve consumable level information from the resource, retrieve print meter information from the resource, troubleshoot the resource, and/or perform a test print using the resource. 
         [0035]    In some embodiments, the application server may determine  240  whether the command is within a pre-defined category for which execution of the command is permitted. For example, an agreed-upon schema may identify commands that may be exchanged between the application server and the hosted server. If a command is not within that schema, it may not be executed or further delivered. 
         [0036]    If the command is not directed toward a resource, the command may be directed toward the application server. In an embodiment, the command, when executed, may modify or change a setting on the application server. The application server may execute  235  the command. In an embodiment, the setting may determine when an application server interacts with one or more resources. In an alternate embodiment, the setting may determine what information is collected from a resource. For example, the command may be executed  235  to modify an application server&#39;s parameters and/or schedule, modify an application server&#39;s alert generation criteria, and/or modify the frequency with which the application server reports asset and/or site information. 
         [0037]    It will be appreciated that various of the above-disclosed and other features and functions, or alternatives thereof, may be desirably combined into many other different systems or applications. Also that various presently unforeseen or unanticipated alternatives, modifications, variations or improvements therein may be subsequently made by those skilled in the art which are also intended to be encompassed by the following claims.