Из информации, которую вы нам дали, кажется, что в строке 22, где вы пытаетесь if i == i()
, вы пытаетесь проверить, соответствует ли переменная i возвращаемому значению функции i (). Мне кажется, что у вас нигде нет функции i () (и в любом случае это будет плохое имя для функции). Может быть, вы пытаетесь проверить if i == result
, где result
- это переменная ic5501 или ic5502? Поправь меня, если я ошибаюсь.
РЕДАКТИРОВАТЬ
После проверки комментариев, если вы пытаетесь проверить, является ли я именем функции, я бы рекомендовал в качестве базового начала (в зависимости от того, является ли это большой проект) создание списка со всеми именами функций и связывание их с функцией.
my_functions = [["function_1", function_1], ["function_2", function_2]]
Я отсылаю вас к другому вопросу, ответ на который может помочь вам использовать вышеуказанное решение.
Согласно документации RRD, то число метки времени должно увеличиться с каждым обновлением. Учитывая Ваши ограничения, я изменил бы Вашу стандартную программу обновления так, чтобы, если обновление перестало работать, Вы поймали исключение и восстановили обновление с полевым набором времени к 'N'. Это заставит RRDtool использовать текущее время в качестве времени обновления.
С другой стороны, если Вы не захотите иметь дело с кодом выгоды-и-повторной-попытки, просто изменять Ваш код обновления, чтобы всегда использовать 'N' в качестве временной стоимости - затем, то обновление будет всегда работать.
Может быть полезно иметь беглый взгляд на документацию для команды обновления RRDtool.