oktopus/internal/mqtt/mqtt-client.go
2023-03-09 22:00:12 -03:00

67 lines
1.2 KiB
Go

package mqtt
import (
"context"
"log"
"net"
"github.com/eclipse/paho.golang/paho"
"github.com/leandrofars/oktopus/internal/utils"
)
func StartMqttClient(addr, port *string) *paho.Client {
conn, err := net.Dial("tcp", *addr+":"+*port)
if err != nil {
log.Fatal(err)
}
clientConfig := paho.ClientConfig{
Conn: conn,
}
return paho.NewClient(clientConfig)
}
func StartNewConnection(id, user, pass string) paho.Connect {
connParameters := paho.Connect{
KeepAlive: 30,
ClientID: id,
CleanStart: true,
Username: user,
Password: []byte(pass),
}
if id != "" {
connParameters.ClientID = id
} else {
mac, err := utils.GetMacAddr()
if err != nil {
log.Fatal(err)
}
connParameters.ClientID = mac[0]
}
if user != "" {
connParameters.UsernameFlag = true
}
if pass != "" {
connParameters.PasswordFlag = true
}
return connParameters
}
func ConnectMqttBroker(c *paho.Client, cp paho.Connect, addr *string) {
conn, err := c.Connect(context.Background(), &cp)
if err != nil {
log.Fatal(err)
}
if conn.ReasonCode != 0 {
log.Fatalf("Failed to connect to %s : %d - %s", *addr, conn.ReasonCode, conn.Properties.ReasonString)
}
}