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
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')
#!/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: {}"
def __del__(self): # Restore logging level, in case we're running in a test suite set_level(self.previous_log_level)
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)
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)
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)
#!/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)