Wie können live Covid-19 Daten per Node-RED an Twitter und Pushover gesendet werden?


Wie können die Covid-19 Daten der Johns Hopkins CSSE über die JSON-Api https://covid19.mathdro.id/api in einem Node-RED Flow integriert werden, so das automatisch eine Pushover Nachricht an das Handy versendet wird. Auch ein autom. Tweet an Twitter ist schnell gemacht. Auf einem Raspberry Pi läuft dafür Node-RED.

Hier der Node-RED Flow, der dafür nötig ist:

Und hier die Debug-Nachrich die ausgegeben wird:
„Wie können live Covid-19 Daten per Node-RED an Twitter und Pushover gesendet werden?“ weiterlesen

Wie können mit Java automatisch Webseiten mit Jsoup am Beispiel Corona abgefragt werden?

Das Robert Koch Institut (RKI) liefert für Deutschland aktuelle Corona-Fall-Zahlen auf dieser Webseite:

https://www.rki.de/DE/Content/InfAZ/N/Neuartiges_Coronavirus/Fallzahlen.html

in einer schönen Tabelle die wir mit Jsoup abfragen wollen.

Robert Koch Institut - Corona in Deutschland

Wir schauen uns erst einmal die Stuktur der Seite an. D.h. wir markieren z.B. Niedersachsen und öffnen das rechte Kontexmenü und klicken auf „Element untersuchen“. Nun wird unten der HTML-Quelltext angezeigt. Wir sehen das die Tabelle, an der ersten stelle steht, und mit den tr und td Tags erstellt ist. Das müssen wir für die Analyse wissen.

Hier nun der kommentierte Beispiel-Code: „Wie können mit Java automatisch Webseiten mit Jsoup am Beispiel Corona abgefragt werden?“ weiterlesen

Java Einzeiler: JSONvon URL einlesen mit org.apache.commons.io am Beispiel: Corona – COVID-19


Hatte hier schon mal über die JSON Lib

berichtet. Wie kann damit nun in einer Zeile eine URL abgefragt werden?

Mit Hilfe der org.apache.commons.io geht das ganz einfach. Also erst einmal die Lib in die pom.xml einbinden.

Was wollen wir nun beispielsweise abfragen? Alle reden von Corona. Also lesen wir die drei aktuellen Werte der Johns Hopkins University ein. Die werden über diese Webseite aktuell dargestellt. Hier mal ein Foto:

tinyurl.com/virus-corona
Corona Status

Die Daten werden auch über eine JSON-Rest API unter https://covid19.mathdro.id/api bereitgestellt. Hier mal das Ergebniss einer Abfrage: „Java Einzeiler: JSONvon URL einlesen mit org.apache.commons.io am Beispiel: Corona – COVID-19“ weiterlesen

Java Einzeiler des Tages: Lesen einer Webseite mit jsoup den Open source HTML Parser

Mit JSoup kann ganz einfach eine Webseite gelesen werden.

Dazu einfach in der pom.xml:

ergänzen und folgenden Einzeiler:

System.out.println(„Webseite: “ + Jsoup.connect(„http://wenzlaff.info“).get().html());

Das Ergebnis ist dann die HTML Seite. Mit JSoup können auch einfach Filter und Selektoren erstellt werden. Es unterstüzt leider kein JavaScript.
Dafür kann dann HtmlUnit oder Selenium verwendet werden.

Wie kann die Anzahl verfügbarer CPU-Prozessoren (Kerne) der Java virtuelle Maschine (VM) per Java abgefragt werden?

Wie kann die Anzahl verfügbarer CPU-Prozessoren (Kerne) der Java virtuelle Maschine (VM) per Java abgefragt werden? Das geht mit einem Java-Einzeiler:

int availableProcessors = Runtime.getRuntime().availableProcessors();

Die unterschiedlichen Raspberry Pi Modelle haben einen Kern: „Wie kann die Anzahl verfügbarer CPU-Prozessoren (Kerne) der Java virtuelle Maschine (VM) per Java abgefragt werden?“ weiterlesen

Internet Adressen bzw. Links in Excel-Dateien in 5 Minuten überprüfen mit dem de.wenzlaff.linkchecker

Manchmal hat man in einer Excel-Tabelle eine oder mehrere Spalten mit Internet-Adressen (URLs) deren Gültigkeit man überprüfen will, da viele Adressen sich doch schnell ändern. Dh. ist die Adresse noch erreichbar oder ist eine ungültige Adresse (Broken Links) eingegeben. Man könnte nun einen VB-Macro schreiben der das tut, oder aber das de.wenzlaff.linkchecker Programm starten, das eine Spalte in einer Excel-Datei automatisch validiert und alle nicht erreichbaren bzw. falschen Adressen ausgibt. So kann mit einen Aufruf die ganze Datei überprüft werden.

Das wollen wir mal an einem Beispiel auf einem Raspberry Pi ausführen. Das würde analog natürlich auch auf Windows oder einem Mac laufen.

Wir haben diese Excel Testdatei. Die 3. Spalte, also Spalte C enthält Internet-Adressen die alle überprüft werden sollen. Alle anderen Spalten sind nicht relevant. Die Excel-Datei wir auch nicht verändert.

Voraussetzung ist, das auf dem Rechner Java installiert ist. Also ein java -version muss eine gültige Version >= 8 liefern und wer den aktuellen SNAPHOT holt, braucht mind. Java 11: „Internet Adressen bzw. Links in Excel-Dateien in 5 Minuten überprüfen mit dem de.wenzlaff.linkchecker“ weiterlesen

Beispiel Verwendung des Maven Plugin: de.wenzlaff.command.maven.plugin

Vor einiger Zeit hatte ich hier mal beschrieben, wie ein einfaches Maven-Plugin erstellt werden kann, dass alle Kommandozeilen Parameter im Log ausgibt z.B. ls, ps, ls -la. So können im Build-Prozess Verzeichnisse oder Prozesse überwacht werden.

Wer aber nur das Kommandozeilen Plugin nutzen will, kann dieses mit ein paar Zeilen in der pom.xml tun, da das Plugin auf Maven-Central frei verfügbar ist.

Squirrel (Sciurus vulgaris) in der 3.Etage am 15.01.2020

Einfach die pom.xml um folgende Zeilen ergänzen: „Beispiel Verwendung des Maven Plugin: de.wenzlaff.command.maven.plugin“ weiterlesen

„Maven Command Plugin“ nun in Version 0.0.1 auf MavenCentral verfügbar

Das „Maven Command Plugin“ ist nun in Version 0.0.1 auf MavenCentral hochgeladen und verfügbar.

Über diese Koordinaten kann das Plugin eingebunden werden:

Und hier ist es zu finden:

Refactoring eines Maven-Plugins mit Dependency Injection

Das hier erstellt Maven-Plugin, kann noch etwas refactored werden mit Nutzung von Dependency Injection.

Always rejoice, mit freundlicher Genehmigung meines Lieblingskünstlers

Die Methode im Mojo kann in eine eigene Klasse CommandProviderApi verschoben werden. Ein neues Interface CommandProvider kann erstellt werden. Die erstellen wir hier:

1. Das Interface: „Refactoring eines Maven-Plugins mit Dependency Injection“ weiterlesen

Ein eigenes Maven-Plugin in 15 Minuten inklusive Dokumentation erstellen

Ein eigenes Maven-Plugin zu erstellen ist nicht schwer und ist schnell gemacht. Wir wollen ein Plugin welches einen Verzeichnis Inhalt mit ls -la in das Log schreibt erstellen. Es können aber auch andere Linux Befehle übergeben werden. Hier nun die 6 Schritte mit den Vorlagen die mind. nötig sind.

Freut euch immer
Always rejoice, mit freundlicher Genehmigung meines Lieblingskünstlers

1. Wir legen in Eclipse ein neue Maven Projekt mit Java 1.8 an. mit Artifact Id und Group Id de.wenzlaff.command.maven.plugin

2. In der pom.xml fügen wir die folgenden Abhängikeiten hinzu: „Ein eigenes Maven-Plugin in 15 Minuten inklusive Dokumentation erstellen“ weiterlesen

Quicktest: JUnit 5.6.0 – „Freut euch immer“

Vor zwei Tagen wurde die neue JUnit Version 5.6.0 veröffentlicht.

Also die BOM aktuallisieren:

Und ein kleiner Test mit zwei Projekten: „Quicktest: JUnit 5.6.0 – „Freut euch immer““ weiterlesen

Wie kann das funktionsreiche Analysetool bettercap auf einem Raspberry Pi installiert werden? Oder sehen was zu Weihnachten im Netz los ist.

Bettercap ist in Go implementiert. Es gibt viele Module, darunter solche für DNS-Spoofing, Netsniffing, Wifi-Analysen und Wake-on-LAN.

Ok, dann mal eben in 30 Minuten auf einem Raspberry Pi W Zero installieren:

Ergebniss:

So, dann steht nun nichts mehr einer MITM attack im Wege, weitere Infos hier oder auf der Projektseite.

Quicktest der neuen Eclipse 2019-12 IDE –>OK „Freut euch immer“

Mitten in meinem Indien Urlaub ist eine neue Eclipse Version veröffentlich worden.

Dann mal gleich die neue Repo. URL unter
Window > Preferences > Install/Update > Available Software Sites
hinzugefügt

https://download.eclipse.org/releases/2019-12/

und start des Updates. In der Zwischenzeit (1 Minute) kann mein Urlaubsvideo angeschaut oder ein paar Infos darüber gelesen werden. Oder die zwei neuen Videos in engl. über die Änderungen im Java / Maven Bereich (10 Minuten) und General und Git (8 Minuten).

So dann mal ein Quicktest nach dem Restart der neuen IDE. Der Start scheint gefühlt wieder länger zu dauern. Ein erster JUnit Test, ok:

Jetzt ist auch ein neues Maven 3.6.3 mit dabei und eine bessere JDK 13 Unterstüzung.

Also dann „Freut euch immer“ …

Neues „abgeschirmtes“ Brillen-Gehäuse mit Magnetverschluss für eine Raspberry Pi Zero W für lau

Der Raspberry Pi Zero W wohnte ja seit über einem Jahr in einem Duschbad und dient als GIT-Server auf USB-Stick ua.

Ein Nachteil war, das das Gehäuse nicht lichtdicht ist und das Flackern der LED sichtbar war. Also muss er da nun ausziehen: „Neues „abgeschirmtes“ Brillen-Gehäuse mit Magnetverschluss für eine Raspberry Pi Zero W für lau“ weiterlesen

Dork mit sqliv auf dem Raspberry Pi unter Debian

Eine Google-Dork-Abfrage (oder Bing, …) beziehungsweise abgekürzt ein Dork ist eine spezielle Suchabfrage, die fortgeschrittene Parameter von Suchmaschinen wie Google, Bing usw. nutzt, um Informationen aus einer Webseite herauszufiltern, die anders nicht so leicht verfügbar wären. Dazu gehören auch Informationen, die nicht für die Öffentlichkeit gedacht sind und die nur unzureichend geschützt wurden.

Google-Dorking ist ein passiver Angriff, mit dem sich Nutzernamen, Passwörter, E-Mail-Adressen, geheime Dokumente, private Finanzdaten und Sicherheitslücken auf Webseiten herausfinden lassen.


Mit dem sqliv ist es leicht solche Abfragen zu automatisieren.

Wie kann das Python-Script auf Debian (wozu Kali 😉 installiert werden: „Dork mit sqliv auf dem Raspberry Pi unter Debian“ weiterlesen

Für SQL Injection, Penetration Testing und mehr den sqlmap auf dem Raspberry Pi in 5 Minuten installieren

Für SQL Injection, Penetration Testing und mehr kann der sqlmap auf dem Raspberry Pi in 5 Minuten installiert werden. Es muss ja nicht immer Kali-Linux sein. Auch auf einem Debian geht es einfach mit:

sudo apt-get install sqlmap

und schon kann es los gehen:

splmap -h

„Für SQL Injection, Penetration Testing und mehr den sqlmap auf dem Raspberry Pi in 5 Minuten installieren“ weiterlesen

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:

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:

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

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?

Diesen Flow erstellen:

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

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:

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:

Freut euch immer

1. Ein neues leeres Verzeichnis erstellen und dahin wechseln:

2. Mit folgenden Maven Kommando ein Maven Projekt in ca. 30 Sekunden erstellen

3. Das Projekt compilieren und starten in ca. 40 Sekunden mit:

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: