# 应用基础配置 app: name: "pig-farm-controller" version: "1.0.0" # JWT 密钥,用于签发和验证 token。请在生产环境中替换为更复杂的密钥! jwt_secret: "pig-farm-controller" # HTTP 服务配置 server: port: 8086 mode: "release" # Gin 运行模式: "debug", "release", "test" # 日志配置 log: level: "info" # 日志级别: "debug", "info", "warn", "error", "dpanic", "panic", "fatal" format: "console" # 日志格式: "console" 或 "json" enable_file: true # 是否启用文件日志 file_path: "./app_logs/app.log" # 日志文件路径 max_size: 10 # 每个日志文件的最大尺寸 (MB) max_backups: 5 # 保留的旧日志文件的最大数量 max_age: 30 # 保留的旧日志文件的最大天数 compress: false # 是否压缩/归档旧日志文件 # 数据库配置 (PostgreSQL) database: host: "192.168.5.16" port: 5431 username: "pig-farm-controller" password: "pig-farm-controller" dbname: "pig-farm-controller" sslmode: "disable" # 在生产环境中建议使用 "require" is_timescaledb: true max_open_conns: 25 # 最大开放连接数 max_idle_conns: 10 # 最大空闲连接数 conn_max_lifetime: 600 # 连接最大生命周期(秒) # WebSocket 配置 (如果使用) websocket: timeout: 60 # WebSocket请求超时时间(秒) heartbeat_interval: 30 # 心跳检测间隔(秒) # 心跳/定时任务配置 heartbeat: interval: 600 # 任务调度或心跳检查的默认间隔(秒) concurrency: 2 # 执行任务的并发协程数 # chirp_stack 配置文件 chirp_stack: api_host: "http://192.168.5.16:8090" # ChirpStack API服务器地址 api_token: "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhdWQiOiJjaGlycHN0YWNrIiwiaXNzIjoiY2hpcnBzdGFjayIsInN1YiI6IjU2ZWRhNWQ3LTM4NzgtNDAwMC05MWMzLWYwZDk3M2YwODhjNiIsInR5cCI6ImtleSJ9.NxBxTrhPAnezKMqAYZR_Uq2mGQjJRlmVzg1ZDFCyaHQ" # ChirpStack API密钥, 请求头中需要设置 Grpc-Metadata-Authorization: Bearer fport: 1 api_timeout: 10 # ChirpStack API请求超时时间(秒) # 等待设备上行响应的超时时间(秒)。 # 对于LoRaWAN这种延迟较高的网络,建议设置为5分钟 (300秒) 或更长。 collection_request_timeout: 300 # 任务调度器配置 task: interval: 3 num_workers: 5 # Lora 配置 lora: mode: "lora_mesh" # "lora_wan" or "lora_mesh" lora_mesh: # 主节点串口 uart_port: "/dev/ttyS1" # LoRa模块的通信波特率 baud_rate: 9600 # 等待LoRa模块AT指令响应的超时时间(ms) timeout: 50 # LoRa Mesh 模块发送模式(EC: 透传; ED: 完整数据包) # e.g. # EC: 接收端只会接收到消息, 不会接收到请求头 # e.g. 发送: EC 05 02 01 48 65 6c 6c 6f # (EC + 05(消息长度) + 0201(地址) + "Hello"(消息本体)) # 接收: 48 65 6c 6c 6f ("Hello") # ED: 接收端会接收完整数据包,包含自定义协议头和地址信息。 # e.g. 发送: ED 05 12 34 01 00 01 02 03 # (ED(帧头) + 05(Length, 即 1(总包数)+1(当前包序号)+3(数据块)) + 12 34(目标地址) + 01(总包数) + 00(当前包序号) + 01 02 03(数据块)) # 接收: ED 05 12 34 01 00 01 02 03 56 78(56 78 是发送方地址,会自动拼接到消息末尾) lora_mesh_mode: "ED" # 单包最大用户数据数据长度, 模块限制240, 去掉两位自定义包头, 还剩238 max_chunk_size: 238 #分片重组超时时间(秒)。如果在一个分片到达后,超过这个时间 # 还没收到完整的包,则认为接收失败。 reassembly_timeout: 30