Neue Zeile im Mac Excel mit den Tastenkombination: ctrl und alt gleichzeitig untenlassen und dann auf Enter drücken:
Mit Win: Strg Taste

Wenzlaff.de – Rund um die Programmierung
mit Java, Raspberry Pi, SDR, Linux, Arduino, Sicherheit, Blender, KI, Statistik, Krypto und Blockchain
Anleitungen zu allen Themen.
Eclipse Oxygen veröffentlicht. Dann mal hier den Download starten …
Mit dem Installer geht die Installation einfach: „Eclipse Oxygen veröffentlicht mit Java 9 previews“ weiterlesen
Wie kann man im Mac OS X den Path von Dateien und Ordnern leicht ins Clipboard kopieren?
Dazu legt man mit dem Automator einen neuen Service an. Zuerst starten wir den Automator und klicken auf Service:

„Wie kann man im Mac OS X den Path von Dateien und Ordnern leicht ins Clipboard kopieren?“ weiterlesen
Dies Programm zeigt die 100 am meisten verwendeten englischen Wörte an. Diese 100 Wörter machen die Hälfte alles geschriebenen in Englisch aus. Allein die ersten 25 Wörter aus der Liste, sind schon ein Drittel alles gedruckten in englisch.
Hier C++ Programm mit der Wortliste und einen Fortschrittsbalken, unter Verwendung der U8gLib. „Arduino Nano Programm und Video: Anzeige der 100 am meisten verwendeten Wörter in Englisch“ weiterlesen
Vor ein paar Tagen hatte ich hier beschrieben, wie ein Arduino mit der Arduino IDE geflasht wird. Als Java-Entwickler will man am Besten alles in Eclipse machen. Also auch die Arduino-Programmierung. Das geht auch mit dem Eclipse C++ IDE for Arduino 2.0. Für den Anfang ist wohl die Arduino IDE etwas einfacher zu bedienen. Aber mit dieser Anleitung geht es auch in ca. 1 Stunden. Also los …
Über den Eclipse Marketplace installieren:
Das dauert etwas …
Dann ein Arduino Projekt anlegen: „Eclipse IDE für die Arduino C++ Entwicklung“ weiterlesen
Ein Universally Unique Identifier (UUID) ist ein Standard für Identifikatoren. Wer eindeutige einmalige IDs braucht, kann die in Java einfach erzeugen. Es gibt da ab 1.5 die Klasse UUID mit der man einfach diese IDs erzeugen kann.
Die RFC 4122 beschreibt den Aufbau und den Algorithmus für die Erzeugung. Das ganze ist schon ziemlich sicher, da die SecureRandom Klasse in Java verwendet wird.
Habe mich gefragt, ob die auch wirklich eindeutig sind. Dafür mal eben einen kleinen JUnit Test geschrieben der 1 Millionen UUIDs erzeugt und testet ob zwei gleiche erzeugt werden. Nach 4889,556 Sekunden das Ergebnis:
Hier die 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 |
package de.wenzlaff.tools; import static org.junit.Assert.fail; import java.util.ArrayList; import java.util.List; import java.util.UUID; import org.junit.Test; public class TestUuid { private static final int MAX = 1000000; @Test public void testIdGen() { List<String> c = new ArrayList<>(); for (int i = 0; i < MAX; i++) { String id = UUID.randomUUID().toString(); if (c.contains(id)) { fail("Doppelte ID " + id + " generiert!"); } c.add(id); System.out.println(id); } } } |
Die CPU war schon teilweise zu 100% ausgelastet, zumindestens einer der acht Kerne:
Ein UUID in ihrer Normalform sieht beispielsweise so aus: „Universally Unique Identifier (UUID) bzw. Globally Unique IDentifier (GUID) mit Java erzeugen“ weiterlesen
Vor ein paar Tagen wurde eine neue Version der Arduino IDE veröffentlicht.
Das ist ein Bugfix Service Release (Details). „Neue Arduino IDE 1.8.3 für C Programmierer vor 7 Tagen veröffentlicht“ weiterlesen
Hatte noch ein OLED Display liegen. Das wollte ich mal an einen Arduino anschließen. An einem Raspberry Pi geht auch. Da es nur 4 Drähte sind, ist es mit der u8glib schnell gemacht.
Einfach Plus (VDD) an Plus (VDD, Pin4) und Minus (GND) an Minus (GND, Pin2) und SDA an A4, Pin 8 und SCK an A5, Pin 7.
Achtung nicht Plus mit Minus vertauschen. Das hatte ich für ein paar Minuten gemacht, und hatte mich gewundert, warum das Display kochend heiß wird und keinen Text anzeigt. Es hat es aber überstanden, ist also sehr robust!
Hier die Ausgabe eines einfachen „Dont give up!“ Text der nach 2 Sekunden angezeigt wird, nachdem OK, Start… beendet wurde:
Es geht aber auch einen Menge mehr, wie diese Gallerie zeigt.
„Arduino Nano mit OLED Display „Don’t give up!“ Ansteuerung“ weiterlesen
Vor einiger Zeit, hatte ich hier auf dem Bloc beschrieben wie man die Tankstellen-Preise ermittlen kann.
Jetzt will ich mal die Benzin Preise in einem Diagramm in Echtzeit darstellen. So kann man auch den ersten Blick sehen, wo man tanken kann:
„Spritpreise zweier Tankstellen бензоколонка in einem Diagramm mit MatLab“ weiterlesen
Tankstellen melden ihre Spritpreise ins Internet. Von dort können sie leicht abgerufen werden. Zum Beispiel die Benzinpreise von Langenhagen. Die Seite hat auch eine öffentliche kostenlose API. Dort kann man nach Anmeldung bis zu 3 Tankstellen kostenlos abfragen.
Ok, dann mal los, hier die Architektur:
So kann man sich dann vor dem tanken informieren und den billigen Sprit tanken: „Benzin Preise per NodeRED ermitteln und in Echtzeit grafisch darstellen mit dem Raspberry Pi“ weiterlesen
Mich hat mal die Frage interessiert, in welcher Höhe die meisten Flugzeuge aktuell so fliegen.
Also habe ich mal ein kleines Java Programm geschrieben, welches in Echtzeit die Daten von The OpenSky Network abfragen kann. Es werden also mal alle Flugzeuge die Transponser haben und von The OpenSky Network erfasst sind berücksichtigt.
Hier das Ergebnis von 3048 Flugzeugen:
Das ist die vom Programm ermittelte Datenbasis: „In welcher Höhe fliegen Flugzeuge?“ weiterlesen
Beim sudo apt-get update kommt nun dieser Fehler:
W: Failed to fetch http://dl.bintray.com/openhab/apt-repo2/dists/stable/main/binary-armhf/Packages 405 Not Allowed
E: Some index files failed to download. They have been ignored, or old ones used instead. „Raspberry PI: OpenHab2 mit: „Failed to fetch http://dl.bintray.com/openhab/apt-repo2/dists/stable/main/binary-armhf/Packages 405 Not Allowed““ weiterlesen
OpenSky bietet eine Java API an um auf Flugdaten zugreifen zu können. Da die live API nun wieder online ist, schreiben wir einen kleine JUnit Test und formen mal alle Transponderdaten aller 4754 Flugzeuge in eine KML Datei, um die Daten auf Google Earth anzuzeigen. Hier erst einmal das Ergebnis in Google Earth aus 5569 Km Höhe gesehen:
Wer die die Daten testweise laden will, „OpenSky Java API to KML für Google Earth – Teil 1“ weiterlesen
Man kann mit dem Raspberry Pi auch Feinstaub messen, wenn man einen entsprechenden Sensor hat.
In diesem 1. Teil, beschreibe ich, wie man Messwerte aus öffentlicher Quelle, auch um später Vergleichswerte zu haben auswertet. Die Niedersächsische Gewerbeaufsicht misst Umweltdaten und stellt sie zur freien Verfügung bereit. Unter LÜN gibt es z.B. das Ergebniss für Hannover. Da gibt es auch eine kostenlose App für diese Daten für alle Handys.
Hier nun die Architektur:
Die Daten für zur Zeit 27 Messstationen werden im JSON-Format (und auch XML) im Internet frei veröffentlicht unter der URL: http://www.luen-ni.de/JSON.txt und enthalten ua. folgende Daten:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
- Feinstaub - Stickstoffdioxid - Windrichtung - Windgeschwindigkeit - Ozon - Luftdruck - Schwefeldioxid - Regendauer - Kohlenmonoxid - UV-Index - Temperatur - Globalstrahlung - Rel. Luftfeuchtigkeit |
Mal etwas zur Entspannung. Manchmal will man wissen ob ein Server erreichbar ist. Dafür gibt es das Kommandozeilen Programm ping. Wenn man diesen ping z.B. alle 5 Minuten ausführt hat man eine leicht Überwachung ob der Server noch erreichbar ist. Gesagt getan. Einen kleinen flow der alle 5 Minuten einen Ping ausführt und bei Veränderung eine Pushover Nachricht auf das Handy sendet.
So kann der Flow zusammen geklickt werden:
Im hellgelben „adv ping Node“, kann die IP-Adresse angegeben werden. Im „function Node“ wird der Ping ausgewertet. „Überwachung: Automatischer Ping an Server mit NodeRED auf Raspberry Pi“ weiterlesen
Maven ist nun in der neuen Version 3.5.0 veröffentlicht worden. Was sofort auffällt ist die neue farbige Konsole. Das war auch Zeit. Endlich können Errors sofort erkannt werden und der grüne Build Success ist auch viel schöner:
„Neues Maven 3.5.0 mit farbiger Konsole veröffentlicht“ weiterlesen
In einem lauffenden OpenHAB2 System eine Wetterabfrage einzubauen geht schnell.
Zuerst das Yahoo-Wetter-Binding installieren: „OpenHAB2 Wetterabfrage mit Pushover Benachrichtigung in 30 Minuten via WOEID (Where On Earth IDentifier)“ weiterlesen
Manchmal lädt man mehrere Dateien hoch, und es ist einem nicht immer bewußt, das auch im 21. Jahrhundert Umlaute zu Problemen führen können.
Wer z.B. eine Datei mit Namen „Testdatei für Umlauttest.txt“ mit einem FTP Client wie z.B. File Zilla auf einen Server hochlädt, der keine Serverunterstüzung für Nicht-ASCII-Zeichen hat, erhält nach dem upload den folgenden Dateiname:
Da der upload klappt und man keine Fehlermeldung erhält, merkt man es nicht immer.
Dann passen später die Links auf diese Datei uä. nicht, oder man verwendet den „richtigen“ Dateinamen.
Ein weiteres Problem. Man kann diese Datei mit dem FTP Client nicht mehr löschen. Wenn man es versucht, kommt die Fehlermeldung: „Datei mit Sonderzeichen in Dateinamen läßt sich nicht per FTP löschen“ weiterlesen
Wie läuft der Umstieg von OpenHAB 1 auf die Version 2? Da ist eine Menge umgebaut worden. Da bei mir alles unter der Version 1 läuft, habe ich nicht große Not alles umzustellen.
Aber die neue GUI usw. ist doch ein Anreiz.
Deshalb habe ich mal Testweise auf einen Raspberry Pi Zero W die Version 2 installiert, wie hier beschrieben.
Das lief schon mal ganz gut. Nun wollte ich mal ein erstes Binding testen. Das Wemo-Binding. „OpenHAB2 mit Raspberry Pi Zero W: ERROR: 500 – Internal Server Error“ weiterlesen
Manchmal will man oder muss man alle Dateien, die einen Umlaut im Dateinamen haben ermitteln. Mir ging es so, als in der Dropbox Dateien mit Umlauten bei einem Programm bei der Synchronisation Probleme machte.
Dann sollte das auch noch auf Mac OS X, Windows, Linux und auf einen Raspberry Pi mit Debian laufen. Also mal ein kleines Java Programm geschrieben, das alle Dateien mit Umlaute (äöüÖÄÜ) im Dateinamen und auch die Anzahl ausgibt.
Das Programm läuft unter Java, da es ab Version 1.7 eine neue Klasse SimpleFileVisitor gibt, von der man leicht erben kann habe ich die mal verwendet. Man kann aber auch selbst das Interface FileVisitor implementieren.
Einfach die Datei laden und das Zip-Archive entpacken. „Suche alle Dateien rekursive mit Umlaute im Dateiname auf Win, Mac, Linux und Raspberry Pi und liefere die Anzahl“ weiterlesen
Peter Cornelius singt:
„Der Kaffee ist fertig,
klingt das net unheimlich zärtlich.
Der Kaffee ist fertig,
klingt das net unglaublich lieb.“
In diesem Sinne. Wenn ein Kaffee (кофе) gekocht wurde, werde ich von meinen Raspberry Pi informiert, wie hier schon mal beschrieben. Nun generiere ich noch in Echtzeit, einmal am Tag eine Grafik mit MATLAB Visualization wieviele Tassen pro Tag gekocht wurden, hier das Diagramm:
Diese paar Zeilen Quellcode erzeugen das Diagramm:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
% Kaffee pro Tag anzeigen % % Thomas Wenzlaff % % Lesen des Kanal readChannelID = hier die Kanal Nr einfügen; fieldID2 = 2; % Channel Read API Key readAPIKey = 'hier den Api Key einfügen'; data2 = thingSpeakRead(readChannelID, 'Field', fieldID2, 'NumPoints', 30, 'ReadKey', readAPIKey); data = [data2]; thingSpeakArea(data); |
Oder findet ihr die besser? „Raspberry Pi Kaffeezeit oder der „Kaffee (قهوة) ist fertig““ weiterlesen
Über Docker hatte ich hier schon mal berichtet.
Docker ist schnell installiert, einfach nach der Aktuallisierung des Systems folgenden Befehl eingeben: „Raspberry Pi Zero W: Debian Docker mit Alpinelinux installieren in 30 Minuten“ weiterlesen
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:
|
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 |
# System aktualisieren sudo apt-get update sudo apt-get upgrade # Namen und ein paar Einstellungen sudo raspi-config # neue Firmware sudo apt-get dist-uprade # neues update Prog. installieren sudo apt-get install rpi-update # neueste Treiber installieren sudo rpi-update # Reboot sudo reboot now # Java 1.8 installieren, wenn nicht schon vorhanden sudo apt-get update && sudo apt-get install oracle-java8-jdk # so, jetzt die eigentliche OpenHAB 2 Installation # zuerst den Openhab Key ergänzen wget -qO - 'https://bintray.com/user/downloadSubjectPublicKey?username=openhab' | sudo apt-key add - # das Repo ergänzen echo 'deb http://dl.bintray.com/openhab/apt-repo2 stable main' | sudo tee /etc/apt/sources.list.d/openhab2.list # nun wieder alles updaten, da ein neues Repo ergänzt wurde sudo apt-get update # OpenHAB 2 installieren sudo apt-get install openhab2 # OpenHAB autom. bei Systemstart starten sudo /bin/systemctl daemon-reload sudo /bin/systemctl enable openhab2.service # und OpenHAB 2.0 starten sudo /bin/systemctl start openhab2.service # der Start hat ein paar Minuten gedauert, deshalb mal den Status ausgeben sudo systemctl status openhab2.service # wenn ein Restart nötig ist, dann sudo systemctl restart openhab2.service |
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
675 Tassen Kaffee trinkt jeder Deutsche im Schnitt pro Jahr (2015). Das geht aus einer Erhebung des Statista Consumer Market Outlooks hervor. Wie sieht es aber bei mir aus?
Wer wissen will, wieviel Kaffee er trinkt oder besser gesagt kocht, kann den Raspberry Pi dazu verwenden.
Wenn dort OpenHab installiert ist, kann man eine Regel erstellen, die jedesmal eine Pushover Nachricht an das Handy sendet und gleichzeitig in einem Diagramm auf Thinkspeak die Anzahl zählt bzw. darstellt. Die Erfassung an der Kaffeemaschine geht über einen Leistungsmesser von Homematic. Das ist hier im Blog schon mal beschrieben worden.
Hier die Architektur:
In diesem Thingspeak Diagramm wird in Echtzeit jeweils der aktuelle Stand ab heute automatisch erstellt. Also immer mal wieder vorbeischauen, dann weiß man, wann bei mir Kaffee-Time ist und ob ich den Durchschnitt von 675 Tassen pro Jahr erreiche 😉
Hier die OpenHab Regel: „Raspberry Pi: Echtzeit Benachrichtigung wenn ein Kaffee (قهوة) gekocht wurde via OpenHab und ThingSpeak bzw. Pushover“ weiterlesen
Wie kann ein Archive aus dem Internet gelanden und der Inhalt angezeigt und dann entpackt werden?
Auf der Kommandozeile kann mit apt-get ein Archive geladen werden. Wir laden uns mal z.B. git:
|
1 |
apt-get download git |
Nach ein paar Sekunden habe wir im lokalen Verzeichnis das Archive git_1%3a2.1.4-2.1+deb8u2_armhf.deb oder neuer. „Raspberry Pi Zero W: Wie kann ein Archive gelanden und der Inhalt angezeigt und dann entpackt werden?“ weiterlesen
Was ist denn heute schönes aus Holland angekommen?
Übrigens, das auf dem Bild soll ich sein, aus der Sicht einer netten 5 jährigen! Ich bin begeistert!
Vorderansicht: „Frisch aus Nederland eingetroffen: Raspberry Pi Zero W“ weiterlesen
Es gibt viele Warnugen vor Fake-News! Sogar von der UN und auch von Heise. Das ist doch mal ein Grund, eine Fake-News-Generator mit Node-RED auf dem Raspberry Pi zu implementieren.
Dann hier das Ergebniss vom Fake-News-Generator, der jede Stunde (leicht anpassbar) auf Twitter Fake Meldungen postet:

Wie wird das mit Node-Red implementiert? Wir brauchen eine Flow in der Form:
„Fake-News-Generator mit Node-RED und Raspberry Pi“ weiterlesen
Habe vor ein paar Tagen aus China einen programmierbaren USB-Lüfter mit einem Programm für Windows auf einer mini CD und USB-Kabel erhalten. Musste ihn aber mal wieder beim Zoll direkt abholen, da das Teil für 0 Euro deklariert wurde. Da wollte der Zoll dann doch einmal reinschauen und die Rechnung sehen.
Denn Lüfter wollte ich mal an einem Raspberry Pi anklemmen, es geht aber auch jeder andere USB-Port wie Laptops, Netzteile oder Accus.
Hier meine erstes Demo-Video (2 Min) um zu zeigen was für Effekte man so programmieren kann. Im halbdunkeln, damit man es besser erkennen kann:
Hier ein paar „Programmierbarer USB Lüfter nicht nur für den Raspberry Pi“ weiterlesen
Vor ein paar Tagen hatte ich schon mal den ATTINY 85 vorgestellt.

Das ist ein cooles Teil mit USB und das für 1 Euro. Er emuliert eine Tastatur (HID).
Also mal ein weiteres Programm, für folgendes Problem. Wer lange und komplizierte Passwörter verwendet, hat mit unter keine Lust, sie immer wieder einzugeben. Das ist auch fehleranfällig. Oder man möchte jemand anderes an seinen Rechner lassen, und ihn nicht das Passwort geben. Also gibt man den Generator weiter.
Wir erstellen also ein Programm, das das Passwort automatisch an den Rechner sendet. Man muss dann natürlich auf das Teil aufpassen, das es nicht in falsche Hände kommt. Wir senden nur einmal, das gespeicherte Passwort. Hier mal ein 45 Sekunden Demo Video:
Hier das C-Programm, es ist ein sehr einfaches Programm mit ein paar Zeilen: „Video DIY USB Passwort Generator mit Attiny 85“ weiterlesen