.NET on Raspberry PI 2

In een vorige blogpost heb ik verteld over Windows 10 IoT Core. Grote voordeel is, dat je in C# kunt programmeren en er een grafische schil om heen hebt. Maar het gros van de IoT devices zullen niet aan een monitor hangen of interactie van de gebruiker verwachten. De meeste IoT devicesverzamelen data en geven deze af of controleren een omgeving en verwachten stuurinformatie.

Ondanks dat er verschillende goede redenen zijn om gebruik te maken van Windows 10 IoT Core, het is voor een Microsoft omgeving niet perse nodig. Ook op een NOOBS (New Out of the Box Software) OS kun je prima .NET gebruiken.

Al enige jaren is het Mono project gaande en daar ligt de key van multi platform.

Op je Raspberry PI 2 kun je dan: sudo apt-get install Mono-complete doen. Daarmee wordt Mono op je Rasp gezet.

Met het krachtige Owin mechanisme kun je een ASP.NET website hosten op je Rasp.

6-14-2015 12-45-22 PM

Het resultaat:

6-14-2015 12-23-21 PM

Het is een Webserver waarin je ook een WebApi kunt hosten.

6-14-2015 12-46-19 PM

Het resultaat:

6-14-2015 12-44-29 PM

Best handig. Ik heb ook een voorbeeld waarbij een Raspberry PI 2 informatie in een Azure Storage queue zet. Daarover later meer, want hier horen meerdere bedenkingen bij.

Project Oxford

Tijdens de //Build/ Conference lieten ze hele gave demo zien; de foto herkenningssite (http://how-old.net/).

image

Project Oxford (http://www.projectoxford.ai/) is basis van deze app. Deze API biedt heel veel mogelijkheden. En het mooiste is, je kunt hem ook zelf gebruiken.

image

Er is een hele volledige en goed gedocumenteerde API beschikbaar. Voorlopig zijn de API’s nog gratis, maar erg leuk om mee te spelen.

image

De basis achter deze API is Azure Machine Learning. Er is een gratis e-book over Machine Learning. Deze is erg leesbaar en geeft je de basis van Machine learning.

Tijdens de afgelopen Ignite Conference was er een erg leuke tweede keynote. Deze werd gedaan door de Technology and Research afdeling. Ze vertelde hoe zij al jaren bezig waren met research voor producten die nu beschikbaar kwamen. Zoals bijvoorbeeld PowerBI en de vertaalmachine van Skype etc. Grappige demo over Data analyse en historische data.

Als je in de Big Data zit of daar affiniteit mee hebt, dan zou ik zeker naar deze sessie kijken (Ignite KEY02   The Next Era of Computing: Seeing the Future Before It Happens).

Tijdens een IoT Hackaton hebben we een Raspberry PI 2 gekoppeld aan een camera en de gemaakte foto’s door deze API gehaald. Het werkte erg leuk. Helaas konden we niet gebruik maken van Windows 10 IoT Core.

Windows 10 Development: Small and Big Screens

Met de komst van Windows 10 en het feit dat deze op alle devices aanwezig is, is de Universal app zoals we die kennen in Windows 8.1 weg. Dat maakt het weer een stuk eenvoudiger, maar gelijktijdig ook lastiger.

image image

Voorheen had je een project voor Windows Phone en de schermen van je applicatie in dit project waren alleen voor mobile devices. Als alles in een project zit, dan moet je daar toch anders mee omgaan.

Gelukkig biedt het Windows 10 development SDK een aantal krachtige middelen. Zoals bijvoorbeeld een RelativePanel. Op een RelativePanel kun je van controls vertellen wat hun relatieve positie is ten opzichte van andere controls. Veel handiger dan voorheen, daar zat je te knoeien met margins of absolute posities. Waardoor je raar gedrag kreeg bij andere schermen etc.

image

Nog een mooie is een SplitView, waarbij je een Content en een Pane gedeelte hebt. Tenslotte hebben we al gauw een menu en een detail gedeelte op het scherm staan.

image

Maar hier heb je allemaal niets aan, als er niet een eenvoudige manier is om ze te manipuleren. Tenslotte is het in de XAML / MVVM wereld niet meer gebruikelijk dat je Events afvangt in Code. Daar is dan ook een mooie oplossing voor.

De VisualStateManager, die bestaat uit VisualStates met een StateTrigger en StateSetters.

image

Van de VisualState geef je dan aan wat de MinimalWidth of Height is en met de Setters geef je aan wat er dan moet gebeuren.

image

In mijn SDN evaluatie app voorbeeld ziet dat er dan als volgt uit. De eerste is bij een minimale breedte van 720 en de tweede is het alternatief. Dit werkt ook zo op een Windows Phone met Windows 10, waarbij het toestel in landscape of portrait gehouden wordt.

image  image

Zoals je ziet hebt ik een hamburger menu toegevoegd, wat ik jammer vind dat dit geen control is. Het is een toggle button met een Font (Segoe MDL2 Assets) en een Glyph.

image

Het werkt wel aardig en ik hoop dat ze het nog iets mooier maken.

Leuke sessie op Ignite: BRK2310 From the Small Screen to the Big Screen: Building Universal App Experiences with XAML

(disclaimer ik ben geen XAML goeroe, ik kan er een beetje mee omgaan)

Windows 10 IoT Core

Sinds de //Build/ conference is een technical preview van Windows 10 for Raspberry PI 2 beschikbaar. Daarmee komt de belofte van Microsoft (Windows op alle devices) een heel stuk dichterbij.

Uiteindelijk zullen er drie versies van Windows 10 IoT beschikbaar zijn: For Industry Devices, Mobile Devices en Core. Het installeren van de Windows 10 IoT Core op een Raspberry PI 2 is heel eenvoudig.

Meer informatie op http://windowsondevices.com en demo’s http://ms-iot.github.io/content/win10/StartCoding.htm.

win10_core_01

Als je deze richtlijnen volgt, dan zie deze schermen langs komen. De eerste opstarten van Windows 10 IoT Core kan iets langer duren, er worden dan allerlei instellingen gedaan. No worries daarna gaat het echt veel sneller.

WP_20150516_17_33_01_ProWP_20150516_17_33_21_ProWP_20150516_17_35_13_Pro

Als het allemaal klaar is, dan zie je dit.

win10_core_02

In deze vroege versie zijn er aantal dingen nog niet op orde, maar dat zal wel gauw veranderen.

Op een Windows 10 machine met Visual Studio 2015 kun je dan een ‘normale’ Windows Universal App maken. Deze kun je dan deployen naar je Raspberry PI 2 en standaard debug F5 experience werkt dan gewoon.

 win10_core_03

Er zijn in de IoT makers world allerhande componentjes te krijgen en een aantal werken ook gewoon op de Raspberry PI 2 met Windows 10 IoT Core. Kijk goed naar de voorbeelden op http://windowsondevices.com.

WP_20150522_11_21_17_ProWP_20150522_11_25_41_Pro

Inmiddels heb ik een aantal componentjes in bestelling staan en zal ik in een latere blogpost terug komen met uitgebreidere voorbeelden. Dit is leuk Knipogende emoticon

Consume Modern SaaS EndPoints with Visual Studio 2015

We kennen allemaal de functionaliteit van Visual Studio om een Service reference te doen. Hiermee kun je een beschikbare Services eenvoudig in je applicatie consumeren. Vanuit je code kun je dan redelijk eenvoudig bij de methode van de service komen etc. Het gaat voor hier te ver, meer informatie kun je hier vinden.

Service Reference is lastig als de service credentials nodig heeft. De credentials waarmee je de reference maakt, is vaak niet de gewenste voor je toepassing. Daarnaast zijn er vaak services waar je nog enige configuratie aan moet/wilt doen. Via de configuratie bestanden is het niet onmogelijk, maar zonder de juiste documentatie niet eenvoudig.

Soms hebt voor een Service Reference ook nog verschillende componenten/libraries of zo nodig. Daarvoor is de handige toevoeging Visual Studio NuGet toegevoegd. NuGet is anoniem en heel generiek; je kunt als aanbieder componenten aanbieden aan anderen, maar je kunt niet veel zeggen over de configuratie.

Eigenlijk is er behoefte aan een combinatie tussen deze componenten.

In VS2015 zit nu Connected Services. Met Connected Services krijg je een Wizard ter beschikking waarbij je de juiste parameters kunt invullen en de juiste componenten kunt toevoegen aan je eigen project.

Het aantal Connected Services is nog niet groot, maar App Insight, Mobile Services, Storage en Salesforce zijn aanwezig.

Het is een open systeem. Iedereen kan zijn/haar eigen connected services aanbieden en invoegen. Hierbij kan een derde partij een wizard toevoegen.

connectedservices

Wil je de sessie terug kijken, zoek dan naar Ignite sessie BRK3706 op Channel 9 (https://channel9.msdn.com/Events/Ignite/2015/BRK3706).