Wer mal eben einen QR-Code braucht, das geht über die Kommandozeile vom Raspberry Pi mit curl qrenco.de/TEXT-TEST-QR-CODES z.B.
1 |
curl qrenco.de/www.kleinhirn.eu |
Das Ergebnis:
Wenzlaff.de – Rund um die Programmierung
mit Java, Raspberry Pi, SDR, Linux, Arduino, Sicherheit, Blender, KI, Statistik, Krypto und Blockchain
Anleitungen zu allen Themen.
Beim Raspberry Pi und anderen Rechnern reicht ein:
1 |
curl wttr.in |
von der Kommandozeile oder im Browser:
Mit Excel kann schnell ein Netz oder Radardiagram erzeugt werden. Hier mal ein Beispiel Diagramm.
Wir nehmen mal von Wikipedia (https://de.wikipedia.org/wiki/Deutsches_H%C3%A4mophilieregister) ein paar Beispiel Daten für eine Beispieltabelle (Hämophilie Mindmap).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Gesamtzahl aller gemeldeter Patienten in Deutschland Jahr Hämophilie A Hämophilie B Willebrand-Jürgens-Syndrom 2008 2995 537 984 2009 3156 567 1094 2010 3400 620 1231 2011 3483 612 1659 2012 3706 711 2124 2013 3823 707 2296 2014 3991 709 3515 2015 3690 673 3930 2016 2228 413 3532 2016 Vorläufig |
Die Tabellen-Daten fügen wir in ein Excel Blatt ein „Excel Quickie: Wie kann ein Netzdiagramm oder Radardiagramm mit Excel erzeugt werden?“ weiterlesen
Das geht nicht nur in der aktuellen Eclipse Version, sondern schon etwas länger.
Einfach die folgenden drei Tasten drücken: Alt + Cmd + Pfeil nach unten und schon wird die Zeile wo der Cursor steht kopiert.
Das geht für Java
und auch für XML usw. „Wie kann eine Zeile in Eclipse schnell dupliziert werden?“ weiterlesen
Also mal testen ob alle läuft? Kleine Änderung in der pom.xml
1 2 3 4 |
<junit.version>4.12</junit.version> <junit.jupiter.version>5.4.0</junit.jupiter.version> <junit.vintage.version>5.4.0</junit.vintage.version> <junit.platform.version>1.4.0</junit.platform.version> |
Dann mal zwei Projekt umstellen. Siehe da, die Buildpipeline laufen auch noch wie erwartet:
und die auch „Letzte Woche wurde das JUnit 5.4.0 Release veröffentlicht“ weiterlesen
Wir wollen nun mal auf dem Raspberry Pi ein C Programm mit dem Make-Tool cmake auf dem Pi compilieren und linken.
Gemäß Wikipedia ist CMake (cross-platform make) eine plattformunabhängiges Programmierwerkzeug für die Entwicklung und Erstellung von Software.
Dazu erstellen wir ein neues Verzeichnis und legen dort die Builddatei CMakeLists.txt an und führen cmake aus.
Also 1. ein Verzeichnis anlegen und dahin wechseln
1 2 |
mkdir cmake-beispiel cd cmake-beispiel |
2. Erstellen einer C Beispiel Datei start.c mit folgenden Inhalt:
1 2 3 4 5 6 |
#include <stdio.h> int main() { printf("Hallo Thomas, cmake ist cool!"); return 0; } |
3. Erstellen einer CMakeLists.txt Datei. Achtung Groß und Kleinschreibung genau so. Mit folgenden Inhalt:
1 |
add_executable(startthomas start.c) |
Diese Anweisung besagt, das die start.c compiliert werden soll und das das Programm dann startthomas heißen soll.
4. Nun können wir das Projekt konfigurieren mit cmake .
5. Das Projekt übersetzen mit make
6. Nun können wir das erzeugte Programm startthomas ausführen ./startthomas
Hier das Ergebnis: „Quick-Howto: Erzeugung von Makefiles mit cmake auf dem Raspberry Pi“ weiterlesen
Im Debian Repo liegt für cmake nicht die neueste Version. Für ein Projekt brauche ich aber cmake mind. 3.13. Deshalb hier eine Anleitung wie die neueste Version von cmake selbst erstellt und installiert werden kann.
Deshalb erst mal die evl. installierte Version von cmake ausgeben:
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 |
cmake --version # Ergebnis cmake version 3.7.2 # Ok, wir müssen uns die aktuelle Version holen und selbest compilieren. # Das dauert auf dem Pi aber ca. eine Stunde. mkdir Download-cmake cd Download-cmake # Gewünschte Version von https://cmake.org/files/ holen, in diesem Beispiel 3.13.4 wget https://cmake.org/files/v3.4/cmake-3.13.4.tar.gz # Archive entpacken tar -xvzf cmake-3.13.4.tar.gz # In das Verz. wechseln cd cmake-3.13.4/ # Konfigurieren sudo ./bootstrap # make und install ... eine Stunde später ... sudo make sudo make install # Nun checken wir die Intallation cmake --version # Ergebnis # cmake version 3.13.4 |
Wie kann eine User Aktion mitgelesen werden, die ein User im Browser tätigt? Also wie können wir die URLs usw. mitlesen, die von und zu einem Browser gehen? Das alle von der Konsole aus z.B. mit einem Raspberry Pi? Das hatte ich schon mal vor 5 Jahren nicht ganz so ausführlich hier beschrieben. Noch mit tshark 1.12. jetzt mal mit 2.6.5. Hier ein kleiner Einblick in die Arbeit eines Pentesters.
Also zu erst der User Task, er ruf in einer Konsole die URL www.wenzlaff.info auf. Dafür benutzen wir den Browser lynx. Wenn der noch nicht auf dem Pi installiert ist, kann das schnell mit einem sudo apt-get install lynx durchgeführt werden. Dann der erste Test, Aufruf:
lynx www.wenzlaff.de „User Webseiten Sniffing mit tshark auf einem headless Raspberry Pi oder „Dump and analyze network traffic with tshark““ weiterlesen
Wieviel Strom verbraucht der CC2531 am Raspberry Pi? Ich hatte ja vor ein paar Tagen schon 2 Beiträge dazu geschrieben. Die grüne LED ist sehr hell und dennoch …
0.00 Ampere im Leerlauf ist nicht viel. Dann mal ein anderes Messgerät … „Stromverbrauch des CC2531 Sniffer Protocol Analyzer Wireless Module USB (ZigBee) am Raspberry Pi“ weiterlesen
Whsniff ist ein Kommandozeilen Werkzeug für das TI CC2531 USB Dongle für IEEE 802.15.4 Traffic bei 2.4 GHz. Es läuft auf dem Raspberry Pi unter Linux (unter Windows geht wohl auch mit SmartRF von TI).
Und es erzeugt Datein im freien pcap Format (packet capture) für tshark und Wireshark.
Der USB Dongel, Details „whsniff ein Packet Konverter für Sniffing im IEEE 802.15.4 Wireless Sensor Networks (ZigBee) bei 2.4 GHz“ weiterlesen
Was ist den da aus der Bucht schönes angekommen? Oh ein CC2531 (Datenblatt (PDF)) Sniffer Protocol Analyzer Wireless Module USB Interfac Stable for ZigBee
Links der USB Anschluss und rechts ist die Antenne gut zu erkennen.
„CC2531 Sniffer Protocol Analyzer Wireless Module USB Interfac Stable For ZigBee for Raspberry Pi“ weiterlesen
Es gibt 6 State im Enum:
Es gibt mind. diese Status:
Hier mal ein Beispiel, für einige Status. Die Thread-Klasse die nur 5 Sekunden warte: „Java Thread – 6 State oder wie starten wir ein einfaches Java Programm auf dem Raspberry Pi“ weiterlesen
Vor ein paar Tagen hatte ich geschrieben, wie mit rules von openHAB über Alexa eine Sprachausgabe gemacht werden kann. Die rules wollte ich nun ersetzen durch einen nodeRED Flow. Das geht ganz einfach. Hier ein Beispiel Flow der jeden Abend um 10:30 Uhr den Text ausgibt, das ich in Bett gehen soll, damit ich morgen wieder fit bin.
Der Flow kann von nodered.org heruntergeladen werden.
Folgende Einstellung ist da wichtig, damit es auch läuft: „Raspberry Pi: Alexa Echo Sprachausgabe via Raspberry Pi und openHAB 2 ohne rules mit nodeRED“ weiterlesen
Wie kann man eine Sprachausgabe über Alexa Echo machen wenn die Tür aufgeht? Bei mir kommt z.B. eine Ansage von Alexa „Die Haustür ist geöffnet worden“ oder „Die Haustür wurde geschlossen„. Das läuft bei mir analog auch für die Fenster, alles mit Kontakten von Homematic und einem CUL im USB des Pi.
Wenn openHAB 2 läuft, braucht man nur eine Rules Datei: /etc/openhab2/rules/Alexa.rules mit folgenden Regeln kopieren: „Alexa Echo Sprachausgabe via Raspberry Pi und openHAB 2“ weiterlesen
Wenn man auf dem Pi eine Datei sucht, kommt es oft vor, das vielen Meldungen „Keine Berechtigung“ ausgegeben wird. Z.b. wenn nach der Datei passwd auf dem ganzen Rechner gesucht wird mit:
find / -name „passwd“
Dann erscheinen auch hunderte Einträge wie diese, und da findet man dann nicht so leicht den gesuchten Eintrag:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
find: ‘/var/spool/postfix/active’: Keine Berechtigung find: ‘/var/spool/postfix/flush’: Keine Berechtigung find: ‘/var/spool/postfix/incoming’: Keine Berechtigung find: ‘/var/spool/postfix/defer’: Keine Berechtigung find: ‘/var/spool/postfix/saved’: Keine Berechtigung find: ‘/var/spool/postfix/private’: Keine Berechtigung ... find: ‘/var/spool/postfix/public’: Keine Berechtigung find: ‘/var/spool/rsyslog’: Keine Berechtigung find: ‘/var/spool/cron/atjobs’: Keine Berechtigung find: ‘/var/spool/cron/atspool’: Keine Berechtigung find: ‘/var/spool/cron/crontabs’: Keine Berechtigung find: ‘/var/cache/apt/archives/partial’: Keine Berechtigung |
Was tun? „„Keine Berechtigung“ mit find auf dem Raspberry Pi unterdrücken“ weiterlesen
Sicherung von Daten ist ja immer gut. Wenn dann mal die SD-Karte crasht, kann man sein openHAB 2 wieder herstellen. In openHAB 2 ist eine Backup und Restore Funktion integriert.
Man braucht nur das Backupscript aufrufen:
1 |
sudo $OPENHAB_RUNTIME/bin/backup |
und das Passwort eingeben: „Backup und Restore von openHAB 2 auf dem Raspberry Pi“ weiterlesen
Mit einem SDR kann man Frequenzen überwachen. Mit rtl_power kann man dann CSV Dateien schreiben und diese dann mit einem Python Script in eine schöne übersichtliche Wasserfall Grafik umwandeln. Da kann man dann leicht sehen was für Aktivität auf den jeweiligen Frequenzen los war. Hier in Hannover ist halt nicht so viel los. Und das alles auf einen kleine Raspberry Pi.
Ich hatte vor einem Jahr schon mal davon berichtet, wie das mit meinem Java Programm geht. Nun wollte ich mal das Python Script ausprobieren was ich auf GitHub gefunden habe.
Wir nehmen mal die ACARS Frequenzen, andere siehe in dieser Tabelle.
Hier ein Auszug was so auf den Frequenzen läuft:
1 2 3 |
131,525 ACARS Europa Sekundär 131,725 ACARS Europa Primär 131,825 ACARS Europa Sekundär |
Wir starte rtl_power im Frequenzbereich 131 MHz bis 132 MHz, schreiben alle 10 Sekunden das Ergebnis in 1 KHz Schritten in die airband-131.000-131.999M-1k-12h.csv Datei und lassen das ganze 12 Stunden laufen. Als Korrekturfaktor gebe ich 48 ppm mit, das ist für andere Sticks natürlich ein anderer Wert, kann aber auch weggelassen werden.
1 |
rtl_power -f 131.000M:131.999M:1k -g 30 -i 10 -e 12h -p 48 airband-131.000-131.999M-1k-12h.csv |
Dann wandeln wir die erzeugte CSV Datei mit dem Python Script heatmap.py um. Wir schreiben alle 15 Minuten für die Y-Achse einen Zeit-Label und verwende die twente Palette, die gefällt mir am Besten:
1 |
python heatmap.py --ytick 15 --palette twente airband-131.000-131.999M-1k-12h.csv airband-131.000-131.999M-1k-12h-besch-twent.jpg |
An dem Diagramm sehen wir auch, das der Scann-Prozess nach 3 Stunden abgebrochen ist. Aber drei Stunden reichen auch:
Es können auch noch andere Paletten verwendet werden: „SDR auf den Pi: Generieren von Wasserfall Diagrammen mit rtl_power und heatmap.py nicht nur für ACARS Frequenzen“ weiterlesen
Für manche (SDR) Projekt wird die FFTW Lib für die Diskrete Fourier-Transformation (DFT) benötigt. Die kann auf dem Raspberry Pi in ca. 1 Stunde installiert werden. Der Compile dauert halt auf dem armv6 etwas.
Das geht so … „Diskrete Fourier-Transformation (DFT) mit FFTW 3.3.8 auf dem Raspberry Pi compilieren und installieren“ weiterlesen
Homeautomatisation ist bei mir schon Jahre im Einsatz. Das Thema hat mich schon immer sehr interessierte.
Die Dinge einfacher machen. Simplify your life oder besser: Simplify your Homeautomatisation.
Da die Bude wieder mal kalt war, weil die Heizung ausgefallen ist, habe ich den Homatic Raumthermostat und auch das Heizungsventil entfernt und wieder ein Manuelles Ventil eingebaut. Das Homatikventil werde ich bei Gelegenheit mal zerlegen. Alle Jahre wieder, war die Batterie leer, dann musste alles wieder neu angelernt (gepeert, gepairt …) und Programmiert werden usw. Und das immer dann, wenn man gerade keine Zeit oder Lust hat, oder Besuch da ist und der dann im kalten sitzt. Das war auch so bei Fhem. Bin aber schon lange auf openHAB umgestiegen.
Und zum Jahreswechsel von openHAB auf openHAB 2. Da ist auch wieder alles anders. Auch einige Anpassungen in den *.rules sind nötig. Bei der Gelegenheit habe ich alle gelöscht und habe für die relevanten Rules NodeRED Flows erstellt. Das geht ziemlich gut wenn man schon mit NodeRED Erfahrung hat.
Hier mal ein Beispiel, die vorhandene Regel, die beim öffnen der Tür eine Pushover auf unsere Handys sendet. Und für die musste auch für openHAB nach openHAB 2 einige Anpassungen gemacht werden (imports, pushover Methode …).
Hier der NodeRED Flow, der für zwei Türen und ein Fenster bei jeder Aktion eine Pushover Nachricht versendet.
Die openHab2 Nodes sind echt cool. „2019: OpenHAB Rules durch NodeRed Flow auf dem Raspberry Pi ersetzen oder „Simplify your Homeautomatisation““ weiterlesen
Wenn auf einem im Netz laufenden Raspberry Pi per tcp zugegriffen werden soll, wie hier beschrieben um gnuradio Flows zu erstellen geht das durch starten von:
gnuradio-companion
Dieses kann zuvor mit sudo port install gnuradio installiert werden.
Dann den ersten Flow eines SDRs erstellen. Download des Beispiel Scriptes aus meinen GitLab Projekt. Nur noch die IP-Adresse des Pis anpassen. Es steht dort ein TODO. Oder zur Übung selbst erstellen:
Nach klick auf Start, sind die beiden Tabs mit der Zeit und der Frequenz sichtbar:
„GnuRadio Beispiel Script mit gnuradio-companion erstellen“ weiterlesen