github.com/futurehomeno/fimpgo@v1.14.0/cli/client.go (about)

     1  package main
     2  
     3  import (
     4  	"flag"
     5  	"github.com/futurehomeno/fimpgo"
     6  	log "github.com/sirupsen/logrus"
     7  )
     8  
     9  func onMsg(topic string, addr *fimpgo.Address, iotMsg *fimpgo.FimpMessage, rawMessage []byte) {
    10  	log.Infof("New message from topic %s", topic)
    11  	log.Infof("Message received with type: %s", iotMsg.Type)
    12  }
    13  
    14  func main() {
    15  	mqttHost := flag.String("host", "localhost:1883", "MQTT broker URL , for instance cube.local:1883")
    16  	flag.Parse()
    17  	log.SetLevel(log.DebugLevel)
    18  	log.Infof("Broker url %s", *mqttHost)
    19  	mqtt := fimpgo.NewMqttTransport("tcp://"+*mqttHost, "", "", "", true, 1, 1)
    20  	err := mqtt.Start()
    21  	log.Infof("Connected to broker %s", *mqttHost)
    22  	if err != nil {
    23  		log.Error("Error connecting to broker ", err)
    24  	}
    25  
    26  	mqtt.SetMessageHandler(onMsg)
    27  	//time.Sleep(time.Second*1)
    28  	if err := mqtt.Subscribe("#"); err != nil {
    29  		log.Error(err)
    30  	}
    31  	log.Info("Publishing message")
    32  
    33  	msg := fimpgo.NewFloatMessage("evt.sensor.report", "temp_sensor", float64(35.5), nil, nil, nil)
    34  	adr := fimpgo.Address{MsgType: fimpgo.MsgTypeEvt, ResourceType: fimpgo.ResourceTypeDevice, ResourceName: "test", ResourceAddress: "1", ServiceName: "temp_sensor", ServiceAddress: "300"}
    35  	if err := mqtt.Publish(&adr, msg); err != nil {
    36  		log.Error(err)
    37  	}
    38  
    39  	select {}
    40  
    41  }