BLE MESH组网(一)简介和基本概念

2023-10-31

BLE MESH简介

Bluetooth mesh profile规范是由Bluetooth SIG开发和发布的,它允许一对一、一对多和多对多通信。它使用BLE协议在网络节点之间交换消息。这些节点可以相互通信,只要它们在彼此的直接无线电范围内,或者有足够的设备能够侦听和转发这些消息。

BLE MESH网络利用管理泛洪方法进行消息传输,这是一种简单可靠的消息中继形式,特别适用于低功耗无线网状网络,尤其是那些处理大量多播流量的网络。这使得基于泛洪的消息中继成为满足商业和工业市场严格的可靠性、可扩展性和性能要求的理想方法。

BLE MESH来源

蓝牙基本速率/增强数据速率 (BR/EDR) 是第一个发布的蓝牙版本。它旨在作为一种电缆替代技术,很快就主导了无线音频产品,并成为新计算机外围设备(如无线鼠标和键盘)的推动者。

低功耗蓝牙 (LE) 是下一个真正与众不同的蓝牙技术。它经过优化,可与包含它的设备一起使用尽可能少的能源,并且能够无线操作和通信,仅由硬币大小的电池供电,通常可以使用多年。它已被广泛采用。很难找到不支持蓝牙 LE 的智能手机或平板电脑。健康、运动和健身设备(如活动追踪器)依赖蓝牙 LE 技术。智能手表等可穿戴设备也是如此。这种蓝牙风格的影响令人印象深刻且广泛。

蓝牙 BR/EDR 和蓝牙 LE 在智能手机等设备中都很常见,但它们并不依赖于彼此的服务和功能。出于所有意图和目的,这两种蓝牙风格彼此独立工作。事实上,虽然他们很乐意在同一设备中共存,但不可能使用蓝牙 BR/EDR 与蓝牙 LE 设备进行通信。

相比之下,BLE MESH网络使用并依赖于蓝牙 LE。蓝牙 LE 是BLE MESH网络使用的无线通信协议栈。

BLE MESH网络不是无线通信技术。这是一种网络技术。

BLE MESH用处

Bluetooth ®网状网络的创建是因为网状拓扑提供了满足各种日益常见的通信需求的最佳方式,这些需求以楼宇自动化和传感器网络等应用为代表。这些要求包括:

  • 覆盖非常大的区域
  • “只是工作互操作性”
  • 监视和控制大量设备的能力
  • 优化、低能耗
  • 有效利用无线电资源,实现可扩展性
  • 与当前可用的智能手机、平板电脑和个人电脑产品的兼容性
  • 行业标准、政府级安全

其他网状技术,一般来说,标准的智能手机、平板电脑和PC设备不支持;一个主要的制约因素。

BLE MESH的通讯方式

BLE MESH网络使用发布/订阅消息系统。

设备可能会向其名称和含义对应于用户可以理解的高级概念的地址发送消息,例如Garden Lights。这称为发布

设备可以配置为接收由其他设备发送到特定地址的消息。这称为订阅

当设备向特定地址发布消息时,订阅该地址的所有其他设备都将收到它的副本,对其进行处理并以某种方式做出反应。

想象一下安装在花园中的一组户外灯。每个灯都已配置为订阅“花园灯”消息。现在,想象一个BLE MESH灯开关向“花园灯”地址发送“ON”消息。花园中的所有灯都会收到“ON”消息,并通过……做出反应。你猜对了……打开。

就这么简单。

管理洪水

中继设备重新传输它们从其他设备接收的消息。在这样做时,他们能够与不在最初发布消息的设备的无线电范围内的设备进行通信。一条消息可以通过所谓的“跳跃”多次中继。最多可能有127跳,足以在巨大的物理区域中中继消息。

BLE MESH使用一种称为“泛洪”的方法来发布和中继消息。这意味着消息不是由导致它们沿着仅包含特定设备序列的特定路径传输的过程路由的。相反,范围内的所有设备都会接收消息,而那些充当中继的设备会将消息重新传输到范围内的所有其他设备。

一般来说,泛洪是一种技术,有优点也有缺点。

泛洪的优点是不需要特定设备承担特殊责任来充当集中式路由器,其故障可能导致整个网络无法运行。特定路由不可用也可能对网络产生灾难性影响,而这也可以通过网状网络的泛洪方法来避免。

泛洪方法还意味着消息通常可以通过多条路径到达其目的地。这使得网络非常可靠。

所有数据包都包含一个称为TTL的字段。这可用于限制消息在中继时采用的跳数。由设备每隔一段时间传输的心跳消息包括允许网络了解其拓扑结构和跳数的信息,其他每个设备都是如此。这允许设备将 TTL 设置为最佳值,从而避免消息被中继不必要的次数。

市场内蓝牙设备支持

Bluetooth® mesh网络指定了一个称为代理节点的设备角色。代理节点包括标准的低功耗蓝牙 GATT 服务,该服务具有两个 GATT 特性。这些特征称为Mesh Proxy Data In 和Mesh Proxy Data Out。智能手机等低功耗蓝牙设备可以使用这些特性向网状网络发送数据和从网状网络接收数据

网格规范定义了一个称为代理协议的协议,通过代理节点提供的两个 GATT 特性交换的数据由代理协议 PDU 组成。

安全性

安全性是BLE MESH网络设计的核心,它的使用是强制性的。

每个数据包都经过加密和验证。通过明智地使用序列号来防止重放攻击。通过在重要过程中使用非对称加密来防止中间人攻击。提供针对利用废弃设备的垃圾桶攻击的保护。必要时会刷新安全密钥。

关注点分离”是一个重要的原则,体现在蓝牙mesh网络的安全性上。网络安全与照明、供暖或物理建筑安全等个别应用的安全是相互独立的。不同的安全密钥用于保护网络层操作,例如中继与保护特定于应用程序的消息内容。这样做的结果是,例如,灯泡可以完全访问由电灯开关传输的消息中的数据,因为它们具有相同的应用程序密钥。但是,虽然同一个灯泡能够将消息从蓝牙物理访问令牌转发到前门的锁,但它无法看到这些消息的应用层内容。

BLE MESH协议栈模型

图 1 – BLE MESH网络架构

协议栈的各个层分别负责以下关键功能:

承载层(bearer):承载层定义了如何使用底层 LE 堆栈传输 PDU。目前定义了两种承载,Advertising Bearer 和 GATT Bearer。

网络层(network):网络层定义了各种消息地址类型和网络消息格式。中继和代理行为由网络层实现。

下层传输层(lower transport):在需要时,下层传输层处理 PDU 的分段和重组。

上层传输层(upper transport):负责传入和传出接入层的应用数据的加密、解密和认证。它还负责处理称为传输控制消息的特殊消息。这些包括与“友谊”关系相关的心跳和消息。

访问层(access):负责应用程序数据的格式,定义和控制在上层传输层执行的加密和解密过程,并在将数据向上转发到堆栈之前验证从它接收到的数据用于正确的网络和应用程序。

基础模型(foundation models):基础模型层负责实现那些与MESH网络的配置和管理有关的模型。

模型(models):模型层关注模型的实现,因此也关注行为、消息、状态等的实现。

BLE MESH基本概念

ble mesh网络为与环境交互创造了新的机会,无论您是使用智能照明、加热/冷却和安全系统使您的家庭或办公室更加智能,还是提高工业无线传感器网络 (IWSN) 的效率。BLE MESH网络提供了创建真正大规模设备网络所需的基础,使您能够使数十、数百甚至数千个无线设备相互可靠、安全地通信。本文深入探讨了这种创新网络拓扑背后的基本概念。

节点

想象一个由数千个设备组成的网络,每个设备都通过蓝牙®低功耗 (LE) 短脉冲无线连接进行通信。BLE MESH网络上的这些设备称为节点。每个节点发送和接收消息。信息可以从一个节点到另一个节点中继,使消息能够传播比无线电波通常允许的更远的距离。这个节点网络下图可能遍布制造设施、办公楼、购物中心、商业园区等。
图2网络节点

元素

某些节点(例如传感器)会消耗电池电量,而其他节点(例如灯具、制造机械和安全摄像头)则从主电网获取电力。一些节点比其他节点具有更多的处理能力。这些节点可以在网状网络中承担更复杂的任务,承担不同的角色并拥有以下四个节点特征中的任何一个。

低功率特性: 功率受限的节点可以使用低功率特性来减少无线电开启时间并节省功率。低功耗节点 (LPN) 与朋友节点协同工作。

朋友特征:没有功率限制的节点是成为朋友节点的绝佳候选者。朋友节点存储发往 LPN 的传入消息和安全更新;当 LPN 请求这些消息时,朋友节点将存储的信息传递给 LPN。

中继功能: 中继节点接收和重新传输消息,当消息从一个节点中继到另一个节点时,可以实现更大的网络。根据电源和计算能力,节点可能具有此功能。

代理功能:代理节点能够在 GATT 和蓝牙网格节点之间传输和接收网格消息。具有此角色的节点需要可靠的电源和计算资源。

一些节点比其他节点更复杂,由多个称为元素的独立部分组成。每个节点至少有一个元素,称为主要元素,并且可能有其他元素。元素由定义节点功能和元素条件的实体组成。例如,一个灯泡有一个元素有两个功能:

  • 节点 = 灯泡

  • 一个元素 = 主要元素

  • 节点功能

     一、开关
     二、亮度
    
  • 元素的条件/状态

     一、开或关 
     二、0 – 10(亮度等级)
    

节点内的每个元素都有一个唯一的地址,称为单播地址,使每个元素都可以寻址。

节点必须至少有一个元素,也可以有多个元素。
 节点必须至少有一个元素,也可以有多个元素。

模型和状态

无论节点是跨制造车间、酒店、办公楼还是商业园区联网,节点的基本功能都是由模型定义和实现的。模型位于元素内部,元素必须具有一个或多个模型。模型定义和实现节点的功能和行为,而状态定义元素的条件。
 节点、元素、模型
图4 - 节点、元素、模型
节点、元素、模型、状态
图5 - 节点、元素、模型、状态

使用我们的灯泡示例,模型的功能是开/关和亮度。相关的状态分别是 On/Off 和 0-10:

  • 模型(节点的功能)
开/关
状态 -> 开或关
亮度 (0-10)
状态 -> 0-10

BLE MESH网络支持复合状态,即由两个或多个值组成的状态。变色灯就是一个例子,因为色调可以独立于颜色饱和度或亮度而变化。

术语绑定状态定义为一种状态的变化导致另一种状态的变化。常见的绑定是在电平状态和开/关状态之间。如果电平从 0 变为 1,则 On/Off 状态也已从 off 转换为 on。

每个模型都有一个唯一的标识符。蓝牙 SIG 采用的模型是 16 位,而供应商模型是 32 位(16 位蓝牙分配的公司标识符和 16 位供应商分配的模型标识符)。这使得每个模型都是唯一可寻址的

使用消息,BLE MESH网络通过客户端-服务器架构进行通信。服务器的功能是公开元素的状态。最简单的状态之一是二进制开关,其中状态为开或关。一个简单的服务器模型是通用开/关服务器模型,它包含表示开关是开还是关的状态。

客户端访问状态请求、更改或使用服务器的状态。简单客户端模型的一个示例是通用开/关客户端模型(二进制开关)。此通用开/关客户端模型通过向其发送消息来控制通用开/关服务器模型。例如,客户端使用此机制打开或关闭灯。

这种客户端-服务器架构产生了三种类型的模型:

  • 服务器模型

    由跨越一个或多个元素的一个或多个状态组成。
    定义模型可以发送/接收的消息并定义给定这些消息的元素的行为。
    例子:

    • 开/关开关 - 可以显示开关的状态
    • 传感器 - 可以显示传感器的状态(可能是温度值或传感器测量的满/重装/空值)
    • 功率级别 - 可以显示功率状态(级别 1-10)
  • 客户模型

    定义客户端用于请求、更改或使用服务器相应状态的消息集。
    例子:

    • 开/关开关 - 客户端发送开或关消息
    • 功率级别 - 定义功率状态的消息 (0-10)
  • 控制模型

    控制模型具有多种功能,可能包含以下一项或多项:

    • 客户端模型
    • 服务器型号
    • 控制逻辑(规则和行为)协调它连接的模型之间的交互。

    示例:我们可以将控制模型用于在机器周围循环液体冷却剂的泵。

    • 场景 – 温度传感器记录机器的温度。如果机器温度超过规定的温度,冷却泵就会打开。
    • 冷却泵控制模块
      • 一个客户端到温度传感器(接受温度值)
      • 服务器到 On/Off 开关(打开或关闭泵)
      • 控制逻辑(规则和行为)——定义如果温度传感器超过定义的值,打开泵。

    模型定义允许在网状网络中配置节点及其功能。

    地址

    节点(例如灯具、温度调节设备、制造设备和电子门)是能够在BLE MESH网络内发送、接收和/或中继信息的设备。消息用于在节点之间传输数据,地址用于定义消息的来源(源)和去向(目的地)。
    地址有四种类型;其中三种类型用于消息传递:单播、虚拟和组地址。第四个称为未分配地址。地址的长度为 16 位,并按如下定义进行编码。
    在这里插入图片描述

  • 未分配地址–未配置的元素或没有指定地址的元素具有未分配的地址。鉴于这些元素没有唯一的地址,它们可能不会用于消息传递。

  • 单播地址——在供应期间,供应商在网络上该节点的生命周期内为节点中的每个元素分配一个单播地址。单播地址可能出现在消息的源地址字段和/或目标地址字段中。发送到单播地址的消息仅由一个元素处理。

  • 虚拟地址——虚拟地址是一组与特定标签 UUID 相关联的元素;这些地址可能会被发布或订阅。标签 UUID 是一个 128 位值,与可能来自一个或多个节点的多个元素相关联。

    对于虚拟地址,第 15 位和第 14 位分别设置为 1 和 0(上图);位 13 – 0 设置为散列值(提供 16,384 个散列值)。散列来自标签 UUID。使用订阅元素检查完整的 128 位 UUID 效率低下,尤其是当 UUID 可能跨越多个消息段时。散列值提供了一种更有效的方式来确定哪些消息发送到哪些元素。

  • 组地址– 组地址是BLE MESH网络中的另一种多播地址。代表来自一个或多个节点的多个元素,有两种类型的组地址:

    • 动态分配-> 0xC000-0xFEFF
    • 固定地址– 由蓝牙 SIG 分配并分为五个部分:
      • 保留供将来使用 (RFU) –> 0xFF00-0xFFFB
      • 所有代理-> 0xFFFC
        • 发送到所有启用代理功能的节点。
        • 所有朋友-> 0xFFFD
          • 发送到所有启用好友功能的节点。
        • 所有继电器-> 0xFFFE
          • 发送到所有启用中继功能的节点。
        • 所有节点-> 0xFFFF
          • 发送到所有节点。
        • 所有发送到固定节点的消息都由节点的主要元素处理。

消息

BLE MESH网络通过消息进行通信。消息可以被称为控制消息或接入消息。

控制消息 - 与BLE MESH网络操作有关的消息。示例包括心跳和好友请求消息。
访问消息 - 允许客户端模型在服务器模型中检索或设置状态值的值,或者它们被服务器用于报告状态值。
模型实现和定义节点的功能。元素是包含一个或多个模型的节点内唯一可寻址的实体,状态定义了元素的状态。对于每个状态,都有一组服务器模型支持的消息。示例包括请求状态值或请求更改状态的客户端模型以及发送有关状态和/或状态更改的消息的服务器模型。

消息由操作码标识并具有相关参数。操作码标识消息的操作。例子包括:

  • Generic OnOff Get——用于识别状态;通用模型的 OnOff 状态。
    • Generic OnOff Get 没有参数。
  • Generic OnOff Set 用于设置通用模型的 OnOff 状态。
    • 参数:
      • OnOff – 目标值(开或关)。
      • TID – 交易标识符 – 消息是新的还是重新传输的。
      • Transition Time – 元素从一种状态转换到另一种状态需要多长时间。
      • 延迟 – 消息执行延迟。
        有两类访问消息,已确认和未确认。确认的消息被传送到每个接收单元并由其确认。响应通常是状态消息。对未确认的消息不发送响应。BLE MESH网络状态消息是未确认消息的一个示例。

消息安全

每个BLE MESH网络消息都使用 NetKeysAppKeys 来加密和验证消息。NetKeys 用于网络层通信。假设BLE MESH网络没有子网,该MESH网络内的所有通信都使用相同的网络密钥。

AppKeys 用于应用程序数据。网络中的某些节点可能具有特定的应用程序,并且在这些应用程序中,具有需要有限访问的潜在敏感数据。此类节点具有特定的 AppKey 并与特定的应用程序相关联。可能使用不同 AppKey 的区域示例包括安全(建筑物访问控制、设备室访问和 CEO 办公室访问)、照明(制造楼层、建筑物外部灯和走道)和 HVAC 系统。

中继节点,例如灯泡或墙壁开关,通常具有有效的 NetKey,并且可以在网络内中继敏感消息。但是,他们无法访问各种受限区域(例如楼宇控制或 HVAC 系统)的特定 AppKey,也无法解密应用程序数据。

消息交换

BLE MESH网络使用发布/订阅模型进行消息传输。生成消息的节点被称为发布消息。对接收消息感兴趣的节点订阅他们感兴趣的地址。消息可以发布到单播、组或虚拟地址。

消息可以作为对其他消息的回复发送,也可以是未经请求的消息。当模型发送回复消息时,它使用消息发起者的源地址作为目标地址。发送未经请求的消息时,它使用模型的发布地址作为目标地址。节点中的每个模型都有一个发布地址。

在接收消息时,节点内模型的每个实例(一个节点中可能有多个模型)可以订阅接收来自一个或多个组或虚拟地址的消息。

订阅消息的模型使用模型的订阅列表来定义它们可以从中接收消息的有效地址。当模型接收到消息时,模型会检查其订阅列表。当订阅列表上的地址设置为模型的元素单播地址或属于节点的固定组地址时,它被认为是匹配的。下图显示了访问消息的有效源地址和目标地址。
访问消息的有效源地址和目标地址
由于BLE MESH实体会发布各个节点的状态,因此整个BLE MESH网络中的系统都可以订阅此数据,而不管传输节点的位置是否接近。这允许网络一侧的设备通过低功率无线消息与设施中其他地方的管理员交谈,而不管距离如何。
本文摘抄自https://www.bluetooth.com/中的BLE MESH介绍。
BLE MESH组网(一)简介
BLE MESH组网(二)友谊功能和设备管理
BLE MESH组网(三)普通BLE如何添加到网络
BLE MESH组网(四)安全概述
BLE MESH组网(五)配置BLE MESH
BLE MESH组网(六)配置BLE MESH

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

BLE MESH组网(一)简介和基本概念 的相关文章

  • iOS - iOS 设备和外部配件 (BluetoothWatch) 之间 BLE 数据传输的 MTU 大小

    我正在为使用 BLE CoreBluetooth 的蓝牙手表开发 iOS 应用程序 Objective C 并且我的手表具有 GATT 蓝牙配置文件 iOS 应用程序最低支持来自 iOS7 我想知道如何使用 Core Bluetooth 框
  • 如何检查设备上是否启用了蓝牙

    我想检查设备上是否启用了蓝牙 以便应用程序可以在没有用户交互的情况下使用它 有什么办法可以做到这一点吗 我还可以分别检查蓝牙和蓝牙低功耗吗 我使用以下方法完成了此操作Radio class 检查蓝牙是否已启用 public static a
  • 在 Android 4.2.2 和 4.3 上关闭 BluetoothSocket 时出现致命信号 11 SIGSEGV

    我的应用程序在 Android 2 3 3 到 4 1 2 下运行良好 但自从 Android 4 2 2 和 Android 4 3 以来 我有一个 fatal signal 11 SIGSEGV at 0x00 当我关闭蓝牙插座时 我查
  • 通过Python通过蓝牙发送消息或数据

    如何通过 python 通过蓝牙发送消息 而无需输入数字等密钥身份验证 我用过 pybluez 但我收到了这个错误 File send line 12 in
  • bluetoothctl 到 hcitool 等效命令

    在 Linux 中 我曾经使用 hidd connect mmac 来连接 BT 设备 但自 Bluez5 以来 这种情况已经消失了 我可以使用 bluetoothctl 手动建立连接 但我需要从我的应用程序使用这些命令 并且使用 blue
  • 如何挤出平面 2D 网格并赋予其深度

    我有一组共面 连接的三角形 即二维网格 现在我需要将其在 z 轴上挤出几个单位 网格由一组顶点定义 渲染器通过与三角形数组匹配来理解这些顶点 网格示例 顶点 0 0 0 10 0 0 10 10 0 0 10 0 所以这里我们有一个二维正方
  • Android蓝牙java.io.IOException:bt套接字已关闭,读取返回:-1

    我正在尝试编写一个代码 仅连接到运行 Android 5 0 KitKat 的设备上的 目前 唯一配对的设备 无论我尝试了多少方法 我仍然会收到此错误 这是我尝试过的最后一个代码 它似乎完成了我看到人们报告为成功的所有事情 有人能指出我做错
  • 如何在android中通过蓝牙向配对设备发送短信?

    在我的应用程序中 我想通过蓝牙发送和接收短信 我可以在列表视图中看到配对设备名称和地址的列表 但是当我尝试向配对设备发送文本时 什么也没有发生 在其他设备中没有收到文本 这是我向配对设备发送消息的代码 private void sendDa
  • Android蓝牙权限问题

    首先 抱歉我的英语不好 我是西班牙人 并且是 Android 开发的新手 我正在开发一个简单的蓝牙文件发送器 我基于BluetoothChat android示例一步一步 现在我向用户发出蓝牙激活请求 并选择是或否选项应用程序崩溃 我拥有清
  • 如何获取蓝牙设备的UUID?

    我需要知道 API 8 2 2 或可能 2 3 3 上的 UUID 据我了解文档 应该允许这样做 phoneDevice blueAdapter getRemoteDevice phoneAddress ParcelUuid phoneUu
  • Flutter blue plus 在发布模式下不起作用

    flutter run release Launching lib main dart on motorola one vision in release mode Running Gradle task assembleRelease 3
  • 无法使用 C++ 中的 Window 蓝牙 API 连接到蓝牙设备

    我仅使用 Windows 的蓝牙 API 创建了一个程序 该程序列出范围内的蓝牙设备 然后搜索特定的蓝牙设备 HC 05 蓝牙模块 如果搜索成功 程序将验证并设置设备的服务状态 以使用串行端口 GUID 1101 创建虚拟端口 我的目标是以
  • 在没有 BluetoothManagerCallback 的情况下调用 getBluetoothService

    我正进入 状态getBluetoothService called with no BluetoothManagerCallback在我的 Android 应用程序中经常出现错误 我不知道是什么原因导致这个或任何有关蓝牙管理器回调的事情 谁
  • 如何知道特定蓝牙设备何时连接?

    我有一个在后台运行的应用程序 需要知道何时连接特定的蓝牙设备 假设我希望我的应用程序在后台运行 并在您的设备连接到汽车蓝牙时执行某些操作 谢谢 下面的代码给出了它所连接的设备 BluetoothDevice device intent ge
  • Android 蓝牙后台监听器

    我正在开发一个带有蓝牙聊天功能的Android应用程序 我已经成功地用两部手机实现了蓝牙聊天 但我的问题是 如果我从聊天活动更改到下一个活动 连接就会丢失 然后我无法从第二个活动发送消息 我怎样才能保持我的连接 也就是说 我想通过我的应用程
  • 通过蓝牙耳机 VoIP 接听电话

    我正在开发 VoIP Android 应用程序 该应用程序需要能够通过蓝牙耳机接受 拒绝呼叫 但问题是添加到SCO后 audioManager startBluetoothSco audioManager isBluetoothScoOn
  • iOS 7 Core 蓝牙外设在后台运行

    我想要的是我的 iOS 设备始终宣传蓝牙 LE 服务 即使应用程序未运行 这样我就可以让另一台 iOS 设备扫描并找到它 我在这里遵循了苹果的后台说明 https developer apple com library ios docume
  • 了解 UUID 的长形式和短形式

    我正在尝试学习一些android中的蓝牙编程我已经能够制作一个基本程序 该程序可以发现并连接到具有内置蓝牙功能的开发板 目前只有一个 我希望能够使用 RFCOMM 向开发板发送命令并接收消息有人告诉我 如果不知道主板和手机的 UUID 我可
  • 如何在 R 中导入并绘制三角形网格?

    我想在 R 中绘制我的模型输出 它是格式为的三角形网格 x1 y1 z1 x2 y2 z2 x3 y3 z3 value 每行代表一个三角形 我想用以下方法绘制这些三角形value作为规模 mymesh lt structure c 0 9
  • onBeaconServiceConnect 未调用

    和以前一样 我使用 Android Beacon 库 它已经工作了 我可以通过 BLE 低功耗蓝牙找到信标 但是现在 更新到最新版本的库后 现在方法onBeaconServiceConnect 不再跑了 请告诉我我需要做什么才能让它发挥作用

随机推荐

  • 协同过滤-图书馆图书推荐系统(JAVA,JSP,SSM,MYSQL)

    协同过滤 图书馆图书推荐系统 JAVA JSP SSM MYSQL 毕业论文27564字 共78页 程序代码 MySQL数据库 链接 https pan baidu com s 1PilFCeVoH3S2VYwfrdMgnQ 提取码 888
  • 启用Bazel的远端缓存,加速团队协作效能

    背景 多人协同的项目 大家各自开心地在在自己的本地进行编译 调试 这样就存相同的编译 在不同人的电脑上重复执行 浪费计算资源不说 更重要造成了不必要的等待 如果是在本机编译 编译过程CPU耗尽 机器肯定卡 较大的项目编译时可能需要暂停工作
  • CTFshow 愚人节欢乐赛 部分WP

    文章目录 1 签到 2 特殊base 3 这太哈人了 4 你会弹钢琴吗 5 config 6 以旧换新 签退 送分 7 Las Vegas历险记 6 8 Kanna Kamui 9 php的简单RCE 10 暴躁的zip 1 签到 跟群主对
  • 有关上拉输入、下了输入、推挽输出、开漏输出、复用开漏输出、复用推挽输出以及、浮空输入、模拟输入区别

    有关上拉输入 下了输入 推挽输出 开漏输出 复用开漏输出 复用推挽输出以及 浮空输入 模拟输入区别 最近在网上看见一些人对STM32的八种方式的解释 说了一大堆 最后看完了 也不知道讲了什么 为了方便大家一目了然 本人总结如下 希望对大家有
  • Visio简单使用

    查看入门图表 深入了解并开始自行创建内容前 我们将展示 Visio 提供的多个入门图表 通过这种方式 可了解程序中的图表的观感 单击 类别 单击 流程图 现在请注意本步骤 单击 基本流程图 缩略图 下面介绍此对话的全部内容 如果有一些使用
  • 计算机网络基础知识 - 物理层

    第一章 概述 1 计算机网络 定义 计算机网络是指将不同地理位置 具有独立功能的多台计算机设备 通过通信线路连接起来 在网络操作系统 网络管理软件和网络通信协议的管理和协调下实现资源共享 信息传递 网络连接或远程访问等应用目的的计算机系统
  • 一个40岁程序员的经历

    有好几年没有上CSDN了 最近密码泄露事件 才让人想起久违的csdn 还好 通过注册邮箱顺利的找回了密码 十年前的时候 常在csdn潜水的老人们 现在还有人再来csdn吗 估计大部分都已经转行 当管理者或者当老板了吧 仍然做软件的可能只是极
  • 毕业设计成品网站集锦

    帮大家汇总下 今年比较热门的毕业设计选题 毕业设计成品网站的模板 适用性比较强 性价比也比较高 大家可以参考下 一 在线购物商城 題目 购物网站毕业设计 二 旅游网站 題目 基于web的旅游网站毕业设计
  • linux c语言 创建线程任务

    include
  • 使用AJAX修改把商品添加到购物车

    使用AJAX修改把商品添加到购物车 protected void ajaxAddItem HttpServletRequest req HttpServletResponse resp throws ServletException IOE
  • Vue2使用过渡标签transition使用动画

    注意 动画必须使用v if v show配合 1 Vue2配Css3实现 我们需要使用 过渡 标签
  • clickhouse There is no supertype for types UInt64, Float64

    There is no supertype for types UInt64 Float64 进行union all操作的时候 发现有两个字段名称相同 但是类型不同 所以出现了这个字段 如下 解决方案 统一转Float64类型 因人而异
  • 单片机毕业设计 遥控小车设计与实现

    文章目录 1 简介 2 主要器件与实现 2 1 电机驱动模块 2 2 蓝牙模块 2 3 蓝牙调试APP 3 实现效果 5 部分参考代码 6 最后 1 简介 Hi 大家好 今天向大家介绍一个学长做的单片机项目 基于单片机的遥控小车设计与实现
  • 注解@Lazy

    注解 Lazy 1 注解由来 Lazy 注解是 Spring 框架提供的一种机制 用于延迟初始化 Bean 它可以推迟 Bean 的初始化时机 从而优化应用程序的性能和资源利用 2 注解示例 java复制代码 Component Lazy
  • git回退--使用TortoiseGit小乌龟【我有一颗后悔药,服用说明图文详细,请对症下药】

    hi 你好 见到你很开心 我听到你的呼唤啦 你说你一不小心做错事了 我这刚好有一颗后悔药 说不定等你吃完 就能回到事情发生前啦 祝你好运o 下面我给大家介绍此款后悔药功效 请对症下药 药效 可穿越回到 之前某一次提交的时刻 本地与远端分支
  • SpringBoot中使用@Insert、@Update实现批量新增、更新

    一 使用 Insert批量新增 数据库原始表数据 数据层接口 批量新增 Insert
  • 有向图的拓扑排序

    给定一个 n 个点 m 条边的有向图 点的编号是 1 到 n 图中可能存在重边和自环 请输出任意一个该有向图的拓扑序列 如果拓扑序列不存在 则输出 1 若一个由图中所有点构成的序列 A 满足 对于图中的每条边 x y x 在 A 中都出现在
  • Explain各个字段的含义

    文章目录 TOC 1 expanin的结果示例 2 各个字段的含义 1 id 2 select type 3 table 4 type 重要 我们利用索引查找出来的记录显示 5 possible keys 6 key 7 key len 8
  • VUE3 之 生命周期函数

    目录 1 概述 2 VUE3 生命周期函数介绍 3 代码例子 4 综述 5 个人公众号 1 概述 老话说的好 天生我材必有用 千金散尽还复来 言归正传 今天我们来聊一下 VUE 的生命周期函数 所谓生命周期函数 就是在某一条件下被自动触发的
  • BLE MESH组网(一)简介和基本概念

    BLE MESH组网 一 BLE MESH简介 BLE MESH来源 BLE MESH用处 BLE MESH的通讯方式 管理洪水 市场内蓝牙设备支持 安全性 BLE MESH协议栈模型 BLE MESH基本概念 节点 元素 模型和状态 地址