class Notifier: def __init__(self, config, notifierModules): LOGGER.info("starting logger module") print str(notifierModules) self.moduleLoader = DynamicModule(notifierModules) self.modules = [] for m in self.moduleLoader.load(): self.modules.append(m["class"]()) self.rabbitConsumer = RabbitConsumer("module.notifier", "module.notifier") try: self.setHandlers() self.rabbitConsumer.start() while True: time.sleep(0.2) except KeyboardInterrupt: print("stopping consuming") self.rabbitConsumer.stop() print("see ya later!") sys.exit(0) def notifySuccess(self, message): print str(message) if len(self.modules) > 0: self.modules[0].notifySuccess(message) def setHandlers(self): print "set handlers" LOGGER.info("set handlers") self.rabbitConsumer.addHandler("success", self.notifySuccess)
class AlarmManager: spotifyPlayer = None def __init__(self, config): LOGGER.info("starting alarm module") LOGGER.info("Getting a token") self.name = config.get("Server", "name") Alarm.name = self.name self.serverHttpRequest = ServerHttpRequest(config.get("Server", "url"), config.get("Server", "username"), config.get("Server", "password")) LOGGER.info("ServerHttpRequest ready") try: self.server = ServerRequester("serverRequest.player") except: LOGGER.error("module alarm crashed") LOGGER.error(traceback.format_exc()) Alarm.serverRequester = self.serverHttpRequest self.rabbitConnectionAlarm = RabbitConsumer("module.alarm", "module.alarm") self.rabbitConnectionPlayer = RabbitEmitter("module.player", "module.player") self.notifier = RabbitEmitter("module.notifier", "module.notifier") Alarm.notifier = self.notifier; Alarm.rabbitConnectionPlayer = self.rabbitConnectionPlayer try: self.setHandlers() self.rabbitConnectionAlarm.onConnected(self.init) self.rabbitConnectionAlarm.start() self.rabbitConnectionPlayer.start() self.notifier.start(); self.onSocketReconnect(); while True: time.sleep(0.2) except KeyboardInterrupt: print("stopping consuming") self.server.stop() self.rabbitConnectionAlarm.stop() self.rabbitConnectionPlayer.stop() self.notifier.stop(); print("see ya later!") sys.exit(0) def init(self): LOGGER.info("Ready...") def onSocketReconnect(self): self.server.emit("raspberry:module:new", { "name": "alarm", "status": "PAUSED" }); LOGGER.info("Getting alarms api/modules/alarms/raspberries/" + self.name); res = None res = self.serverHttpRequest.get("api/modules/alarms/raspberries/" + self.name); if "status" in res and res["status"] == "success" and "data" in res and "items" in res["data"]: Alarm.setAlarmsFromJSON(res["data"]["items"]); else: LOGGER.info("invalid data"); def setHandlers(self): LOGGER.info("set handlers") self.rabbitConnectionAlarm.addHandler("alarm:updated", Alarm.updateAlarmFromJSON) self.rabbitConnectionAlarm.addHandler("alarm:new", Alarm.addAlarmsFromJSON) self.rabbitConnectionAlarm.addHandler("alarm:removed", Alarm.removeByData) self.rabbitConnectionAlarm.addHandler("reconnected", self.onSocketReconnect)