diff --git a/RPi_Client/CoAPthon3/testBeacon.py b/RPi_Client/CoAPthon3/testBeacon.py new file mode 100644 index 0000000000000000000000000000000000000000..426dd4a6f26578194a9c3fcb6cec7b4a87dba3c0 --- /dev/null +++ b/RPi_Client/CoAPthon3/testBeacon.py @@ -0,0 +1,70 @@ +import subprocess +import socket +import sys +import time +import bluetooth._bluetooth as bluez +from time import sleep + +bct_BLUETOOTHDEVICE = "hci0" +bct_OGF = "0x08" +bct_OCF_format = "0x0008" +bct_OCF_setting = "0x0006" +bct_OCF_operate = "0x000A" +bct_start = "01" +bct_stop = "00" + +bct_IBEACONPROFIX = "1E 02 01 1A 1A FF 4C 00 02 15" +bct_UUID = " 00 00 00 AC E8 B4 E0 C2 7D 20 B6 11 B6 11 C7 74" +bct_MAJOR = "00 01" +bct_MINOR = "00 02" +bct_POWER = "CE 00" +class BeaconEmit(): + def __init__(self): + self.beacon_TX_config("up") + self.beacon_TX_cmd_format(bct_OCF_format, bct_IBEACONPROFIX, bct_UUID, bct_MAJOR, bct_MINOR, bct_POWER) + self.beacon_TX_cmd_setting(bct_OCF_setting, 100) + self.beacon_TX_cmd_operate(bct_OCF_operate, bct_start) + + def beacon_TX_config(self, _param): + result = subprocess.check_output("sudo hciconfig " + bct_BLUETOOTHDEVICE + " " + _param, shell=True) + + def beacon_TX_cmd_format(self, _ocf, _ibeaconprofix, _uuid, _major, _minor, _power): + _bct_ogf = bct_OGF + " " + _ocf = _ocf + " " + _ibeaconprofix = _ibeaconprofix + " " + _uuid = _uuid + " " + _major = _major + " " + _minor = _minor + " " + result = subprocess.check_output("sudo hcitool -i " + bct_BLUETOOTHDEVICE + " cmd " + _bct_ogf + _ocf + _ibeaconprofix + _uuid + _major + _minor + _power, shell=True) + + def beacon_TX_cmd_setting(self, _ocf, _interval): + _bct_ogf = bct_OGF + " " + _ocf = _ocf + " " + _intervalHEX = '{:04X}'.format(int(_interval/0.625)) + _minInterval = _intervalHEX[2:] + " " + _intervalHEX[:2] + " " + _maxInterval = _intervalHEX[2:] + " " + _intervalHEX[:2] + " " + result = subprocess.check_output("sudo hcitool -i " + bct_BLUETOOTHDEVICE + " cmd " + _bct_ogf + _ocf + _maxInterval + _maxInterval + "00 00 00 00 00 00 00 00 00 07 00", shell=True) + + def beacon_TX_cmd_operate(self, _ocf, _param): + _bct_ogf = bct_OGF + " " + _ocf = _ocf + " " + result = subprocess.check_output("sudo hcitool -i " + bct_BLUETOOTHDEVICE + " cmd " + _bct_ogf + _ocf + _param, shell=True) + time.sleep(0.1) + + def beacon_TX_DevTrigger(self, _str): + _bct_uuid = _str + self.beacon_TX_cmd_format(bct_OCF_format, bct_IBEACONPROFIX, _bct_uuid, bct_MAJOR, bct_MINOR, bct_POWER) + + def beacon_Start(self, _str): + try: + startTime = time.time() + repeatTime = 60 + print ("BLE EMIT START") + while True: + if time.time() - startTime > repeatTime: + break + self.beacon_TX_DevTrigger(_str) + self.beacon_TX_cmd_operate(bct_OCF_operate, bct_stop) + print ("BLE EMIT STOP") + finally: + pass diff --git a/RPi_Client/CoAPthon3/testclient.py b/RPi_Client/CoAPthon3/testclient.py index bbe7bb6953cf44eb615fc04edc572b07e7f6bc5f..7bcbbeb1af7e12e1f918565907b925bcf3f0c0ee 100644 --- a/RPi_Client/CoAPthon3/testclient.py +++ b/RPi_Client/CoAPthon3/testclient.py @@ -10,7 +10,7 @@ import bluetooth._bluetooth as bluez import blescan import _thread import math -from piBeacon import BeaconEmit +from testBeacon import BeaconEmit from coapthon.client.helperclient import HelperClient from coapthon.utils import parse_uri @@ -211,7 +211,7 @@ class CoapClient(): payload = { 'v1' : self.myuuid, 'v2' : info[1], - 'distance' : distance + 'rssi' : float(info[5]) } return payload diff --git a/Server_CoAP/CoAPthon3/testresource.py b/Server_CoAP/CoAPthon3/testresource.py index 015ffcfd39cd622efec1a636861fac0c2db552b5..16e8d64d58df89913a9c1e5a54329f5f02787270 100644 --- a/Server_CoAP/CoAPthon3/testresource.py +++ b/Server_CoAP/CoAPthon3/testresource.py @@ -215,27 +215,11 @@ class RpGraphInfoResource(Resource): # complete def postRpGraphInfoInDB(self, info): # complete info = json.loads(info) - if info['distance'] < 60: - mydoc = self.collection.find({'v1':info['v1'], 'v2':info['v2']}) - - if mydoc.count() > 0: - distance = (mydoc[0]['sum']+info['distance']) / (mydoc[0]['count'] + 1) - - c = mydoc[0]['count'] + 1 - self.collection.update_one({ 'v1' : info['v1'], 'v2':info['v2']}, {"$set":{ - 'distance' : distance, - 'sum': mydoc[0]['sum']+float(info['distance']), - 'count': c - }},upsert = False) - - if mydoc.count() == 0: - self.collection.insert_one({ - 'v1':info['v1'], - 'v2': info['v2'], - 'distance' : float(info['distance']), - 'sum': float(info['distance']), - 'count': 1 - }) + self.collection.insert_one({ + 'v1':info['v1'], + 'v2': info['v2'], + 'rssi' : float(info['rssi']), + }) class BleInfoResource(Resource): # complete def __init__(self, name="BleInfo"):