import os import sys def get_base_path(): """获取运行时路径 (兼容打包后的 exe 和开发环境)""" if getattr(sys, 'frozen', False): return os.path.dirname(sys.executable) return os.path.dirname(os.path.abspath(__file__)) def get_static_path(): """获取 web_dist 静态资源路径""" if getattr(sys, 'frozen', False): return os.path.join(sys._MEIPASS, 'web_dist') return os.path.join(os.path.dirname(os.path.abspath(__file__)), 'web_dist') class Config: BASE_DIR = get_base_path() # [新增] 规范化 instance 目录 INSTANCE_DIR = os.path.join(BASE_DIR, 'instance') # [修改] 统一数据库路径到 instance/monitor_data.db # 这样爬虫和IoT数据都存这里,且不会污染根目录 SQLALCHEMY_DATABASE_URI = f'sqlite:///{os.path.join(INSTANCE_DIR, "monitor_data.db")}' SQLALCHEMY_TRACK_MODIFICATIONS = False # --- 定时任务配置 --- SCHEDULER_API_ENABLED = True SCHEDULER_TIMEZONE = "Asia/Shanghai" # --- 爬虫配置 (原有) --- CRAWLER_CONFIG = { "106": { "base_url": "http://106.75.72.40:7500/api/proxy/tcp", "primary_auth": "Basic YWRtaW46bGljYWhr", "login_payload": {"username": "admin", "password": "licahk", "recaptcha": ""} }, "82": { "base_url": "http://82.156.1.111/weather/php", "login": {'username': 'renlixin', 'password': 'licahk', 'login': '123'} } } # --- [新增] IoT 物联网卡接口配置 --- # 这里的配置会被 services/iot_api.py 读取 IOT_BASE_URL = "https://iot.huskyiot.cn" IOT_APP_ID = "44aQHTpx" # 你的 AppID IOT_SECRET = "26833abf8786167a5cff5355cfc249981985124a" # 你的 Secret IOT_USERNAME = "yrsy" # 登录账号 IOT_PASSWORD = "123456789" # 登录密码 # 接口路径 IOT_URL_LOGIN = "/iot-api/system/auth/v1/get/token" IOT_URL_PAGE = "/iot-api/platform/v1/card-info/query/page" IOT_URL_DETAIL = "/iot-api/platform/v1/card-info/query/batch-card-detail"