将 xbee 源地址存储到 Python 中的数据库中

Storing xbee source addr into database in Python

我 raspberry pi 连接了 xbees 和一个运动传感器,从连接到其中一个 xbee 的运动传感器接收数据。然后它将数据发送到我的 raspberry pi。有什么方法可以操纵或拆分输出,例如状态仅为 True/False 和地址 =\x00\x13\xa2\x00@\xbbJ 因为我想将地址存储到数据库中 if status=="True".

所以如果我这样做

if status[0]['dio-0'] == True :
            print "Yes"
            cur = con.cursor()
            cur.execute("INSERT ignore into sensor(sensor_id, status) VALUES(%s,True)",(add[0]))
            con.commit()

但是存入数据库的地址是奇怪的字符而不是\x00\x13\xa2\x00@\xbbJ。或者我应该采取任何其他方式吗?

这是代码。

from xbee import XBee
import serial


PORT = '/dev/ttyUSBXBEE'
BAUD_RATE = 9600

# Open serial port
ser = serial.Serial(PORT, BAUD_RATE)

# Create API object
xbee = XBee(ser)

def decodeReceivedFrame(response):
        add = str(response['source_addr_long'])
        status = response['samples']
        return [add, status]

# Continuously read and print packets
while True:
    try:
        response = xbee.wait_read_frame()
        decodedData = decodeReceivedFrame(response)
        status = decodeReceivedFrame(response)[1]
        print status
        print decodedData
        add= decodedData[0]

    except KeyboardInterrupt:
        break

ser.close()

这是输出。

[{'dio-0': True}]
['\x00\x13\xa2\x00@\xbbJ}', [{'dio-0': True}]]
[{'dio-0': False}]
['\x00\x13\xa2\x00@\xbbJ}', [{'dio-0': False}]]

在数据库中

+------------+--------+
| sensor_id  | status |
+------------+--------+
|  ¢ @»J}    |  1     |
+------------+--------+

变量sensor_id是一个字节数组,听起来您想以人类可读的格式存储它。

一种方法是在将其存储到数据库之前将其转换为格式化字符串。

sensor_id = ':'.join("%02X" % ord(b) for b in add)

该语句遍历地址中的字节 (for b in add),将每个字节格式化为两个字符的十六进制字符串 ("%02X" % ord(b)),然后用冒号将每个字符串连接在一起在 (':'.join()).

之间