Wiliot

Wiliot 是一家 IoT 公司,提供无电池 Bluetooth 标签,用于广播遥测数据,需要支持 Bluetooth 的 MikroTik RouterOS 设备以网关和桥接模式运行。本文档指导用户如何将 MikroTik 板卡注册为 Wiliot 网关,包括 API 令牌设置和 MQTT 连接建立。

Wiliot

Wiliot 是一家物联网公司,以其 IoT Pixels(标签)等解决方案而闻名。pixel 的一大优势在于它是一种无电池且标签大小(紧凑)的 Bluetooth"标签"(它广播带有遥测数据的 Bluetooth beacon)。

  • 要为 IoT Pixel 供电,您需要一个桥接("energizer")设备。它通过无线电波提供"能量",并在一定距离内为 IoT pixel 供电。
  • 要将 IoT Pixel 的数据转发到服务器("dashboard"),您需要一个网关设备。它使用 TCP/IP 连接与服务器建立连接,并转发包含传感器数据(如温度)的标签载荷。

两种运行模式都可以由单个设备执行,也可以由单独的设备执行。

RouterOS 允许在支持 Bluetooth 的设备上使用 Wiliot gateway 和 bridge 模式。

Wiliot gateway 模式负责与 MQTT 服务器建立连接(通过 API 注册网关、获取所需的令牌和凭据,以及授权设备)。它还负责通过已建立的 MQTT 连接转发它通过无线捕获的 Pixel 的 Bluetooth 载荷,以及将可能从订阅的 MQTT topic 收到的附加命令通过 Bluetooth 广播进行中继。

Wiliot bridge 模式负责在频率上提供能量并保持 IoT Pixels 通电。

警告

bridge 模式尚未实现。

分步操作

分步操作需要两个快速步骤:

  1. 注册设备并激活 MikroTik 板卡;
  2. 设置 IoT Pixels。

步骤 #1,网关注册

在 Wiliot 门户上

  • 选择 "Gateway Registration"。
  • 选择 "Manual input"(屏幕右上角)。
  • 输入 "Gateway ID"。

您可以从 RouterOS 设置(gateway-id 字段)中复制 "Gateway ID":

[admin@MikroTik] > /iot wiliot configuration print
                  status: inactive                
              gateway-id: XXXXXXXXX          
                    type: mikrotik-knot-embedded
                   owner: xxxx              
               spoof-gps: xx                   
                     lat: xx                    
                    long: xx                    
  token-refresh-handicap: 3600                  
                  server: Wiliot US East        
                 scanner: bt1                   
              advertiser: bt1                   
                   wi-fi: none                  
                features: gateway  

在 RouterOS 中

信息

您可以使用不同的工具浏览设置。建议的管理方式是使用 Winbox 软件。使用此链接下载该工具并运行它。使用 "ethernet" 线缆将您的 PC 连接到任何以 ether2+ 开头的端口(避免使用 ether1,因为在大多数情况下它被配置为 WAN 端口并受防火墙限制,而其余端口是开放访问且启用了 DHCP 服务器的 LAN 端口),或者使用 Wi-Fi 连接(如果板卡有 Wi-Fi 芯片)。

在 Winbox 中,导航到 "Neighbors" 选项卡(Select from: Neighbors),找到您的 MikroTik 板卡的 MAC 地址(印在设备标签上),点击该 MAC 地址,输入登录凭据(也印在标签上)并"连接"到它。

从这里,您可以使用 "GUI" 或 "CLI" 命令。本指南展示 "CLI" 命令示例,您可以通过从 Winbox 选项中打开 "New Terminal" 来运行它们。但是,GUI 中也提供完全相同的部分和选项卡。例如,如果命令显示为 "/iot/wiliot/enable",请转到 IoT→ Wiliot 选项卡并点击 "enable" 按钮。

  • 启用 "wiliot" 功能。
[admin@MikroTik] > /iot/wiliot/enable
  • 确认设备成功获取了令牌、已被授权并以 "active" 状态连接到 MQTT 服务器(status: active)。
[admin@MikroTik] > /iot/wiliot/configuration/print
                  status: active                  
              gateway-id: XXXXXXXXX           
                    type: mikrotik-knot-embedded
                   owner: xxxx              
  token-refresh-handicap: 3600                  
                  server: Wiliot US East        
                 scanner: bt1                   
              advertiser: bt1                   
                   wi-fi: none                  
                features: gateway               

在 Wiliot 平台上,网关状态应从 "pre-registered" 更改为 "approved"(和/或 "online")→ https://platform.wiliot.com/edge/gateways

步骤 #2,添加 IoT Pixel(标签)

在 Wiliot 门户上

  • 登录 Wiliot 平台并导航到 "Category" 选项卡 → https://platform.wiliot.com/categories。添加一个新的 "Category"("Add new")。为其命名并选择所需的 category 类型。
  • 导航到 "Pixels" 选项卡 → https://platform.wiliot.com/edge/pixels。检查您的标签的 "ID"。标签应已分配给您的账户。
  • 转到 "Assets" 选项卡 → https://platform.wiliot.com/assets。创建一个新 asset("Add New")。将 asset 选择/链接到先前创建的 "Category",输入 "Asset ID"(或生成一个随机 ID),然后从列表中选择 pixel 的 ID。
  • 通过点击所创建的 "asset" 条目(一旦标签被赋能且网关就绪),您将能够看到标签的读数(温度等)。

RouterOS 设置

子菜单: /iot/wiliot

note:需要 iot 软件包。

PropertyDescription
configurationWiliot 网关/桥接的通用设置。
serversMQTT 服务器配置。
bluetooth trafficBluetooth 流量菜单。
mqtt trafficMQTT 流量菜单。

Configuration(通用选项)

要启用配置,请使用命令:

/iot/wiliot/enable

要禁用它:

/iot/wiliot/disable

要清除(清除)MQTT 连接/身份验证数据(仅在 "disabled" 时可用):

/iot/wiliot/disable
/iot/wiliot/clear

信息

"清除"配置后,您将必须删除网关(https://platform.wiliot.com/edge/gateways)并重新注册网关(https://deployment-tool.wiliot.com/)。 配置属性可以使用 "set" 命令应用(仅在 "disabled" 时可用):

/iot/wiliot/set

示例:

/iot/wiliot/set features=gateway
PropertyDescription
advertiser (Default: bt1)选择将用于广播(中继从 MQTT 服务器获得的命令)的 Bluetooth 接口。
scanner (Default: bt1)选择将用于扫描(捕获 Pixel 的载荷)的 Bluetooth 接口。
spoof-gps (yes | no; Default: no)选择是否使用将传递给服务器的手动 GPS 坐标。
lat (Default: )设置使用 "spoof-gps" 时在与服务器连接期间要包含的 GPS 纬度值。
long (Default: )设置使用 "spoof-gps" 时在与服务器连接期间要包含的 GPS 经度值。
features (gateway | bridge ; Default: )选择设备的角色:gateway。在此模式下,设备与服务器建立 MQTT 连接,并将 scanner 捕获的 IoT Pixel beacon 转发给它。它还会将订阅的 topic 收到的命令广播给附近的 bridge。bridge。在此模式下,设备为周围的 IoT Pixels 赋能(使其通电)。Caution: bridge 模式尚未实现。
server(Default: )设置用于 MQTT 连接的服务器。

Servers

要更改 MQTT 服务器的设置:

PropertyDescription
address (Default: )MQTT 服务器的 IP/域名地址。
certificate (Default: )指定用于 SSL MQTT 连接的来自证书存储的证书(如果服务器要求)。
name (Default: )服务器名称。
port (Default: )MQTT 服务器使用的 TCP 端口。
ssl (yes | no; Default: )启用与服务器的 SSL 通信。

Bluetooth 流量

显示附近 IoT Pixel 的原始数据:

/iot/wiliot/bluetooth-traffic/print 
Columns: TIME, ADDRESS, RSSI, PAYLOAD
 #  TIME        ADDRESS            RSSI    PAYLOAD                                                                                     
 0  2026-01-07  E9:B7:32:XX:XX:XX  -34dBm  1E 16 C6 FC 03 00 7C 7B 3C 22 0E D8 54 38 B0 03 E0 DA 8C 06 36 B4 CF AC 8A D6 76 54 BD FC B9
    14:23:26                                                                                                                           
 1  2026-01-07  E9:B7:32:XX:XX:XX  -41dBm  1E 16 C6 FC 03 00 3C DB 7D 72 BF A0 C1 62 9C 5F B6 D5 90 00 C1 62 BF 68 EC E5 64 02 63 F9 C3
    14:23:26                                                                                                                           
 2  2026-01-07  E9:B7:32:XX:XX:XX  -42dBm  1E 16 C6 FC 03 00 3C A8 3B 27 17 25 BC 6D 01 F5 49 E1 98 03 CA 3C 64 04 30 B2 E1 86 FC 80 CB
    14:23:28                                                                                                                           
 3  2026-01-07  E9:B7:32:XX:XX:XX  -33dBm  1E 16 C6 FC 03 00 3C F5 AF 22 CC E2 60 FA BC 4E 57 F7 8C 01 80 6A 21 EF 82 CB 62 2A 16 5A 3F
    14:23:29                                                                                                                           
 4  2026-01-07  E9:B7:32:XX:XX:XX  -33dBm  1E 16 C6 FC 03 00 3C FC AC 9A 1B 9A BD 2C DE B7 02 FF 7C 03 C7 28 BD AB 20 1B 91 89 B9 ED 88

MQTT 流量

显示 MQTT 流量:

/iot/wiliot/mqtt-traffic/print
   time: 2026-03-02                                                                                                                      >
         07:37:43                                                                                                                        >
  topic: update/mikrotik/XXXXXXXXXXX                                                                                                     >
   data: {"txPacket":"1E16C6FC0000ED070C3443B7D39DE2CE08993D7F40B2F56B822096AA19CD00","txMaxRetries":8,"txMaxDurationMs":700,"action":0} >

调试

您可以使用以下命令启用 "wiliot" 调试日志记录:

/system/logging
add topics=wiliot

结果,您应在日志(/log/print 命令)中看到更详细的条目:

 2026-02-12 12:04:54 wiliot,debug [CFG] authorizing...
 2026-02-12 12:04:54 wiliot,debug [CFG] authorization complete
 2026-02-12 12:04:54 wiliot,debug [CFG] registering...
 2026-02-12 12:04:55 wiliot,debug [CFG] registration complete
 2026-02-12 12:04:55 wiliot,debug [CFG] polling for token...
 2026-02-12 12:04:55 wiliot,debug [CFG] token obtained
 2026-02-12 12:04:55 wiliot,debug [CFG] ownerId
 2026-02-12 12:04:55 wiliot,debug [CFG] authorization complete
 2026-02-12 12:04:55 wiliot,debug [CFG] updating MQTT credentials
 2026-02-12 12:04:56 wiliot,debug [CFG] MQTT credentials updated
 2026-02-12 12:04:56 wiliot,debug [CFG] connecting to MQTT server
  2026-02-12 12:04:56 wiliot,debug [CFG] subscribing to BLE advertisements
 2026-02-12 12:04:56 wiliot,debug [CFG] active

证书

Wiliot 功能使用 /tool/fetch 发起 HTTP post,并使用 /mqtt 建立 MQTT 连接。HTTP 和 MQTT 都需要 SSL 证书。RouterOS 有一个"内置信任存储",从一开始就包含所有必需的证书。

默认情况下,"所有"服务应被允许使用内置证书存储,因此您无需做任何操作。但是,如果您决定限制它(如果您决定不允许 "all" 服务访问该 "store"),为了让 "wiliot" 工作,您需要启用 "wiliot"、"mqtt" 和 "fetch" 服务(或禁用 builtin-trust-store 并手动上传证书):

[admin@MikroTik] > /certificate/settings/print
  builtin-trust-store: fetch                    
                       mqtt                      
                       wiliot                     
         crl-download: no    
              crl-use: no    
            crl-store: ram