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

USB Gadget mit OLED auch für den Raspberry Pi eingetroffen

Vorgestern ist mein neues Gadget, das man für 7,40 Euro inkl. Versand aus China bekommen kann eingetroffen. Hier mal die Daten von der Ladung eines iPadMini:

Gadget

Das ist ja schon interessant, wie unterschiedlich meine USB Ladegerät den Strom liefern. Kein wunder das mache doppelt solange laden. Ich bin nun gespannt, wie es mit dem Raspberry Pi aussieht. Nur heute will ich keinen vom Netz trenne, es ist ja kein Cubi, der jeden Tag gebootet werden muss 😉

MP3 und WAV Dateien mit einem Raspberry Pi über Bluetooth (Drahtlos) abspielen

Für meinen Raspberry Pi brauche ich nun eine Sprachausgabe da Karotz gestorben ist. Ich habe noch einen < 5 Euro Bluetooth Speaker aus der China-Bucht liegen. So ein Teil:

Denn wollte ich nun drahtlos anbinden.

Dazu verwende ich für den Raspberry Pi den folgenden Bluethooth USB-Adapter, denn ich schon mal mit Fhem angebunden hatte.

Das ist schnell gemacht! „MP3 und WAV Dateien mit einem Raspberry Pi über Bluetooth (Drahtlos) abspielen“ weiterlesen

Pushover Nachricht mit dem Raspberry Pi versenden wenn ein Kaffee (قهوة) gekocht wurde via OpenHab

Mein heutiges Raspberry Pi Projekt soll einfach eine Pushover Nachricht auf alle Handys und iPads versenden, wenn ein Kaffee gekocht wurde. So kann ich immer sehen, wieviele Kaffee ich so am Tag getrunken habe und wann.

Hier der Aufbau in der Küche.

Es wird ein Homematik „Pushover Nachricht mit dem Raspberry Pi versenden wenn ein Kaffee (قهوة) gekocht wurde via OpenHab“ weiterlesen

Wie werden Seitenzahlen in einem Serienbrief mit OpenOffice eingefügt wenn mehrere Datensätze auf einer Seite sind?

Das geht nicht mit der Funktion Einfügen – Feldbefehlt – Seitennummer wie eigentlich erwartet, sondern über die Funktion:

Einfügen – Feldbefehlt – Andere – Variablen – Nummernkreis

einfügen in die Kopfzeile:

bildschirmfoto-2016-12-04-um-22-42-56

bildschirmfoto-2016-12-04-um-22-43-11

Wenn der Seriendruck-Assistent gestartet wird, muss das generierte Dokument als ein Dokument gespeichert werden.

bildschirmfoto-2016-12-04-um-23-07-14

Nach der Info musst ich aber schon etwas suchen 😉 Aber es geht zumindestens 🙂

Für 1,99 Euro inkl. Versand aus China eingetroffen: DC-DC Spannungsregler LM2596 Step-Down Regler einstellbar mit LED Voltmeter

Cooler Step-Down Regle aus China eingetroffen. Was man so für 1,99 Euro inkl. Versand aus der Bucht bekommt! Hier mal das erste Foto:

fullsizerender

Hier die angegebenen Daten:
1. Input Voltage range:4~40 VDC
2. Output voltage range:1.25-37 VDC adjustable
3. Output current:2A
4. Voltmeter range: 0 to 40V, error ±0.1V
5. Input reverse polarity protection
6. Built in output short protection function
7. Built in thermal shutdown function
8. L x W x H = 6.1*3.4*12 cm
9. Weight: 22g
10. LEDdigital voltmeter tube, the accuracy is adjustable function, can be aimed at your multimeteradjustable accurate.
11. Press the rightkey to let the display show the input or output voltage. when the right “OUT” led light, it shows output, the left “IN” led show input.

Ok, dann mal der erste Test. Mal als Eingangsspannung eine 9 Volt Batterie angeklempt, die Eingangsspannung kann auch angezeigt werden:

fullsizerender-2

Wahlweise wird auch die Ausgangsspannung angezeigt. Die kann über das Poti verändert werden. Cool!

fullsizerender-1

Dann werde ich mal einen Raspberry Pi anschließen oder was anderes …

Auf der Platine ist ein LM2596 verbaut, das Datenblatt von TI gibt es hier.

Hier noch die Anleitung und ein Hinweis wenn es nicht „geht“: „Für 1,99 Euro inkl. Versand aus China eingetroffen: DC-DC Spannungsregler LM2596 Step-Down Regler einstellbar mit LED Voltmeter“ 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

HTOP 2.0.2 für den Raspberry Pi jetzt mit Temperatur und Frequenzanzeige

Wer für den Raspberry Pi eine HTOP Anzeige mit Temperatur und Frequenz benötigt, kann diese Version installieren. HTOP ist ein freier Prozessmanager für Linux, welcher ua. eine dynamische Übersicht laufender Prozesse und freier/belegter Systemressourcen bietet.

htop

Installation:

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

Raspberry Pi Flugstatistik mit collectd, rrd und dump1090-tool

Wer schöne Grafiken zum Thema Flug-Transponder-Empfang erstellen will, kann das sehr einfach machen. Es werden dann im Browser, z.B. solche Diagramme angezeigt:

rrd flug statistik mit collectd
Es gibt ein gutes Install-Script (Thanks Ted Sluis) mit dem geht die Installation auf einem Raspberry Pi Debian Jessie sehr einfach. Auch ein Install-Video ist auf der Seite zu finden.

Einfach diese Befehle absetzen: „Raspberry Pi Flugstatistik mit collectd, rrd und dump1090-tool“ weiterlesen

Raspberry Pi: Dump1090 erzeugt auch JSON-Dateien die extern verwendet werden können

Dump1090 erzeugt auch JSON-Dateien, die periodisch aktualisiert werden und die auch extern verwendet werden können.

Dies sind ua. die folgenden Dateien:

  • aircraft.json
  • stats.json
  • receiver.json
  • history_0.json, history_1.json, …, history_119.json

Die genaue Dokumentation ist hier zu finden.

Über den Browser kann man auf diese Dateien z.B. so zugreifen, wenn ein externer Server verwendet wird:

http://(Raspberry Pi Adfresse)/dump1090/data/aircraft.json

im Dateisystem sind sie unter

/run/dump1090-mutability

zu finden.

Die aircraft.json liefert dann z.B. die folgenden Infos: „Raspberry Pi: Dump1090 erzeugt auch JSON-Dateien die extern verwendet werden können“ weiterlesen

Quicktest: 5 Euro Router – A5-V11 3G/4G Router

Quicktest des 5 Euro Router:

Erst mal checken ob ein Zugang per Telnet geht. Dazu den Router mit Strom über den kleinen USB-Port (weißes Kabel) versorgen und den Netzwerkanschluss anklemmen. Es leuchtet nun die blaue LED.

Auf dem Gerät sind die default Zugangsdaten angebracht:

  • SSID: 3G-wifi-xxxx
  • IP Adresse: 192.168.100.1
  • WIFI Passwort: 12345678
  • Username: admin
  • Passwort: admin

router-5-euro

Ok, dann mal los, „Quicktest: 5 Euro Router – A5-V11 3G/4G Router“ weiterlesen

Auf der Suche, warum der Cubieboard mit Debian Jessie nach ein paar Tagen abstürzt. Teil 3: Workaround tägliches rebooten

Habe nun mal ein anders Netzteil verwendet, aber auch nach 3 Tagen ist der Cubi wieder abgestürzt. An der Stromversogung kann es also wohl nicht liegen!

Dann habe ich mir mal den Speicherverbrauch angeschaut, da ich die Vermutung hab, das der Apache2 oder die Mysql den Speicher vollaufen lassen und es zu einem Speicherüberlauf mit Absturz kommt.

Ich habe nun mal Testweise einen CRON Job angelegt, der einmal am Tag ein Reboot durchführt, in der Hoffnung das er dann länger als 3 Tage läuft. Das behebt zwar nicht die Ursache, aber wenn es läuft ist das mal ein Workaround (siehe Bild mit der Telefonzelle) … 😉

Der Cron-Job kann wie folgt angelegt werden und zwar mit root Zugang:

und in der letzten Zeile folgenden Eintrag ergänzen. „Auf der Suche, warum der Cubieboard mit Debian Jessie nach ein paar Tagen abstürzt. Teil 3: Workaround tägliches rebooten“ weiterlesen

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

Wie können Flugdaten von MQTT Servern empfangen und in openHAB angezeigt werden?

Wie können Flugdaten von MQTT Servern empfangen und in openHAB angezeigt werden? Hier ein Beispiel, wie von einem öffentlichen Testserver (test.mosquitto.org) die Anzahl von Flugzeuge in Hannover per MQTT empfangen, und alle 5 Minuten in realtime in openHAB angezeigt wird.

openhab-mqtt

Das geht ganz einfach mit dem MQTT-Binding das in das addon Verzeichnis kopiert werden muss ( Datei: org.openhab.binding.mqtt-1.8.3.jar ). Dann den MQTT-Broker in der openhab.cfg eintragen: „Wie können Flugdaten von MQTT Servern empfangen und in openHAB angezeigt werden?“ weiterlesen

Wie kann die OpenHAB Regel angepasst werden, so das nur zweistellige Werte angezeigt werden?

Auf dem Raspberry Pi läuft openHAB. Einmal am Tag bekomme ich per Pushover eine Nachricht mit dem Systemstatus auf das Handy gesandt:

openhab-pushover

Ups, da ist ja die Systemtemperatur nach dem Komma etwas lang.

Obwohl der Eintrag in der items Datei wie folgt lautet:

„Wie kann die OpenHAB Regel angepasst werden, so das nur zweistellige Werte angezeigt werden?“ weiterlesen

Wie wird der openHAB Designer 1.8.3 für einen Mac optimal installiert mit Freigaben für einen Raspberry Pi?

Damit man die OpenHAB Konfigurationsdateien einfach bearbeiten kann, gibt es den openHAB Designer (aktuelle Version 1.8.3). Der kann von dieser Seite für den Mac, Linux oder Windows kostenlos geladen werden. Diese Datei dann installieren.

Tip: Erscheint bei der Installation bei Mac OS X eine Fehlermeldung: „… das Archive bzw. das Programm ist defekt und soll in den Papierkorb verschoben werden…“

fehlermeldung

liegt es daran, das das Archive nicht signiert ist. Dann wählen Sie „Apple“ > „Systemeinstellungen“

systemeinstellung

und klicken Sie auf „Sicherheit“ und danach auf „Allgemein“ für die App zulassen.

dialog

Dann noch einmal versuchen, und es müsste laufen. Die Einstellung kann dann wieder zurück gesetzt werden, wenn der Designer einmal erfolgreich gestartet wurde.

Den openHAB Designer nun starten, es erscheint eine schöne auf Eclipse basierende GUI.

Da der openHAB Server auf einem Raspberry Pi läuft, muss das OpenHAB Konfigurationsverzeichnis /etc/openhab/configurations noch Freigegeben werden um vom Mac aus darauch zuzugreifen. Zu dem openHAB Designer erst mal eine Mindmap

openhab designer mindmap „Wie wird der openHAB Designer 1.8.3 für einen Mac optimal installiert mit Freigaben für einen Raspberry Pi?“ weiterlesen

Wie können SDKarten auf einem Mac OS X mit f3x (als Alternative zu h2testw) überprüft werden?

Manche SDKarten die im Raspberry Pi laufen, hinterlassen den Eindruck, das sie defekt sind. Das kann man aber auch mit einem Mac überprüfen. Nachdem die SDKarte in den Kartenleser gesteckt wird, kann für den ersten Test, erst einmal die Karte gelöscht werden.

Dazu das Festplattendienstprogramm aufrufen. Dann links, unter den Punkt APPLE SD Card Reder die darunter liegende SDKarte selektieren und oben in der Menüleiste auf Löschen klicken.

feestplattendienstprogram

Dann als Format „MS-Dos-Dateisystem (FAT) “ wählen und auf den Button „Sicherheitsoptionen“ klicken.

optionen festplattendienstprogrammHier können jetzt die Anzahl der Löschversuche eingestellt werden. Hier für einen ausführlichen Test, den Schieber ganz nach links schieben. Das heißt es wird 7 Mal gelöscht.

sicherheitAuf OK, klicken und dann auf „Löschen„. Das kann dann für eine 16 GB SDKarte schon mal 3 Stunden dauern.

Während des löschen, kann auch parallel dazu die Aktivitätsanzeige gestartet werden. Wenn keine anderen aufwendigen Schreib/Lese Aktivitäten laufen, kann die Geschwindigkeit der Karte abgelesen werden:

aktivitätHier bei mir zw. 9-11,4 MB/s das ist für eine Class 10 Karte ok.

Wen das alles ohne Fehler läuft, ist der erste Test der Karte schon mal ok. Hier mal das Ergebniss:

Ergb. Erg. 2

Dann gibt es noch ein kostenloses externes Programm mit GUI für den Mac, welches alle Sektoren der Karte beschreibt und wieder einließt. Das f3x Programm:

f3x

Da kann einfach die SDKarte ausgewählt werden und auf „Start Test“ geklick werden. Der Download des Programmes geht hier.

Wenn alles OK ist, gibt das Programm diesen Dialog aus:

Bildschirmfoto 2016-07-26 um 17.06.29

Ich bevorzuge aber das Kommandozeilen Programm f3 da bekommt man dann eine schöne Logdatei bei dem Aufruf:

./log-f3wr 16-GB-SDKarte-.log /Volumes/SDKARTE/

Auf der Suche, warum der Cubieboard mit Debian Jessie nach ein paar Tagen abstürzt. Teil 2: Fix NTP: frequency file /var/lib/ntp/ntp.drift.TEMP: Permission denied

Immer noch auf der Suche, warum der Cubi nach ein paar Tagen abstürzt, wie hier schon im Teil 1 beschrieben.

Dann erscheint im /var/log/syslog jede Stunde noch dieser Eintrag:

Der ntp Client läuft unter dem User ntp wie htop zeigt.

Ein

gibt die Meldungen auch aus:

Ok, dann kurzerhand NTP entfernen „Auf der Suche, warum der Cubieboard mit Debian Jessie nach ein paar Tagen abstürzt. Teil 2: Fix NTP: frequency file /var/lib/ntp/ntp.drift.TEMP: Permission denied“ weiterlesen

Wie können CSV Dateien in einen WordPress Blog importiert werden?

Wer z.B. nicht alle Kategorien (post_category) ua. eines WordPress Blogs per Hand eingeben möchte, kann auch eine CSV-Datei importieren, die muss folgenden Aufbau haben:

„Wie können CSV Dateien in einen WordPress Blog importiert werden?“ 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