Example #1
0
    def get_record_from_device(self,
                               device_id,
                               value_type=None,
                               order='desc',
                               limit=600):
        con = self._get_connection()
        if value_type:
            type_selector = str.format("AND Type='{}'", value_type)
        else:
            type_selector = ""

        try:
            cur = con.cursor()
            cur.row_factory = sql.Row  # return data from cursor as dictionary
            cur.execute(
                str.format(
                    "SELECT * FROM Records WHERE Device_id=:Device_id {} ORDER BY TIME {} LIMIT {}",
                    type_selector, order, limit), {"Device_id": device_id})

            rows = cur.fetchall()
            return [
                DAO.Record(x['Device_id'], x['Time'], x['Type'], x['Value'])
                for x in rows
            ]
        except sql.Error as e:
            print(e.args[0])
            return []
        finally:
            con.close()
Example #2
0
    def data_callback(self, client, userdata, msg):
        """
        Handle messages from device witch contain measured data
        Topic: esp_hub/device/+/data
        """
        data = self.extract_payload(msg)
        client_id = self.extract_device_id(msg)

        if 'type' in data and 'value' in data:
            record = DAO.Record(client_id, datetime.now(), data["type"], data["value"])
            self.db.insert_record(record)
            print(">>> ", data['type'], data['value'])