def set_modes(): if not is_active(): return modes = Zone.objects.get_modes() client = ControllerProxy(PILOTWIRE_IP_PORT) try: client.modes = modes except PilotwireModesInconsistent as pwerr: logger.error(pwerr) return logger.info("Modes set on pilotwire controller : %s", pformat(client.modes))
def setpilotwire(): logger = logging.getLogger("setpilotwire") modes = Zone.objects.get_modes() pwclient = ControllerProxy() controller_status = pwclient.check_status() if controller_status != "active": logger.error("Failed to connect to pilotwire controller : %s", controller_status) return try: pwclient.modes = modes except PilotwireModesInconsistent as pwerr: logger.error(pwerr) return logger.info("Modes set on pilotwire controller : %s", pformat(modes))
def update_status(): redis = StrictRedis.from_url(settings.REDIS_URL) pwclient = ControllerProxy(PILOTWIRE_IP_PORT) old_status = redis.get(REDIS_KEY) if old_status is not None: old_status = old_status.decode() status = pwclient.check_status() redis.set(REDIS_KEY, status, ex=90) if status != old_status: log_message = "Pilotwire controller status changed from {} to {}" log_message = log_message.format(old_status, status) if status == 'active': log_message += ", going to set pilotwire modes" logger.info(log_message) set_modes() else: logger.error(log_message) mail_admins("Pilotwire controller connection error", log_message)
def test_unreachable_status(self): client = ControllerProxy('127.0.0.0:8888') assert client.check_status() == 'unreachable'