ble_temperature.py

# Ce travail est publié sous licence MIT.
# Copyright (c) 2013-2023 OpenMV LLC. Tous droits réservés.
# https://github.com/openmv/openmv/blob/master/LICENSE
#
# Exemple de capteur de température BLE.

import time
from hts221 import HTS221
from board import LED
from machine import Pin, I2C
from ubluepy import Service, Characteristic, UUID, Peripheral, constants


def event_handler(id, handle, data):
    global periph, service, notif_enabled

    if id == constants.EVT_GAP_CONNECTED:
        # indique 'connecté'
        LED(1).on()
    elif id == constants.EVT_GAP_DISCONNECTED:
        # indique 'déconnecté'
        LED(1).off()
        # redémarrer l'annonce (advertisement)
        periph.advertise(device_name="Temperature Sensor", services=[service])
    elif id == constants.EVT_GATTS_WRITE:
        # l'écriture sur cette caractéristique se fait sur le CCCD
        if int(data[0]) == 1:
            notif_enabled = True
        else:
            notif_enabled = False


# démarrer avec LED(1) éteinte
LED(1).off()

notif_enabled = False
uuid_service = UUID("0x181A")  # Service de détection environnementale
uuid_temp = UUID("0x2A6E")  # Caractéristique de température

service = Service(uuid_service)
temp_props = Characteristic.PROP_READ | Characteristic.PROP_NOTIFY
temp_attrs = Characteristic.ATTR_CCCD
temp_char = Characteristic(uuid_temp, props=temp_props, attrs=temp_attrs)
service.addCharacteristic(temp_char)

periph = Peripheral()
periph.addService(service)
periph.setConnectionHandler(event_handler)
periph.advertise(device_name="Temperature Sensor", services=[service])

bus = I2C(1, scl=Pin(15), sda=Pin(14))
try:
    hts = HTS221(bus)
except OSError:
    from hs3003 import HS3003

    hts = HS3003(bus)

while True:
    if notif_enabled:
        temp = int(hts.temperature() * 100)
        temp_char.write(bytearray([temp & 0xFF, temp >> 8]))
    time.sleep_ms(100)

results matching ""

    No results matching ""