212 lines
5.3 KiB
Go
212 lines
5.3 KiB
Go
package main
|
|
|
|
import (
|
|
"bufio"
|
|
"bytes"
|
|
"encoding/json"
|
|
"fmt"
|
|
"io"
|
|
"os"
|
|
"strconv"
|
|
"strings"
|
|
|
|
mqtt "github.com/eclipse/paho.mqtt.golang"
|
|
)
|
|
|
|
var time_hold int
|
|
var mqtt_cms_bi mqtt.Client
|
|
|
|
const CMS_HOST_BI string = "tcp://broker.beetai.com:21883"
|
|
|
|
const CMS_ACCESS_TOKEN_BI string = "beeetai"
|
|
const CMS_PASS_BI = "5ige8TdfTEHoTgJz"
|
|
|
|
var id_box string = ""
|
|
var CMS_TOPIC_IN_1 string = "gpio/devices/in/+"
|
|
|
|
// var CMS_TOPIC_IN string = "gpio/devices/in/1"
|
|
// var CMS_TOPIC_OUT string = "gpio/devices/out/1"
|
|
|
|
var CMS_TOPIC_IN string = "gpio/devices/ademax/in/+"
|
|
var CMS_TOPIC_OUT string = "gpio/devices/ademax/out/+"
|
|
|
|
// var CMS_TOPIC_IN_1 string = "v1/devices/7/telemetry/+"
|
|
|
|
//var CMS_TOPIC_OUT string = "gpio/devices/ademax/out/+"
|
|
|
|
var count int = 0
|
|
var params string = ""
|
|
var method string = ""
|
|
var mode int = 0
|
|
|
|
//var ty bool = false
|
|
|
|
// {"method" : "ssh","params":"1"} {"method" : "cmd","params":"reboot"} {"method" : "cmd","params":"nano /root/monitor/engine/face_recognition/data/Config.txt"}
|
|
// {"method" : "ssh","params":"0"} {"method" : "cmd","params":"htop"}
|
|
// {"method" : "gpio","params":"1","name":"HIEUPV"}
|
|
//============================> Main <==========================
|
|
|
|
func main() {
|
|
|
|
fmt.Printf("ID BOX : ")
|
|
i := bufio.NewReader(os.Stdin)
|
|
id, err := i.ReadString('\n')
|
|
|
|
if err == io.EOF {
|
|
|
|
os.Exit(0)
|
|
|
|
}
|
|
id = strings.Replace(id, "\n", "", -1)
|
|
id_box = id
|
|
|
|
// var CMS_TOPIC_IN string = "gpio/devices/in/1"
|
|
// var CMS_TOPIC_OUT string = "gpio/devices/out/1"
|
|
var CMS_TOPIC_IN string = "gpio/devices/ademax/in/1"
|
|
var CMS_TOPIC_OUT string = "gpio/devices/ademax/out/+"
|
|
|
|
fmt.Println("ID_BOX: " + id_box)
|
|
fmt.Println("TOPIC IN :" + CMS_TOPIC_IN)
|
|
fmt.Println("TOPIC OUT :" + CMS_TOPIC_OUT)
|
|
fmt.Println("*************************************")
|
|
mqtt_begin()
|
|
mqtt_cms_bi.Subscribe(CMS_TOPIC_IN_1, 0, mqtt_messageHandler)
|
|
fmt.Printf("MQTT host: %v\n", CMS_HOST_BI)
|
|
fmt.Printf("Topic: %v\n", CMS_TOPIC_OUT)
|
|
fmt.Println("Please sellect mode.\n*Mode 1: Tranfer Full Message.\n*Mode 2: Tranfer Message Type (params,value)")
|
|
|
|
m := bufio.NewReader(os.Stdin)
|
|
md, err := m.ReadString('\n')
|
|
|
|
if err == io.EOF {
|
|
|
|
os.Exit(0)
|
|
|
|
}
|
|
md = strings.Replace(md, "\n", "", -1)
|
|
mode, _ = strconv.Atoi(md)
|
|
fmt.Printf("Mode:%v\n", mode)
|
|
fmt.Println("----------> START <----------")
|
|
if mode == 1 {
|
|
for {
|
|
Mode_1()
|
|
}
|
|
|
|
} else if mode == 2 {
|
|
for {
|
|
Mode_2()
|
|
}
|
|
|
|
}
|
|
fmt.Println("End game")
|
|
// for {
|
|
// if mode == 1 {
|
|
// Mode_1()
|
|
// } else if mode == 2 {
|
|
// Mode_2()
|
|
// }
|
|
|
|
// }
|
|
|
|
}
|
|
func Mode_1() {
|
|
fmt.Print("Message:")
|
|
reader := bufio.NewReader(os.Stdin)
|
|
msg, err := reader.ReadString('\n')
|
|
|
|
if err == io.EOF {
|
|
os.Exit(0)
|
|
}
|
|
msg = strings.Replace(msg, "\n", "", -1)
|
|
msg = strings.Replace(msg, "\n", "", -1)
|
|
count++
|
|
//CmsResponse(mqtt_cms_bi, CMS_TOPIC_OUT+strconv.Itoa(count), p)
|
|
//CmsResponse_1(mqtt_cms_bi, CMS_TOPIC_IN+strconv.Itoa(count), msg)
|
|
CmsResponse_1(mqtt_cms_bi, CMS_TOPIC_IN, msg)
|
|
fmt.Println("Publish message Mode 1 ok")
|
|
}
|
|
func Mode_2() {
|
|
fmt.Print("Method:")
|
|
reader := bufio.NewReader(os.Stdin)
|
|
p, err := reader.ReadString('\n')
|
|
|
|
if err == io.EOF {
|
|
|
|
os.Exit(0)
|
|
|
|
}
|
|
method = strings.Replace(p, "\n", "", -1)
|
|
fmt.Print("Params:")
|
|
|
|
reader1 := bufio.NewReader(os.Stdin)
|
|
v, err := reader1.ReadString('\n')
|
|
|
|
if err == io.EOF {
|
|
|
|
os.Exit(0)
|
|
|
|
}
|
|
params = strings.Replace(v, "\n", "", -1)
|
|
count++
|
|
//CmsResponse(mqtt_cms_bi, CMS_TOPIC_OUT+strconv.Itoa(count), p)
|
|
CmsResponse_2(mqtt_cms_bi, CMS_TOPIC_IN, method, params)
|
|
}
|
|
|
|
//=================> END MAIN <====================
|
|
//***********************************************//
|
|
//------------------ Function ---------------------
|
|
|
|
func mqtt_begin() {
|
|
|
|
opts_cms_bi := mqtt.NewClientOptions()
|
|
opts_cms_bi.AddBroker(CMS_HOST_BI)
|
|
opts_cms_bi.SetUsername(CMS_ACCESS_TOKEN_BI)
|
|
opts_cms_bi.SetPassword("CMS_PASS_BI")
|
|
opts_cms_bi.SetCleanSession(true)
|
|
|
|
mqtt_cms_bi = mqtt.NewClient(opts_cms_bi)
|
|
if token_1 := mqtt_cms_bi.Connect(); token_1.Wait() && token_1.Error() == nil {
|
|
fmt.Printf("MQTT CMS Beetsoft Connected\n")
|
|
//file.Write_log("MQTT CMS BeetsoftConnected\n", path_log_luncher)
|
|
} else {
|
|
fmt.Printf("MQTT CMS Beetsoft cant not Connected\n")
|
|
//file.Write_log("MQTT CMS Beetsoft cant not Connected\n", path_log_luncher)
|
|
fmt.Printf("Loi CMS Beetsoft : %v \n", token_1.Error())
|
|
fmt.Printf("-------------------\n")
|
|
}
|
|
|
|
}
|
|
|
|
/************************************************************************/
|
|
func CmsResponse_2(c mqtt.Client, topic string, method string, params string) {
|
|
//var msg = `{"` + params + `":` + value + `}`
|
|
var msg = `{"method":"` + method + `","params": "` + params + `"}`
|
|
fmt.Printf("Message:%v", msg)
|
|
c.Publish(topic, 0, false, msg)
|
|
fmt.Println("\nPublic Message Done")
|
|
fmt.Println("*****************************")
|
|
}
|
|
func CmsResponse_1(c mqtt.Client, topic string, msg string) {
|
|
fmt.Printf("Message:%v", msg)
|
|
c.Publish(topic, 0, false, msg)
|
|
fmt.Println("\nPublic Message Done")
|
|
fmt.Println("*****************************")
|
|
}
|
|
func mqtt_messageHandler(mqtt_bi mqtt.Client, message mqtt.Message) {
|
|
fmt.Printf("TOPIC: %s\n", message.Topic())
|
|
fmt.Printf("MSG:\n %s\n", message.Payload())
|
|
|
|
dec := json.NewDecoder(bytes.NewReader(message.Payload()))
|
|
var list map[string]interface{}
|
|
if err := dec.Decode(&list); err != nil {
|
|
println(err)
|
|
//return
|
|
}
|
|
//fmt.Print("\n")
|
|
if mode == 1 {
|
|
Mode_1()
|
|
} else if mode == 2 {
|
|
Mode_2()
|
|
}
|
|
}
|