__author__ = 'asc' logger def log(self, message, message_type="text"): if message_type == "text": print ("%s - Log Message: %s"% (str(datetime.datetime.now()), message)) elif message_type == "image": image = message if image: filename = datetime.datetime.now().strftime("Image %Y%m%d-%H%M%S.jpg") with open(os.path.join(self.photo_path, filename), 'wb') as f: f.write(message) return 'success' elif message_type == "data": message["sent"] = str(datetime.datetime.now()) file=self.log_path header = add_keys_if_necessary(file, message) keys = header log=open(file, 'a') writer = csv.DictWriter(log, keys, extrasaction="ignore") writer.writerow(message) log.close() else: raise Exception def _send_data(self, message, message_type): if message_type == "ping": #TODO send text contentType='text/xml' if self.use_lan: logger.info("Sending ping using LAN") req = request.Request("{0}:{1}/{2}".format(self.url, self.server_port, self.ping_path)) req.add_header('Content-Type', contentType) response = request.urlopen(req,json.dumps(message).encode()) response = response.read() pass elif not self.use_lan: logger.info("Sending ping using modem") # logger.debug("attaching GPRS") # # if not self.inet.attachGPRS("wholesale", "", "", 1): # logger.error("error attaching GPRS") # return False logger.debug("posting") if not self.inet.httpPOST( self.url, self.server_port, "/{}".format(self.ping_path), json.dumps(message), contentType=contentType ): logger.error("error making HTTP post: {0}".format(self.inet.errorText)) return False response=self.inet.httpResponse if response is not None: response = str(self.inet.httpResponse).replace("\n\r", "\n") else: response = ("empty response") elif message_type == "image": response=None m = MultipartEncoder(fields={'image': ('image', message, 'image/jpeg')}) if self.use_lan: logger.info ("Sending image using LAN") response = requests.post("{0}:{1}/{2}".format(self.url, self.server_port, self.image_path), data=m.read(), headers={'Content-Type': m.content_type}) pass elif not self.use_lan: logger.info ("Sending image using modem") # logger.debug("attaching GPRS") # if not self.inet.attachGPRS("wholesale", "", "", 1): # logger.error("error attaching GPRS") # return False logger.debug("ip = {0}".format(self.inet.ip)) logger.debug("making HTTP POST request") if not self.inet.httpPOST( self.url, self.server_port, "/{}".format(self.image_path), m.to_string(), contentType=m.content_type ): logger.error("error making HTTP POST: {0}".format(self.inet.errorText)) return False if self.inet.httpResponse is not None: response = str(self.inet.httpResponse).replace("\n\r", "\n") else: response = "empty response" elif message_type == "data": contentType="application/json" message["sent"] = str(datetime.datetime.now()) if self.use_lan: logger.info("Sending data using LAN") req = request.Request("{0}:{1}/{2}".format(self.url, self.server_port, self.data_path)) req.add_header('Content-Type', contentType) response = request.urlopen(req,json.dumps(message).encode()) response = response.read() pass elif not self.use_lan: logger.info("Sending data using modem") logger.debug("posting") if not self.inet.httpPOST( self.url, self.server_port, "/{}".format(self.data_path), json.dumps(message), contentType=contentType ): logger.error("error making HTTP POST: {0}".format(self.inet.errorText)) return False if self.inet.httpResponse is not None: response = str(self.inet.httpResponse).replace("\n\r", "\n") else: response = ("empty response") def create_transpondence(self): if self._transpondence is None: self._transpondence={} self._transpondence['mt']=self.mt.now() def add_to_transpondence(self, data, info_type="data"): if self._transpondence.get(info_type) is not None: if type(self._transpondence.get(info_type)) is list: self._transpondence[info_type].append(data) else: self._transpondence[info_type] = [self._transpondence[info_type]] self._transpondence[info_type].append(data) else: self._transpondence[info_type]=[data] self._transpondence