package main import ( "flag" "log" "os" "os/signal" "syscall" "time" "iot-base-station/simulations/devices" ) var ( broker = flag.String("broker", "tcp://localhost:1883", "MQTT broker address") count = flag.Int("count", 5, "Number of sensors to simulate") interval = flag.Duration("interval", 30*time.Second, "Data reporting interval") ) func main() { flag.Parse() // 创建温度传感器模拟器 sensors := make([]*devices.TemperatureSensor, *count) for i := 0; i < *count; i++ { id := fmt.Sprintf("temp_sensor_%02d", i+1) name := fmt.Sprintf("温度传感器 %02d", i+1) location := fmt.Sprintf("机房%d", (i%3)+1) sensor := devices.NewTemperatureSensor(id, name, location, 15.0, 35.0, *interval) sensors[i] = sensor // 连接到MQTT代理 if err := sensor.Connect(*broker); err != nil { log.Fatalf("Failed to connect sensor %s: %v", id, err) } // 启动传感器 sensor.Start() log.Printf("Started sensor: %s", id) } log.Printf("Started %d temperature sensors", *count) // 等待中断信号 quit := make(chan os.Signal, 1) signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM) <-quit log.Println("Shutting down sensors...") // 停止所有传感器 for _, sensor := range sensors { sensor.Stop() sensor.Disconnect() } log.Println("All sensors stopped") }