Mit diesem „Teil“ vorsichtig aus den Magnetverschlüssen ziehen:
 und dann jeweils die 4 Schrauben rechts und links öffnen.
Zigbee CC2531 mit neuer Firmware vom Raspberry Pi aus flashen ohne CC Debugger
Um das CC2531 auch ohne CC Debugger neu zu flashen, gehen wir wie folgt vor.
Wiring Pi installieren
Wir benötigen auf dem Raspberry Pi die wiringpi zum ansteuern der GPIO-Ports
sudo apt-get install wiringpi
Nach der Installation testen wir mit gpio -v es muss diese Ausgabe kommen:
| 
					 1 2 3 4 5 6 7 8 9 10  | 
						gpio version: 2.50 Copyright (c) 2012-2018 Gordon Henderson This is free software with ABSOLUTELY NO WARRANTY. For details type: gpio -warranty Raspberry Pi Details:   Type: Model B+, Revision: 02, Memory: 512MB, Maker: Sony   * Device tree is enabled.   *--> Raspberry Pi Model B Plus Rev 1.2   * This Raspberry Pi supports user-level GPIO access.  | 
					
Wenn eine Fehlermeldung kommt, wie bei mir, da zwei der Raspberry Pis nicht unterstüzt wurden, erst fixen.
CC2531 an Pi
Die vier Drähte anlöten und mit dem Pi wie folgt anschließen:
| 
					 1 2 3 4  | 
						GND - 1 - braun  an Pi Pin 39 DC  - 3 - organg an Pi Pin 36 RST - 7 - grün   an Pi Pin 35 DD  - 4 - gelb   an Pi Pin 38  | 
					
Flasher installieren
„Zigbee CC2531 mit neuer Firmware vom Raspberry Pi aus flashen ohne CC Debugger“ weiterlesen
NodeRed Flow Pollenflug-Gefahrenindex des DWD per Pushover vom Rasberry Pi versenden
Im Rahmen seines gesetzlichen Auftrags stellt der DWD seine Wetter- und Klimainformationen entgeltfrei auf dem Open Data-Server https://opendata.dwd.de bereit. Fuer den Zugang ist keine Registrierung notwendig. Es gelten die Nutzungsbedingungen unter: https://www.dwd.de/copyright. Also alle frei zugänglichen Geodaten und Geodatendienste dürfen entsprechend der „Verordnung zur Festlegung der Nutzungsbestimmungen für die Bereitstellung von Geodaten des Bundes (GeoNutzV) unter Beigabe eines Quellenvermerks ohne Einschränkungen weiterverwendet werden.
Die Infos werden in einer JSON Datei bereitgestellt. Der Aufbau wird hier beschrieben. Dann erstellen wir mal einen NodeRed Flow der den Pollenflug-Gefahrenindex täglich per Pushover an das Handy versenden kann. In dem Beispiel wird nur der Wert für Niedersachsen und Birke und Hasel verwendet. Auch wird nur eine Meldung versendet wenn der Wert sich ändert. In den nächste Monaten wird wohl auch nicht viel an Pollen fliegen, wie die Statistik zeigt. Was die Werte bedeuten, geht aus dieser Tabelle hervor.
So sieht der NodeRed Flow aus:
Hier noch ein Auszug der JSON-Daten: „NodeRed Flow Pollenflug-Gefahrenindex des DWD per Pushover vom Rasberry Pi versenden“ weiterlesen
Wie können nicht benötigte Flows auf einem Raspberry Pi in NodeRed Version 1.0.2 deaktiviert werden?
Nach der Aktualisierung der NodeRed Version 1.0.2 auf:
Musste der Twitter Nodes neu installiert werden, da er nun nicht mehr zur default Pallete gehört. Dann wollte ich einen Flow deaktivieren, das ging früher hier: „Wie können nicht benötigte Flows auf einem Raspberry Pi in NodeRed Version 1.0.2 deaktiviert werden?“ weiterlesen
Kein Zugriff auf SD-Karte mit OS X (Catalina) und dd Kopieren beschleunigen
Heute hatte ich mal keinen Zugriff auf eine im Pi geschrottete SD-Karte. DD konnte nicht schreiben bzw. lese. Was die Karte wiederbelebt hat, war das Kommando im Terminal:
| 
					 1  | 
						sudo diskutil eraseDisk free UNTITLED /dev/diskN  | 
					
Dabei muss das N durch die Disk Nummer ersetzt werden, die man mit sudo diskutil list finden kann.
Wenn man während des ausführen des DD den aktuellen Status haben will, „Kein Zugriff auf SD-Karte mit OS X (Catalina) und dd Kopieren beschleunigen“ weiterlesen
Filtern eines JSON Objekt per REST Request von einem Raspberry Pi in einen Wert per NodeRed transformieren
Wenn man REST Services abfragt, bekommt man oft viele Werte. Wie kann man nur einen davon leicht per NodeRed filtern?
Hier mal ein Beispiel eines JSON-Objekt mit mehreren Werten. Wir wollen da die Temperatur Filtern. „Filtern eines JSON Objekt per REST Request von einem Raspberry Pi in einen Wert per NodeRed transformieren“ weiterlesen
MacPorts auf macOS Catalina 10.15 installieren und dann Maven 3
MacPorts kann auch auf Catalina installiert werden wie hier beschrieben.
Dazu erst Xcode 11.1 aus dem App Store installieren. „MacPorts auf macOS Catalina 10.15 installieren und dann Maven 3“ weiterlesen
Swagger-UI in 5 Minuten auf einen Raspberry Pi einem Quarkus Projekt hinzufügen!
Für die Entwicklung von REST APIs ist die Swagger-UI sehr hilfreich.
Ok, dann wollen wir mal in einem Quarkus Projekt eine Swagger-UI hinzufügen. Das geht mit einem Befehl, da Quarkus einen guten Plugin Mechanismus hat:
./mvnw quarkus:add-extension -Dextensions=“openapi“
Nach 27 Sekunden kommt das Build Success:
| 
					 1 2 3 4  | 
						[INFO] --- quarkus-maven-plugin:0.24.0:add-extension (default-cli) @ info-kleinhirn --- ✅ Adding extension io.quarkus:quarkus-smallrye-openapi [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS  | 
					
So, das wars schon. Nun noch die Anwendung starten mit „Swagger-UI in 5 Minuten auf einen Raspberry Pi einem Quarkus Projekt hinzufügen!“ weiterlesen
In unter 5 Minuten auf einem Raspberry Pi Zero eine Java Quarkus REST Anwendung mit JUnit-Test neu erstellen und starten!
Wenn Java 8 und ein aktuelles Maven auf dem Raspberry Pi installiert ist, kann man in unter 5 Minuten eine komplette REST-Anwendung mit statischer Webseite erstellen und starten. Die dann sogar Hot Reloading fähig ist. Das geht in drei Schritten und das sogar auf einem Raspberry Pi Zero:

1. Ein neues leeres Verzeichnis erstellen und dahin wechseln:
| 
					 1 2  | 
						mkdir quarkus-anwendung cd quarkus-anwendung  | 
					
2. Mit folgenden Maven Kommando ein Maven Projekt in ca. 30 Sekunden erstellen
| 
					 1  | 
						mvn io.quarkus:quarkus-maven-plugin:0.24.0:create     -DprojectGroupId=de.wenzlaff.info     -DprojectArtifactId=info-kleinhirn     -DclassName="de.wenzlaff.InfoResource"     -Dpath="/info"  | 
					
3. Das Projekt compilieren und starten in ca. 40 Sekunden mit:
| 
					 1  | 
						mvn compile quarkus:dev  | 
					
Wenn der Server gestartet ist kann im Browser das Servlet aufgerufen werden mit:
http://[PI-ADRESSE]:8080/info
Ergebnis: hello
4. Nun wollen wir in einem anderen Kommondozeilen-Fenster in das Verzeichnis „In unter 5 Minuten auf einem Raspberry Pi Zero eine Java Quarkus REST Anwendung mit JUnit-Test neu erstellen und starten!“ weiterlesen
Wie kann die aktuellste Maven Version 3.6.2 auf dem Raspberry Pi installiert werden?
Mit einen sudo apt-update oder sudo apt update && sudo apt install maven bekommt man unter stretch nicht die neueste Version sondern nur 3.3.9-4. Aber man kann sie auch von der Binär-Version installieren.
1. Die aktuelle Version von der Maven-Seite holen.
wget http://mirrors.ae-online.de/apache/maven/maven-3/3.6.2/binaries/apache-maven-3.6.2-bin.tar.gz
2. Das Archive entpacken nach /opt
cd /opt && sudo tar -xzvf /home/pi/apache-maven-3.6.2-bin.tar.gz
3. Der Shell für alle User die neue Version mitteilen
sudoedit /etc/profile.d/maven.sh
mit diesem Inhalt
export M2_HOME=/opt/apache-maven-3.6.2
export „PATH=$PATH:$M2_HOME/bin“
Speichern und
4. Die Shell neu starten, damit das Profil-Script ausgeführt wird und die Version checken:
mvn -version
Ok, es wird die neue Version ausgegeben:
| 
					 1 2 3 4 5  | 
						Apache Maven 3.6.2 (40f52333136460af0dc0d7232c0dc0bcf0d9e117; 2019-08-27T15:06:16Z) Maven home: /opt/apache-maven-3.6.2 Java version: 1.8.0_65, vendor: Oracle Corporation, runtime: /usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre Default locale: de_DE, platform encoding: UTF-8 OS name: "linux", version: "4.19.58+", arch: "arm", family: "unix"  | 
					
Was tun wenn der StartExplorer – „Start Shell Here“ unter Eclipse 2019-09 und ios 13 nicht mehr angezeigt wird?
Dann diese Einstellungen anpassen: „Was tun wenn der StartExplorer – „Start Shell Here“ unter Eclipse 2019-09 und ios 13 nicht mehr angezeigt wird?“ weiterlesen
Quicktest: Gestern wurde Quarkus 0.24.0 released – „Container First“
Wenn das kein Grund ist mal die neue Version zu testen. Quarkus ist ein relativ neues Framework, welches die leichtgewichtige Entwicklung von Java-Anwendungen nach dem „Container-first“-Prinzip macht. Es wird von Red Hat gesponsert und macht die Entwicklung von Microservices einfacher. Was Entwickler besonders gefällt ist das Live Reloading so das man gemachte Änderungen sofort „sieht“.
Also gleich ein Build it. Save it. Run it. – und das mit Java:
./mvnw compile quarkus:dev
Das klappt ja schon mal, nun ein
./mvnw clean package
Package bauen: „Quicktest: Gestern wurde Quarkus 0.24.0 released – „Container First““ weiterlesen
Sicherheit: macOS-Terminalemulator iTerm2 updaten
Wie kann JSON in Java „schnell“ erzeugt werden?
Da heute ein arbeitsfreier Tag ist, schon mal eine kleine Vorbereitung („ARBEIT“) für den Einsatz im Projekt ab Montag. Da wollen wir JSON Objekte verwenden. Für die JSON Erzeugung mit Java gibt es viele Möglichkeiten und Libs. Hier mal ein kleines Beispiel mit der 68 kB großen json.org Lib.
Zuerst in der pom.xml die Lib eintragen:
| 
					 1 2 3 4 5  | 
						<dependency> 			<groupId>org.json</groupId> 			<artifactId>json</artifactId> 			<version>20190722</version> </dependency>  | 
					
und dann einen kleine JUnit 5 Test.
| 
					 1 2 3 4 5 6 7 8 9 10 11 12  | 
						@Test 	void kleinerJsonTest() { 		JSONObject json = new JSONObject(); 		json.put("name", "Wenzlaff"); 		json.put("vorname", "Thomas"); 		json.put("pin", 123456); 		// {"pin":123456,"vorname":"Thomas","name":"Wenzlaff"} 		assertEquals("{\"pin\":123456,\"vorname\":\"Thomas\",\"name\":\"Wenzlaff\"}" + "", json.toString()); 	}  | 
					
Also einfach ein JSONObject Objekt erstellen und mit put die Key und Value Werte eingeben. Für die put Methode gibt es viele Möglichkeiten: „Wie kann JSON in Java „schnell“ erzeugt werden?“ weiterlesen
httpie ist auch auf dem Raspberry Pi in 5 Minuten installiert, es muss ja nicht immer curl sein
Um httpie auf dem Raspberry Pi zu installieren, ist nur ein
| 
					 1  | 
						sudo apt-get install httpie  | 
					
nötig. Und schon hat man einen curl Ersatz mit intuitiver UI, JSON support, Syntax Hervorhebung und mehr.
Quicktest, abfragen einer Domain, mit http get www.kleinhirn.eu „httpie ist auch auf dem Raspberry Pi in 5 Minuten installiert, es muss ja nicht immer curl sein“ weiterlesen
Wie sieht der Flugverkehr im Moment (29.09.2019 16:30 Uhr) aus? Es ist noch Platz …
HP LaserJet Scannen in Netzwerk Verzeichnis unter Mac OS 10.14

Also erst einmal die neue Firmware (2019-07-16) und Treiber von der HP Seite geladen, da gibt es nun neue Treiber. Das hat aber auch nichts gebracht. Langes suchen und lesen in den Foren von HP hat auch nicht geholfen obwohl einige auch das Problem hatten, und der Service von HP auch nicht weiter geholfen hat.
Die Lösung die ich per try and error gefunden habe, ist folgende, die Anleitung mit dem Pfad ist auf der HP-Seite falsche. Es muss die IP Adressse und auch der Name des „Macintosh HD“ zusätzlich angegeben werden, auch wenn im Pfad nur /User/Verzeichnis steht.
Also hier ein Beispiel (IP Adresse und Userpfad anpassen):
\\10.1.2.3\Macintosh HD\Users\thomas\Scanner-Input
wenn dann noch der Username mit dem Passwort des Mac angegeben wird, klappt es auch mit dem Scannen in Netzwerkordner.

Ein klick auf den Test Button…
 „HP LaserJet Scannen in Netzwerk Verzeichnis unter Mac OS 10.14“ weiterlesen
Neue Version graphviz-java-parent-0.11.0 vor zwei Tagen veröffentlicht
Vor zwei Tagen wurde die neue Version veröffentlicht:

Dann mal die pom.xml updaten und einen Quicktest:
 „Neue Version graphviz-java-parent-0.11.0 vor zwei Tagen veröffentlicht“ weiterlesen
Eclipse 2019-09 update in 10 Min installieren und Quicktest –> OK
Dann wollen wir mal das gestern veröffentlichte Update installieren. Die Installation und Neuerungen sind ja bei Heise beschrieben. Dann mal ein Quicktest:

 „Eclipse 2019-09 update in 10 Min installieren und Quicktest –> OK“ weiterlesen
Wie kann in Java ein ical Termin (ics Datei) erzeugt werden?
Wer mit Java ical Termine erzeugen will, kann das gut mit der ical4j Lib machen. Es muss dazu in der pom.xml dieser Eintrag hinzugefügt werden.
| 
					 1 2 3 4 5  | 
						<dependency> 	<groupId>org.mnode.ical4j</groupId> 	<artifactId>ical4j</artifactId> 	<version>3.0.4</version> </dependency>  | 
					
Dann wollen wir zuerst mal ein paar Zeilen für den JUnit Test dafür schreiben:
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19  | 
						        @Test 	void testWriteKalenderInDatei() throws Exception { 		Calendar icsCalendar = getTestkalenderMitEinTermin(); 		String icsDateinamen = "JUnit-Testdatei.ics"; 		Kalender.writeKalenderInDatei(icsCalendar, icsDateinamen); 	} 	private Calendar getTestkalenderMitEinTermin() { 		Calendar icsCalendar = Kalender.createKalender(); 		TimeZone timezone = Kalender.createTimezoneEuropa(); 		LocalDateTime eventStartZeitpunkt = LocalDateTime.now(); 		String eventKommentar = "JUnit Test Kommentar"; 		String eventTitel = "JUnit Event Titel"; 		Kalender k = new Kalender(); 		k.addTermin(icsCalendar, timezone, eventStartZeitpunkt, eventTitel, eventKommentar); 		return icsCalendar; 	}  | 
					
Wir brauchen noch die Kalender Klasse, die hier kopiert werden kann: „Wie kann in Java ein ical Termin (ics Datei) erzeugt werden?“ weiterlesen














