Mittwoch, 5. Dezember 2018

Raspberry Pi als Home Server Teil 2

Nachdem ich das Grundgerüst zum Parsen (RequestParser und ResponseParser) und zum Zusammenstellen (RequestBuilder und ResponseBuilder) fertiggestellt und zeitgleich das Command für das Connect implementiert habe, habe ich damit begonnen den Server für den Raspberry zu schreiben.

Das Projekt Template für Visual Studio 2017 ist unter folgendem Link zu finden:

Nach dem Anlegen des Projektes habe ich eine kurze sehr simple Implementierung geschrieben und im nächsten Zug versucht die App auf meinen Raspberry zu veröffentlichen. Die Zielplattform musste ich korrekterweise noch auf ARM stellen, konnte nach dem Deployen aber direkt via Remote Debugging die App debuggen.

Die Background Task:
public sealed class StartupTask : IBackgroundTask
{
  private static readonly ILogger Log = LogManager.GetCurrentClassLogger();
  private BackgroundTaskDeferral _deferral;

  public async void Run(IBackgroundTaskInstance taskInstance)
  {
    Log.Info("-----------------------------------------------------------------------------");
    Log.Info($"Start server {typeof(StartupTask).GetTypeInfo().Assembly.GetName().Version}.");
    _deferral = taskInstance.GetDeferral();
    taskInstance.Canceled += TaskInstanceCanceled;
    await new Bootstrapper().RunAsync();
  }

  private void TaskInstanceCanceled(IBackgroundTaskInstance sender, BackgroundTaskCancellationReason reason)
  {
    Log.Info($"Stop server {typeof(StartupTask).GetTypeInfo().Assembly.GetName().Version}.");
    _deferral.Complete();
  }
}

Release Notes für Windows IoT Raspberry Pi 3 B+ Insider Preview

Mittwoch, 14. November 2018

Raspberry Pi als Home Server Teil 1

Das eigene Heim wird heutzutage immer Smarter. Dabei treffen unterschiedlichste Interessen und verschiedenste Protokolle aufeinander. Von der Lichtsteuerung über ZigBee, hin zur Rolladensteuerung über KNX, bis hin zur Sensorüberwachung mit Enocean. Alles soll miteinander interagieren können, am Besten über eine und nicht über verschiedene Apps. Zusätzlich sollte eine Steuerung auch mit Alexa, Cortana oder dem Google Assistant möglich sein.
Diesem Thema möchte ich mich in den nächsten Wochen und Monaten widmen und habe damit auch schon begonnen.

Ich habe mir einen Raspberry Pi 3 B+ bestellt und Windows 10 IoT installiert. Danach habe ich bei GitHub ein neues Projekt angelegt und begonnen ein Protokoll für die Kommunikation zwischen Raspberry und der App zu definieren. Parallel dazu habe ich ein .NET Standard Projekt erstellt und erste Klassen angelegt (ConnectRequestBuilder, ResponseParser, ...).

Wie immer gilt: TDD.