Example #1
0
 def init_callback_server(self):
     # initialize RPC server and register callback functions
     url = urlparse(settings.VH_SERVER_CALLBACK_URL)
     self.localServer = RVIJSONRPCServer(addr=((url.hostname, url.port)),
                                         logRequests=False)
     self.localServer.register_function(
         statusReport, settings.VH_SERVER_SERVICE_ID + "/statusreport")
Example #2
0
 def __init__(self, service_edge, callback_url, service_id):
     self.service_edge = service_edge
     self.service_id = service_id
     self.callback_url = callback_url
     threading.Thread.__init__(self)
     url = urlparse(self.callback_url)
     self.localServer =  RVIJSONRPCServer(addr=((url.hostname, url.port)), logRequests=False)
     self.register_services()
Example #3
0
 def init_callback_server(self):
     # initialize RPC server and register callback functions
     url = urlparse(settings.PIXIE_SERVER_CALLBACK_URL)
     self.localServer = RVIJSONRPCServer(addr=((url.hostname, url.port)),
                                         logRequests=False)
     self.localServer.register_function(
         getRawItemLocations,
         settings.PIXIE_SERVER_SERVICE_ID + "/getrawitemlocations")
     self.localServer.register_function(
         getItemLocations,
         settings.PIXIE_SERVER_SERVICE_ID + "/getitemlocations")
Example #4
0
 def init_callback_server(self):
     # initialize RPC server and register callback functions
     url = urlparse(settings.UM_SERVER_CALLBACK_URL)
     self.localServer = RVIJSONRPCServer(addr=((url.hostname, url.port)),
                                         logRequests=False)
     self.localServer.register_function(
         showUserMessage,
         settings.UM_SERVER_SERVICE_ID + "/showusermessage")
     self.localServer.register_function(
         cancelUserMessage,
         settings.UM_SERVER_SERVICE_ID + "/canelusermessage")
Example #5
0
class VehicleCallbackServer(threading.Thread):
    """
    RPC server thread responding to vehicle callbacks from the RVI framework
    """
    def __init__(self, _logger, _service_edge):
        global logger
        global service_edge
        logger = _logger
        service_edge = _service_edge
        threading.Thread.__init__(self)
        self.init_callback_server()
        self.register_services()

    def init_callback_server(self):
        # initialize RPC server and register callback functions
        url = urlparse(settings.VH_SERVER_CALLBACK_URL)
        self.localServer = RVIJSONRPCServer(addr=((url.hostname, url.port)),
                                            logRequests=False)
        self.localServer.register_function(
            statusReport, settings.VH_SERVER_SERVICE_ID + "/statusreport")

    def register_services(self):
        # register services with RVI framework
        result = service_edge.register_service(
            service=settings.VH_SERVER_SERVICE_ID + '/statusreport',
            network_address=settings.VH_SERVER_CALLBACK_URL)
        logger.info('Vehicle Server Service Registration: %s',
                    result['service'])

    def run(self):
        self.localServer.serve_forever()

    def shutdown(self):
        self.localServer.shutdown()
        self.localServer.server_close()
Example #6
0
class CoreCallbackServer(threading.Thread):
    """
    RPC server thread responding to core callbacks from the RVI framework
    """
    
    def __init__(self, _logger, _service_edge):
        global logger
        global service_edge
        logger = _logger
        service_edge = _service_edge
        threading.Thread.__init__(self)
        self.init_callback_server()
        self.register_services()

    def init_callback_server(self):
        # initialize RPC server and register callback functions
        url = urlparse(settings.CORE_SERVER_CALLBACK_URL)
        self.localServer =  RVIJSONRPCServer(addr=((url.hostname, url.port)), logRequests=False)
        self.localServer.register_function(ping, settings.CORE_SERVER_SERVICE_ID + "/ping")
        
    def register_services(self):
        # register services with RVI framework
        result = service_edge.register_service(service = settings.CORE_SERVER_SERVICE_ID + '/ping',
                                               network_address = settings.CORE_SERVER_CALLBACK_URL)
        logger.info('Core Server: Service Registration: ping service name: %s', result)
        return result

    def run(self):
        self.localServer.serve_forever()
        
    def shutdown(self):
        self.localServer.shutdown()
        self.localServer.server_close()
Example #7
0
class VehicleCallbackServer(threading.Thread):
    """
    RPC server thread responding to vehicle callbacks from the RVI framework
    """
    
    def __init__(self, _logger, _service_edge):
        global logger
        global service_edge
        logger = _logger
        service_edge = _service_edge
        threading.Thread.__init__(self)
        self.init_callback_server()
        self.register_services()

    def init_callback_server(self):
        # initialize RPC server and register callback functions
        url = urlparse(settings.VH_SERVER_CALLBACK_URL)
        self.localServer =  RVIJSONRPCServer(addr=((url.hostname, url.port)), logRequests=False)
        self.localServer.register_function(statusReport, settings.VH_SERVER_SERVICE_ID + "/statusreport")
        
    def register_services(self):
        # register services with RVI framework
        result = service_edge.register_service(service = settings.VH_SERVER_SERVICE_ID + '/statusreport',
                                               network_address = settings.VH_SERVER_CALLBACK_URL)
        logger.info('Vehicle Server Service Registration: %s', result['service'])

    def run(self):
        self.localServer.serve_forever()
        
    def shutdown(self):
        self.localServer.shutdown()
        self.localServer.server_close()
Example #8
0
class SOTACallbackServer(threading.Thread):
    """
    RPC server thread responding to SOTA callbacks from the RVI framework
    """
    def __init__(self, service_edge, callback_url, service_id):
        self.service_edge = service_edge
        self.service_id = service_id
        self.callback_url = callback_url
        threading.Thread.__init__(self)
        url = urlparse(self.callback_url)
        self.localServer = RVIJSONRPCServer(addr=((url.hostname, url.port)),
                                            logRequests=False)
        self.register_services()

    def register_services(self):
        # register callback functions with RPC server
        self.localServer.register_function(
            initiate_download, self.service_id + "/initiate_download")
        self.localServer.register_function(
            cancel_download, self.service_id + "/cancel_download")
        self.localServer.register_function(
            download_complete, self.service_id + "/download_complete")

        # register services with RVI framework
        result = self.service_edge.register_service(
            service=self.service_id + '/initiate_download',
            network_address=self.callback_url)
        rvi_logger.info(
            'SOTA Service Registration: Initiate download service name: %s',
            result['service'])
        result = self.service_edge.register_service(
            service=self.service_id + '/cancel_download',
            network_address=self.callback_url)
        rvi_logger.info(
            'SOTA Service Registration: Cancel download service name: %s',
            result['service'])
        result = self.service_edge.register_service(
            service=self.service_id + '/download_complete',
            network_address=self.callback_url)
        rvi_logger.info(
            'SOTA Service Registration: Download complete service name: %s',
            result['service'])

    def run(self):
        self.localServer.serve_forever()

    def shutdown(self):
        self.localServer.shutdown()
Example #9
0
 def init_callback_server(self):
     # initialize RPC server and register callback functions
     url = urlparse(settings.VH_SERVER_CALLBACK_URL)
     self.localServer = RVIJSONRPCServer(
         addr=((url.hostname, url.port)), logRequests=False)
     self.localServer.register_function(
         statusReport, settings.VH_SERVER_SERVICE_ID + "/statusreport")
Example #10
0
class PixieCallbackServer(threading.Thread):
    """
    RPC server thread responding to Pixie callbacks from the RVI framework
    """
    def __init__(self, _logger, _service_edge):
        global logger
        global service_edge
        logger = _logger
        service_edge = _service_edge
        threading.Thread.__init__(self)
        self.init_callback_server()
        self.register_services()

    def init_callback_server(self):
        # initialize RPC server and register callback functions
        url = urlparse(settings.PIXIE_SERVER_CALLBACK_URL)
        self.localServer = RVIJSONRPCServer(addr=((url.hostname, url.port)),
                                            logRequests=False)
        self.localServer.register_function(
            getRawItemLocations,
            settings.PIXIE_SERVER_SERVICE_ID + "/getrawitemlocations")
        self.localServer.register_function(
            getItemLocations,
            settings.PIXIE_SERVER_SERVICE_ID + "/getitemlocations")

    def register_services(self):
        # register services with RVI framework
        result = service_edge.register_service(
            service=settings.PIXIE_SERVER_SERVICE_ID + '/getrawitemlocations',
            network_address=settings.PIXIE_SERVER_CALLBACK_URL)
        logger.info(
            'PIXIE Service Registration: Get Raw Item Locations service name: %s',
            result['service'])
        result = service_edge.register_service(
            service=settings.PIXIE_SERVER_SERVICE_ID + '/getitemlocations',
            network_address=settings.PIXIE_SERVER_CALLBACK_URL)
        logger.info(
            'PIXIE Service Registration: Get Item Locations service name: %s',
            result['service'])

    def run(self):
        self.localServer.serve_forever()

    def shutdown(self):
        self.localServer.shutdown()
        self.localServer.server_close()
Example #11
0
 def __init__(self, service_edge, callback_url, service_id):
     self.service_edge = service_edge
     self.service_id = service_id
     self.callback_url = callback_url
     threading.Thread.__init__(self)
     url = urlparse(self.callback_url)
     self.localServer = RVIJSONRPCServer(addr=((url.hostname, url.port)), logRequests=False)
     self.register_services()
Example #12
0
class UsermessageCallbackServer(threading.Thread):
    """
    RPC server thread responding to user message callbacks from the RVI framework
    """
    def __init__(self, _logger, _service_edge):
        global logger
        global service_edge
        logger = _logger
        service_edge = _service_edge
        threading.Thread.__init__(self)
        self.init_callback_server()
        self.register_services()

    def init_callback_server(self):
        # initialize RPC server and register callback functions
        url = urlparse(settings.UM_SERVER_CALLBACK_URL)
        self.localServer = RVIJSONRPCServer(addr=((url.hostname, url.port)),
                                            logRequests=False)
        self.localServer.register_function(
            showUserMessage,
            settings.UM_SERVER_SERVICE_ID + "/showusermessage")
        self.localServer.register_function(
            cancelUserMessage,
            settings.UM_SERVER_SERVICE_ID + "/canelusermessage")

    def register_services(self):
        # register services with RVI framework
        result = service_edge.register_service(
            service=settings.UM_SERVER_SERVICE_ID + '/showusermessage',
            network_address=settings.UM_SERVER_CALLBACK_URL)
        logger.info(
            'Usermessage Service Registration: showusermessage service name: %s',
            result['service'])
        result = service_edge.register_service(
            service=settings.UM_SERVER_SERVICE_ID + '/cancelusermessage',
            network_address=settings.UM_SERVER_CALLBACK_URL)
        logger.info(
            'Usermessage Service Registration: cancelusermessage service name: %s',
            result['service'])

    def run(self):
        self.localServer.serve_forever()

    def shutdown(self):
        self.localServer.shutdown()
        self.localServer.server_close()
Example #13
0
 def init_callback_server(self):
     # initialize RPC server and register callback functions
     url = urlparse(settings.TC_SERVER_CALLBACK_URL)
     self.localServer =  RVIJSONRPCServer(addr=((url.hostname, url.port)), logRequests=False)
     self.localServer.register_function(getDeviceStatus, settings.TC_SERVER_SERVICE_ID + "/getdevicestatus")
     self.localServer.register_function(setHueLighting, settings.TC_SERVER_SERVICE_ID + "/sethuelighting")
     self.localServer.register_function(setOutlet, settings.TC_SERVER_SERVICE_ID + "/setoutlet")
     self.localServer.register_function(setSwitch, settings.TC_SERVER_SERVICE_ID + "/setswitch")
     self.localServer.register_function(setLock, settings.TC_SERVER_SERVICE_ID + "/setlock")
     self.localServer.register_function(setDimmer, settings.TC_SERVER_SERVICE_ID + "/setdimmer")
     self.localServer.register_function(setThermostat, settings.TC_SERVER_SERVICE_ID + "/setthermostat")
     self.localServer.register_function(secureHome, settings.TC_SERVER_SERVICE_ID + "/securehome")
Example #14
0
class TrackingCallbackServer(threading.Thread):
    """
    RPC server thread responding to Tracking callbacks from the RVI framework
    """
    def __init__(self, service_edge, callback_url, service_id):
        self.service_edge = service_edge
        self.service_id = service_id
        self.callback_url = callback_url
        threading.Thread.__init__(self)
        url = urlparse(self.callback_url)
        self.localServer = RVIJSONRPCServer(addr=((url.hostname, url.port)),
                                            logRequests=True)
        self.register_services()

    def register_services(self):
        # register callback functions with RPC server
        self.localServer.register_function(report, self.service_id + "/report")

        # register services with RVI framework
        result = self.service_edge.register_service(
            service=self.service_id + '/report',
            network_address=self.callback_url)
        logger.info('Tracking Service Registration: Report service name: %s',
                    result['service'])

    def run(self):
        self.localServer.serve_forever()

    def shutdown(self):
        self.localServer.shutdown()
Example #15
0
class MQSinkServer(threading.Thread):
    """
    Publish data report to message queue
    """
    def __init__(self, service_edge, callback_url, service_id):
        threading.Thread.__init__(self)

        self.service_edge = service_edge
        self.service_id = service_id
        self.callback_url = callback_url
        url = urlparse(self.callback_url)
        self.localServer = RVIJSONRPCServer(addr=((url.hostname, url.port)), logRequests=False)
        self.register_services()

        
    def register_services(self):
        # register callback functions with RPC server
        self.localServer.register_function(report, self.service_id + "/report")

        # register services with RVI framework
        result = self.service_edge.register_service(service = self.service_id+'/report',
                                               network_address = self.callback_url)
        logger.info('Tracking Service Registration: Report service name: %s', result['service'])

    def run(self):
        self.localServer.serve_forever()

    def shutdown(self):
        self.localServer.shutdown()
Example #16
0
class SOTACallbackServer(threading.Thread):
    """
    RPC server thread responding to SOTA callbacks from the RVI framework
    """

    def __init__(self, service_edge, callback_url, service_id):
        self.service_edge = service_edge
        self.service_id = service_id
        self.callback_url = callback_url
        threading.Thread.__init__(self)
        url = urlparse(self.callback_url)
        self.localServer = RVIJSONRPCServer(addr=((url.hostname, url.port)), logRequests=False)
        self.register_services()

    def register_services(self):
        # register callback functions with RPC server
        self.localServer.register_function(initiate_download, self.service_id + "/initiate_download")
        self.localServer.register_function(cancel_download, self.service_id + "/cancel_download")
        self.localServer.register_function(download_complete, self.service_id + "/download_complete")

        # register services with RVI framework
        result = self.service_edge.register_service(
            service=self.service_id + "/initiate_download", network_address=self.callback_url
        )
        rvi_logger.info("SOTA Service Registration: Initiate download service name: %s", result["service"])
        result = self.service_edge.register_service(
            service=self.service_id + "/cancel_download", network_address=self.callback_url
        )
        rvi_logger.info("SOTA Service Registration: Cancel download service name: %s", result["service"])
        result = self.service_edge.register_service(
            service=self.service_id + "/download_complete", network_address=self.callback_url
        )
        rvi_logger.info("SOTA Service Registration: Download complete service name: %s", result["service"])

    def run(self):
        self.localServer.serve_forever()

    def shutdown(self):
        self.localServer.shutdown()
Example #17
0
 def init_callback_server(self):
     # initialize RPC server and register callback functions
     url = urlparse(settings.TC_SERVER_CALLBACK_URL)
     self.localServer = RVIJSONRPCServer(addr=((url.hostname, url.port)),
                                         logRequests=False)
     self.localServer.register_function(
         getDeviceStatus,
         settings.TC_SERVER_SERVICE_ID + "/getdevicestatus")
     self.localServer.register_function(
         setHueLighting, settings.TC_SERVER_SERVICE_ID + "/sethuelighting")
     self.localServer.register_function(
         setOutlet, settings.TC_SERVER_SERVICE_ID + "/setoutlet")
     self.localServer.register_function(
         setSwitch, settings.TC_SERVER_SERVICE_ID + "/setswitch")
     self.localServer.register_function(
         setLock, settings.TC_SERVER_SERVICE_ID + "/setlock")
     self.localServer.register_function(
         setDimmer, settings.TC_SERVER_SERVICE_ID + "/setdimmer")
     self.localServer.register_function(
         setThermostat, settings.TC_SERVER_SERVICE_ID + "/setthermostat")
     self.localServer.register_function(
         secureHome, settings.TC_SERVER_SERVICE_ID + "/securehome")
Example #18
0
class UsermessageCallbackServer(threading.Thread):
    """
    RPC server thread responding to user message callbacks from the RVI framework
    """
    
    def __init__(self, _logger, _service_edge):
        global logger
        global service_edge
        logger = _logger
        service_edge = _service_edge
        threading.Thread.__init__(self)
        self.init_callback_server()
        self.register_services()

    def init_callback_server(self):
        # initialize RPC server and register callback functions
        url = urlparse(settings.UM_SERVER_CALLBACK_URL)
        self.localServer =  RVIJSONRPCServer(addr=((url.hostname, url.port)), logRequests=False)
        self.localServer.register_function(showUserMessage, settings.UM_SERVER_SERVICE_ID + "/showusermessage")
        self.localServer.register_function(cancelUserMessage, settings.UM_SERVER_SERVICE_ID + "/canelusermessage")
        
    def register_services(self):
        # register services with RVI framework
        result = service_edge.register_service(service = settings.UM_SERVER_SERVICE_ID + '/showusermessage',
                                               network_address = settings.UM_SERVER_CALLBACK_URL)
        logger.info('Usermessage Service Registration: showusermessage service name: %s', result['service'])
        result = service_edge.register_service(service = settings.UM_SERVER_SERVICE_ID + '/cancelusermessage',
                                               network_address = settings.UM_SERVER_CALLBACK_URL)
        logger.info('Usermessage Service Registration: cancelusermessage service name: %s', result['service'])

    def run(self):
        self.localServer.serve_forever()
        
    def shutdown(self):
        self.localServer.shutdown()
        self.localServer.server_close()
Example #19
0
class PixieCallbackServer(threading.Thread):
    """
    RPC server thread responding to Pixie callbacks from the RVI framework
    """
    
    def __init__(self, _logger, _service_edge):
        global logger
        global service_edge
        logger = _logger
        service_edge = _service_edge
        threading.Thread.__init__(self)
        self.init_callback_server()
        self.register_services()

    def init_callback_server(self):
        # initialize RPC server and register callback functions
        url = urlparse(settings.PIXIE_SERVER_CALLBACK_URL)
        self.localServer =  RVIJSONRPCServer(addr=((url.hostname, url.port)), logRequests=False)
        self.localServer.register_function(getRawItemLocations, settings.PIXIE_SERVER_SERVICE_ID + "/getrawitemlocations")
        self.localServer.register_function(getItemLocations, settings.PIXIE_SERVER_SERVICE_ID + "/getitemlocations")
        
    def register_services(self):
        # register services with RVI framework
        result = service_edge.register_service(service = settings.PIXIE_SERVER_SERVICE_ID + '/getrawitemlocations',
                                               network_address = settings.PIXIE_SERVER_CALLBACK_URL)
        logger.info('PIXIE Service Registration: Get Raw Item Locations service name: %s', result['service'])
        result = service_edge.register_service(service = settings.PIXIE_SERVER_SERVICE_ID + '/getitemlocations',
                                               network_address = settings.PIXIE_SERVER_CALLBACK_URL)
        logger.info('PIXIE Service Registration: Get Item Locations service name: %s', result['service'])

    def run(self):
        self.localServer.serve_forever()
        
    def shutdown(self):
        self.localServer.shutdown()
        self.localServer.server_close()
Example #20
0
 def init_callback_server(self):
     # initialize RPC server and register callback functions
     url = urlparse(settings.PIXIE_SERVER_CALLBACK_URL)
     self.localServer =  RVIJSONRPCServer(addr=((url.hostname, url.port)), logRequests=False)
     self.localServer.register_function(getRawItemLocations, settings.PIXIE_SERVER_SERVICE_ID + "/getrawitemlocations")
     self.localServer.register_function(getItemLocations, settings.PIXIE_SERVER_SERVICE_ID + "/getitemlocations")
Example #21
0
class ThingcontrolCallbackServer(threading.Thread):
    """
    RPC server thread responding to Thingcontrol callbacks from the RVI framework
    """
    def __init__(self, _logger, _service_edge):
        global logger
        global service_edge
        logger = _logger
        service_edge = _service_edge
        threading.Thread.__init__(self)
        self.init_callback_server()
        self.register_services()

    def init_callback_server(self):
        # initialize RPC server and register callback functions
        url = urlparse(settings.TC_SERVER_CALLBACK_URL)
        self.localServer = RVIJSONRPCServer(addr=((url.hostname, url.port)),
                                            logRequests=False)
        self.localServer.register_function(
            getDeviceStatus,
            settings.TC_SERVER_SERVICE_ID + "/getdevicestatus")
        self.localServer.register_function(
            setHueLighting, settings.TC_SERVER_SERVICE_ID + "/sethuelighting")
        self.localServer.register_function(
            setOutlet, settings.TC_SERVER_SERVICE_ID + "/setoutlet")
        self.localServer.register_function(
            setSwitch, settings.TC_SERVER_SERVICE_ID + "/setswitch")
        self.localServer.register_function(
            setLock, settings.TC_SERVER_SERVICE_ID + "/setlock")
        self.localServer.register_function(
            setDimmer, settings.TC_SERVER_SERVICE_ID + "/setdimmer")
        self.localServer.register_function(
            setThermostat, settings.TC_SERVER_SERVICE_ID + "/setthermostat")
        self.localServer.register_function(
            secureHome, settings.TC_SERVER_SERVICE_ID + "/securehome")

    def register_services(self):
        # register services with RVI framework
        result = service_edge.register_service(
            service=settings.TC_SERVER_SERVICE_ID + '/getdevicestatus',
            network_address=settings.TC_SERVER_CALLBACK_URL)
        logger.info(
            'Thingcontrol Service Registration: getdevicestatus service name: %s',
            result['service'])
        result = service_edge.register_service(
            service=settings.TC_SERVER_SERVICE_ID + '/sethuelighting',
            network_address=settings.TC_SERVER_CALLBACK_URL)
        logger.info(
            'Thingcontrol Service Registration: sethuelighting service name: %s',
            result['service'])
        result = service_edge.register_service(
            service=settings.TC_SERVER_SERVICE_ID + '/setoutlet',
            network_address=settings.TC_SERVER_CALLBACK_URL)
        logger.info(
            'Thingcontrol Service Registration: setoutlet service name: %s',
            result['service'])
        result = service_edge.register_service(
            service=settings.TC_SERVER_SERVICE_ID + '/setswitch',
            network_address=settings.TC_SERVER_CALLBACK_URL)
        logger.info(
            'Thingcontrol Service Registration: setswitch service name: %s',
            result['service'])
        result = service_edge.register_service(
            service=settings.TC_SERVER_SERVICE_ID + '/setlock',
            network_address=settings.TC_SERVER_CALLBACK_URL)
        logger.info(
            'Thingcontrol Service Registration: setlock service name: %s',
            result['service'])
        result = service_edge.register_service(
            service=settings.TC_SERVER_SERVICE_ID + '/setdimmer',
            network_address=settings.TC_SERVER_CALLBACK_URL)
        logger.info(
            'Thingcontrol Service Registration: setdimmer service name: %s',
            result['service'])
        result = service_edge.register_service(
            service=settings.TC_SERVER_SERVICE_ID + '/setthermostat',
            network_address=settings.TC_SERVER_CALLBACK_URL)
        logger.info(
            'Thingcontrol Service Registration: setthermostat service name: %s',
            result['service'])
        result = service_edge.register_service(
            service=settings.TC_SERVER_SERVICE_ID + '/securehome',
            network_address=settings.TC_SERVER_CALLBACK_URL)
        logger.info(
            'Thingcontrol Service Registration: setthermostat service name: %s',
            result['service'])

    def run(self):
        self.localServer.serve_forever()

    def shutdown(self):
        self.localServer.shutdown()
        self.localServer.server_close()
Example #22
0
 def init_callback_server(self):
     # initialize RPC server and register callback functions
     url = urlparse(settings.UM_SERVER_CALLBACK_URL)
     self.localServer =  RVIJSONRPCServer(addr=((url.hostname, url.port)), logRequests=False)
     self.localServer.register_function(showUserMessage, settings.UM_SERVER_SERVICE_ID + "/showusermessage")
     self.localServer.register_function(cancelUserMessage, settings.UM_SERVER_SERVICE_ID + "/canelusermessage")
Example #23
0
class ThingcontrolCallbackServer(threading.Thread):
    """
    RPC server thread responding to Thingcontrol callbacks from the RVI framework
    """
    
    def __init__(self, _logger, _service_edge):
        global logger
        global service_edge
        logger = _logger
        service_edge = _service_edge
        threading.Thread.__init__(self)
        self.init_callback_server()
        self.register_services()

    def init_callback_server(self):
        # initialize RPC server and register callback functions
        url = urlparse(settings.TC_SERVER_CALLBACK_URL)
        self.localServer =  RVIJSONRPCServer(addr=((url.hostname, url.port)), logRequests=False)
        self.localServer.register_function(getDeviceStatus, settings.TC_SERVER_SERVICE_ID + "/getdevicestatus")
        self.localServer.register_function(setHueLighting, settings.TC_SERVER_SERVICE_ID + "/sethuelighting")
        self.localServer.register_function(setOutlet, settings.TC_SERVER_SERVICE_ID + "/setoutlet")
        self.localServer.register_function(setSwitch, settings.TC_SERVER_SERVICE_ID + "/setswitch")
        self.localServer.register_function(setLock, settings.TC_SERVER_SERVICE_ID + "/setlock")
        self.localServer.register_function(setDimmer, settings.TC_SERVER_SERVICE_ID + "/setdimmer")
        self.localServer.register_function(setThermostat, settings.TC_SERVER_SERVICE_ID + "/setthermostat")
        self.localServer.register_function(secureHome, settings.TC_SERVER_SERVICE_ID + "/securehome")
        
    def register_services(self):
        # register services with RVI framework
        result = service_edge.register_service(service = settings.TC_SERVER_SERVICE_ID + '/getdevicestatus',
                                               network_address = settings.TC_SERVER_CALLBACK_URL)
        logger.info('Thingcontrol Service Registration: getdevicestatus service name: %s', result['service'])
        result = service_edge.register_service(service = settings.TC_SERVER_SERVICE_ID + '/sethuelighting',
                                               network_address = settings.TC_SERVER_CALLBACK_URL)
        logger.info('Thingcontrol Service Registration: sethuelighting service name: %s', result['service'])
        result = service_edge.register_service(service = settings.TC_SERVER_SERVICE_ID + '/setoutlet',
                                               network_address = settings.TC_SERVER_CALLBACK_URL)
        logger.info('Thingcontrol Service Registration: setoutlet service name: %s', result['service'])
        result = service_edge.register_service(service = settings.TC_SERVER_SERVICE_ID + '/setswitch',
                                               network_address = settings.TC_SERVER_CALLBACK_URL)
        logger.info('Thingcontrol Service Registration: setswitch service name: %s', result['service'])
        result = service_edge.register_service(service = settings.TC_SERVER_SERVICE_ID + '/setlock',
                                               network_address = settings.TC_SERVER_CALLBACK_URL)
        logger.info('Thingcontrol Service Registration: setlock service name: %s', result['service'])
        result = service_edge.register_service(service = settings.TC_SERVER_SERVICE_ID + '/setdimmer',
                                               network_address = settings.TC_SERVER_CALLBACK_URL)
        logger.info('Thingcontrol Service Registration: setdimmer service name: %s', result['service'])
        result = service_edge.register_service(service = settings.TC_SERVER_SERVICE_ID + '/setthermostat',
                                               network_address = settings.TC_SERVER_CALLBACK_URL)
        logger.info('Thingcontrol Service Registration: setthermostat service name: %s', result['service'])
        result = service_edge.register_service(service = settings.TC_SERVER_SERVICE_ID + '/securehome',
                                               network_address = settings.TC_SERVER_CALLBACK_URL)
        logger.info('Thingcontrol Service Registration: setthermostat service name: %s', result['service'])

    def run(self):
        self.localServer.serve_forever()
        
    def shutdown(self):
        self.localServer.shutdown()
        self.localServer.server_close()