def start(): adapter = get_provider().get_adapter() q = Queue() observer = Observer(adapter) observer.on_advertising_data = q.put # Put advertisement to queue observer.start() return (observer, q)
def sensor_data(json): print('sensor message:', json) if(json['sensorStatus'] == 'True'): adapter = get_provider().get_adapter() observer = Observer(adapter) observer.on_advertising_data = on_advertisement observer.start() time.sleep(5) observer.stop() emit('tempHumSensorUpdate', govee_devices) else: emit('tempHumSensorUpdate', {'data': 'data disabled'})
def __init__(self, publishers, params): """Initializes the listener and kicks off the listening thread.""" super().__init__(publishers, params) self.dest_root = params("Destination") self.log.info("Configuring Govee listener with destination %s", self.dest_root) self.adapter = get_provider().get_adapter() self.observer = Observer(self.adapter) self.observer.on_advertising_data = self.on_advertisement self.observer.start() # Store readings so they can be reported on demand. self.devices = {}
def start_listen_ble(): try: adapter = get_provider().get_adapter() global receiver_mac receiver_mac = adapter.get_device_info().address.address observer = Observer(adapter) observer.on_advertising_data = on_advertisement observer.start() except OSError: print( "Error listening for BLE advertisements, using fixed test data instead" ) start_send_test_data()
def __init__(self, publisher, logger, params, sensors, actuators): """Initializes the listener and kicks off the listening""" self.logger = logger self.dest_root = params("Destination") self.publish = publisher self.logger.info( '----------Configuring Govee listener with destination {}'.format( self.dest_root)) self.GOVEE_BT_MAC_PREFIX = "A4:C1:38" self.H5075_UPDATE_UUID16 = UUID16(0xEC88) self.adapter = get_provider().get_adapter() self.observer = Observer(self.adapter) self.observer.on_advertising_data = self.on_advertisement self.observer.start() self.poll = -1 self.devices = {}
def __init__(self, callback, bt_device=''): ''' Arguments: callback: Function that receives the data from BLE device (string): BLE device (default 0) ''' super().__init__(callback, bt_device) self.observer = None if not bt_device: bt_device = 0 else: # Old communication used hci0 etc. bt_device = bt_device.replace('hci', '') log.info('Observing broadcasts (device %s)', bt_device) adapter = get_provider().get_adapter(int(bt_device)) self.observer = Observer(adapter) self.observer.on_advertising_data = self.handle_callback
def start(bt_device=''): ''' Attributes: device (string): BLE device (default 0) ''' if not bt_device: bt_device = 0 else: # Old communication used hci0 etc. bt_device = bt_device.replace('hci', '') log.info('Start receiving broadcasts (device %s)', bt_device) q = Queue() adapter = get_provider().get_adapter(int(bt_device)) observer = Observer(adapter) observer.on_advertising_data = q.put observer.start() return (observer, q)
#!/usr/bin/env python3 import sys from time import sleep from bleson import get_provider, Observer # 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 def on_advertisement(advertisement): print(advertisement) adapter = get_provider().get_adapter() observer = Observer(adapter) observer.on_advertising_data = on_advertisement observer.start() sleep(WAIT_TIME) observer.stop()
#!/usr/bin/env python3 import sys from time import sleep from bleson import get_provider, Observer from bleson.logger import log, set_level, DEBUG #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 with Observer(get_provider().get_adapter(), lambda device: log.info(device)): sleep(WAIT_TIME)
def run_observer(): with Observer(get_provider().get_adapter(), lambda advertisement_report: print(advertisement_report)): sleep(5)
org=_influx_config["org"], enable_gzip=True, verify_ssl=True, ) _write_client = _influx_client.write_api(write_options=WriteOptions( flush_interval=15_000, max_retries=1, max_retry_delay=10_000)) _mac_list = [bytes.fromhex(x.replace(":", "")) for x in _config["macs"]] _measurements = Subject() thread_pool_scheduler = ThreadPoolScheduler(2) _measurements_subj = _measurements.pipe( ops.observe_on(thread_pool_scheduler)) # _measurements_subj.subscribe(on_next=lambda x: print(x, flush=True)) _write_client.write( bucket="sensors", record=_measurements_subj.pipe(ops.map(_ruuvi_data_to_influx)), ) def on_advertisement(advertisement): msg = RuuviTagData.from_mfg_data(advertisement.mfg_data, _mac_list) if msg is not None: _measurements.on_next(msg) observer = Observer(get_provider().get_adapter()) observer.on_advertising_data = on_advertisement observer.start() while True: sleep(10)