Bluetooth Beacons mit Calliope

Liebes Calliope-Team,
im Jahr 2018 habe ich den Calliope als Bluetooth Beacon (= Leuchtfeuer) verwendet. Dies ist eine Funktion, die bei Apple iBeacon heißt und bei Google Eddystone und einen Kurzdistanzdatenübertragung umsetzt.

Baut man den entsprechend programmierten Calliope hinter ein Kunstwerk ein, so könnte über die Bluetooth Beacon Funktion eine URL zu zusätzlichen Infos übertragen werden. In der Projektdarstellung „MoodleBox im Wald“ findet ihr eine ausführliche Darstellung.
https://machmitnetz.de/mod/page/view.php?id=161

Mir ist aufgefallen, dass in der neuen Version von MakeCode die entsprechende Bluetooth-Funktion nicht mehr verfügbar ist. Mir ist weiter aufgefallen, dass ich den Block trotzdem erzeugen kann, wenn ich den dazugehörigen Javascript-Code händisch eingebe. Warum ist das so? Warum gibt es den Block „Bluetooth-Übertragung URL“ nicht mehr im Block-Menü?

Herzliche Grüße
Ralf

Hallo Ralf,

das ist eine gute Frage… In den References steht auch nur „deprecated“: Advertise Url
Ich könnte mir vorstellen, dass es evtl. bei Android Geräten Probleme geben kann (dieser Hinweis wirkt jedenfalls so: Android Developers Blog: Discontinuing support for Android Nearby Notifications) und es deshalb rausgenommen wurde.

Beste Grüße
Jörn

Das ist übrigens eine tolle Anwendung (ich habe mir immer so tolle Anwendungen damit gewünscht)! Das hätte man so eigentlich auch für Escape Room Projekte nutzen können usw… Ich habe leider kein Android Smartphone, geht es denn evtl. damit aber trotzdem noch?

Hallo Jørn,
danke für den Hinweis, dass dieser Dienst bei Android eingestellt werden soll oder eingestellt worden ist. Ich habe also einen Calliope mit dem Code als iBeacon programmiert.

Anschließend habe ich mit dem BLE Scanner sowohl unter iOS wie auch unter Android nachgeschaut, ob der iBeacon gefunden wird. Ja, sowohl unter iOS 15.7 wie auch unter Android 7.0 findet der BLE Scanner den iBeacon. Beim Klick auf „Open URL“ wird auf beiden Geräten die Website https://calliope.cc aufgerufen.

Es ist eine gute Funktion, die ganz sicher erhalten bleiben sollte. Man kann bei den Kindern (und auch bei den Erwachsenen) Interesse dafür wecken, welche Geräte um sie herum Bluetooth aktiviert haben und dass man darüber unsichtbare Infos bereitstellen kann.

Herzliche Grüße
Ralf

Hallo Jørn,
wenn ich es richtig verstanden habe, sind die Beacon Fähigkeiten im Android-Betriebssystem entfernt worden … oder es ist beabsichtigt, diese zu entfernen. Nicht davon betroffen sind aber die Programme, die dies unterstützen.

Mein Projekt oben genanntes Projekt der Übermittlung einer URL in den BLE Scanner funktioniert weiterhin. Beim Suchen habe ich ein weiteres schönes Experiment gefunden, das sich durchaus mit Jugendlichen umsetzen ließe.

Der Calliope (oder im Film der micro:bit) wird so programmiert, dass er beim Tastendruck A einen Code sendet, beim Tastendruck B einen anderen Code und beim Schütteln einen dritten Code. Ein Raspberry Pi dient als Empfänger und steuert die Beleuchtung entsprechend der Codes. Mit A leuchtet es grün, mit B leuchtet es rot und mit dem Schütteln wird die Beleuchtung ausgeschaltet.

In ähnlicher Weise könnte man umsetzen, dass die Anwesenheit eines Codes die Beleuchtung einschaltet und die Abwesenheit des Codes die Beleuchtung ausschaltet. Dies wäre ein Beispiel für Smarthome.

Um solche Beispiele mit dem Calliope umsetzen zu können, müssten die Blöcke für die standardisierte Bluetooth-Übertragung erhalten bleiben. Nur wenn es echte Beacon-Signale sind, wird man sie mit Apps wie dem BLE Scanner empfangen und auswerten können.

Herzliche Grüße
Ralf

Wow! Danke für die ganzen Infos und das Ausprobieren!
@Juri kannst du nachschauen, ob das durch uns wieder integriert werden kann bzw. sollten wir ansonsten vielleicht eine eigene Erweiterung dazu anbieten, um flexibler zu bleiben?

1 „Gefällt mir“

Probiere gerne mal diese Erweiterung in MakeCode zu laden: GitHub - Amerlander/pxt-bluetooth-beacons: MakeCode Erweiterung zur Verwendung von Bluetooth Beacons

Die macht:

Der Damit erstellte Code erzeugt dann als JS beacon.advertiseUid() und nicht mehr bluetooth.advertiseUid(), aber funktionieren tut noch beides.

Ich glaube der Technische Hintergrund beim deaktivieren der Eddystone Blöcke ist, dass jeder BLE Service RAM verbraucht und der auf den Geräten mit 16KB sehr knapp ist. Daher ist der dafür Nötige Service deaktiviert und die Blöcke entsprechend unsichtbar gemacht, da sie ohne service ja nicht funktionieren. Wir könnten mal schauen, ob wir die Blöcke mit der 32KB Einstellung wieder dauerhaft aktivieren können.

1 „Gefällt mir“

Hallo Juri,
deine Erweiterung funktioniert großartig. Für mich ist es kein Problem, die Beacons über den Link https://github.com/amerlander/pxt-bluetooth-beacons/ nachzuladen. Natürlich wäre es schön, nicht den Link verwenden zu müssen, sondern über die Suche nach „beacon“ oder „eddystone“ direkt das richtige Paket zu finden.

Ich habe übrigens deinen Link zum Nachladen der Erweiterung auch bei https://makecode.microbit.org/#editor eingeben können. Dort stehen dann ebenfalls die richtigen Programmierblöcke für die Beacons bereit.

Wenn es solch große Probleme wegen des Erweiterungspakets „bluetooth“ auf Geräten mit wenig Speicher gibt, könnte man ja das Paket „bluetooth“ möglicherweise in mehrere kleinere Teile zerlegen. Der eine Teil, der für die Bluetooth-Kommunikation mit der App auf mobilen Endgeräten notwendig ist, muss immer geladen werden, wenn die App genutzt wird. Die übrigen Bluetooth-Services werden nur geladen, wenn sie wirklich verwendet werden sollen.

Herzliche Grüße
Ralf