de|en

Eddystone URL Generator

Martin Kompf

Bluetooth Low Energy Beacons können Webadressen drahtlos an Smartphones versenden. Die URLs müssen dazu im Eddystone Format vorliegen. Diese Seite hilft bei der Konvertierung.

Bluetooth 4.0 Low Energy (BLE) alias Bluetooth Smart erlaubt das Versenden sogenannter Advertising Frames. Entsprechende Devices (Beacons) senden diese Frames (oder Pakete) permanent aus, sodass sie für alle in der Nähe befindlichen Empfänger, zum Beispiel einem Smartphone, lesbar sind. Die Frames können dabei auch Nutzdaten transportieren, deren Länge allerdings auf 31 Bytes limitiert ist. Google spezifiziert im Rahmen seines Physical Web Projekts eine besondere Form von Nutzdaten, die eine URL im Eddystone Format transportieren.

Geben Sie die URL in das Formular ein! Die Länge der kodierten URL ist dabei auf 17 Byte begrenzt, sodass sich der Einsatz von URL-Verkürzern, wie goo.gl empfiehlt. Das Tool produziert das Ergebnis als uint8_t Array, das die kompletten Advertising Daten inklusive der Eddystone Service-Id enthält.

Das Formular fragt außerdem die Sendeleistung des Beacons in dBm ab. Sie ist ebenfalls Bestandteil des Advertising Pakets und hilft später bei der Bestimmung des räumlich nächsten Beacons und bei der Indoor-Navigation. (Falls Sie diesen Wert nicht kennen, dann finden Sie am Ende des Artikels einen Weg zur experimentellen Bestimmung.)

Eingabe:
dBm
/* Ergebnis: */
uint8_t advdata[] =
{
  0x03,  // Length of Service List
  0x03,  // Param: Service List
  0xAA, 0xFE,  // Eddystone ID
  0x0A,  // Length of Service Data
  0x16,  // Service Data
  0xAA, 0xFE, // Eddystone ID
  0x10,  // Frame type: URL
  0xEB,  // Power
  0x02,  // http://
  'a',
  'b',
  'c',
  0x07,  // .com
};

Das Ergebnis enthält die kompletten, kodierten Eddystone Advertising Daten als uint8_t Array, das man direkt in einen Sketch für einen RFduino übernehmen kann. Das folgende Programmbeispiel zeigt einen minimalen RFduino Sketch für das Advertising einer mit dem Tool generierten URL:

#include <RFduinoBLE.h>

uint8_t advdata[] = { 0x03, /* ... see above ... */ };

void setup() {
  // set the advertisement data
  RFduinoBLE_advdata = advdata;
  RFduinoBLE_advdata_len = sizeof(advdata);
  RFduinoBLE.advertisementInterval = 300; // ms
  RFduinoBLE.txPowerLevel = -8; // dBm
  
  // start the BLE stack
  RFduinoBLE.begin();
}

void loop() {
  // switch to lower power mode
  RFduino_ULPDelay(INFINITE);
}

Zum Empfang und Testen der Eddystone Frames eignet sich zum Beispiel ein Smartphone mit Android 4.4 oder höher und einer entsprechenden App. Die Abbildungen unten zeigen den Empfang einer Eddystone URL mit der Physical Web Anwendung (links) und dem nRF Master Control Panel von Nordic Semiconductor (rechts).

Screenshots

Die Physical Web Anwendung greift beim Empfang eines Eddystone Frames auf die kodierte URL zu und zeigt Titel und Beschreibung der entsprechenden Webseite an. Bei Berührung des Eintrags öffnet sich die Webseite im Browser. Die App ist damit eher für Endanwender gedacht.

Das nRF Master Control Panel liefert dagegen detaillierte technische Parameter zum Beacon, unter anderem auch zur gemessenen Feldstärke in dBm. Dieser Wert ist für die experimentelle Bestimmung der Sendeleistung nützlich. Dazu misst man mit der App die Feldstärke in einem Abstand von 1 m und addiert 41 dBm dazu. (41 dBm ist der Verlust an Feldstärke über 1 m.) Die App kann auch mit Advertising Frames in vielen anderen Formaten umgehen, wie zum Beispiel iBeacon oder RFduino. Sie ist daher ein äußerst hilfreiches Tool für den Entwickler von Anwendungen für Bluetooth-Beacons.