import time from ble_packet_buffer_service import PacketBufferService from ble_json_service import SensorService from adafruit_ble import BLERadio from adafruit_ble.advertising.standard import ProvideServicesAdvertisement from adafruit_ble_adafruit.temperature_service import TemperatureService from adafruit_ble_adafruit.humidity_service import HumidityService from adafruit_ble.services.standard import BatteryService ble = BLERadio() ble.name = "ZP" pbs = PacketBufferService() service = SensorService() # Create instances of additional services temp_svc = TemperatureService() temp_svc.measurement_period = 1000 temp_last_update = 0 humidity_svc = HumidityService() humidity_svc.measurement_period = 100 humidity_last_update = 0 battery_svc = BatteryService() # Create advertisement object and add services to it advertisement = ProvideServicesAdvertisement([pbs, service, temp_svc, humidity_svc, battery_svc]) temp_last_update = 0 humidity_last_update = 0 buf = bytearray(512) while True: ble.start_advertising(advertisement) while not ble.connected: pass while ble.connected: settings = service.settings now_msecs = time.monotonic_ns() // 1000000 # pylint: disable=no-member packet_len = pbs.readinto(buf) if packet_len > 0: packet = buf[:packet_len] print(packet) pbs.write(packet) if now_msecs - temp_last_update >= temp_svc.measurement_period: temp_svc.temperature = 100 battery_svc.level = 87 humidity_svc.humidity = 43 temp_last_update = now_msecs print("Settings: ", settings) command1 = settings.get("onboarding") print(command1) command = settings.get("status") print(command) if command == "INPROG": print("we are in") service.sensors = {"status": "MessageOK", "onboarding": "FINISH"} elif command == "LEVEL": service.sensors = {"status": "MessageOK", "onboarding": "FINISHLEVEL"} time.sleep(0.25)