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
mit Java, Raspberry Pi, SDR, Linux, Arduino, Sicherheit, Blender, Statistik, Krypto und Blockchain
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
OSGI Feeling on Raspberry Pi!
Wenn man auf der Raspberry Pi Konsole ist, kann die Apache Karaf Konsole wie folgt gestartet werden:
1 2 3 4 5 |
# ssh Verbindung mit User openhab auf Port 8101 ssh openhab@localhost -p 8101 # wenn die Passwortabfrage kommt eingeben: habopen |
Nicht ungeduldig werden, beim 1. Aufruf kann es einige Minuten dauer, bis die Konsole startet. Beim 1. Aufruf kommt noch eine Sicherheitsabfrage mit Key, da mit „yes“ bestätigen.
Dann mal alle OpenHAB Bundel listen, um die jeweiligen Versionen anzuzeigen: „OpenHAB2 Apache Karaf Konsole starten – OSGI Feeling on Raspberry Pi“ 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
Am 28.03.2009, also genau heute vor 8 Jahren ist dieser Blog entstanden. Der erste Eintrag, war nicht sehr umfangreich. Und wie die Zeit vergeht.
Dies ist heute der 890. Beitrag. Bisher gibt es 701 Kommentare zu den 890 Einträgen. Das ist dann so im Durchschnitt ein Kommentar zu einem Eintrag. Spam wurde nicht mitgezählt und in der Größenordnung gleich gelöscht.
Ich messe die Besucherzahlen noch nicht lange. Aber hier dennoch die TOP 3:
1. Temperatur Messung mit dem DS18B20 und Arduino Nano
2. Raspberry Pi: MQTT Server mosquitto installieren und Daten in Fhem über MQTT empfangen oder „Wie werte ich Haustür klingeln aus?“
3. Wie wird ein Bluetooth Dongle an einem Raspberry Pi in Fhem integriert?
Warum der Eintrag mit der Temperatur-Messung so oft gelesen wurde, kann ich mir nicht erschließen, da es doch für alles eine App gibt, und die Zeit der Wetterstationen meiner Meinung nach vorbei ist. Ich habe meine jedenfalls im Flur und auf der Terrasse abgebaut!
Ich möchte mich hiermit bei allen Lesern und Kommentargebern bedanken.
Würde mich auf einen Kommentar, Anregung, Kritik, Gastbeitrag oder Like freuen!
Oder soll ich diesen Blog zukünftig einstellen? Es gibt ja genung in englischer Sprache.
Ü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
Mit Cucumber können Testfälle schön in Worte beschrieben werden. Hier mal ein schneller quick Einstieg.
Eine Testfall Beschreibung kann in Worten mit der Gherkin Syntax geschehen, z.B diese kalender.feature:
1 2 3 4 5 6 7 8 9 |
Feature: Lebenskalender überprüfen Scenario: Ein Lebenskalender aus der Konsole ausdrucken für Frauen Given eine Frau im Alter von 52 Jahren und 10 Monaten Scenario: Ein Lebenskalender aus der Konsole ausdrucken für Männer Given eine Mann im Alter von 52 Jahren und 10 Monaten |
In Eclipse sind die JUnit-Test auch schön lesbar, z.B.:
Für Eclipse gibt es ein Natural 0.7.6 Plug-In für die *.feature Dateien. Das kann leicht über den Eclipse Marketplace installiert werden:
Einfach alles installieren:
Die Testfall implementierung kann z.B. so aussehen. Dieser Testfall gibt nur einen Kalender auf der Konsole aus, deshalb gibt es nur das Generieren:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
package de.wenzlaff.lebenskalender; import cucumber.api.java.en.Given; /** * Testklasse für den Lebenskalender. * * @author Thomas Wenzlaff * */ public class LebenskalenderCucumber { @Given("^eine Mann im Alter von (\\d+) Jahren und (\\d+) Monaten$") public void generateMann(int jahre, int monate) throws Throwable { Lebenskalender.generate(jahre, monate, false); } @Given("^eine Frau im Alter von (\\d+) Jahren und (\\d+) Monaten$") public void generateFrau(int jahre, int monate) throws Throwable { Lebenskalender.generate(jahre, monate, true); } } |
Eine Testklasse zum starten des Testfalls:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
package de.wenzlaff.lebenskalender; import org.junit.runner.RunWith; import cucumber.api.junit.Cucumber; /** * Testsuite für den Lebenskalender. * * @author Thomas Wenzlaff * */ @RunWith(Cucumber.class) public class StartCucumberTest { } |
Folgende Abhängigkeiten werden in der pom.xml benötigt:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <!-- Cucumber Test --> <dependency> <groupId>info.cukes</groupId> <artifactId>cucumber-junit</artifactId> <version>1.2.5</version> </dependency> <dependency> <groupId>info.cukes</groupId> <artifactId>cucumber-java</artifactId> <version>1.2.5</version> <scope>test</scope> </dependency> |
Das ganze Testprojekt kann auf Github geladen werden.
Eine weitergehende Anleitung auf deutsch gibt es hier.
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
Wer so eine Auswahlbox mit Werten und Tooltip in Excel haben will:
1. Klick im Menü Daten auf Datenüberprüfung „Excel 2016 Mac OS X: Wie werden Auswahllisten erstellt?“ weiterlesen
Mindmap zum Raspberry Pi Zero W.
In der Mac OS X Version von Excel 2016 werden die Entwicklertools wie folgt eingeschaltet. Normal ist dieser Reiter nicht sichtbar:
1. Im Menü – Excel – Einstellungen gehen:
2. Auf Ansicht klicken. „Excel 2016 Mac OS X: Wie werden die Entwicklertools angezeigt?“ 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
Wenn man vom Mac aus auf einen entfernten Raspberry Pi (Zero W) zugreifen will, kann man das auch ohne jedesmal ein Passwort eingeben zu müssen. Dafür kann das Public RSA Key Verfahren verwendet werden.
Dazu muss auf dem Pi ein .ssh Verzeichnis mit einer authorized_keys Datei angelegt werden:
1 2 3 4 |
cd .ssh touch authorized_keys chmod 700 ~/.ssh/ chmod 600 ~/.ssh/authorized_keys |
Dann in der /etc/ssh/sshd_config des Pi die folgenden Einträge setzen:
1 2 3 4 5 6 7 |
sudo vi /etc/ssh/sshd_config RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile %h/.ssh/authorized_keys PasswordAuthentication yes |
Dann den SSH Service restarten und in der Konsole bleiben.
1 |
sudo /etc/init.d/ssh restart |
Dann einmalig auf dem Mac einen RSA Key mit der Größe von 2048 anlegen.
Dazu bin ich in das .ssh Verzeichnis gewechselt und habe einen Key nur für die Pis ohne Passwort wie folgt angelegt:
1 |
ssh-keygen -b 2048 -t rsa |
Bei der Nachfrage nach einem Passwort, einfach nur Enter eingeben.
Da ich mehrere Keys in Verwendung habe, habe ich den Key in einer neuen Datei gespeichert, z.B. pi_id_rsa
Es werden nun zwei Dateien generiert, die pi_id_rsa mit dem privaten Key und die pi_id_rsa.pub mit dem public key.
Da mein default Key im Mac ein anderer ist, habe ich in der ~/.ssh/config Datei des Macs, wie hier schon mal beschrieben, um den folgenden Eintrag IdentityFile mit dem Namen für den privaten Key für die Verwendung des eben generierten Key und nicht des default Keys eingetragen:
1 2 3 4 5 |
Host zero HostName pi-zero Port 22 User pi IdentityFile ~/.ssh/pi_id_rsa |
Weitere Optionen zur ~/.ssh/config gibt es in der umfangreichen Referenz.
Jetzt noch den Key vom Mac auf den Pi kopieren damit er in der ~/ssh/authorized_keys Datei eingetragen wird, dazu in das ~/.ssh Verzeichnis wechseln und:
1 |
cat pi_id_rsa.pub | ssh pi@zero 'cat>>.ssh/authorized_keys' |
Jetzt von einer anderen Konsole testen ob alles läuft.
Wenn das Anmelden mit:
1 |
ssh zero |
ohne Passwort nachfrage klappt ist alles ok. Sonst in der anderen Konsole fixen, sonst sperrt man sich selbst aus.
Habe ich was vergessen?