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 }