diff --git a/.pylintrc b/.pylintrc
index 039eaec..d8f0ee8 100644
--- a/.pylintrc
+++ b/.pylintrc
@@ -52,7 +52,7 @@ confidence=
# no Warning level messages displayed, use"--disable=all --enable=classes
# --disable=W"
# disable=import-error,print-statement,parameter-unpacking,unpacking-in-except,old-raise-syntax,backtick,long-suffix,old-ne-operator,old-octal-literal,import-star-module-level,raw-checker-failed,bad-inline-option,locally-disabled,locally-enabled,file-ignored,suppressed-message,useless-suppression,deprecated-pragma,apply-builtin,basestring-builtin,buffer-builtin,cmp-builtin,coerce-builtin,execfile-builtin,file-builtin,long-builtin,raw_input-builtin,reduce-builtin,standarderror-builtin,unicode-builtin,xrange-builtin,coerce-method,delslice-method,getslice-method,setslice-method,no-absolute-import,old-division,dict-iter-method,dict-view-method,next-method-called,metaclass-assignment,indexing-exception,raising-string,reload-builtin,oct-method,hex-method,nonzero-method,cmp-method,input-builtin,round-builtin,intern-builtin,unichr-builtin,map-builtin-not-iterating,zip-builtin-not-iterating,range-builtin-not-iterating,filter-builtin-not-iterating,using-cmp-argument,eq-without-hash,div-method,idiv-method,rdiv-method,exception-message-attribute,invalid-str-codec,sys-max-int,bad-python3-import,deprecated-string-function,deprecated-str-translate-call
-disable=print-statement,parameter-unpacking,unpacking-in-except,old-raise-syntax,backtick,long-suffix,old-ne-operator,old-octal-literal,import-star-module-level,raw-checker-failed,bad-inline-option,locally-disabled,locally-enabled,file-ignored,suppressed-message,useless-suppression,deprecated-pragma,apply-builtin,basestring-builtin,buffer-builtin,cmp-builtin,coerce-builtin,execfile-builtin,file-builtin,long-builtin,raw_input-builtin,reduce-builtin,standarderror-builtin,unicode-builtin,xrange-builtin,coerce-method,delslice-method,getslice-method,setslice-method,no-absolute-import,old-division,dict-iter-method,dict-view-method,next-method-called,metaclass-assignment,indexing-exception,raising-string,reload-builtin,oct-method,hex-method,nonzero-method,cmp-method,input-builtin,round-builtin,intern-builtin,unichr-builtin,map-builtin-not-iterating,zip-builtin-not-iterating,range-builtin-not-iterating,filter-builtin-not-iterating,using-cmp-argument,eq-without-hash,div-method,idiv-method,rdiv-method,exception-message-attribute,invalid-str-codec,sys-max-int,bad-python3-import,deprecated-string-function,deprecated-str-translate-call,import-error
+disable=print-statement,parameter-unpacking,unpacking-in-except,old-raise-syntax,backtick,long-suffix,old-ne-operator,old-octal-literal,import-star-module-level,raw-checker-failed,bad-inline-option,locally-disabled,locally-enabled,file-ignored,suppressed-message,useless-suppression,deprecated-pragma,apply-builtin,basestring-builtin,buffer-builtin,cmp-builtin,coerce-builtin,execfile-builtin,file-builtin,long-builtin,raw_input-builtin,reduce-builtin,standarderror-builtin,unicode-builtin,xrange-builtin,coerce-method,delslice-method,getslice-method,setslice-method,no-absolute-import,old-division,dict-iter-method,dict-view-method,next-method-called,metaclass-assignment,indexing-exception,raising-string,reload-builtin,oct-method,hex-method,nonzero-method,cmp-method,input-builtin,round-builtin,intern-builtin,unichr-builtin,map-builtin-not-iterating,zip-builtin-not-iterating,range-builtin-not-iterating,filter-builtin-not-iterating,using-cmp-argument,eq-without-hash,div-method,idiv-method,rdiv-method,exception-message-attribute,invalid-str-codec,sys-max-int,bad-python3-import,deprecated-string-function,deprecated-str-translate-call,import-error,bad-continuation
# Enable the message, report, category or checker with the given id(s). You can
# either give multiple identifier separated by comma (,) or put this option
diff --git a/README.rst b/README.rst
index 4e178db..69d1f2b 100644
--- a/README.rst
+++ b/README.rst
@@ -28,11 +28,8 @@ This is easily achieved by downloading
Installing from PyPI
=====================
-.. note:: This library is not available on PyPI yet. Install documentation is included
- as a standard element. Stay tuned for PyPI availability!
-
-.. todo:: Remove the above note if PyPI version is/will be available at time of release.
- If the library is not planned for PyPI, remove the entire 'Installing from PyPI' section.
+.. note:: Only the bridge examples work on Raspberry Pi because Blinka `_bleio` doesn't support
+ advertising, only scanning.
On supported GNU/Linux systems like the Raspberry Pi, you can install the driver locally `from
PyPI `_. To install for current user:
@@ -59,7 +56,7 @@ To install in a virtual environment in your current project:
Usage Example
=============
-.. todo:: Add a quick, simple example. It and other examples should live in the examples folder and be included in docs/examples.rst.
+Add a secrets.py file and then run ``ble_broadcastnet_blinka_bridge.py``.
Contributing
============
diff --git a/adafruit_ble_broadcastnet.py b/adafruit_ble_broadcastnet.py
index 59f0fba..30378e5 100644
--- a/adafruit_ble_broadcastnet.py
+++ b/adafruit_ble_broadcastnet.py
@@ -31,10 +31,10 @@ Basic IOT over BLE advertisements.
import struct
import time
+from micropython import const
import adafruit_ble
from adafruit_ble.advertising import Advertisement, LazyObjectField
from adafruit_ble.advertising.standard import ManufacturerData, ManufacturerDataField
-from micropython import const
__version__ = "0.0.0-auto.0"
__repo__ = "https://github.com/adafruit/Adafruit_CircuitPython_BLE_BroadcastNet.git"
@@ -58,8 +58,8 @@ def broadcast(measurement, *, broadcast_time=0.1, extended=False):
device_address = "{:02x}{:02x}{:02x}{:02x}{:02x}{:02x}".format( # pylint: disable=invalid-name
*reversed(
- list(_ble._adapter.address.address_bytes)
- ) # pylint: disable=protected-access
+ list(_ble._adapter.address.address_bytes) # pylint: disable=protected-access
+ )
)
"""Device address as a string."""
diff --git a/docs/index.rst b/docs/index.rst
index 148ac2d..da0358f 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -23,14 +23,15 @@ Table of Contents
.. toctree::
:caption: Tutorials
-.. todo:: Add any Learn guide links here. If there are none, then simply delete this todo and leave
- the toctree above for use later.
-
.. toctree::
:caption: Related Products
-.. todo:: Add any product links here. If there are none, then simply delete this todo and leave
- the toctree above for use later.
+ Raspberry Pi 3B
+ Raspberry Pi 3B+
+ Raspberry Pi Zero W
+ Raspberry Pi 4B 1GB
+ Raspberry Pi 4B 2GB
+ Raspberry Pi 4B 4GB
.. toctree::
:caption: Other Links
diff --git a/examples/ble_broadcastnet_battery_level.py b/examples/ble_broadcastnet_battery_level.py
index c3e7ba1..f5ce3ca 100644
--- a/examples/ble_broadcastnet_battery_level.py
+++ b/examples/ble_broadcastnet_battery_level.py
@@ -1,9 +1,8 @@
-import adafruit_ble_broadcastnet
+import time
import analogio
import board
-import math
import microcontroller
-import time
+import adafruit_ble_broadcastnet
print("This is BroadcastNet sensor:", adafruit_ble_broadcastnet.device_address)
@@ -13,10 +12,15 @@ divider_ratio = 2
while True:
measurement = adafruit_ble_broadcastnet.AdafruitSensorMeasurement()
battery_voltage = (
- battery.value / 2 ** 16 * divider_ratio * battery.reference_voltage
+ battery.value
+ / 2 ** 16
+ * divider_ratio
+ * battery.reference_voltage # pylint: disable=no-member
)
measurement.battery_voltage = int(battery_voltage * 1000)
- measurement.temperature = microcontroller.cpu.temperature
+ measurement.temperature = (
+ microcontroller.cpu.temperature # pylint: disable=no-member
+ )
print(measurement)
adafruit_ble_broadcastnet.broadcast(measurement)
diff --git a/examples/ble_broadcastnet_battery_level_neopixel.py b/examples/ble_broadcastnet_battery_level_neopixel.py
index c83ffd7..8bd9b20 100644
--- a/examples/ble_broadcastnet_battery_level_neopixel.py
+++ b/examples/ble_broadcastnet_battery_level_neopixel.py
@@ -1,10 +1,9 @@
-import adafruit_ble_broadcastnet
+import time
import analogio
import board
-import math
import microcontroller
import neopixel
-import time
+import adafruit_ble_broadcastnet
print("This is BroadcastNet sensor:", adafruit_ble_broadcastnet.device_address)
@@ -16,7 +15,10 @@ pixel = neopixel.NeoPixel(board.NEOPIXEL, 1)
while True:
measurement = adafruit_ble_broadcastnet.AdafruitSensorMeasurement()
battery_voltage = (
- battery.value / 2 ** 16 * divider_ratio * battery.reference_voltage
+ battery.value
+ / 2 ** 16
+ * divider_ratio
+ * battery.reference_voltage # pylint: disable=no-member
)
r = 16 - int(((battery_voltage - 3.6) / 0.6) * 16)
r = min(16, max(r, 0))
@@ -24,7 +26,9 @@ while True:
g = min(16, max(g, 0))
pixel[0] = r << 16 | g << 8
measurement.battery_voltage = int(battery_voltage * 1000)
- measurement.temperature = microcontroller.cpu.temperature
+ measurement.temperature = (
+ microcontroller.cpu.temperature # pylint: disable=no-member
+ )
print(measurement)
adafruit_ble_broadcastnet.broadcast(measurement)
pixel[0] = 0
diff --git a/examples/ble_broadcastnet_wifi_bridge.py b/examples/ble_broadcastnet_blinka_bridge.py
similarity index 84%
rename from examples/ble_broadcastnet_wifi_bridge.py
rename to examples/ble_broadcastnet_blinka_bridge.py
index 68d2741..e700b55 100644
--- a/examples/ble_broadcastnet_wifi_bridge.py
+++ b/examples/ble_broadcastnet_blinka_bridge.py
@@ -1,35 +1,10 @@
+"""This example bridges from BLE to Adafruit IO on a Raspberry Pi."""
+from secrets import secrets # pylint: disable=no-name-in-module
import time
+import requests
from adafruit_ble.advertising.standard import ManufacturerDataField
import adafruit_ble
import adafruit_ble_broadcastnet
-from secrets import secrets
-import sys
-
-if sys.implementation.name == "cpython":
- import requests
-else:
- from adafruit_esp32spi import adafruit_esp32spi
- from adafruit_esp32spi import adafruit_esp32spi_wifimanager
-
- import board
- import busio
- from digitalio import DigitalInOut
- import adafruit_dotstar
-
- esp32_cs = DigitalInOut(board.D13)
- esp32_ready = DigitalInOut(board.D11)
- esp32_reset = DigitalInOut(board.D12)
-
- spi = busio.SPI(board.SCK, board.MOSI, board.MISO)
- esp = adafruit_esp32spi.ESP_SPIcontrol(spi, esp32_cs, esp32_ready, esp32_reset)
- # esp._debug = 1
-
- status_light = adafruit_dotstar.DotStar(
- board.APA102_SCK, board.APA102_MOSI, 1, brightness=0.2
- )
- requests = adafruit_esp32spi_wifimanager.ESPSPI_WiFiManager(
- esp, secrets, status_light
- )
aio_auth_header = {"X-AIO-KEY": secrets["aio_key"]}
aio_base_url = "https://io.adafruit.com/api/v2/" + secrets["aio_username"]
@@ -45,6 +20,10 @@ def aio_get(path, **kwargs):
return requests.get(aio_base_url + path, **kwargs)
+# Disable outer names check because we frequently collide.
+# pylint: disable=redefined-outer-name
+
+
def create_group(name):
response = aio_post("/groups", json={"name": name})
if response.status_code != 201:
@@ -102,7 +81,8 @@ def convert_to_feed_data(values, attribute_name, attribute_instance):
ble = adafruit_ble.BLERadio()
-print("This is BroadcastNet bridge:", adafruit_ble_broadcastnet.device_address)
+bridge_address = adafruit_ble_broadcastnet.device_address
+print("This is BroadcastNet bridge:", bridge_address)
print()
print("Fetching existing feeds.")
@@ -139,7 +119,6 @@ for measurement in ble.start_scan(
# Skip if we are getting the same broadcast more than once.
if measurement.sequence_number == sequence_numbers[sensor_address]:
continue
- # print(sensor_address, measurement, measurement.sequence_number, sequence_numbers[sensor_address])
number_missed = measurement.sequence_number - sequence_numbers[sensor_address] - 1
if number_missed < 0:
number_missed += 256
diff --git a/examples/ble_broadcastnet_expo_backoff.py b/examples/ble_broadcastnet_expo_backoff.py
index 13f4758..9cd597b 100644
--- a/examples/ble_broadcastnet_expo_backoff.py
+++ b/examples/ble_broadcastnet_expo_backoff.py
@@ -3,12 +3,12 @@
report. When doing a report it will actually do multiple broadcasts and wait 2 ** n readings
until the next broadcast. The delay is reset every time the temp moves more than 1 degree."""
-import adafruit_ble_broadcastnet
+import math
+import time
import analogio
import board
-import math
import microcontroller
-import time
+import adafruit_ble_broadcastnet
print("This is BroadcastNet sensor:", adafruit_ble_broadcastnet.device_address)
@@ -18,7 +18,7 @@ divider_ratio = 2
last_temperature = None
consecutive = 1
while True:
- temp = microcontroller.cpu.temperature
+ temp = microcontroller.cpu.temperature # pylint: disable=no-member
if not last_temperature or abs(temp - last_temperature) > 1:
consecutive = 1
last_temperature = temp
@@ -31,7 +31,10 @@ while True:
if 2 ** exp == consecutive:
measurement = adafruit_ble_broadcastnet.AdafruitSensorMeasurement()
battery_voltage = (
- battery.value / 2 ** 16 * divider_ratio * battery.reference_voltage
+ battery.value
+ / 2 ** 16
+ * divider_ratio
+ * battery.reference_voltage # pylint: disable=no-member
)
measurement.battery_voltage = int(battery_voltage * 1000)
measurement.temperature = temp
diff --git a/examples/ble_broadcastnet_multisensor.py b/examples/ble_broadcastnet_multisensor.py
index 2fc1f2b..00a1710 100644
--- a/examples/ble_broadcastnet_multisensor.py
+++ b/examples/ble_broadcastnet_multisensor.py
@@ -1,13 +1,14 @@
"""This is a complex sensor node that uses the sensors on a Clue and Feather Bluefruit Sense."""
+import time
import board
import adafruit_bmp280
import adafruit_sht31d
-import adafruit_apds9960.apds9960
+
+# import adafruit_apds9960.apds9960
import adafruit_lis3mdl
import adafruit_lsm6ds
import adafruit_ble_broadcastnet
-import time
print("This is BroadcastNet sensor:", adafruit_ble_broadcastnet.device_address)
diff --git a/examples/ble_broadcastnet_simpletest.py b/examples/ble_broadcastnet_simpletest.py
index 3dde973..08d91dc 100644
--- a/examples/ble_broadcastnet_simpletest.py
+++ b/examples/ble_broadcastnet_simpletest.py
@@ -1,15 +1,17 @@
"""This is a basic sensor node that uses the internal temperature sensor and reports it every 10
seconds."""
-import adafruit_ble_broadcastnet
-import microcontroller
import time
+import microcontroller
+import adafruit_ble_broadcastnet
print("This is BroadcastNet sensor:", adafruit_ble_broadcastnet.device_address)
while True:
measurement = adafruit_ble_broadcastnet.AdafruitSensorMeasurement()
- measurement.temperature = microcontroller.cpu.temperature
+ measurement.temperature = (
+ microcontroller.cpu.temperature # pylint: disable=no-member
+ )
print(measurement)
adafruit_ble_broadcastnet.broadcast(measurement)
time.sleep(10)