| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 |
- package main
- import (
- "io/ioutil"
- "os"
- "strings"
- "lc/common/mqtt"
- "lc/common/protocol"
- "lc/common/util"
- )
- func HandleTpQApp(m mqtt.Message) {
- var obj protocol.Pack_IDObject
- var ret protocol.Pack_MutilFileObject
- if err := obj.DeCode(m.PayloadString()); err == nil {
- //读文件内容
- ReadMutilFileContent(protocol.TP_GW_APP, obj.Data.Id, &ret)
- if str, err := ret.EnCode(appConfig.GID, obj.Seq); err == nil {
- GetMQTTMgr().Publish(GetTopic(protocol.DT_GATEWAY, appConfig.GID, protocol.TP_GW_APP_ACK), str, 0, ToCloud)
- }
- }
- }
- func HandleTpWApp(m mqtt.Message) {
- var obj protocol.Pack_SeqFileObject
- var ret protocol.Pack_Ack
- err := obj.DeCode(m.PayloadString())
- if err == nil {
- err = HandleFile(protocol.TP_GW_SET_APP, &obj)
- }
- if str, err := ret.EnCode(appConfig.GID, appConfig.GID, obj.Seq, err); err == nil {
- GetMQTTMgr().Publish(GetTopic(protocol.DT_GATEWAY, appConfig.GID, protocol.TP_GW_SET_APP_ACK), str, 0, ToCloud)
- }
- }
- func HandleTpQSerial(m mqtt.Message) {
- var obj protocol.Pack_IDObject
- var ret protocol.Pack_MutilFileObject
- if err := obj.DeCode(m.PayloadString()); err == nil {
- //读文件内容
- ReadMutilFileContent(protocol.TP_GW_SERIAL, obj.Data.Id, &ret)
- if str, err := ret.EnCode(appConfig.GID, obj.Seq); err == nil {
- GetMQTTMgr().Publish(GetTopic(protocol.DT_GATEWAY, appConfig.GID, protocol.TP_GW_SERIAL_ACK), str, 0, ToCloud)
- }
- }
- }
- func HandleTpWSerial(m mqtt.Message) {
- var obj protocol.Pack_SeqFileObject
- var ret protocol.Pack_Ack
- err := obj.DeCode(m.PayloadString())
- if err == nil {
- err = HandleFile(protocol.TP_GW_SET_SERIAL, &obj)
- }
- if str, err := ret.EnCode(appConfig.GID, appConfig.GID, obj.Seq, err); err == nil {
- GetMQTTMgr().Publish(GetTopic(protocol.DT_GATEWAY, appConfig.GID, protocol.TP_GW_SET_SERIAL_ACK), str, 0, ToCloud)
- }
- }
- func HandleTpQRtu(m mqtt.Message) {
- var obj protocol.Pack_IDObject
- var ret protocol.Pack_MutilFileObject
- if err := obj.DeCode(m.PayloadString()); err == nil {
- //读文件内容
- ReadMutilFileContent(protocol.TP_GW_RTU, obj.Data.Id, &ret)
- if str, err := ret.EnCode(appConfig.GID, obj.Seq); err == nil {
- GetMQTTMgr().Publish(GetTopic(protocol.DT_GATEWAY, appConfig.GID, protocol.TP_GW_RTU_ACK), str, 0, ToCloud)
- }
- }
- }
- func HandleTpWRtu(m mqtt.Message) {
- var obj protocol.Pack_SeqFileObject
- var ret protocol.Pack_Ack
- err := obj.DeCode(m.PayloadString())
- if err == nil {
- err = HandleFile(protocol.TP_GW_SET_RTU, &obj)
- }
- if str, err := ret.EnCode(appConfig.GID, appConfig.GID, obj.Seq, err); err == nil {
- GetMQTTMgr().Publish(GetTopic(protocol.DT_GATEWAY, appConfig.GID, protocol.TP_GW_SET_RTU_ACK), str, 0, ToCloud)
- }
- }
- func HandleTpQModel(m mqtt.Message) {
- var obj protocol.Pack_IDObject
- var ret protocol.Pack_MutilFileObject
- if err := obj.DeCode(m.PayloadString()); err == nil {
- //读文件内容
- ReadMutilFileContent(protocol.TP_GW_MODEL, obj.Data.Id, &ret)
- if str, err := ret.EnCode(appConfig.GID, obj.Seq); err == nil {
- GetMQTTMgr().Publish(GetTopic(protocol.DT_GATEWAY, appConfig.GID, protocol.TP_GW_MODEL_ACK), str, 0, ToCloud)
- }
- }
- }
- func HandleTpWModel(m mqtt.Message) {
- var obj protocol.Pack_SeqFileObject
- var ret protocol.Pack_Ack
- err := obj.DeCode(m.PayloadString())
- if err == nil {
- err = HandleFile(protocol.TP_GW_SET_MODEL, &obj)
- }
- if str, err := ret.EnCode(appConfig.GID, appConfig.GID, obj.Seq, err); err == nil {
- GetMQTTMgr().Publish(GetTopic(protocol.DT_GATEWAY, appConfig.GID, protocol.TP_GW_SET_MODEL_ACK), str, 0, ToCloud)
- }
- }
- func HandleTpQLog(m mqtt.Message) {
- var obj protocol.Pack_IDObject
- var ret protocol.Pack_MutilFileObject
- if err := obj.DeCode(m.PayloadString()); err == nil {
- //读文件内容
- ReadMutilFileContent(protocol.TP_GW_LOG, obj.Data.Id, &ret)
- if str, err := ret.EnCode(appConfig.GID, obj.Seq); err == nil {
- GetMQTTMgr().Publish(GetTopic(protocol.DT_GATEWAY, appConfig.GID, protocol.TP_GW_LOG_ACK), str, 0, ToCloud)
- }
- }
- }
- func HandleTpRLog(m mqtt.Message) {
- var obj protocol.Pack_IDObject
- var ret protocol.Pack_Ack
- var err error
- if err = obj.DeCode(m.PayloadString()); err == nil {
- rd, _ := ioutil.ReadDir(util.GetPath(3))
- for _, fi := range rd {
- if ok := strings.HasSuffix(fi.Name(), ".log"); ok {
- err = os.Remove(util.GetPath(3) + fi.Name())
- }
- }
- if str, err := ret.EnCode(appConfig.GID, appConfig.GID, obj.Seq, err); err == nil {
- GetMQTTMgr().Publish(GetTopic(protocol.DT_GATEWAY, appConfig.GID, protocol.TP_GW_REMOVE_LOG_ACK), str, 0, ToCloud)
- }
- }
- }
- func HandleTpQSys(m mqtt.Message) {
- var obj protocol.Pack_IDObject
- if err := obj.DeCode(m.PayloadString()); err == nil {
- go SysInfoStat(obj.Seq)
- }
- }
- type MqttOnline struct {
- }
- func (o *MqttOnline) GetOnlineMsg() (string, string) {
- //发布上线消息
- var obj protocol.Pack_IDObject
- str, err := obj.EnCode(appConfig.GID, GetNextUint64(), 0)
- if err != nil {
- return "", ""
- }
- return GetTopic(protocol.DT_GATEWAY, appConfig.GID, protocol.TP_GW_ONLINE), str
- }
- func (o *MqttOnline) GetWillMsg() (string, string) {
- payload, _ := (&protocol.Pack_IDObject{}).EnCode(appConfig.GID, GetNextUint64(), 0) //遗嘱消息
- return GetTopic(protocol.DT_GATEWAY, appConfig.GID, protocol.TP_GW_WILL), payload
- }
- // InitCloudMqttSubscribeTopics 初始化网关级别的主题订阅及路由
- func InitCloudMqttSubscribeTopics() {
- GetMQTTMgr().Subscribe(GetTopic(protocol.DT_GATEWAY, appConfig.GID, protocol.TP_GW_APP), mqtt.AtMostOnce, HandleTpQApp, ToCloud)
- GetMQTTMgr().Subscribe(GetTopic(protocol.DT_GATEWAY, appConfig.GID, protocol.TP_GW_SET_APP), mqtt.AtMostOnce, HandleTpWApp, ToCloud)
- GetMQTTMgr().Subscribe(GetTopic(protocol.DT_GATEWAY, appConfig.GID, protocol.TP_GW_SERIAL), mqtt.AtMostOnce, HandleTpQSerial, ToCloud)
- GetMQTTMgr().Subscribe(GetTopic(protocol.DT_GATEWAY, appConfig.GID, protocol.TP_GW_SET_SERIAL), mqtt.AtMostOnce, HandleTpWSerial, ToCloud)
- GetMQTTMgr().Subscribe(GetTopic(protocol.DT_GATEWAY, appConfig.GID, protocol.TP_GW_RTU), mqtt.AtMostOnce, HandleTpQRtu, ToCloud)
- GetMQTTMgr().Subscribe(GetTopic(protocol.DT_GATEWAY, appConfig.GID, protocol.TP_GW_SET_RTU), mqtt.AtMostOnce, HandleTpWRtu, ToCloud)
- GetMQTTMgr().Subscribe(GetTopic(protocol.DT_GATEWAY, appConfig.GID, protocol.TP_GW_MODEL), mqtt.AtMostOnce, HandleTpQModel, ToCloud)
- GetMQTTMgr().Subscribe(GetTopic(protocol.DT_GATEWAY, appConfig.GID, protocol.TP_GW_SET_MODEL), mqtt.AtMostOnce, HandleTpWModel, ToCloud)
- GetMQTTMgr().Subscribe(GetTopic(protocol.DT_GATEWAY, appConfig.GID, protocol.TP_GW_LOG), mqtt.AtMostOnce, HandleTpQLog, ToCloud)
- GetMQTTMgr().Subscribe(GetTopic(protocol.DT_GATEWAY, appConfig.GID, protocol.TP_GW_REMOVE_LOG), mqtt.AtMostOnce, HandleTpRLog, ToCloud)
- GetMQTTMgr().Subscribe(GetTopic(protocol.DT_GATEWAY, appConfig.GID, protocol.TP_GW_SYS), mqtt.AtMostOnce, HandleTpQSys, ToCloud)
- }
|