def work(self): data, addr = self._sock.recvfrom(255) node, endpoint, profile, cluster = addr[:4] cur_time = time() is_data = endpoint == ENDPOINT and profile == PROFILE and cluster == IS_CLUSTER node_name = self._resolver.to_name_non_blocking(node, is_data) data_name = "t" data_text = data data_attrs = dict(time=fmt_time(cur_time)) other_addr = "" if endpoint == ENDPOINT and profile == PROFILE and cluster == TTY_CLUSTER: updateDataLine(node_name, data, cur_time) else: data_name = "h" data_text = str2hex(data) data_attrs["endpoint"] = hh(endpoint, 2) data_attrs["profile"] = hh(profile, 4) data_attrs["cluster"] = hh(cluster, 2) other_addr = " (" + data_attrs["endpoint"] + "," + data_attrs["profile"] + "," + data_attrs["cluster"] + ")" self.append(node, Element(data_name, data_attrs, data_text)) print "xgw: Recv ", node_name, other_addr, ": ", repr(data_text) if is_data and not is_addr(node_name): device_type, product_type = self._resolver.to_product_type_non_blocking(node) items = {} if product_type == XBeeSensorLTHAdapter: items = xbeelth.sample(data) print "xgw: Recv ", node_name, " IS sample from ", GetXBeeProductName(product_type), " = ", repr(items) updateDataItems(node_name, items, cur_time)
def element(self): return Element("m", dict(time=fmt_time(self.time), node=self.node), [self.message])
def __str__(self): return self.message + "," + fmt_time(self.time) + "," + self.node
def element(self): return Element("d", dict(tag=self.tag, time=fmt_time(self.time), node=self.node), [self.value])
def __str__(self): return self.tag + "," + str(self.value) + "," + fmt_time(self.time) + "," + self.node