def __init__(self, _):
        super().__init__(_)

        self.previous_log_level = set_level(DEBUG)

        provider = get_provider()
        self.adapter0 = provider.get_adapter(0)  # Used for the Observer role
        self.adapter1 = provider.get_adapter(1)  # Used for the Advertiser role
Esempio n. 2
0
from flask_socketio import SocketIO, emit
import picamera
# import SensorCode
from bleson import get_provider, Observer, UUID16
from bleson.logger import log, set_level, ERROR, DEBUG
import json
import cv2
import socket
import io
import os
import sys
import glob
import time

# Disable warnings for sensor gathering
set_level(ERROR)

app = Flask(__name__)
app.config['SECRET_KEY'] = 'include_help!'
socketio = SocketIO(app, async_mode='threading')
# os.urandom(12)

vc = cv2.VideoCapture(0)
vc.set(3, 1280)
vc.set(4, 720)

# -------------------- @app Routes Start -----------------------------------
@app.route('/')
def index():
    """Video streaming"""
    return render_template('index.html')
Esempio n. 3
0
#!/usr/bin/env python3
"""Debugging information of Govee Advirtiment."""

from time import sleep
import os
import sys

from govee_advertisement import GoveeAdvertisement

from bleson.core.hci.constants import EVT_LE_ADVERTISING_REPORT  # type: ignore
from bleson.core.hci.type_converters import hex_string  # type: ignore
from bleson import get_provider, logger  # type: ignore

# Disable warnings
logger.set_level(logger.ERROR)

# Uncomment for debug log level
# logger.set_level(logger.DEBUG)

FORMAT_PRECISION = ".2f"

# ###########################################################################


def print_unknown_packet(ga) -> None:
    """Print unknown packet data."""
    msg = "Unknown packet type:"  # Govee model
    msg += "\n\tMAC:        {}"
    msg += "\n\tName:       {}"
    msg += "\n\tRSSI:       {}"
    msg += "\n\tRaw Data:   {}"
Esempio n. 4
0
 def __del__(self):
     # Restore logging level, in case we're running in a test suite
     set_level(self.previous_log_level)
Esempio n. 5
0
 def __init__(self, _):
     super().__init__(_)
     self.adapter = get_provider().get_adapter()
     # Turn on bleson DEBUG logging, keeping note of the previous setting.
     self.previous_log_level = set_level(DEBUG)
Esempio n. 6
0
from time import sleep
import argparse
from bleson import get_provider, Observer, EddystoneBeacon
from bleson.logger import DEBUG, set_level

def run_observer():
    with Observer(get_provider().get_adapter(), lambda advertisement_report: print(advertisement_report)):
        sleep(5)

def run_beacon(url):
    with EddystoneBeacon(get_provider().get_adapter(), url):
        while True:
            sleep(1)

parser = argparse.ArgumentParser()
parser.add_argument("--debug", action="store_true", help="enable debug")
parser.add_argument("--observer", action="store_true", help="Find local Bluetooth LE devices")
parser.add_argument("--beacon",  action="store_true", help="Create a Beacon (default type= PhysicalWeb/Eddystone)")
parser.add_argument("--url", help="URL to use for Beacon")

args = parser.parse_args()

if args.debug:
    set_level(DEBUG)

if args.observer:
    run_observer()

if args.beacon:
    run_beacon(args.url)
Esempio n. 7
0
from time import sleep
from bleson import get_provider, Observer, logger

from multiprocessing import Process, Manager
from queue import Queue
from logging import ERROR

logger.set_level(ERROR)


class BLEObserver(object):
    '''Bluetooth LE communications with bleson'''
    @staticmethod
    def _getDataBackground(queue, sharedData=''):
        (observer, q) = BLEObserver.start()

        for advertisement in BLEObserver.getQueueLines(q):
            if (sharedData['stop']):
                break
            try:
                mac = advertisement.address.address if advertisement.address is not None else None
                if (mac not in sharedData['whitelist']):
                    continue
                if (advertisement.mfg_data is None):
                    continue

                data = bytearray(advertisement.mfg_data)
                queue.put((mac, data.hex()))
            except GeneratorExit:
                break
            except Exception as e:
parser.add_argument("--loglevel", default="INFO", help="script logging level for messages (default: INFO) INFO, DEBUG, WARN, WARNING, ERROR")
parser.add_argument("--listentime", type=float, default=-1, help="How the script will run (in seconds) before exiting.  (default=-1 run forever)")
parser.add_argument("--hci", type=int, default=0, help="HCI adpater number for this device.  Use hciconfig to list devices and obtain number (X):  hciX (default=0)")

args=parser.parse_args()

###### Define graceful exit
atexit.register(exit_handler)

###### Define output
if args.logfile=="" or args.logfile=="stdout":
   _useStdOut = True
else:
   _useStdOut = False      

level=set_level(args.loglevel)


###### ibeacon adapter and observers
adapter = get_provider().get_adapter(args.hci)

observer = Observer(adapter)
observer.on_advertising_data = on_advertisement

observer.start(True)  # filter duplicates

###### Sleep this thread while the observer thread does its magic
listentime = args.listentime
if listentime == -1:
   ###### TODO: Service Healthcheck and sleep???
   while True:
 def __del__(self):
     set_level(self.previous_log_level)
 def __init__(self, _):
     super().__init__(_)
     self.previous_log_level = set_level(DEBUG)
Esempio n. 11
0
#!/usr/bin/env python3

import sys
from time import sleep

from bleson.logger import log, set_level, DEBUG
from bleson import get_provider, Advertiser, Advertisement, UUID16, LE_GENERAL_DISCOVERABLE, BREDR_NOT_SUPPORTED

previous_log_level = set_level(DEBUG)
# Get the wait time from the first script argument or default it to 10 seconds
WAIT_TIME = int(sys.argv[1]) if len(sys.argv) > 1 else 10

adapter = get_provider().get_adapter()

advertiser = Advertiser(adapter)

advertisement = Advertisement()
advertisement.name = "Heart Rate"
advertisement.flags = LE_GENERAL_DISCOVERABLE | BREDR_NOT_SUPPORTED
advertisement.uuid16s = [UUID16(0x180a), UUID16(0x180d)]

advertiser.advertisement = advertisement

advertiser.start()
sleep(WAIT_TIME)
advertiser.stop()

set_level(previous_log_level)