main.go 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. package main
  2. import (
  3. "flag"
  4. "log"
  5. "os"
  6. "os/signal"
  7. "syscall"
  8. "time"
  9. "iot-base-station/simulations/devices"
  10. )
  11. var (
  12. broker = flag.String("broker", "tcp://localhost:1883", "MQTT broker address")
  13. count = flag.Int("count", 5, "Number of sensors to simulate")
  14. interval = flag.Duration("interval", 30*time.Second, "Data reporting interval")
  15. )
  16. func main() {
  17. flag.Parse()
  18. // 创建温度传感器模拟器
  19. sensors := make([]*devices.TemperatureSensor, *count)
  20. for i := 0; i < *count; i++ {
  21. id := fmt.Sprintf("temp_sensor_%02d", i+1)
  22. name := fmt.Sprintf("温度传感器 %02d", i+1)
  23. location := fmt.Sprintf("机房%d", (i%3)+1)
  24. sensor := devices.NewTemperatureSensor(id, name, location, 15.0, 35.0, *interval)
  25. sensors[i] = sensor
  26. // 连接到MQTT代理
  27. if err := sensor.Connect(*broker); err != nil {
  28. log.Fatalf("Failed to connect sensor %s: %v", id, err)
  29. }
  30. // 启动传感器
  31. sensor.Start()
  32. log.Printf("Started sensor: %s", id)
  33. }
  34. log.Printf("Started %d temperature sensors", *count)
  35. // 等待中断信号
  36. quit := make(chan os.Signal, 1)
  37. signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM)
  38. <-quit
  39. log.Println("Shutting down sensors...")
  40. // 停止所有传感器
  41. for _, sensor := range sensors {
  42. sensor.Stop()
  43. sensor.Disconnect()
  44. }
  45. log.Println("All sensors stopped")
  46. }