Bluetonium released

Door E-sites, E-sites
5 februari 2016 - 2272 x bekeken - Categorieƫn: Mobile

 

 

Bij E-sites werken we regelmatig aan innovatieve oplossingen. Voor onze klanten. Maar soms ook om het onszelf makkelijker te maken. Bluetononium is hier een voorbeeld van. Het is voorgekomen uit onze wens om eenvoudig te communiceren tussen apparaten via Bluetooth. Bluetooth en communicatie tussen apparaten is natuurlijk niet nieuw. Maar omdat we dit in het verleden op steeds verschillende manieren hebben aangepakt, leek het ons efficiënter om er een generieke oplossing voor te maken. Deze oplossing hebben we ook meteen geschreven in Swift om zo zoveel mogelijk op de toekomst voorbereid te zijn. Hieronder geef ik nog een beetje extra uitleg over onze oplossing Bluetonium. 

Wat doet Bluetonium?

Bluetonium doet eigenlijk twee dingen. Ten eerste het zoeken en verbinding maken tussen twee bluetooth apparaten. En ten tweede het mappen van services en characteristics naar models. Tijdens het mappen van de characteristics wordt de ruwe data omgezet naar de bruikbare data zoals UInt 8 of een String. Zodat er zo min mogelijk interactie is met CoreBluetooth.

Ons doel was dus om eenvoudig verbinding te maken met bijvoorbeeld een hartslagmeter, zonder de hele flow van CoreBluetooth te hoeven doorlopen. Data moet dus eenvoudig te lezen en weg te schrijven zijn. Ook moest het dynamisch genoeg zijn om ook voor andere bluetooth apparaten in te zetten.

Het resultaat is dat de gebruiker door middel van Bluetonium communiceert met de uiteindelijke data, zonder bezig te zijn met de ruwe data die de peripheral vereist.

Hoe werkt het? 

Hieronder omscrhijf ik kort de drie belangrijkste onderdelen (classes) van het Bluetonium framework: Manager, ServiceModel en DataTransformer. Hoe werkt het? Bij ieder onderdeel lees je kort wat het technisch doet.

Manager

De Manager regelt het zoeken naar peripherals (apparaten), deze gevonden peripherals kunnen dan weergegeven worden in een lijst. De gebruiker kan dan het gewenste device selecteren en connecten via de Manager.

ServiceModel

Een ServiceModel is een representatie van een Bluetooth Service. Zoals de BatteryService een service is. Een ServiceModel zal geregistreerd worden op het Device waar je mee verbindt. Zodra dit gebeurd is, wordt een verbinding gemaakt tussen het geregistreerde ServiceModel en de Service. En de service zal laten weten zodra alles leesbaar / schrijfbaar is.

DataTransformer

Om de ruwe data om te zetten naar bruikbare data zijn er DataTransformers. Bluetonium heeft een aantal standaard DataTransformers (String, UInt8, etc.) maar het is ook mogelijk om je eigen DataTransformers te maken voor verschillende characteristics die bijvoorbeeld complexe data structuren hebben. Zodra er data binnen komt of uit gaat zal de data door deze transformer gaan en de juiste data terug geven.

Background

Bluetonium kan ook in de achtergrond blijven draaien. Zodat als de app naar de achtergrond draait er nog steeds data vanuit de Peripheral naar de app gestuurd kan worden.

Was dit leerzaam voor ons?

Zeker! De basis van Bluetonium komt voort uit verschillende apps die geschreven zijn in Objective-C, dit hebben we herschreven in Swift. Sommige elementen waren alleen niet zo eenvoudig om in Swift over te nemen en hier hebben we dus nieuwe oplossingen voor moeten bedenken. Één hiervan is detecteren wat voor type property welk type DataTransformer moet gebruiken. In Objective-C is het mogelijk om hier runtime type checking voor in te zetten, maar in Swift is dit niet mogelijk. We hebben hiervoor Reflection gebruikt.

Conclusie

Bluetonium is voor veel verschillende bluetooth apparaten in te zetten, van hartslag meters tot digitale koelkast met bluetooth. We hopendeze oplossing dan ook nog voor veel andere bluetooth projecten in te zetten in de toekomst. Daarbij hebben we het geopen-sourced, waardoor het nu ook voor andere developers te gebruiken is. Op deze manier proberen we iets bij te dragen aan de Swift community.

Onze code is te vinden op Github: Bluetonium

De Slangentoren in Breda komt tot leven tijdens de Cultuurnacht

Door E-sites

Aanstaande vrijdag is het zover, tijdens de Bredase Cultuurnacht. Dan brengen wij de Slangentoren tot leven met een interactief lichtprojectā€¦ - Lees meer

Lees verder