Ü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
Wenzlaff.de – Rund um die Programmierung
mit Java, Raspberry Pi, SDR, Linux, Arduino, Sicherheit, Blender, Statistik, Krypto und Blockchain
Anleitungen zu allen Themen.
Ü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
Da ich hier beschrieben habe wie die Flugdaten mit einem Raspberry Pi an einen MQTT Server gesendet werden, habe ich mal gleich die neu Version vom MQTT.fx 1.3.1 Client geladen und getestet. Er hat jetzt auch ein dark Thema:
Ihr könnt es auch leicht testen. Verwendet den test.mosquitto.org und subscribe /Anzahl/Flugzeuge/Hannover dann habt ihr meine Flugdaten vom Raspberry Pi. Cool oder?
Vor einiger Zeit, hatte ich schon mal beschrieben, wie mit jq Flugdaten mit einen Raspberry Pi an Thingspeak.com gesendet werden können. Nun wollte ich das mal ablösen und mit Node-RED durchführen. Gesagt getan, erst mal die Architektur:
Nun noch den Flow modellieren:
„Senden von Flugdaten mit dem Raspberry Pi an Twitter und Thingspeak und MQTT (public, private) Server“ weiterlesen
Wie können die Flugdaten an das OpenSkyNetwork gesendet werden? Mit der neuen Software brauch man auch keine Ports usw. im Router freigeben. Einfach den Feed installieren. So wie das auch für die anderen Dienste geht. Hier mal das Ergebnis von eben:
Es ist unten links, gut zu erkennen das der weiteste Empfang 262 km ist. Cool.
Zuerste einen kostenlosen Account bei OpenSkyNetwork anmelden.
Dann wie hier beschrieben die Software auf dem Raspberry Pi installieren. Das geht aber einfacher so …
1 2 3 4 |
# wir holen uns die aktuelle Feeder Software wget https://opensky-network.org/files/firmware/opensky-feeder_latest_armhf.deb # und installieren die sudo dpkg -i opensky-feeder_latest_armhf.deb |
Es kommen dann noch die folgenden Setup Dialoge, die natürlich mit den eigenen Werten angepasst werden müssen:
Zuerst den Breitengrad, (Latitude) wo man wohnt:
Dann die Longitude (Längengrad): „Raspberry Pi: Flugdaten mit DUMP1090 an OpenSkyNetwork senden“ weiterlesen
Auf meinem Raspberry Pi läuft Node-Red. Nun wird seit einiger Zeit die Node-RED-Contrib-UI Gui nicht weiter entwickelt. Also mal die passende Gelegenheit es zu löschen und den Nachfolger das Node-RED-Dashboard zu installieren. Der Node hat eine schöne GUI, wie diese Bilder zeigen. Er läuf ab Node-RED version 0.14.
Vor dem update nicht vergessen, die alten Flows zu sichern.
1 2 3 4 5 6 |
# den alten Node löschen cd ~/.node-red sudo npm uninstall node-red-contrib-ui # den neuen installieren sudo npm install node-red-dashboard sudo reboot |
Nun können die neuen GUI-Elemente verwendet werden, hier links die verfügbaren Elemente.
„Upgrade von Node-RED-Contrib-UI nach Node-RED-Dashboard“ weiterlesen
Wie können die Menü Einträge, für die Digispark AVR Boards in der Arduino IDE ergänzt werden? Evl. fehlen diese Einträge im Menü: „Werkzeuge – Board“
Dann in dem Menü: „Arduino – Einstellungen“ auf den Button „Zusätliche Boardverwalter-URLs“ klicken und die folgende URL ergänzen:
URL:
1 |
https://raw.githubusercontent.com/digistump/arduino-boards-index/master/package_digistump_index.json |
Nun noch unter dem Menüeintrag: „Werkzeuge – Board – Board Verwalter …“ den Digistump AVR Boards auswählen und installieren:
Schon sind die Menüeinträge vorhanden. Dann kann der ATTINY85 ja geflasht werden.
Für 1,28 Euro inkl. versand aus China eingetroffen …
… und von hinten:
Hier ein paar tech. Daten vom Anbieter.
1 2 3 4 5 6 7 8 9 10 11 |
Support for the Arduino IDE 1.0+ (OSX/Win/Linux) Power via USB or External Source - 5v or 7-35v (automatic selection) On-board 500 mA 5V Regulator Built-in USB (and serial debugging) 6 I/O Pins (2 are used for USB only if your program actively communicates over USB, otherwise you can use all 6 even if you are programming via USB) 8k Flash Memory (about 6k after bootloader) I2C and SPI (vis USI) PWM on 3 pins (more possible with Software PWM) ADC on 4 pins Power LED and Test/Status LED (on Pin0) Size: 1.8 cm x 2.6 cm |
Dann mal an dem Raspberry Pi anschließen, aber nicht mehr heute. Oder andere Ideen?
Habe eine USB-Ladegerät, das von der Größe her auch als Gehäuse für den Raspberry Pi dienen könnte. Dann hätte man das Netzteil und den Pi zusammen. Also mal wieder ein Bastelprojekt. So sieht das Teil aus:
Und von unten mit CE Zeichen aus China:
Achtung! Netzspannung! Lebensgefahr! Nur von „Passt der Raspberry Pi in das USB-Netzteil-Gehäuse (JCMASTER)?“ weiterlesen
Manchmal will man sehen, was alles so in einer compilierten Java Datei steckt. Nicht immer hat man den Quelltext. Auch für die Fehlersuche ist ein Disassembler mal ganz gut.
In jedem JDK ist auch ein Disassembler javap dabei. Denn wollen wir nun einmal auf eine unbekannte Java Class Datei loslassen, um zu sehen, was es so zu sehen gibt.
Zuerst loggen wir uns auf die Kommandozeile eines Raspberry Pi ein, auf dem ein Java JDK installiert ist. Ob Java installiert ist kann mit
1 |
java -version |
getestet werden. Wenn dort eine Versionsangabe geliefert wird, ist alles ok.
Dann legen wir erst mal ein Testverzeichnis an und wechsel in das Verzeichnis:
1 2 |
mkdir java-test cd java-test |
Dann holen wir uns in das Verzeichnis eine unbekannte Flugzeug.class Datei (der Quellcode ist hier zu finden):
1 |
wget http://blog.wenzlaff.de/wp-content/uploads/2017/01/Flugzeug.class |
Diese Datei wollen wir nun disassemblieren, mit
1 |
javap Flugzeug.class |
Schon bekommen wir alle gewünschten Informationen:
Nun schauen wir uns mal alle Möglichkeiten an: „Mit dem Raspberry Pi den Java Class File Disassembler (javap) aufrufen“ weiterlesen
Vorgestern ist mein neues Gadget, das man für 7,40 Euro inkl. Versand aus China bekommen kann eingetroffen. Hier mal die Daten von der Ladung eines iPadMini:
Das ist ja schon interessant, wie unterschiedlich meine USB Ladegerät den Strom liefern. Kein wunder das mache doppelt solange laden. Ich bin nun gespannt, wie es mit dem Raspberry Pi aussieht. Nur heute will ich keinen vom Netz trenne, es ist ja kein Cubi, der jeden Tag gebootet werden muss 😉
Bei der Benachrichtigung stören solche Ausbildungsflüge:
Bei denen will ich nicht per Pushover benachrichtigt werden. „Raspberry Pi: Flugzeuge Erfassung jetzt mit Blacklist in Version (0.0.7) auf Maven Central veröffentlicht“ weiterlesen
Für meinen Raspberry Pi brauche ich nun eine Sprachausgabe da Karotz gestorben ist. Ich habe noch einen < 5 Euro Bluetooth Speaker aus der China-Bucht liegen. So ein Teil:
Denn wollte ich nun drahtlos anbinden.
Dazu verwende ich für den Raspberry Pi den folgenden Bluethooth USB-Adapter, denn ich schon mal mit Fhem angebunden hatte.
Das ist schnell gemacht! „MP3 und WAV Dateien mit einem Raspberry Pi über Bluetooth (Drahtlos) abspielen“ weiterlesen
Mein heutiges Raspberry Pi Projekt soll einfach eine Pushover Nachricht auf alle Handys und iPads versenden, wenn ein Kaffee gekocht wurde. So kann ich immer sehen, wieviele Kaffee ich so am Tag getrunken habe und wann.
Es wird ein Homematik „Pushover Nachricht mit dem Raspberry Pi versenden wenn ein Kaffee (قهوة) gekocht wurde via OpenHab“ weiterlesen
Zuerst die 4 Schrauben unten entfernen, dann sieht er schon mal nackt aus:
Eine Handvoll weitere Schrauben entfernen und man sieht schon mehr:
Links ist der RFID Reader, in der Mitte das Mainboard und rechts das WIFI: „Karotz en détails – Requiescat in pace“ weiterlesen
Dazu einfach das Tool Digital Color Meter starten:
Nun wird der Farbwert angezeigt, wo die Maus hinzeigt: „Wie können Farbwerte auf einem Mac OS X 10.12.2 Sierra angezeigt werden?“ weiterlesen
Das geht nicht mit der Funktion Einfügen – Feldbefehlt – Seitennummer wie eigentlich erwartet, sondern über die Funktion:
Einfügen – Feldbefehlt – Andere – Variablen – Nummernkreis
einfügen in die Kopfzeile:
Wenn der Seriendruck-Assistent gestartet wird, muss das generierte Dokument als ein Dokument gespeichert werden.
Nach der Info musst ich aber schon etwas suchen 😉 Aber es geht zumindestens 🙂
Cooler Step-Down Regle aus China eingetroffen. Was man so für 1,99 Euro inkl. Versand aus der Bucht bekommt! Hier mal das erste Foto:
Hier die angegebenen Daten:
1. Input Voltage range:4~40 VDC
2. Output voltage range:1.25-37 VDC adjustable
3. Output current:2A
4. Voltmeter range: 0 to 40V, error ±0.1V
5. Input reverse polarity protection
6. Built in output short protection function
7. Built in thermal shutdown function
8. L x W x H = 6.1*3.4*12 cm
9. Weight: 22g
10. LEDdigital voltmeter tube, the accuracy is adjustable function, can be aimed at your multimeteradjustable accurate.
11. Press the rightkey to let the display show the input or output voltage. when the right “OUT” led light, it shows output, the left “IN” led show input.
Ok, dann mal der erste Test. Mal als Eingangsspannung eine 9 Volt Batterie angeklempt, die Eingangsspannung kann auch angezeigt werden:
Wahlweise wird auch die Ausgangsspannung angezeigt. Die kann über das Poti verändert werden. Cool!
Dann werde ich mal einen Raspberry Pi anschließen oder was anderes …
Auf der Platine ist ein LM2596 verbaut, das Datenblatt von TI gibt es hier.
Hier noch die Anleitung und ein Hinweis wenn es nicht „geht“: „Für 1,99 Euro inkl. Versand aus China eingetroffen: DC-DC Spannungsregler LM2596 Step-Down Regler einstellbar mit LED Voltmeter“ weiterlesen
Wie können mit Java PDF Dokumente erzeugt werden?
Das geht mit ein paar Zeilen Code und iText. Die iText Lib läßt sich leicht integrieren. Hier mal ein Beispiel um ein paar Daten zu haben, nehmen wir mal einen Lebenskalender. Der ganze Code (nur eine Java Klasse) liegt auf Github und kann von dort geladen werden.
Also mal ein neues Mavenprojekt anlegen und in der pom.xml die iText Abhängigkeit einfügen:
1 2 3 4 5 |
<dependency> <groupId>com.lowagie</groupId> <artifactId>itext</artifactId> <version>4.2.0</version> </dependency> |
Dann mal ein paar Zeilen Javacode für die PDF Erzeugung z.B. so:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
private static void printPdfDokument(List<String> kalender) throws DocumentException, FileNotFoundException { Document document = new Document(PageSize.A4); PdfWriter.getInstance(document, new FileOutputStream("lebenskalender.pdf")); document.open(); Font f = new Font(); f.setFamily("Courier"); f.setSize(10); for (String woche : kalender) { document.add(new Paragraph(woche, f)); } document.close(); } |
und schon können wir ein PDF Dokument erzeugen. Hier das Ergebnis lebenskalender.pdf.
Hier mal die Ausgabe auf System.out:
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 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
Lebenskalender Berechne von aktuellem Alter 52 Jahren und 7 Monate Jahre Wochen 0 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 1 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 2 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 3 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 4 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 5 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 6 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 7 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 8 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 9 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 10 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 11 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 12 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 13 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 14 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 15 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 16 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 17 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 18 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 19 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 20 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 21 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 22 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 23 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 24 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 25 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 26 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 27 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 28 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 29 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 30 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 31 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 32 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 33 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 34 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 35 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 36 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 37 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 38 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 39 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 40 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 41 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 42 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 43 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 44 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 45 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 46 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 47 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 48 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 49 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 50 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 51 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 52 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 53 XXXXXXXXXXXXXXXXXXXXXXXXXXXX........................ 54 .................................................... 55 .................................................... 56 .................................................... 57 .................................................... 58 .................................................... 59 .................................................... 60 .................................................... 61 .................................................... 62 .................................................... 63 .................................................... 64 .................................................... 65 .................................................... 66 .................................................... 67 .................................................... 68 .................................................... 69 .................................................... 70 .................................................... 71 .................................................... 72 .................................................... 73 .................................................... 74 .................................................... 75 .................................................... 76 .................................................... 77 .................................................... Lebenserwartung in Deutschland: Männer 77 Jahre 9 Monate Frauen 82 Jahre 10 Monate Statistisch also noch: 27 Jahre als Mann zu leben! |
„PDF erzeugung in 5 Zeilen mit Java am Beispiel eines Lebenskalender“ weiterlesen
Wer für den Raspberry Pi eine HTOP Anzeige mit Temperatur und Frequenz benötigt, kann diese Version installieren. HTOP ist ein freier Prozessmanager für Linux, welcher ua. eine dynamische Übersicht laufender Prozesse und freier/belegter Systemressourcen bietet.
1 2 3 4 5 6 7 8 |
# Archive laden wget https://github.com/wbenny/htop/files/573914/htop_2.0.2-2_armhf.deb.zip # Archive entpacken unzip htop_2.0.2-2_armhf.deb.zip # Deb Archive installieren sudo dpkg -i htop_2.0.2-2_armhf.deb # Optional: wer eine neue Konfigurations Datei benötigt rm -rf ~/.config/htop/htoprc |
Wie können Artifacte wie Jars usw. in das Nexus Maven Central Repository mit einem Mac (Windows analog) hochgeladen werden?
Das geht in 4 Schritten, die hier am Beispiel von de.wenzlaff.dump1090 beschrieben werden.
Zuerste benötigen wir einen Accout bei Atlassian den wir hier beantragen können. Evl. haben wir ja auch schon einen.
Dann müssen wir ein Jira Ticket mit „Create Issue“ erstellen, um eine eindeutige GroupId (z.B. de.wenzlaff) die es noch nicht gibt, zu erhalten, hier ein Beispiel für den Jira Ticket Antrag:
Wenn der Mitarbeiter das freigeschaltet hat (das kann etwas dauern), haben wir eine GroupId reserviert. „Wie können Artifacte nach Maven Central (Nexus) mit einem Mac hochgeladen werden?“ weiterlesen
JUnit Testmethoden sollten so geschrieben werden, das sie unabhängig von anderen Methoden sind. Die Reihenfolge der ausführung der Test-Methoden in einer Testklasse ist auch nicht garantiert und kann von lauf zu lauf unterschiedlich sein. Das ist auch gut so.
Manchmal möche man aber dennoch eine bestimmte Reihenfolge. Dies kann seit JUnit 4.11 mit der @FixMethodOrder(MethodSorters.NAME_ASCENDING Annotation durchgeführt werden.
Die Testklasse wird einfach mit der @FixMethodOrder(MethodSorters.NAME_ASCENDING markiert. Z.B.
Ohne ist die Ausführung z.B.:
Und mit Annotation z.B.:
Wer schöne Grafiken zum Thema Flug-Transponder-Empfang erstellen will, kann das sehr einfach machen. Es werden dann im Browser, z.B. solche Diagramme angezeigt:
Es gibt ein gutes Install-Script (Thanks Ted Sluis) mit dem geht die Installation auf einem Raspberry Pi Debian Jessie sehr einfach. Auch ein Install-Video ist auf der Seite zu finden.
Einfach diese Befehle absetzen: „Raspberry Pi Flugstatistik mit collectd, rrd und dump1090-tool“ weiterlesen
Dump1090 erzeugt auch JSON-Dateien, die periodisch aktualisiert werden und die auch extern verwendet werden können.
Dies sind ua. die folgenden Dateien:
Die genaue Dokumentation ist hier zu finden.
Über den Browser kann man auf diese Dateien z.B. so zugreifen, wenn ein externer Server verwendet wird:
http://(Raspberry Pi Adfresse)/dump1090/data/aircraft.json
im Dateisystem sind sie unter
/run/dump1090-mutability
zu finden.
Die aircraft.json liefert dann z.B. die folgenden Infos: „Raspberry Pi: Dump1090 erzeugt auch JSON-Dateien die extern verwendet werden können“ weiterlesen
Während meiner Weltreise ist auch eine neue Version von MQTT.fx 1.2.0 erschienen.
Was ist neu, hier ein Auszug aus den Release Notes:
-Payload can now be decoded and exported in JSON format
-Topic of received messages can now be copied (and pasted) „MQTT.fx 1.2.0 erschienen“ weiterlesen
Quicktest des 5 Euro Router:
Erst mal checken ob ein Zugang per Telnet geht. Dazu den Router mit Strom über den kleinen USB-Port (weißes Kabel) versorgen und den Netzwerkanschluss anklemmen. Es leuchtet nun die blaue LED.
Auf dem Gerät sind die default Zugangsdaten angebracht:
Ok, dann mal los, „Quicktest: 5 Euro Router – A5-V11 3G/4G Router“ weiterlesen
Habe nun mal ein anders Netzteil verwendet, aber auch nach 3 Tagen ist der Cubi wieder abgestürzt. An der Stromversogung kann es also wohl nicht liegen!
Dann habe ich mir mal den Speicherverbrauch angeschaut, da ich die Vermutung hab, das der Apache2 oder die Mysql den Speicher vollaufen lassen und es zu einem Speicherüberlauf mit Absturz kommt.
Ich habe nun mal Testweise einen CRON Job angelegt, der einmal am Tag ein Reboot durchführt, in der Hoffnung das er dann länger als 3 Tage läuft. Das behebt zwar nicht die Ursache, aber wenn es läuft ist das mal ein Workaround (siehe Bild mit der Telefonzelle) … 😉
Der Cron-Job kann wie folgt angelegt werden und zwar mit root Zugang:
1 |
crontab -e |
und in der letzten Zeile folgenden Eintrag ergänzen. „Auf der Suche, warum der Cubieboard mit Debian Jessie nach ein paar Tagen abstürzt. Teil 3: Workaround tägliches rebooten“ weiterlesen
Will man schnell und einfach HTML-Dateien parsen bzw. auswerten, geht das mit der schönen JSoup-Api. Hier gibt es eine Mindmap für den schnellen Überblick.
Es sind dann nur zwei Zeilen nötig um z.B. den Titel einer Webseite einzulesen:
1 2 |
Document doc = Jsoup.connect("http://reise.wenzlaff.de/reisetabelle/").get(); System.out.println("Der Titel der Website: " + doc.title()); |
Hier mal ein Zitat aus der Orginal Api-Beschreibung:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
jsoup is a Java library for working with real-world HTML. It provides a very convenient API for extracting and manipulating data, using the best of DOM, CSS, and jquery-like methods. jsoup implements the WHATWG HTML specification, and parses HTML to the same DOM as modern browsers do. parse HTML from a URL, file, or string find and extract data, using DOM traversal or CSS selectors manipulate the HTML elements, attributes, and text clean user-submitted content against a safe white-list, to prevent XSS output tidy HTML jsoup is designed to deal with all varieties of HTML found in the wild; from pristine and validating, to invalid tag-soup; j soup will create a sensible parse tree. |
Das sind doch Gründe!
Es braucht in der pom.xml des Maven Projekte nur diese eine Abhängigkeit angegeben zu werden: „Java: Parsen von HTML-Dateien mit JSoup 1.9.2 in zwei Java Zeilen“ weiterlesen
Wie können Flugdaten von MQTT Servern empfangen und in openHAB angezeigt werden? Hier ein Beispiel, wie von einem öffentlichen Testserver (test.mosquitto.org) die Anzahl von Flugzeuge in Hannover per MQTT empfangen, und alle 5 Minuten in realtime in openHAB angezeigt wird.
Das geht ganz einfach mit dem MQTT-Binding das in das addon Verzeichnis kopiert werden muss ( Datei: org.openhab.binding.mqtt-1.8.3.jar ). Dann den MQTT-Broker in der openhab.cfg eintragen: „Wie können Flugdaten von MQTT Servern empfangen und in openHAB angezeigt werden?“ weiterlesen
Auf dem Raspberry Pi läuft openHAB. Einmal am Tag bekomme ich per Pushover eine Nachricht mit dem Systemstatus auf das Handy gesandt:
Ups, da ist ja die Systemtemperatur nach dem Komma etwas lang.
Obwohl der Eintrag in der items Datei wie folgt lautet:
1 2 |
// Über ein Script die Systemtemperatur des Raspberry Pis auslesen Number systemTempPi "System Temperatur [%.1f °C]" (System) { exec="<[./configurations/scripts/getSystemTemp.sh:600000:REGEX((.*?))]" } |
Damit man die OpenHAB Konfigurationsdateien einfach bearbeiten kann, gibt es den openHAB Designer (aktuelle Version 1.8.3). Der kann von dieser Seite für den Mac, Linux oder Windows kostenlos geladen werden. Diese Datei dann installieren.
Tip: Erscheint bei der Installation bei Mac OS X eine Fehlermeldung: „… das Archive bzw. das Programm ist defekt und soll in den Papierkorb verschoben werden…“
liegt es daran, das das Archive nicht signiert ist. Dann wählen Sie „Apple“ > „Systemeinstellungen“
und klicken Sie auf „Sicherheit“ und danach auf „Allgemein“ für die App zulassen.
Dann noch einmal versuchen, und es müsste laufen. Die Einstellung kann dann wieder zurück gesetzt werden, wenn der Designer einmal erfolgreich gestartet wurde.
Den openHAB Designer nun starten, es erscheint eine schöne auf Eclipse basierende GUI.
Da der openHAB Server auf einem Raspberry Pi läuft, muss das OpenHAB Konfigurationsverzeichnis /etc/openhab/configurations noch Freigegeben werden um vom Mac aus darauch zuzugreifen. Zu dem openHAB Designer erst mal eine Mindmap
„Wie wird der openHAB Designer 1.8.3 für einen Mac optimal installiert mit Freigaben für einen Raspberry Pi?“ weiterlesen
Manche SDKarten die im Raspberry Pi laufen, hinterlassen den Eindruck, das sie defekt sind. Das kann man aber auch mit einem Mac überprüfen. Nachdem die SDKarte in den Kartenleser gesteckt wird, kann für den ersten Test, erst einmal die Karte gelöscht werden.
Dazu das Festplattendienstprogramm aufrufen. Dann links, unter den Punkt APPLE SD Card Reder die darunter liegende SDKarte selektieren und oben in der Menüleiste auf Löschen klicken.
Dann als Format „MS-Dos-Dateisystem (FAT) “ wählen und auf den Button „Sicherheitsoptionen“ klicken.
Hier können jetzt die Anzahl der Löschversuche eingestellt werden. Hier für einen ausführlichen Test, den Schieber ganz nach links schieben. Das heißt es wird 7 Mal gelöscht.
Auf OK, klicken und dann auf „Löschen„. Das kann dann für eine 16 GB SDKarte schon mal 3 Stunden dauern.
Während des löschen, kann auch parallel dazu die Aktivitätsanzeige gestartet werden. Wenn keine anderen aufwendigen Schreib/Lese Aktivitäten laufen, kann die Geschwindigkeit der Karte abgelesen werden:
Hier bei mir zw. 9-11,4 MB/s das ist für eine Class 10 Karte ok.
Wen das alles ohne Fehler läuft, ist der erste Test der Karte schon mal ok. Hier mal das Ergebniss:
Dann gibt es noch ein kostenloses externes Programm mit GUI für den Mac, welches alle Sektoren der Karte beschreibt und wieder einließt. Das f3x Programm:
Da kann einfach die SDKarte ausgewählt werden und auf „Start Test“ geklick werden. Der Download des Programmes geht hier.
Wenn alles OK ist, gibt das Programm diesen Dialog aus:
Ich bevorzuge aber das Kommandozeilen Programm f3 da bekommt man dann eine schöne Logdatei bei dem Aufruf:
./log-f3wr 16-GB-SDKarte-.log /Volumes/SDKARTE/
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 35 36 37 38 39 40 41 42 43 44 |
Free space: 14.97 GB Creating file 1.h2w ... OK! Creating file 2.h2w ... OK! Creating file 3.h2w ... OK! Creating file 4.h2w ... OK! Creating file 5.h2w ... OK! Creating file 6.h2w ... OK! Creating file 7.h2w ... OK! Creating file 8.h2w ... OK! Creating file 9.h2w ... OK! Creating file 10.h2w ... OK! Creating file 11.h2w ... OK! Creating file 12.h2w ... OK! Creating file 13.h2w ... OK! Creating file 14.h2w ... OK! Creating file 15.h2w ... OK! Free space: 0.00 Byte Average writing speed: 9.83 MB/s SECTORS ok/corrupted/changed/overwritten Validating file 1.h2w ... 2097152/ 0/ 0/ 0 Validating file 2.h2w ... 2097152/ 0/ 0/ 0 Validating file 3.h2w ... 2097152/ 0/ 0/ 0 Validating file 4.h2w ... 2097152/ 0/ 0/ 0 Validating file 5.h2w ... 2097152/ 0/ 0/ 0 Validating file 6.h2w ... 2097152/ 0/ 0/ 0 Validating file 7.h2w ... 2097152/ 0/ 0/ 0 Validating file 8.h2w ... 2097152/ 0/ 0/ 0 Validating file 9.h2w ... 2097152/ 0/ 0/ 0 Validating file 10.h2w ... 2097152/ 0/ 0/ 0 Validating file 11.h2w ... 2097152/ 0/ 0/ 0 Validating file 12.h2w ... 2097152/ 0/ 0/ 0 Validating file 13.h2w ... 2097152/ 0/ 0/ 0 Validating file 14.h2w ... 2097152/ 0/ 0/ 0 Validating file 15.h2w ... 2041216/ 0/ 0/ 0 Data OK: 14.97 GB (31401344 sectors) Data LOST: 0.00 Byte (0 sectors) Corrupted: 0.00 Byte (0 sectors) Slightly changed: 0.00 Byte (0 sectors) Overwritten: 0.00 Byte (0 sectors) Average reading speed: 18.45 MB/s |
Immer noch auf der Suche, warum der Cubi nach ein paar Tagen abstürzt, wie hier schon im Teil 1 beschrieben.
Dann erscheint im /var/log/syslog jede Stunde noch dieser Eintrag:
1 |
ntpd[549]: frequency file /var/lib/ntp/ntp.drift.TEMP: Permission denied |
Der ntp Client läuft unter dem User ntp wie htop zeigt.
Ein
1 |
service ntp status |
gibt die Meldungen auch aus:
1 2 3 4 5 6 7 8 9 |
● ntp.service - LSB: Start NTP daemon Loaded: loaded (/etc/init.d/ntp) Active: active (running) since Fri 2016-07-22 15:03:19 CEST; 18h ago Process: 508 ExecStop=/etc/init.d/ntp stop (code=exited, status=0/SUCCESS) Process: 529 ExecStart=/etc/init.d/ntp start (code=exited, status=0/SUCCESS) CGroup: /system.slice/ntp.service └─549 /usr/sbin/ntpd -p /var/run/ntpd.pid -g -c /var/lib/ntp/ntp.conf.dhcp -u 104:110 Jul 22 21:03:43 server ntpd[549]: frequency file /var/lib/ntp/ntp.drift.TEMP: Permission denied |
Ok, dann kurzerhand NTP entfernen „Auf der Suche, warum der Cubieboard mit Debian Jessie nach ein paar Tagen abstürzt. Teil 2: Fix NTP: frequency file /var/lib/ntp/ntp.drift.TEMP: Permission denied“ weiterlesen
Wer z.B. nicht alle Kategorien (post_category) ua. eines WordPress Blogs per Hand eingeben möchte, kann auch eine CSV-Datei importieren, die muss folgenden Aufbau haben:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
"post_category" "China " "Deutschland " "Dominikanische Republik " "England " "Frankreich " "Griechenland " "Indonesien " "Israel " "Italien " "Italien Sizilien " "Malediven " "Niederland " "Polen " |
„Wie können CSV Dateien in einen WordPress Blog importiert werden?“ weiterlesen
Java Objekte können leicht nach Json serialisiert und deserialisiert werden mit Gson.
Es braucht nur eine Abhängigkeit in der pom.xml ergänzt zu werden.
Das Beispiel: „Java to Json Beispiel mit Gson“ weiterlesen
Eclipse Neon hat nun einen eingebauten Json Editor, es braucht nun kein anderes Json Plugin installiert werden.
Meistens erzeugt man Objekte in Java mit new. Es gibt aber noch ein paar andere Möglichkeiten.
Wir haben diese Farbe 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 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
package de.wenzlaff.mqtt.client; import java.io.Serializable; /** * Farben Klasse. * * @author Thomas Wenzlaff * */ public class Farbe implements Cloneable, Serializable { private static final long serialVersionUID = 8660877851154300583L; private String farbe = "rot"; public Farbe() { System.out.println("Konstruktor aufruf"); } public String getFarbe() { return farbe; } public void setFarbe(String farbe) { this.farbe = farbe; } @Override public String toString() { return "Farbe: " + farbe + " mit HashCode=" + hashCode() + "\n"; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((farbe == null) ? 0 : farbe.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Farbe other = (Farbe) obj; if (farbe == null) { if (other.farbe != null) return false; } else if (!farbe.equals(other.farbe)) return false; return true; } @Override protected Object clone() throws CloneNotSupportedException { return super.clone(); } } |
und haben diese Möglichkeiten Objekte zu erzeugen. „Welche Möglichkeiten der Java Objekt-Erzeugung gibt es?“ weiterlesen
Es muss nicht immer MQTT.fx sein um MQTT Daten zu empfangen. Der Java-Client Mqtt-Spy hat viel mehr Optionen. Es braucht nur das JAR von Github geladen zu werden und dann ein doppelklick auf das JAR, und schon läuft der MQTT-Client unter Mac, Windows, Linux …
Es braucht nur der Server test.mosquitto.org und als Topic /Anzahl/Flugzeuge/Hannover eingegeben zu werden und schon werden meine Flug-Daten die von einem Raspberry Pi empfangen werden alle 5 Minuten aktualisiert.
„Flugdaten aus Hannover von einem Raspberry Pi per MQTT mit Mqtt-Spy empfangen“ weiterlesen
Fussball? Wie kann man per Java einen MQTT Client mit Paho schreiben, der z.B. die Anzahl Flugzeuge in Hannover anzeigt? Und das innerhalb der ersten Halbzeit, da nur 2 Klassen benötigt werden.
Mein Raspberry Pi sendet an den öffentlichen Testserver test.mosquitto.org unter den Topic /Anzahl/Flugzeuge/Hannover alle 5 Minuten die aktuelle Anzahl, so das dieses Beispiel jeder nachvollziehen kann.
Hier die Architektur:
Wir brauchen zuerst ein Eclipse Maven Projekt mit Java 1.8 mit dieser pom.xml und einen Eintrag des Paho Repo, da es in Maven Central nicht vorhanden ist: „Besser als Fussball: MQTT Java Client mit Paho“ weiterlesen
Hier eine schöne Aufzählung der Neuerungen der neuen Eclipse Neon Version.
Cool:
Content Assist now supports substring patterns. Enter any part of the desired proposal’s text, and Content Assist will find it! For example, completing on selection proposes all results containing selection as a substring.
The Refactor > Rename popup now shows an Options… link which opens the full Rename dialog that provides more options like renaming a field’s getter and setter methods.
You can now select multiple elements in views like Package Explorer and Outline and then search for References, Declarations, Implementors, and Read/Write Access (where applicable):
Wie können Flugdaten mit dem Raspberry PI und node-RED auf Twitter alle 5 Minuten ausgegeben werden? Und wie kann eine einfach Gui erstellt werden?
Mit diesen Node-RED Flow, werden die Flugdaten von thinkspeak.com eingelesen (die Daten kommen von eine meiner Raspberry Pis und können frei verwendet werden) und alle 5 Minuten an Twitter gesendet.
Die Funktion die den Text für Twitter erstellt, kann diesen Inhalt haben:
1 2 3 4 5 6 7 |
var newMsg = { payload: msg.payload + " #Flugzeuge im Umkreis von #Hannover (#HAJ #EDDV #Airport) Abfrage per #ADSB am " + new Date() + " mit #Raspberry Pi" }; return newMsg; |
Hier die node-red GUI, die über die Url http://pi-adresse:1880/ui/ geöffnet wird:
Hier werden an Twitter die Daten alle 5 Minuten hingesendet, bitte folgen:
Anzahl #Flugzeuge in #Hannover (#HAJ #EDDV) 18 angefragt per #ADSB am Tue May 31 2016 21:50:48 GMT+0200 (CEST) per #Raspberry #Pi
— Thomas Wenzlaff (@twusb) 31. Mai 2016
Hier kann der Flow importiert werden:
Meine Hausautomatisation die auf einen Raspberry Pi mit Debian Linux läuft, arbeitet mit Openhab.
Wie können da nun die Transpondersignale von den Flugzeugen in Hannover (EDDV) angezeigt werden?
Das geht mit der REST Schnitstelle von ThinkSpeak.
So sieht die Seite von Openhab aus.
Oben wird die aktuelle Anzahl von Flugzeugen und der Zeitpunkt der Daten die gerade empfangen werden angezeigt. Eine automatisch Aktualisierung ist bei mir auf 15 Minuten eingestellt. Der Feed wird alle 5 Minuten aktualisiert und wenn man die letzten Daten angezeigt bekommen will, braucht man nur auf den „aktualisieren“ Schalter klicken.
Die Daten kann jeder abfragen, da die API von ThinkSpeak öffentlich ist!
Was ist nötig?
Ein Eintrag in der Sitemap Datei:
1 2 3 4 5 6 7 8 9 10 11 |
Frame { Group item=gFlug label="Fluginfos" icon="flugzeug"{ Frame label="Hannover HAJ (EDDV)" { Text item=flugzeugeAnzahl icon="flugzeug" Text item=flugzeugeUpdate icon="flugzeug" Switch item=flugzeugeAktualisieren icon="flugzeug" Text item=flugzeugeZeitpunkt icon="flugzeug" } } } |
Eine neue Datei im Items Verzeichnis Flug.items mit diesm Inhalt:
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 |
// // Steuerung des Fluginformationen via OpenHAB // // (c) 2016 Thomas Wenzlaff http://www.wenzlaff.info // // Liefert aus den Feed die Anzahl Flugzeuge als Json Feed // https://api.thingspeak.com/channels/44177/feeds/last.json // // z.B. // {"created_at":"2016-05-16T14:05:02Z","entry_id":80051,"field1":"15"} Group gFlug // alle 15 Minuten abfragen String flugzeugeAnzahl "Anzahl Flugzeuge [%s]" { http="<[https://api.thingspeak.com/channels/44177/feeds/last.json:900000:JS(getAnzahlFlugzeuge.js)]" } // Zeitpunkt der letzten aktualisierung des Feeds String flugzeugeUpdate "Letztes Feed update [%s]" // Zeitpunkt der letzen aktualisierung String flugzeugeZeitpunkt "Letzte aktualisierung [%s]" // Schalter zum aktualisieren der Anzahl der Flugzeuge Switch flugzeugeAktualisieren "aktualisieren" |
Eine neue Datei im Transform Verzeichnis mit Namen getAnzahlFlugzeuge.js mit diesem Inhalt
1 |
JSON.parse(input).field1; |
Und noch eine Flug.rules im Rules Verzeichnis, die bei klick auf den Schalter aktiv wird:
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 35 36 37 38 39 40 41 42 43 44 |
import org.openhab.core.library.types.* import org.openhab.model.script.actions.* import java.util.Date import java.text.SimpleDateFormat // // Fluginfos für OpenHAB // // (c) 2016 Thomas Wenzlaff http://www.wenzlaff.info // //------------------------------------------------------------------------ // Aktualisiert die Fluginfos, d.h die Anzahl der Flugzeuge aus ThingSpeak //------------------------------------------------------------------------ rule "Aktualisiert die Fluginfos von ThingSpeak" when Item flugzeugeAktualisieren received command ON then logInfo("Flug","aktualisiere Fluginfos ...") var String result = sendHttpGetRequest("https://api.thingspeak.com/channels/44177/feeds/last.json") // {"created_at":"2016-05-16T16:10:02Z","entry_id":80076,"field1":"11"}' by the function '$.field1' logInfo("Flug", "nur das Ergebnis der Abfrage: " + result) var String anzahl = transform("JSONPATH", "$.field1", result) logInfo("Flug", "Anzahl der Flugzeuge, update auf: " + anzahl) var String createdAt = transform("JSONPATH", "$.created_at", result) logInfo("Flug", "Letztes update um: " + createdAt) // aktualisierungs Datum setzen flugzeugeUpdate.postUpdate(createdAt) // aktualisiere Anzahl der Flugzeuge flugzeugeAnzahl.postUpdate(anzahl) // Schalter wieder zurücksetzen flugzeugeAktualisieren.postUpdate("OFF") var SimpleDateFormat df = new SimpleDateFormat( "HH:mm:ss dd.MM.YYYY" ) var String timestamp = df.format( new Date() ) flugzeugeZeitpunkt.postUpdate(timestamp); end |
Und noch das von mir erstellte Icon des Flugzeuges:
Dies super Icon kann kostenlos von hier geladen und frei verwendet werden. Wer kann ein besseres zur freien Verwendung zeichnen?