CO2 mit dem Raspberry Pi

Hier mal eine Zusammenfassung eines CO2-Messsystems (CO2-Ampel) mit dem Raspberry Pi an dem der MH-Z19b, OLED Anzeige, LED-Rgb-Ampel hängen. Auch werden die Daten Online an Thinkspeak, MQTT, NodeRed, Alexa ausgabe von Warnungen und abfrage der Co2 Werte, Pushover nachrichten ans Handy, REST Java-Client, Docker Container und an einen History Browser gesendet. Wie hier auch schon einzeln veröffentlicht.

Die Architektur

„CO2 mit dem Raspberry Pi“ weiterlesen

Docker Container mit REST Service in 5 min mit CO2-Ampel Service erstellen

Wer noch 5 Minuten hat, kann das Beispielprojekt mit der CO2-Ampel auch gleich in einem Docker Container laufen lassen. Vorraussetzung Docker läuft und das Beispielprojekt wurde installiert.

Dann sind, dank der automatisch generierten Docker-Files nur diese 3 Schritte im Verzeichnis der root pom nötig:

Schon läuft der CO2 Service http://localhost:8080/v1/rest/co2 und CO2-Ampel über http://localhost:8080/v1/rest/co2ampel

Cool. Und hier das Dockerfile … „Docker Container mit REST Service in 5 min mit CO2-Ampel Service erstellen“ weiterlesen

REST Service in 15 min mit Quarkus, OpenAPI, Swagger UI und JUnit-Test erstellen und um CO2-Ampel Service erweitern

Einen REST Service in 15 min mit Quarkus, OpenAPI, Swagger UI und JUnit-Test erstellen und um CO2-Ampel Service erweitern ist nicht kompliziert.

Freut euch immer

Vorraussetzungen Java 11 und Maven. Test mit:

mvn -version

auf der Kommandozeile:

Dann fangen wir in einem leeren Verzeichnis an

jetzt rufen wir mit dem Maven Quarkus Plugin das create Goal auf:

Zwei Sekunden später, ist das Projekt angelegt: „REST Service in 15 min mit Quarkus, OpenAPI, Swagger UI und JUnit-Test erstellen und um CO2-Ampel Service erweitern“ weiterlesen

Weil heute Sonntag ist: Java CO2 MQTT Client

Weil heute Sonntag ist. „Freut euch immer„! Nun ein kleiner Java CO2 MQTT Client um auch auf allen Betriebssystemen mit Java die CO2 Daten zu empfangen. Nicht nur für den Raspberry Pi auch Mac und Windows (ungetestet;-)).

Das selbstausführende JAR laden (siehe unten) und starten mit:

java -jar TWCo2Monitor-0.0.1-SNAPSHOT-jar-with-dependencies.jar [PI-Rechner Name/Adresse]

Hier mal eine Ausgabe auf einem Raspberry Pi W Zero:

Der MQTT Client besteht nur aus ein paar Zeilen Java Code: „Weil heute Sonntag ist: Java CO2 MQTT Client“ weiterlesen

„Crew Dragon“ dockt eben von der ISS erfolgreich von der ISS ab

Teslas SpaceX-Astronauten sind nun von der ISS auf dem Rückweg zur Erde und werden heute Abend in Florida landen. Wer sich das live anschauen will, kann das über den live Stream der NASA um 20:48 Uhr tun.

Heimreise aus 400 Kilometern Höhe.

Mein Raspberry Pi trackt ja die Position der ISS wie hier berichtet.

Mit dem NodeRed-Flow wird ja ein Webservice für die Position verwendet und direkt abgefragt. Es gibt aber auch noch einen eigenen NodeRed Flow. Dieser Node, ist nicht defaultmäßig vorhanden und muss erst in NodeRed installiert werden (suche nach node-red-contrib-iss-location). Eine Code Analyse hat gezeigt, das der Node die gleiche OpenNoitify API abfragt. Die Parameter heißen bei der Rückgabe des Flows nur etwas anders: lon, lan, name (der name ist der Timestamp)

Hier nun der Code des Flow mit dem eigenen ISS Node (siehe Foto oben), der genau das gleiche tut wie der erste. Er schreibt die Positions-Daten der ISS in eine Datei im CSV-Format.

Und hier der ganze NodeRed-Flow zum importieren „„Crew Dragon“ dockt eben von der ISS erfolgreich von der ISS ab“ weiterlesen

8×8 LED mit max7219 auf einen Raspberry Pi mit python sagt „Freut euch allezeit“

Hatte noch eine 8×8 LED mit Treiber liegen. Die wollte ich mal an den Raspberry Pi anklemmen und über die Kommandozeile ansteuern.

Die Hardware ist mit 5 Drähten schnell verbunden:

Verwendet habe ich den Luma.LED_Matrix: Display drivers for MAX7219, WS2812, APA102. Den Kommandozeilen Wrapper gab es noch nicht. Also dann mal los … Mal wieder etwas python3 programmieren … „8×8 LED mit max7219 auf einen Raspberry Pi mit python sagt „Freut euch allezeit““ weiterlesen

Warum läuf git svn auf Mac OS Catalina nicht mehr?

Warum läuf git svn clone auf Mac OS Catalina nicht mehr?

Corona Art mit freundlicher Erlaubnis vom Künstler.

Wolte ein svn Repo clonen, mit git svn clone und es kommt diese Fehlermeldung: git: ’svn‘ is not a git command:

Und es ist doch ein git Kommando. Apple hat in Catalina die git Tools wie git-svn entfernt. In den Releasenotes zu 10.15 heißt es zu Xcode

Deprecations

Command line tool support for Subversion — including svn, git-svn, and related commands — is no longer provided by Xcode. If you need Subversion or related command line tools, install the Command Line Tools package by running xcode-select –install. (50266910)

Die installierte Git Version ist auch nicht die aller neueste. Also mit MacPort eine neu git Version und gleich ein paar Tools mehr installieren mit: „Warum läuf git svn auf Mac OS Catalina nicht mehr?“ weiterlesen

Wie kann im NodeRED Covid-19 Dashboard die Skala für alle gleichzeitig gesetzt werden?

Wie kann im NodeRED Covid-19 Dashboard die Skala für alle gleichzeitig gesetzt werden? In diesem Dasboard gibt es 2×3 Werte die immer gleich sein sollen:

Bisher musste ich in jedem der 6 Gauge-Nodes den Wert einzeln setzen. Man kann die Gauge-Nodes aber auch über die Eigenschaft: msg.ui_control setzen:

Deshalb habe ich eine globale Variable gemacht, die man an einer Stelle mit global.set setzen kann. Das auslesen geht dann mit global.get. So braucht man nur eine Stelle ändern. Hier die Details:

„Wie kann im NodeRED Covid-19 Dashboard die Skala für alle gleichzeitig gesetzt werden?“ weiterlesen

Node-Red organisieren mit link-in bzw. link-out am Beispiel: Covid-19 Dashboard

Wie können die Flows in NodeRED organisiert werden? Damit ein Flow nicht überladen wird und auch um die GUI von der Logik zu trennen (MVC, Model View Controller Konzept) können die link-in bzw. link-out Nodes verwendet werden. Das sind diese:

Die link-out Nodes werden in den Quell Flow integriert, z.B.

Und in den neuen Ziel Flow die link-in:

Schon haben wir ein Dashboard:


„Node-Red organisieren mit link-in bzw. link-out am Beispiel: Covid-19 Dashboard“ weiterlesen

Raspberry Pi „Code Life Ventilator Challenge“ – Wir bauen ein Beatmungsgerät!

Würde gern ein Beatmungsgerät mit einem Raspberry Pi bauen und an der Challenge teilnehmen. Habe schon mal ein erstes BPMN Modell entworfen. Das kann frei für jedermann verwendet werden.

Der Raspberry Pi ist sicherlich dafür geeignet. Die Steuersoftware würde ich gern schreiben, was fehlt ist die Zeit. Und der Einsendeschluss ist schon am Ende des Monats.

Man könnte leicht ein NodeRed Dashboard für Ein.- und Ausgabe verwenden. Die eigentliche Herausforderung ist da wohl eher die Technik. Woher kommt einfach der Flow um das Volumen mit dem entsprechenden Druck aufzubauen? Habe bisher keine Idee. Vorschläge willkommen!

Aber auch ein Arduino kann dafür wohl verwendet werden. Hier hatte ich schon mal eine Steuerung für 230 V mit Video dafür erstellt. Das Programm dort kann auch frei für die Challange verwendet werden. „Raspberry Pi „Code Life Ventilator Challenge“ – Wir bauen ein Beatmungsgerät!“ weiterlesen

Aktuell weltweit nur 2336 Flugzeuge erfasst. Liegt das an covid-19?

Hier die aktuelle Auswertung mit Eclipse 2020-03:

Code: „Aktuell weltweit nur 2336 Flugzeuge erfasst. Liegt das an covid-19?“ weiterlesen

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.