将 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()
).
之间
我 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()
).