Eclipse Neon hat nun einen eingebauten Json Editor, es braucht nun kein anderes Json Plugin installiert werden.
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.
Wir haben diese Farbe Testklasse:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
package de.wenzlaff.mqtt.client; import java.io.Serializable; /** * Farben Klasse. * * @author Thomas Wenzlaff * */ public class Farbe implements Cloneable, Serializable { private static final long serialVersionUID = 8660877851154300583L; private String farbe = "rot"; public Farbe() { System.out.println("Konstruktor aufruf"); } public String getFarbe() { return farbe; } public void setFarbe(String farbe) { this.farbe = farbe; } @Override public String toString() { return "Farbe: " + farbe + " mit HashCode=" + hashCode() + "\n"; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((farbe == null) ? 0 : farbe.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Farbe other = (Farbe) obj; if (farbe == null) { if (other.farbe != null) return false; } else if (!farbe.equals(other.farbe)) return false; return true; } @Override protected Object clone() throws CloneNotSupportedException { return super.clone(); } } |
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.
„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:
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 1.8 hat einen schöne String Join Methode
In Java 1.8 gibt es einen neue schöne static join Methode, es braucht nur ein Begrenzer angegeben zu werden und schon wird ein schöner String zusammengebaut.
Hier mal ein kleines Beispiel:
Was für neue schönen Methoden hast Du entdeckt?
Gemeldete Telekom Sicherheitslücke mit Prepaid Karten nun auch in der „Hall of Fame“ vermerkt
Die Telekom hat es nun auch geschaft, eine von mir gemeldete Sicherheitslücke in ihren Prepaid Karten zu erwähnen. Auch wenn die Sicherheitslücke von tausenden Betroffenen Karten als Verpackungsfehler (verschleiern) deklariert wird.
Aber immerhin gibt es in der Hall auf Fame ( http://www.telekom.com/sicherheit/danke ) eine Danksagung:
Die Seite ist auch am 5.5.2017 im neuen Layout noch sichtbar, aber unter einer neuen Adresse und das sogar mit https 😉 „Gemeldete Telekom Sicherheitslücke mit Prepaid Karten nun auch in der „Hall of Fame“ vermerkt“ weiterlesen
Eclipse Neon mit Java 1.8: default Methoden
In Java 1.8 gibt es das neue Schlüsselwort default. In Eclipse Neon wird dies auch unterstüzt.
So kann eine default Methode in einen interface erstellt werden:
Sie kann dann so verwendet werden:
In Eclipse ist sie an dem kleinen D erkennbar. Die default implementierung kann auch vererbt werden.
List to CSV mit Java 1.8 und Eclipse Neon
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.
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):
UML 2 Diagramme mit Eclipse Neon 4.6.0 schnell erstellen
Camunda BPMN 2.0 Modeler 2.7.1 läuft leider noch nicht mit Eclipse Neon 4.6.0
Der gute BPMN 2.0 Modeler von Camunda:
Bricht leider bei der Installation ab mit diesem Fehler: „Camunda BPMN 2.0 Modeler 2.7.1 läuft leider noch nicht mit Eclipse Neon 4.6.0“ weiterlesen
Raspberry Pi: Fix bash_completion Error nach ssh login
Nach dem ssh Login, kommt bei mir diese oder ähnliche Fehlermeldungen auf der Konsole:
|
1 2 3 |
-bash: /usr/share/bash-completion/bash_completion: line 1942: unexpected EOF while looking for matching `"' -bash: /usr/share/bash-completion/bash_completion: line 1957: unexpected token `�' in conditional command -bash: /usr/share/bash-completion/bash_completion: line 1957: syntax error: unexpected end of file |
Wie können die Fehler gefixt werden?

Einfach das bash_completion Package neu installieren mit:
|
1 |
sudo apt-get install bash-completion |
Schnell und einfach!
Wegen schönen Wetters wird die Antenne mal draußen montiert. Wie ist der Empfang mit dem Raspberry Pi in HAJ (EDDV)?
Normalerweise habe ich die Antenne drinnen. Da es heute aber so schön ist, wird sie mal draußen angebracht
und schon ist der Empfang fast doppelt so groß und fast 300 Km weit:
oder hier
Hier auf Twitter kann jeder in Echtzeit mit 5 Minuten Verzögerung die Anzahl ablesen, da ein Raspberry Pi über node-red die Ergebnisse postet:
Anzahl #Flugzeuge in #Hannover (#HAJ #EDDV) 51 angefragt per #ADSB am Sat Jun 04 2016 17:26:28 GMT+0200 (CEST) per #Raspberry #Pi
— Thomas Wenzlaff (@twusb) 4. Juni 2016
Raspberry Pi Transponder Datenauswertung – Fluglärm: Ab welcher Höhe und wie lange sind Flugzeuge aus EDDV (HAJ) bei mir in Langenhagen hörbar?
Wie können Flugdaten mit dem Raspberry PI und node-RED auf Twitter alle 5 Minuten ausgegeben werden?
Wie können Flugdaten mit dem Raspberry PI und node-RED auf Twitter alle 5 Minuten ausgegeben werden? Und wie kann eine einfach Gui erstellt werden?
Mit diesen Node-RED Flow, werden die Flugdaten von thinkspeak.com eingelesen (die Daten kommen von eine meiner Raspberry Pis und können frei verwendet werden) und alle 5 Minuten an Twitter gesendet.
Die Funktion die den Text für Twitter erstellt, kann diesen Inhalt haben:
|
1 2 3 4 5 6 7 |
var newMsg = { payload: msg.payload + " #Flugzeuge im Umkreis von #Hannover (#HAJ #EDDV #Airport) Abfrage per #ADSB am " + new Date() + " mit #Raspberry Pi" }; return newMsg; |
Hier die node-red GUI, die über die Url http://pi-adresse:1880/ui/ geöffnet wird:
Hier werden an Twitter die Daten alle 5 Minuten hingesendet, bitte folgen:
Anzahl #Flugzeuge in #Hannover (#HAJ #EDDV) 18 angefragt per #ADSB am Tue May 31 2016 21:50:48 GMT+0200 (CEST) per #Raspberry #Pi
— Thomas Wenzlaff (@twusb) 31. Mai 2016
Hier kann der Flow importiert werden:
Ein Herz für GIT!
Wie kann die node-red-admin Konsole auf den Raspberry Pi installiert werden?
Die node-red Admin Konsole kann im Terminal wie folgt installiert werden:

|
1 |
sudo npm install -g node-red-admin |
Ergebnis nach ein paar Minuten: „Wie kann die node-red-admin Konsole auf den Raspberry Pi installiert werden?“ weiterlesen
Raspberry Pi mit node-red: Wie können Flugdaten automatisch alle 5 Minuten abgefragt werden?
Einen solchen Flow mit node-RED erstellen:

Die Ausgabe der Flugzeuge in Hannover wird rechts im Debug Reiter und auf der Console des Raspberry Pi ausgegeben.

Oder über import - clipboard diesen Flow aus der Datei flow.json importieren: „Raspberry Pi mit node-red: Wie können Flugdaten automatisch alle 5 Minuten abgefragt werden?“ weiterlesen
Wie können mit einem Raspberry Pi aktuelle Flugdaten (aus HAJ) in OpenHAB angezeigt werden?
Meine Hausautomatisation die auf einen Raspberry Pi mit Debian Linux läuft, arbeitet mit Openhab.
Wie können da nun die Transpondersignale von den Flugzeugen in Hannover (EDDV) angezeigt werden?
Das geht mit der REST Schnitstelle von ThinkSpeak.
So sieht die Seite von Openhab aus.
Oben wird die aktuelle Anzahl von Flugzeugen und der Zeitpunkt der Daten die gerade empfangen werden angezeigt. Eine automatisch Aktualisierung ist bei mir auf 15 Minuten eingestellt. Der Feed wird alle 5 Minuten aktualisiert und wenn man die letzten Daten angezeigt bekommen will, braucht man nur auf den „aktualisieren“ Schalter klicken.
Die Daten kann jeder abfragen, da die API von ThinkSpeak öffentlich ist!
Was ist nötig?
Ein Eintrag in der Sitemap Datei:
|
1 2 3 4 5 6 7 8 9 10 11 |
Frame { Group item=gFlug label="Fluginfos" icon="flugzeug"{ Frame label="Hannover HAJ (EDDV)" { Text item=flugzeugeAnzahl icon="flugzeug" Text item=flugzeugeUpdate icon="flugzeug" Switch item=flugzeugeAktualisieren icon="flugzeug" Text item=flugzeugeZeitpunkt icon="flugzeug" } } } |
Eine neue Datei im Items Verzeichnis Flug.items mit diesm Inhalt:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
// // Steuerung des Fluginformationen via OpenHAB // // (c) 2016 Thomas Wenzlaff http://www.wenzlaff.info // // Liefert aus den Feed die Anzahl Flugzeuge als Json Feed // https://api.thingspeak.com/channels/44177/feeds/last.json // // z.B. // {"created_at":"2016-05-16T14:05:02Z","entry_id":80051,"field1":"15"} Group gFlug // alle 15 Minuten abfragen String flugzeugeAnzahl "Anzahl Flugzeuge [%s]" { http="<[https://api.thingspeak.com/channels/44177/feeds/last.json:900000:JS(getAnzahlFlugzeuge.js)]" } // Zeitpunkt der letzten aktualisierung des Feeds String flugzeugeUpdate "Letztes Feed update [%s]" // Zeitpunkt der letzen aktualisierung String flugzeugeZeitpunkt "Letzte aktualisierung [%s]" // Schalter zum aktualisieren der Anzahl der Flugzeuge Switch flugzeugeAktualisieren "aktualisieren" |
Eine neue Datei im Transform Verzeichnis mit Namen getAnzahlFlugzeuge.js mit diesem Inhalt
|
1 |
JSON.parse(input).field1; |
Und noch eine Flug.rules im Rules Verzeichnis, die bei klick auf den Schalter aktiv wird:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
import org.openhab.core.library.types.* import org.openhab.model.script.actions.* import java.util.Date import java.text.SimpleDateFormat // // Fluginfos für OpenHAB // // (c) 2016 Thomas Wenzlaff http://www.wenzlaff.info // //------------------------------------------------------------------------ // Aktualisiert die Fluginfos, d.h die Anzahl der Flugzeuge aus ThingSpeak //------------------------------------------------------------------------ rule "Aktualisiert die Fluginfos von ThingSpeak" when Item flugzeugeAktualisieren received command ON then logInfo("Flug","aktualisiere Fluginfos ...") var String result = sendHttpGetRequest("https://api.thingspeak.com/channels/44177/feeds/last.json") // {"created_at":"2016-05-16T16:10:02Z","entry_id":80076,"field1":"11"}' by the function '$.field1' logInfo("Flug", "nur das Ergebnis der Abfrage: " + result) var String anzahl = transform("JSONPATH", "$.field1", result) logInfo("Flug", "Anzahl der Flugzeuge, update auf: " + anzahl) var String createdAt = transform("JSONPATH", "$.created_at", result) logInfo("Flug", "Letztes update um: " + createdAt) // aktualisierungs Datum setzen flugzeugeUpdate.postUpdate(createdAt) // aktualisiere Anzahl der Flugzeuge flugzeugeAnzahl.postUpdate(anzahl) // Schalter wieder zurücksetzen flugzeugeAktualisieren.postUpdate("OFF") var SimpleDateFormat df = new SimpleDateFormat( "HH:mm:ss dd.MM.YYYY" ) var String timestamp = df.format( new Date() ) flugzeugeZeitpunkt.postUpdate(timestamp); end |
Und noch das von mir erstellte Icon des Flugzeuges:
Dies super Icon kann kostenlos von hier geladen und frei verwendet werden. Wer kann ein besseres zur freien Verwendung zeichnen?
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:
Wie kann ein Timer in Java mit Quartz erstellt werden? „Wie kann ein Timer in Java mit Quartz erstellt werden?“ weiterlesen
Wie werden tags und commits mit git signiert?
Anzahl der Flugzeuge mit 3 Zeilen Java Code ausgeben via REST API mit Jersey und JDom 2.0
Mit Java ist es nicht schwer, einen REST Client zu erstellen. Das geht mit Jersey und JDom in 3 Zeilen.
Hier nun mal ein Beispiel.
Die Anzahl der Flugzeuge in Hannover wird von mir mit einem Raspberry Pi empfangen und an thingspeak gesendet.

Diese Daten kann jeder leicht abfragen. „Anzahl der Flugzeuge mit 3 Zeilen Java Code ausgeben via REST API mit Jersey und JDom 2.0“ weiterlesen
Docker Image für Dump1090-Mutability auf dem Raspberry Pi am Beispiel aus Utrecht – Niederlande in 10 min testen
Mal einen Docker Container von Ted Sluis mit DUMP1090 aus den Niederlande testen. Man braucht dazu keine Antenne.
Cool 164 Flugzeuge, das ist ja viel mehr, als hier in EDDV. Aber hier wird auch gestreikt. Wer wie in einem Blog-Eintrag beschrieben, docker am laufen hat, braucht nur mit einer Zeile den Container auf dem Raspberry Pi starten:
|
1 |
sudo docker run -d -h dump80 -p 8080:80 tedsluis/dump1090-mutability:v1.15_heatmaprangeview_arm |
„Docker Image für Dump1090-Mutability auf dem Raspberry Pi am Beispiel aus Utrecht – Niederlande in 10 min testen“ weiterlesen
Wie kann in 5 min Docker auf einem aktuellen Debian Jessie Raspberry Pi installiert werden?
Zuerst installieren wir Docker aus einem vorhandenen Archive. Optional auf http://blog.hypriot.com/downloads/ schauen, was die aktuellste Version ist. Ok, wir verwenden 1.10.3 vom 10.03.2016:

„Wie kann in 5 min Docker auf einem aktuellen Debian Jessie Raspberry Pi installiert werden?“ weiterlesen
Barack Hussein Obama II mit der Air Force One landet gleich in Hannover (HAJ, Langenhagen EDDV)
Auf der Ankunftsseite von HAJ wird die AF-1 wohl nicht erscheinen. Auch die Transponder werden wohl ausgeschaltet sein.
Im Moment ist eh nicht viele in EDDV los. Bei 4 Grad ist es auch zu kalt zum Flughafen zu fahren. Hier gibt es Fotos der AFO.
Hier kommt gerade ein Franzose:
Der Luftraum in Langenhagen wird jetzt schon mal überwacht:
Jetzt Hagelt es in EDDV, ob er da landet?
Drei Hubschrauber sind im Moment im Einsatz.
Der Wagen von ihn, nähe konnte ich nicht ran:
Beim Abflug musten drei Flieger eine Warteschleife fliegen, hier eine:

Wo kann die IP-Adresse für den Raspberry Pi auf den Mac und im Router fest zugewiesen werden.
Da gibt es mehrere Möglichkeiten. Wer sich die Raspberry Pi Adresse nicht merken will, kann auch z.B. mit ssh flug auf den Raspberry Pi zugreifen. Oder ein ping pi-flug läuft auch, wenn die Adresse eingetragen und bekannt ist.
Im Router z.B. in der Fritzbox die IP-Adressen für jeden Pi fest zuweisen mit Namen. „Wo kann die IP-Adresse für den Raspberry Pi auf den Mac und im Router fest zugewiesen werden.“ weiterlesen
Wie können JSON Daten von Hannover (HAJ) zur Landung der AFO von Obama [bəˈɹɑːk hʊˈseɪn oʊˈbɑːmə] mit geojson.io erstellt werden?
Mit geojson.io können leicht GEO-Daten im verschiedenen Formaten erzeugt werden z.B. im JSON, CSV, KLM, WKT Format.
Habe mal, weil der 44. Präsident, Obama in Hannover Langenhagen landet, mal den Flughafen mit zwei von drei Landebahnen markiert. Auch eine 9 km Verlängerung und eine Vermessung zu meinen Wohnort habe ich eingezeichnet:
Hier mit dem rechten Fenster der JSON Generierung:

Und eine von vier Karten, die unten links ausgewählt werden können:
Wie kann die Anzahl der gerade empfangenen Flugzeuge mit DUMP1090 auf einem Raspberry Pi an ThingSpeak.com mit jq gesendet werden?
Wie kann die Anzahl der gerade empfangenen Flugzeuge mit DUMP1090 auf einem Raspberry Pi an ThingSpeak.com mit jq gesendet werden?
Wir verwenden ein kleines bash Script, welches über jq die aircraft.json Datei auswertet. Diese Daten werden dann automatisch alle 5 Minuten per crontab an ThingSpeak gesendet.
Der jq ist ein Kommandline JSON Tool, das den Input der JSon aircraft.json Datei verwendet und das gefilterte Ergebnis wieder ausgibt. In diesem Fall die Anzahl der Flugzeuge. „Wie kann die Anzahl der gerade empfangenen Flugzeuge mit DUMP1090 auf einem Raspberry Pi an ThingSpeak.com mit jq gesendet werden?“ weiterlesen
JSON Editor Plugin für Eclipse (Mars.2 Release (4.5.2))
Um JSON Files zu bearbeiten, gibt es das JSON-PlugIn. Damit können JSON-Dateien bearbeitet werden und auch die Syntaxhervorhebung ist schön.
„JSON Editor Plugin für Eclipse (Mars.2 Release (4.5.2))“ weiterlesen



































