def run(self):

        DBusGMainLoop(set_as_default=True)

        if hasattr(self.config, "garage_pin_number"):
            from GarageDoorDBusService import GarageDoorDBusService
            self.garage_service = GarageDoorDBusService(self.config.garage_pin_number)

        factory = BluetoothFactory()

        self.logger.error("Bluetooth factory created - device:"+self.config.device_id+" factory "+str(factory))

        adapter = factory.get_adapter(self.config.device_id)

        if adapter is None:
            raise Exception("Unable to find specified adapter. Fatal error. Adapter- "+self.config.device_id)

        self.logger.error("Got adapter "+self.config.device_id)

        adapter.power_on()

        self.logger.error("Powered on")

        adapter.set_device_callbacks(self.handle_device_update,self.handle_device_property_changed)

        self.start_ping_tracker()
        self.start_temp_reader()

        self.logger.error("Set device callbacks")
        adapter.start_discovery()
        self.logger.error("discovery started")
        self.send_heartbeat()
        self.logger.error("initial heartbeat sent")


        event_id = GObject.timeout_add(240000,self.send_heartbeat)
        mainloop = GObject.MainLoop()
        mainloop.run()
        GObject.source_remove(event_id)

        adapter.stop_discovery()
                myisy.var_set_value(variable_id, 1)
            else:
                myisy.var_set_value(variable_id, 0)
    print(station_id+"-[DEVP] Name: ["+device.name+"] Device Update: ["+device.address+"] Present: ["+str(device.get_is_present())+"] RSSI: ["+str(device.rssi)+"] "+action)

def handle_device_property_changed(device):
    print(station_id+"-[PROP] Name: ["+device.name+"] Device Update: ["+device.address+"] Present: ["+str(device.get_is_present())+"] RSSI: ["+str(device.rssi)+"]")

if __name__ == "__main__":
    DBusGMainLoop(set_as_default=True)

    if len(sys.argv) > 1:
        config_file_name = sys.argv[1]
    else:
        config_file_name = "./devices.macbook.cfg"

    read_config(config_file_name)

    factory = BluetoothFactory()

    adapter = factory.get_adapter(device_id)
    adapter.set_device_callbacks(handle_device_update,handle_device_property_changed)
    adapter.start_discovery()

    mainloop = GObject.MainLoop()
    mainloop.run()

    adapter.stop_discovery()

    print "Done!"