| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- 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")
- }
|