github.com/simpleiot/simpleiot@v0.18.3/sim/node.go (about)

     1  package sim
     2  
     3  import (
     4  	"log"
     5  	"time"
     6  
     7  	"github.com/simpleiot/simpleiot/api"
     8  	"github.com/simpleiot/simpleiot/data"
     9  )
    10  
    11  func packetDelay() {
    12  	time.Sleep(5 * time.Second)
    13  }
    14  
    15  // NodeSim simulates a simple node
    16  func NodeSim(portal, nodeID string) {
    17  	log.Printf("starting simulator: ID: %v, portal: %v\n", nodeID, portal)
    18  
    19  	sendPoints := api.NewSendPoints(portal, nodeID, "", time.Second*10, false)
    20  	tempSim := NewSim(72, 0.2, 70, 75)
    21  	voltSim := NewSim(2, 0.1, 1, 5)
    22  	voltSim2 := NewSim(5, 0.5, 1, 10)
    23  
    24  	for {
    25  		points := make([]data.Point, 3)
    26  		points[0] = data.Point{
    27  			Type:  "temp",
    28  			Value: tempSim.Sim(),
    29  		}
    30  
    31  		points[1] = data.Point{
    32  			Key:   "V0",
    33  			Type:  "volt",
    34  			Value: voltSim.Sim(),
    35  		}
    36  
    37  		points[2] = data.Point{
    38  			Key:   "V1",
    39  			Type:  "volt",
    40  			Value: voltSim2.Sim(),
    41  		}
    42  
    43  		err := sendPoints(points)
    44  		if err != nil {
    45  			log.Println("Error sending points:", err)
    46  		}
    47  		packetDelay()
    48  	}
    49  }