Aus Raspberry Pi Geek 10/2020

Spring Boot auf dem Raspberry Pi (Seite 2)

Project

Maven Project

Language

Java

Spring Boot

2.2.5

Project Metadata Group

com.example

Artifact

gpio

Packaging

Jar

Java

11

Dependencies

Spring Web

Abbildung 2: Das Webprojekt Spring Initializr ermöglicht das Erstellen eines komplett vorkonfigurierten Projekts, das Sie nach dem Herunterladen in Spring einbinden.

Abbildung 2: Das Webprojekt Spring Initializr ermöglicht das Erstellen eines komplett vorkonfigurierten Projekts, das Sie nach dem Herunterladen in Spring einbinden.

Über den Intellij-Welcome-Bildschirm laden Sie das heruntergeladene Projekt mit einem Klick auf Import Project in die Entwicklungsumgebung (Abbildung 3). Im nächsten Fenster wählen Sie nun als externes Modell Maven aus und klicken danach auf Finish (Abbildung 4). Jetzt benötigt Intellij etwas Zeit, um das Projekt zu initialisieren. Danach ziehen Sie das Projekt so weit auf wie Abbildung 5 zeigt.

Abbildung 3: Zum Importieren eines neuen Projekts öffnet Intellij einen Dateibrowser, aus dem heraus Sie das Gewünschte auswählen.

Abbildung 3: Zum Importieren eines neuen Projekts öffnet Intellij einen Dateibrowser, aus dem heraus Sie das Gewünschte auswählen.

Abbildung 4: F&uuml;r das hier vorgestellte Projekt ben&ouml;tigen Sie das externe Modell <span class="ui-element">Maven</span>.

Abbildung 4: Für das hier vorgestellte Projekt benötigen Sie das externe Modell Maven.

Abbildung 5: Das ge&ouml;ffnete Projekt in der Intellij Idea.

Abbildung 5: Das geöffnete Projekt in der Intellij Idea.

Legen Sie nun im Abschnitt com.example.gpio ein neues Package mit dem Namen controller an. Öffnen Sie dafür mit einem Rechtsklick das Kontextmenü und wählen Sie dort New | Package. In controller erzeugen Sie nun die Klasse Gpio (Kontextmenü New | Java Class) und füllen Sie mit dem Programmcode aus Listing 2.

Listing 2

package com.example.gpio.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.io.IOException;
import java.util.Scanner;
@RestController
public class Gpio {
  @RequestMapping("/ledon")
  public void ledOn() throws IOException {
    new ProcessBuilder("gpio","mode","0","out").start();
    new ProcessBuilder("gpio","write","0","1").start();
    return ;
  }
  @RequestMapping ("/ledoff")
  public void ledOff() throws IOException {
    new ProcessBuilder("gpio","mode","0","out").start();
    new ProcessBuilder("gpio","write","0","0").start();
    return ;
    }
  @RequestMapping ("/status")
  public String status() throws IOException {
     Process b=new ProcessBuilder("gpio","read","0").start();
     return new Scanner(b.getInputStream()).nextLine();
  }
}

Mit der Annotation @RestController teilen Sie Spring mit, dass die Klasse einen REST-Service bereitstellen soll. Die Annotation @RequestMapping legt fest, dass das Programm die folgende Methode aufrufen soll, sobald die Service-URL angesprochen wird. Der Code in den Methoden ruft das Gpio-Tool mit den passenden Parametern auf. Alles in allem ein leicht verständlicher und kompakter Code – hätte man versucht, den Dienst von Grund auf selbst zu programmieren, würde der Code dazu mehrere Seiten füllen und sich auf viele Klassen verteilen.

Um die REST-API nun zu starten, wählen Sie nach einem Rechtsklick auf die Klasse GpioApplication aus dem Kontextmenü den Punkt Run aus. Nun dauert es einen Moment, bis alles hochfährt (Abbildung 6).

Anschließend testen Sie, ob die API auch tut, was Sie sich vorstellen. Dazu öffnen Sie einen Webbrowser und laden die vier Links aus der Tabelle “Projekt-Links”. Freunde der Kommandozeile erledigen diesen Job alternativ mit cule oder wget. Wie Sie sehen, kann man über die Links die LED an- und ausschalten sowie den Status abfragen.

Abbildung 6: Die Ausgabe beim Start von Spring Boot.

Abbildung 6: Die Ausgabe beim Start von Spring Boot.

Um die Anwendung ohne die IDE zu starten, benötigen Sie eine JAR-Datei. Um sie zu erzeugen, verwenden Sie die Build-Funktion von Maven. Auf der rechten Seite der Entwicklungsumgebung findet sich ein Reiter mit der Beschriftung Maven. Darin aktivieren Sie die Funktionen, die Maven bereitstellt (Abbildung 7). Mit einem Doppelklick auf package weisen Sie Maven an, die Pakete für das Projekt zu erstellen. Dieser Prozess benötigt einige Zeit – nicht ohne Grund verwendet Java eine Kaffeetasse als Logo.

Abbildung 7: Eine &Uuml;bersicht der Funktionen, die Maven bereitstellt.

Abbildung 7: Eine Übersicht der Funktionen, die Maven bereitstellt.

Nach dem Build liegt eine JAR-Datei mit allen Komponenten des Projekts im Verzeichnis ~/gpio/target/. Sie lässt sich ohne die IDE ausführen und entsprechend auch auf einem anderen Rechner starten. Zum Ausführen der JAR-Datei verwenden Sie das Kommando aus Listing 3.

Listing 3

$ java -jar ~/gpio/target/gpio-0.0.1-SNAPSHOT.jar

Fazit

Wegen der Mächtigkeit von Spring kratzt dieser Artikel nur an der Oberfläche dessen, was mit dem Framework alles möglich wäre. Im Vordergrund steht dabei die Möglichkeit, komplexe Aufgaben leicht zu lösen. Dabei beeindruckt die Performance auf dem Raspberry Pi 4. (tle/jlu)

Der Autor

Martin Mohr hegt seit früher Jugend eine Vorliebe für alles, was blinkt. Eine Ausbildung zum Elektroniker verstärkte das noch. Nach einem Informatikstudium entwickelte er überwiegend Java-Applikationen. Mit dem Raspberry Pi erwachte die alte Liebe zur Elektronik wieder.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 5 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Raspberry Pi Geek bei Google Play Readly Logo
Nach oben