merhaba arkadaşlar konumlandırma üzerine çalışmaktayim. raspberry pi ile ibeaconları mesafesini buluyorum şimdiki yapacağım şey ise bu bulduğum mesafeleri matplotlib ekraninda göstermesini istiyorm kendim matplotlib kütüphanesini kullanarak kod yazdım ama ibeaconların göstermiyor gösterdiği tek şey benim kod içerisine yazdiğim konumlara göre yerini değiştirebiliyorum. Bu yazmış olduğum animasyon kodu hiçbir şekilde beaconların mesafesini göstermiyor. Bu konuda bana yardımcı olursaniz minnettar olurum.
def calculate_accuracy(txpower, rssi):
if rssi == 0 or txpower == 0:
return -1
else:
ratio = rssi/txpower
if ratio < 1:
return ratio**10
else:
return 0.89976 * ratio**7.7095 + 0.111
return result
def scan_sock(sock):
blescan.hci_le_set_scan_parameters(sock)
blescan.hci_enable_le_scan(sock)
sample_count = 0
while True:
returnedList = blescan.parse_events(sock, 10)
print "----------"
for beacon in returnedList:
print beacon
beacon = beacon.split(',')
beaconid = beacon[0]
txpower = float(beacon[4])
rssi = float(beacon[5])
if 0<= calculate_accuracy(txpower, rssi) < 2:
print beaconid
sample_count = 0
oran = float(rssi)*1.0/(txpower)
#print "Oran = ",oran
if(oran < 1.0):
Distance = math.pow(oran, 10)
print "Mesafe = ", Distance
else:
dogruluk = (0.89976)*math.pow(oran,7.7095) + 0.111
print "Dogruluk = ", dogruluk
#if __name__ == '__main__': #dongu burada bitiyor
dev_id = 0
try:
sock = bluez.hci_open_dev(dev_id)
print "Beacon Aktif"
scan_sock(sock)
except:
print "Beacon Aygit Bulunamadi..."
###############################################
matplotlib kütüphanesi kullanarak sorun yaşadığım animasyon kodu.
#######
fig = plt.figure()
#fig.set_dpi(100)
#fig.set_size_inches(7, 6.5)
ax = plt.axes(xlim=(0, 100), ylim=(0, 100))
patch = plt.Circle((5, -5), 0.75, color='r',fill=False,clip_on=False)
c1 = plt.Circle((5, -5), 0.75, fc='y')
c2 = plt.Circle((5, -5), 0.75, fc='b')
c3 = plt.Circle((5, -5), 0.75, fc='r')
def init():
patch.center = (50, 50)
c1.center = (100,5)
c2.center= (10,10)
ax.add_patch(c1);
ax.add_patch(c2);
ax.add_patch(patch)
return patch,
def animate(i):
raw_cell = main(i)
print raw_cell
cell = raw_cell[0]
distance = cell["Distance"]
print distance
patch.set_radius(float(distance));
return patch,
anim = animation.FuncAnimation(fig, animate,
init_func=init,
interval=5000,
blit=True)
plt.show()