def replyM2MTopicToNode(self, topicName, NodeName): self.jsonObj.Gateway = NodeName IsNodeHaveM2MMappingRules = False readyToReplyTopics = [] for SingleM2MMappingRule in _g_M2MRulesMappingList: if (SingleM2MMappingRule["OutputNode"] == NodeName): readyToReplyTopics.append(SingleM2MMappingRule) if (len(readyToReplyTopics) > 0): IsNodeHaveM2MMappingRules = True for SingleM2MMappingRule in readyToReplyTopics: #### ASSIGN TO M2M FS #### self.SubscribeTopics = class_M2MFS_Obj.SubscribeTopicsObj() self.SubscribeTopics.TopicName = SingleM2MMappingRule["InputNode"] + \ "/" + SingleM2MMappingRule["InputIO"] # FS1 self.SubscribeTopics.Node = SingleM2MMappingRule["OutputNode"] # M2M self.SubscribeTopics.Target = SingleM2MMappingRule["OutputIO"] self.SubscribeTopics.TargetValueOverride = SingleM2MMappingRule["TargetValueOverride"] self.jsonObj.SubscribeTopics.append(self.SubscribeTopics) else: IsNodeHaveM2MMappingRules = False jsonstring = self.jsonObj.to_JSON() print(bcolors.OKBLUE + "[Rules] REPTOPICLIST Send to topic:%s" % (topicName) + bcolors.ENDC) pm = class_M2MFS_MQTTManager.PublisherManager() pm.MQTT_PublishMessage(topicName, jsonstring)
def dummy_reg(): publisherManager = class_M2MFS_MQTTManager.PublisherManager() time.sleep(.5) # publisherManager.MQTT_PublishMessage("FS1", '{"Gateway": "GW1","Control":"REQTOPICLIST"}') time.sleep(.5) publisherManager.MQTT_PublishMessage( "FS1", '{"Gateway": "GW2","Control":"REQTOPICLIST"}')
def main(): REGMSG = '{"FunctionServer":"%s", "Control":"FS_REG",' \ '"Function":"M2M","FSIP":"10.0.0.1" ,"MappingNodes":"[IOs]", "Source":"%s"}' % \ (_g_cst_FSUUID, _g_cst_FSUUID) publisherManger = class_M2MFS_MQTTManager.PublisherManager() publisherManger.MQTT_PublishMessage(_g_cst_MQTTRegTopicName, REGMSG) # 訂閱自身名稱topic class_M2MFS_MQTTManager.SubscriberThreading(_g_cst_FSUUID).run()
def initREG(): publisherManager = class_M2MFS_MQTTManager.PublisherManager() initMSGObj = { 'TopicName': "NODE-02/SW2", 'Control': 'M2M_SET', 'Source': "NODE-02" } initMSGSTR = json.dumps(initMSGObj) now = time.strftime("%c") print(now) print("[INFO] SendREGMSG:%s" % initMSGSTR) publisherManager.MQTT_PublishMessage("NODE-02/SW2", initMSGSTR)
def replyM2MRulesAll(self, topicName): self.jsonObj = class_M2MFS_Obj.JSON_M2MRULE() for SingleM2MMappingRule in _g_M2MRulesMappingList: self.Rule = class_M2MFS_Obj.RuleObj() self.Rule.RuleID = SingleM2MMappingRule["RuleID"] self.Rule.InputNode = SingleM2MMappingRule["InputNode"] self.Rule.InputIO = SingleM2MMappingRule["InputIO"] self.Rule.OutputNode = SingleM2MMappingRule["OutputNode"] self.Rule.OutputIO = SingleM2MMappingRule["OutputIO"] self.Rule.TargetValueOverride = SingleM2MMappingRule["TargetValueOverride"] self.jsonObj.Rules.append(self.Rule) jsonstring = self.jsonObj.to_JSON() print(bcolors.OKBLUE + "[Rules] REPRULE Send to topic:%s" % (topicName) + bcolors.ENDC) pm = class_M2MFS_MQTTManager.PublisherManager() pm.MQTT_PublishMessage(topicName, jsonstring)
def dummy_reg(): publisherManager = class_M2MFS_MQTTManager.PublisherManager() time.sleep(.5) publisherManager.MQTT_PublishMessage( "IOTSV/REG", '{"Device": "MD-01","Control":"MD_REQFS", "Source":"MD-01"}') time.sleep(.5) publisherManager.MQTT_PublishMessage( "FS1", '{"Device": "P1","Control":"M2M_GETRULE", "Source":"MD-01"}') time.sleep(.5) publisherManager.MQTT_PublishMessage( "FS1", '{"Control": "M2M_ADDRULE","Rules": ' '[{"RuleID": "4","InputNode": "N1",' '"InputIO": "SW1","OutputNode": "N2",' '"OutputIO": "LED3","TargetValueOverride": "1"}], "Source":"MD-01"}') time.sleep(.5) publisherManager.MQTT_PublishMessage( "FS1", '{"Device": "P1","Control":"M2M_GETRULE", "Source":"MD-01"}') time.sleep(.5) publisherManager.MQTT_PublishMessage( "FS1", '{"Control": "M2M_UPDATERULE","Rules": [{"RuleID": "1", ' '"InputNode": "N1", "InputIO": "SW1",' '"OutputNode": "N2","OutputIO": "LED3",' '"TargetValueOverride": "1"}], "Source":"MD-01"}') time.sleep(.5) publisherManager.MQTT_PublishMessage( "FS1", '{"Control": "M2M_DELRULE","Rules": [{"RuleID": "2"}], "Source":"MD-01"}' ) time.sleep(.5) publisherManager.MQTT_PublishMessage( "FS1", '{"Device": "P1","Control":"M2M_GETRULE", "Source":"MD-01"}')