Ejemplo n.º 1
0
 def on_request_control(self, item, data, timeout):
     """ MsgControlReq """
     logger.debug(self._tag + "===> on_request_control")
     convert_control_item_dict = {
         'ENGINE':             tbox_pb2.ENGINE,
         'AIR_CONDITION_CTRL': tbox_pb2.AIR_CONDITION_CTRL,
         'LOCK':               tbox_pb2.LOCK,
         'FIND_VEHICLE':       tbox_pb2.FIND_VEHICLE,
     }
     config_item = convert_control_item_dict[item]
     self._result = False
     publish_msg = tbox_pb2.MsgTop()
     # message_head
     self.__fill_message_head(publish_msg, self.__inc_msg_id(), tbox_pb2.CONTROL_CMD)
     # remote_control_request
     publish_msg.remote_control_cmd.cmd = config_item
     self.__set_control_item(publish_msg, config_item, data)
     # publish
     self._mqttc.publish(MQTT_DEVICE_TOPIC_PREFIX + self._expected_device + MQTT_DEVICE_TOPIC_SUFFIX, publish_msg.SerializeToString())
     MqttDump.dump(publish_msg, logger.info)
     # wait_event
     self._event.wait(int(timeout))
     if not self._event.isSet() or not self._result:
         logger.error(self._tag + "Exception on remote_control_request: Timeout to wait event")
     self._event.clear()
     return self._result
Ejemplo n.º 2
0
 def on_push_message(self, timeout):
     logger.info(self._tag + "===> on_push_message")
     self._result = False
     publish_msg = tbox_pb2.MsgTop()
     # message_head
     self.__fill_message_head(publish_msg, self.__inc_msg_id(), tbox_pb2.PUSH_MESSAGE)
     # publish
     self._mqttc.publish(MQTT_DEVICE_TOPIC_PREFIX + self._expected_device + MQTT_DEVICE_TOPIC_SUFFIX, publish_msg.SerializeToString())
     MqttDump.dump(publish_msg, logger.info)
Ejemplo n.º 3
0
 def on_create(self):
     logger.debug(self._tag + "on_create called")
     # MsgTop
     self._msgtop = tbox_pb2.MsgTop()
     # MQTT onCreate
     self._mqttc = mqtt.Client()
     encryption = MQTT_MAJOR_ENCRYPTION if self._server == MQTT_MAJOR_SERVER else MQTT_MINOR_ENCRYPTION
     if encryption != '':
         try:
             self._mqttc.tls_set(encryption)
             self._mqttc.tls_insecure_set(True)
         except Exception, e:
             raise MqttCommError("Exception on set MQTT TLS: " + str(e) + '(' + encryption + ')')
Ejemplo n.º 4
0
 def __on_response_heartbeat(self, client, userdata, msgtop):
     """ MsgHeartBeatResp """
     logger.info(self._tag + "===> on_response_heartbeat")
     publish_msg = tbox_pb2.MsgTop()
     # message_head
     self.__fill_message_head(publish_msg, self._msg_id, tbox_pb2.HEARTBEAT_RESP)
     # heartbeat_response
     publish_msg.heart_beat_response.ack.status = True
     publish_msg.heart_beat_response.ack.code = "Succeed to response heartbeat"
     # publish
     client.publish(MQTT_DEVICE_TOPIC_PREFIX + self._expected_device + MQTT_DEVICE_TOPIC_SUFFIX,
                    publish_msg.SerializeToString())
     MqttDump.dump(publish_msg)
Ejemplo n.º 5
0
 def __on_response_ota_checksum(self, client, userdata, msgtop):
     """ MsgOtaCmdCheckSumResponse """
     logger.console(self._tag + "===> on_response_ota_checksum")
     publish_msg = tbox_pb2.MsgTop()
     # message_head
     self.__fill_message_head(publish_msg, msgtop.message_head.message_id, tbox_pb2.OTA_CHECKSUM_RESP)
     # login_response
     publish_msg.ota_cmd_check_response.ack.status = True
     publish_msg.ota_cmd_check_response.ack.code = "Succeed to response ota checksum"
     publish_msg.ota_cmd_check_response.check_sum_result = True if self._ota_checksum == msgtop.ota_cmd_check_request.check_sum_code else False
     publish_msg.ota_cmd_check_response.ota_task_id = msgtop.ota_cmd_check_request.ota_task_id
     # publish
     client.publish(MQTT_DEVICE_TOPIC_PREFIX + self._expected_device + MQTT_DEVICE_TOPIC_SUFFIX,
                    publish_msg.SerializeToString())
Ejemplo n.º 6
0
 def __on_response_config_query(self, client, userdata, msgtop):
     """ MsgConfQueryResp """
     logger.info(self._tag + "===> on_response_config_query")
     publish_msg = tbox_pb2.MsgTop()
     # message_head
     self.__fill_message_head(publish_msg, self._msg_id, tbox_pb2.CONFIG_QUERY_RESP)
     # config_query_response
     publish_msg.config_query_response.ack.status = True
     publish_msg.config_query_response.ack.code = "Succeed to response config query"
     publish_msg.config_query_response.qconfig_data.CopyFrom(self._msgtop.config_query_response.qconfig_data)
     # publish
     client.publish(MQTT_DEVICE_TOPIC_PREFIX + self._expected_device + MQTT_DEVICE_TOPIC_SUFFIX,
                    publish_msg.SerializeToString())
     MqttDump.dump(publish_msg)
Ejemplo n.º 7
0
 def on_request_diagnosis(self, timeout):
     logger.info(self._tag + "===> on_request_diagnosis")
     self._result = False
     publish_msg = tbox_pb2.MsgTop()
     # message_head
     self.__fill_message_head(publish_msg, self.__inc_msg_id(), tbox_pb2.DIAGNOSIS_REQ)
     # publish
     self._mqttc.publish(MQTT_DEVICE_TOPIC_PREFIX + self._expected_device + MQTT_DEVICE_TOPIC_SUFFIX, publish_msg.SerializeToString())
     MqttDump.dump(publish_msg, logger.info)
     # wait_event
     self._event.wait(int(timeout))
     if not self._event.isSet() or not self._result:
         logger.error(self._tag + "Exception on remote_diagnosis_request: Timeout to wait event")
     self._event.clear()
     return self._result
Ejemplo n.º 8
0
 def __handle_topic_business(self, client, userdata, msg):
     logger.console(self._tag + "__handle_topic_business called")
     msgtop = tbox_pb2.MsgTop()
     msgtop.ParseFromString(msg.payload)
     if self.__is_valid_device(msgtop):
         # set parameter
         if not self._is_connected:
             self._protocol_version = msgtop.message_head.protocol_version
             self._equipment_id_type = msgtop.message_head.equipment_id_type
             self._msg_id = msgtop.message_head.message_id
             self._token = "token-" + self._expected_device
             self._is_connected = True
         MqttDump.dump(msgtop)
         handle = self._handle_business_dict.get(msgtop.message_head.msg_type, None)
         if handle is not None:
             handle(client, userdata, msgtop)
Ejemplo n.º 9
0
 def __handle_topic_report(self, client, userdata, msg):
     logger.debug(self._tag + "==> handle_topic_report")
     msgtop = tbox_pb2.MsgTop()
     msgtop.ParseFromString(msg.payload)
     if self.__is_valid_device(msgtop):
         # set parameter
         if not self._is_connected:
             self._protocol_version = msgtop.message_head.protocol_version
             self._did_type = msgtop.message_head.did_type
             self._msg_id = msgtop.message_head.message_id
             self._token = msgtop.message_head.token
             self._task_id = msgtop.message_head.task_id
             self._is_connected = True
         MqttDump.dump(msgtop)
         handle = self._handle_report_dict.get(msgtop.message_head.msg_type, None)
         if handle is not None:
             handle(client, userdata, msgtop)
Ejemplo n.º 10
0
 def on_request_ota_cmd(self, ver, addr, checksum, timeout):
     """ MsgOtaCmd """
     logger.debug(self._tag + "===> on_request_ota_cmd")
     # initial ota_result.result
     self._msgtop.ota_result.Clear()
     self._msgtop.ota_result.result = tbox_pb2.OTA_IN_PROCESS
     self._ota_checksum = checksum
     publish_msg = tbox_pb2.MsgTop()
     # message_head
     self.__fill_message_head(publish_msg, self.__inc_msg_id(), tbox_pb2.OTA_CMD_REQ)
     # remote_ota_request
     publish_msg.ota_cmd.update_target_version = ver
     publish_msg.ota_cmd.upgrade_file_download_addr = addr
     publish_msg.ota_cmd.ota_task_id = 'task-' + str(publish_msg.message_head.msg_c_time) + ''.join(str(random.choice(range(10))) for _ in range(5))
     # publish
     self._mqttc.publish(MQTT_DEVICE_TOPIC_PREFIX + self._expected_device + MQTT_DEVICE_TOPIC_SUFFIX,
                         publish_msg.SerializeToString())
     MqttDump.dump(publish_msg, logger.info)
Ejemplo n.º 11
0
 def on_request_remote_config(self, item, data, timeout):
     """
     """
     logger.info(self._tag + "on_request_remote_config called")
     convert_config_item_dict = {
         'MQTT_SERVER_ADDR':                tbox_pb2.MQTT_SERVER_ADDR,
         'MQTT_SERVER_TOPIC':               tbox_pb2.MQTT_SERVER_TOPIC,
         'MQTT_KEY_BUSINESS_SERVER_ADDR':   tbox_pb2.MQTT_KEY_BUSINESS_SERVER_ADDR,
         'MQTT_KEY_BUSINESS_SERVER_TOPIC':  tbox_pb2.MQTT_KEY_BUSINESS_SERVER_TOPIC,
         'ECALL_NUMBER':                    tbox_pb2.ECALL_NUMBER,
         'BCALL_NUMBER':                    tbox_pb2.BCALL_NUMBER,
         'ICALL_NUMBER':                    tbox_pb2.ICALL_NUMBER,
         'ECALL_ENABLE':                    tbox_pb2.ECALL_ENABLE,
         'BCALL_ENABLE':                    tbox_pb2.BCALL_ENABLE,
         'ICALL_ENABLE':                    tbox_pb2.ICALL_ENABLE,
         'SMS_GATE_NUMBER_UPLOAD':          tbox_pb2.SMS_GATE_NUMBER_UPLOAD,
         'SMS_GATE_NUMBER_DOWNLOAD':        tbox_pb2.SMS_GATE_NUMBER_DOWNLOAD,
         'DATAMINING_UPLOAD_FREQUENCY':     tbox_pb2.DATAMINING_UPLOAD_FREQUENCY,
         'VEHICLE_STATUS_UPLOAD_FREQUENCY': tbox_pb2.VEHICLE_STATUS_UPLOAD_FREQUENCY,
         'IGNITION_BLOWOUT_UPLOAD_ENABLE':  tbox_pb2.IGNITION_BLOWOUT_UPLOAD_ENABLE,
         'UPLOAD_ALERT_ENABLE':             tbox_pb2.UPLOAD_ALERT_ENABLE,
         'DATAMING_ENABLE':                 tbox_pb2.DATAMING_ENABLE,
         'SVT_ENABLE':                      tbox_pb2.SVT_ENABLE,
         'ELETRONIC_DEFENSE_ENABLE':        tbox_pb2.ELETRONIC_DEFENSE_ENABLE,
         'ABNORMAL_MOVE_THRESHOLD_VALUE':   tbox_pb2.ABNORMAL_MOVE_THRESHOLD_VALUE,
     }
     config_item = convert_config_item_dict[item]
     self._result = False
     publish_msg = tbox_pb2.MsgTop()
     # message_head
     self.__fill_message_head(publish_msg, self.__inc_msg_id(), tbox_pb2.REMOTE_CONFIG_REQUEST)
     # remote_config_request
     publish_msg.remote_config_request.config_items.append(config_item)
     self.__set_remote_config_item(publish_msg, config_item, data)
     # publish
     self._mqttc.publish(MQTT_DEVICE_TOPIC_PREFIX + self._expected_device + MQTT_DEVICE_TOPIC_SUFFIX, publish_msg.SerializeToString())
     MqttDump.dump(publish_msg, logger.info)
     # wait_event
     self._event.wait(int(timeout))
     if not self._event.isSet() or not self._result:
         logger.error(self._tag + "Exception on remote_config_request: Timeout to wait event")
     self._event.clear()
     return self._result
Ejemplo n.º 12
0
 def __on_response_login(self, client, userdata, msgtop):
     """ MsgLoginResp """
     logger.info(self._tag + "===> on_response_login")
     # set parameter
     if not self._is_connected:
         self._protocol_version = msgtop.message_head.protocol_version
         self._did_type = msgtop.message_head.did_type
         self._msg_id = msgtop.message_head.message_id
         self._token = "token-" + self._expected_device
         self._is_connected = True
     publish_msg = tbox_pb2.MsgTop()
     # message_head
     self.__fill_message_head(publish_msg, self._msg_id, tbox_pb2.LOGIN_RESP)
     # login_response
     publish_msg.login_response.ack.status = True
     publish_msg.login_response.ack.code = "Succeed to login"
     publish_msg.login_response.token = self._token
     # publish
     client.publish(MQTT_DEVICE_TOPIC_PREFIX + self._expected_device + MQTT_DEVICE_TOPIC_SUFFIX,
                    publish_msg.SerializeToString())
     MqttDump.dump(publish_msg)
Ejemplo n.º 13
0
 def __on_response_login(self, client, userdata, msgtop):
     """ on_response_login """
     logger.console(self._tag + "on_response_login called")
     # set parameter
     if not self._is_connected:
         self._protocol_version = msgtop.message_head.protocol_version
         self._equipment_id_type = msgtop.message_head.equipment_id_type
         self._msg_id = msgtop.message_head.message_id
         self._token = "token-" + self._expected_device
         self._is_connected = True
     publish_msg = tbox_pb2.MsgTop()
     # message_head
     self.__fill_message_head(publish_msg, self._msg_id, tbox_pb2.LOGIN_RESPONSE)
     # login_response
     publish_msg.login_response.ack_code.ack_code = tbox_pb2.SUCCESS
     publish_msg.login_response.ack_code.code_desp = "Succeed to login"
     publish_msg.login_response.token = self._token
     # publish
     client.publish(MQTT_DEVICE_TOPIC_PREFIX + self._expected_device + MQTT_DEVICE_TOPIC_SUFFIX,
                    publish_msg.SerializeToString())
     logger.console(self._tag + "on_response_login done")
Ejemplo n.º 14
0
 def on_request_config(self, item, data, timeout):
     """ MsgConfReq """
     logger.debug(self._tag + "===> on_request_config")
     config_item_req_dict = {
         'MQTT_SERVER_ADDR_REQ':                self._on_request_mqtt_server_addr,
         'MQTT_SERVER_TOPIC_REQ':               self._on_request_mqtt_server_topic,
         'MQTT_KEY_BUSINESS_SERVER_ADDR_REQ':   self._on_request_mqtt_key_business_server_addr,
         'MQTT_KEY_BUSINESS_SERVER_TOPIC_REQ':  self._on_request_mqtt_key_business_server_topic,
         'ECALL_NUMBER_REQ':                    self._on_request_ecall_number,
         'BCALL_NUMBER_REQ':                    self._on_request_bcall_number,
         'ICALL_NUMBER_REQ':                    self._on_request_icall_number,
         'ECALL_ENABLE_REQ':                    self._on_request_ecall_enable,
         'BCALL_ENABLE_REQ':                    self._on_request_bcall_enable,
         'ICALL_ENABLE_REQ':                    self._on_request_icall_enable,
         'SMS_GATE_NUMBER_UPLOAD_REQ':          self._on_request_sms_gate_number_upload,
         'SMS_GATE_NUMBER_DOWNLOAD_REQ':        self._on_request_sms_gate_number_download,
         'DATAMINING_UPLOAD_FREQUENCY_REQ':     self._on_request_datamining_upload_freq,
         'VEHICLE_STATUS_UPLOAD_FREQUENCY_REQ': self._on_request_vehicle_status_upload_freq,
         'IGNITION_BLOWOUT_UPLOAD_ENABLE_REQ':  self._on_request_ignition_blowout_upload_enable,
         'UPLOAD_ALERT_ENABLE_REQ':             self._on_request_upload_alert_enable,
         'DATAMING_ENABLE_REQ':                 self._on_request_datamining_enable,
         'SVT_ENABLE_REQ':                      self._on_request_svt_enable,
         'ELETRONIC_DEFENSE_ENABLE_REQ':        self._on_request_eletronic_defense_enable,
         'ABNORMAL_MOVE_THRESHOLD_VALUE_REQ':   self._on_request_abnormal_move_threshold_value,
         'TRACKING_DATA_FREQUENCY_REQ':         self._on_request_tracking_data_freq,
     }
     self._result = False
     publish_msg = tbox_pb2.MsgTop()
     # message_head
     self.__fill_message_head(publish_msg, self.__inc_msg_id(), tbox_pb2.CONFIG_REQ)
     # remote_config_request
     config_item_req_dict[item](publish_msg, data)
     # publish
     self._mqttc.publish(MQTT_DEVICE_TOPIC_PREFIX + self._expected_device + MQTT_DEVICE_TOPIC_SUFFIX, publish_msg.SerializeToString())
     logging_print("===========Publish Message===========")
     MqttDump.dump(publish_msg, logging_print)
Ejemplo n.º 15
0
 def on_parse(self, msg):
     msgtop = tbox_pb2.MsgTop()
     msgtop.ParseFromString(msg)
     ParseDump.dump(msgtop)