Raspberry Pi Zero W: OpenHAB 2.0 installieren in ca. 60 Minuten

Heute wird auf dem Raspberry Pi Zero W mal OpenHAB 2 installiert. Die 1.x Version läuft bei mir seit über einem Jahr erfolgreich. Mal sehen wie der Zero sich so schlägt.

Die Installation geht ziemlich schnell. Zuerst mal eine SD-Karte mit Jessie Lite 2.3.17 installieren.

Dann die folgenden Schritte:

So, dann kann die URL im Browser aufgerufen werden:

http://(raspberry-pi-adresse):8080

Dort erscheint dann dieser Auswahl Dialog. Ich habe da den „Expert Best for 1.X User“ gewählt, da ich schon ein 1.x OpenHAB laufen habe. Da könnte man dann aber wohl Standard wählen:


„Raspberry Pi Zero W: OpenHAB 2.0 installieren in ca. 60 Minuten“ weiterlesen

Gurken-Test mit Cucumber

Mit Cucumber können Testfälle schön in Worte beschrieben werden. Hier mal ein schneller quick Einstieg.

Eine Testfall Beschreibung kann in Worten mit der Gherkin Syntax geschehen, z.B diese kalender.feature:

In Eclipse sind die JUnit-Test auch schön lesbar, z.B.:

Für Eclipse gibt es ein Natural 0.7.6 Plug-In für die *.feature Dateien. Das kann leicht über den Eclipse Marketplace installiert werden:

Einfach alles installieren:

Die Testfall implementierung kann z.B. so aussehen. Dieser Testfall gibt nur einen Kalender auf der Konsole aus, deshalb gibt es nur das Generieren:

Eine Testklasse zum starten des Testfalls:

Folgende Abhängigkeiten werden in der pom.xml benötigt:

Das ganze Testprojekt kann auf Github geladen werden.

Eine weitergehende Anleitung auf deutsch gibt es hier.

Mit dem Raspberry Pi den Java Class File Disassembler (javap) aufrufen

Manchmal will man sehen, was alles so in einer compilierten Java Datei steckt. Nicht immer hat man den Quelltext. Auch für die Fehlersuche ist ein Disassembler mal ganz gut.

In jedem JDK ist auch ein Disassembler javap dabei. Denn wollen wir nun einmal auf eine unbekannte Java Class Datei loslassen, um zu sehen, was es so zu sehen gibt.

Zuerst loggen wir uns auf die Kommandozeile eines Raspberry Pi ein, auf dem ein Java JDK installiert ist. Ob Java installiert ist kann mit

getestet werden. Wenn dort eine Versionsangabe geliefert wird, ist alles ok.

Dann legen wir erst mal ein Testverzeichnis an und wechsel in das Verzeichnis:

Dann holen wir uns in das Verzeichnis eine unbekannte Flugzeug.class Datei (der Quellcode ist hier zu finden):

Diese Datei wollen wir nun disassemblieren, mit

Schon bekommen wir alle gewünschten Informationen:

Nun schauen wir uns mal alle Möglichkeiten an: „Mit dem Raspberry Pi den Java Class File Disassembler (javap) aufrufen“ weiterlesen

PDF erzeugung in 5 Zeilen mit Java am Beispiel eines Lebenskalender

Wie können mit Java PDF Dokumente erzeugt werden?

Das geht mit ein paar Zeilen Code und iText. Die iText Lib läßt sich leicht integrieren. Hier mal ein Beispiel um ein paar Daten zu haben, nehmen wir mal einen Lebenskalender. Der ganze Code (nur eine Java Klasse) liegt auf Github und kann von dort geladen werden.

Also mal ein neues Mavenprojekt anlegen und in der pom.xml die iText Abhängigkeit einfügen:

Dann mal ein paar Zeilen Javacode für die PDF Erzeugung z.B. so:

und schon können wir ein PDF Dokument erzeugen. Hier das Ergebnis lebenskalender.pdf.

Hier mal die Ausgabe auf System.out:

„PDF erzeugung in 5 Zeilen mit Java am Beispiel eines Lebenskalender“ weiterlesen

Java Wrapper für die Dump1090 Schnittstelle

Java Wrapper für die Dump1090 Schnittstelle.

Dieses Projekt ist eine Javaschnittstelle für den Zugriff auf die Daten von Dump1090 per Java Objekte.

Mit dieser Javaschnittstelle können einfach Pushover Nachrichten an jedes Handy bzw. Tablet versendet werden wenn ein Flugzeug startet oder landet. Da wir in der nähe vom Flughafen Hannover (EDDV, HAJ) leben, sehen wir gerne Flugzeuge starten und landen. Die beiden Start.- und Landebahnen liegen in Ost-West Richtung. Wenn wir aus dem Küchenfenster schauen oder wenn wir auf der Terrasse sitzen, sehen wir alle Flugzeuge die von Osten aus ankommen bzw. in die Richtung wegfliegen. Nun möchte ich gerne eine Nachricht mit Tonsignal mit Höhe, Geschwindigkeit, Flugnummer usw. auf mein Handy erhalten, wenn ein Flugzeug aus dem Osten zum landen ankommt bzw. in Richtung Osten starte. Alle anderen Flugzeuge die in die andere Richtung starten bzw. landen sollen nicht berücksichtigt werden. Auch nicht Flugzeuge die nur Hannover überfliegen.

klassendiagramm
Auch soll eine Pushover versendet werden wenn ein Luftnotfall (med. Notfall, Entführung usw. ) per Transponder gemeldet wird.
„Java Wrapper für die Dump1090 Schnittstelle“ weiterlesen

Cessna (172S Skyhawk SP) wird vom Raspberry Pi empfangen

Muss das sein? Können die nicht in Nevada ihre Flugübungen machen?

bildschirmfoto-2016-11-23-um-19-23-21

Wie können Artifacte nach Maven Central (Nexus) mit einem Mac hochgeladen werden?

Wie können Artifacte wie Jars usw. in das Nexus Maven Central Repository mit einem Mac (Windows analog) hochgeladen werden?

Das geht in 4 Schritten, die hier am Beispiel von de.wenzlaff.dump1090 beschrieben werden.

Einen Atlassian Account und Jira Ticket anlegen

Zuerste benötigen wir einen Accout bei Atlassian den wir hier beantragen können. Evl. haben wir ja auch schon einen.

Dann müssen wir ein Jira Ticket mit „Create Issue“ erstellen, um eine eindeutige GroupId (z.B. de.wenzlaff) die es noch nicht gibt, zu erhalten, hier ein Beispiel für den Jira Ticket Antrag:

Ticket erstellen

Wenn der Mitarbeiter das freigeschaltet hat (das kann etwas dauern), haben wir eine GroupId reserviert. „Wie können Artifacte nach Maven Central (Nexus) mit einem Mac hochgeladen werden?“ weiterlesen

Java: Reihenfolge der Testmethoden mit FixMethodOrder in JUnit festlegen

JUnit Testmethoden sollten so geschrieben werden, das sie unabhängig von anderen Methoden sind. Die Reihenfolge der ausführung der Test-Methoden in einer Testklasse ist auch nicht garantiert und kann von lauf zu lauf unterschiedlich sein. Das ist auch gut so.

Manchmal möche man aber dennoch eine bestimmte Reihenfolge. Dies kann seit JUnit 4.11 mit der @FixMethodOrder(MethodSorters.NAME_ASCENDING Annotation durchgeführt werden.

Die Testklasse wird einfach mit der @FixMethodOrder(MethodSorters.NAME_ASCENDING markiert. Z.B.

bildschirmfoto-2016-10-30-um-07-38-13

Ohne ist die Ausführung z.B.:

bildschirmfoto-2016-10-30-um-07-37-32

Und mit Annotation z.B.:

bildschirmfoto-2016-10-30-um-07-37-55

Java: Parsen von HTML-Dateien mit JSoup 1.9.2 in zwei Java Zeilen

Will man schnell und einfach HTML-Dateien parsen bzw. auswerten, geht das mit der schönen JSoup-Api. Hier gibt es eine Mindmap für den schnellen Überblick.

Es sind dann nur zwei Zeilen nötig um z.B. den Titel einer Webseite einzulesen:

Hier mal ein Zitat aus der Orginal Api-Beschreibung:

Das sind doch Gründe!

Es braucht in der pom.xml des Maven Projekte nur diese eine Abhängigkeit angegeben zu werden: „Java: Parsen von HTML-Dateien mit JSoup 1.9.2 in zwei Java Zeilen“ weiterlesen

Welche Möglichkeiten der Java Objekt-Erzeugung gibt es?

Meistens erzeugt man Objekte in Java mit new. Es gibt aber noch ein paar andere Möglichkeiten.

Urlaub

Wir haben diese Farbe Testklasse:

und haben diese Möglichkeiten Objekte zu erzeugen. „Welche Möglichkeiten der Java Objekt-Erzeugung gibt es?“ weiterlesen

Flugdaten aus Hannover von einem Raspberry Pi per MQTT mit Mqtt-Spy empfangen

Es muss nicht immer MQTT.fx sein um MQTT Daten zu empfangen. Der Java-Client Mqtt-Spy hat viel mehr Optionen. Es braucht nur das JAR von Github geladen zu werden und dann ein doppelklick auf das JAR, und schon läuft der MQTT-Client unter Mac, Windows, Linux …

Es braucht nur der Server test.mosquitto.org und als Topic /Anzahl/Flugzeuge/Hannover eingegeben zu werden und schon werden meine Flug-Daten die von einem Raspberry Pi empfangen werden alle 5 Minuten aktualisiert.

mqtt-spy-einstellungen „Flugdaten aus Hannover von einem Raspberry Pi per MQTT mit Mqtt-Spy empfangen“ weiterlesen

Besser als Fussball: MQTT Java Client mit Paho

Fussball? Wie kann man per Java einen MQTT Client mit Paho schreiben, der z.B. die Anzahl Flugzeuge in Hannover anzeigt? Und das innerhalb der ersten Halbzeit, da nur 2 Klassen benötigt werden.

Mein Raspberry Pi sendet an den öffentlichen Testserver test.mosquitto.org unter den Topic /Anzahl/Flugzeuge/Hannover alle 5 Minuten die aktuelle Anzahl, so das dieses Beispiel jeder nachvollziehen kann.

Hier die Architektur:

mqtt

Wir brauchen zuerst ein Eclipse Maven Projekt mit Java 1.8 mit dieser pom.xml und einen Eintrag des Paho Repo, da es in Maven Central nicht vorhanden ist: „Besser als Fussball: MQTT Java Client mit Paho“ weiterlesen

Java News zu der am 22.06.2016 veröffentlichten Eclipse Neon 4.6 Version

Hier eine schöne Aufzählung der Neuerungen der neuen Eclipse Neon Version.

Bildschirmfoto 2016-06-29 um 21.39.14

Bildschirmfoto 2016-06-29 um 21.38.42

Cool:

Content Assist now supports substring patterns. Enter any part of the desired proposal’s text, and Content Assist will find it! For example, completing on selection proposes all results containing selection as a substring.

The Refactor > Rename popup now shows an Options… link which opens the full Rename dialog that provides more options like renaming a field’s getter and setter methods.

You can now select multiple elements in views like Package Explorer and Outline and then search for References, Declarations, Implementors, and Read/Write Access (where applicable):

Wie kann ein Timer in Java mit Quartz erstellt werden?

Manchmal möchte man Ereignisse mit Java zeitgesteuert oder wiederholt ausführen. Das geht auch mit Java Mitteln. Die bekannte java.util.Timer Klasse kann schon was. Der Open Source Framework Quartz hat ua. aber diese Vorteile:

  • persistence mechanismen
  • flexible Zeitplanung
  • Thread-Pool
  • Managment Schemen
  • flexibel
  • fehlertolerant, auch nach Systemstart

Quartz ist ein kleiner Framework der nur quartz-x.y.z.jar im Classpath benögigt (inkl. log sl4j-api.jar, und c3p0.jar). Er kann Standalone oder im Server als J2EE Anwendung verwendet werden. Die wichtigsten drei Klassen sind Task/Job, Trigger und der Listener.

Sie spielen so zusammen:

quartz-uebersicht

Wie kann ein Timer in Java mit Quartz erstellt werden? „Wie kann ein Timer in Java mit Quartz erstellt werden?“ weiterlesen