import json import time # Предполагаем, что глобальные переменные уже обновлены в другом месте кода # и доступны для использования здесь globs = { "dey": 1, # День недели, который должен обновляться с устройства "wek": 1, # Неделя "v_hid": 0, # Час "v_min": 0, # Минута "ph": 7.0 # pH-значение } # Функция для создания JSON-объекта из глобальных переменных def create_json_from_globals(week, day, hour, ph): return { "week": week, "day": day, "hour": hour, "ph": ph } # Переменные для отслеживания текущей недели и дня current_week = globs["wek"] current_day = globs["dey"] current_hour = globs["v_hid"] # Список для хранения данных обеих недель combined_data = [] # Бесконечный цикл, который каждый час создает JSON-объект while True: # Проверяем, изменилась ли неделя или день if globs["wek"] != current_week or globs["dey"] != current_day or globs["v_hid"] != current_hour: current_week = globs["wek"] current_day = globs["dey"] current_hour = globs["v_hid"] # Создание JSON-объекта с текущими значениями глобальных переменных json_data = create_json_from_globals(current_week, current_day, current_hour, globs["ph"]) # Добавление данных в общий список combined_data.append(json_data) # Если началась новая неделя, создаем новый JSON-файл if current_hour == 0 and current_day == 1: filename = f'week_{current_week}_data.json' with open(filename, 'w') as f: json.dump(combined_data, f, indent=4) combined_data = [] # Очищаем список для новой недели # Пауза на час перед следующей итерацией time.sleep(60) # 3600 секунд = 60 минут * 60 секунд # Проверяем, не прошло ли 30 недель if globs["wek"] > 30: break # Выходим из цикла после 30 недель