Raspberry Pi mit einer Wetterstation ws1080/wh1080 verbinden

Es gibt viele Blogs mit Anleitungen wie man eine Wetterstation vom Typ ws1080/wh1080/ws3000 etc. mit einem Raspberry pi verbindet. Ich habe meinen Anleitung nun als Ansible Playbook unter https://github.com/lightszentip/ansible-playbook-weather1080 veröffentlicht. Somit kann schnell und einfach zwischen dem Raspberry pi 2 und Raspberry pi 3 gewechselt werden und auch eine Neuinstallation ist nicht mehr Aufwendig.

Der Vorteil von Ansible ist das man diese Anleitung schnell und einfach an die verschiedenen Wetterstationen anpassen kann. Zudem ist ein Script enthalten um die Daten von der WH1080/Ws1080 in eine mysql Datenbank zu speichern. Damit hat man die Daten in einem einfachen Format und kann diese an anderen Stellen leicht und einfach wieder verwenden. Es muss dafür nicht eine Software mit manueller Eingabe verwendet werden um die Daten aus der Wetterstation auszulesen.

 

Use password with ansible – security

Mit ansible-vault createsecrethostgroupOne  kann man sein Passwort verschlüsseln:
createsecrethostgroupOne = Name der Variable für das Passwort um es später im Script oder der config zu nutzen.

Wenn man create secrethostgroupOne  oder edit secrethostgroupOne  aufruft muss man ein vault Passwort festlegen.

Danach wird ein Editor geöffnet wo man folgendes eingibt:

Dann im Script:

angeben. Damit beim ausführen des Playbooks auch das Passwort beachtet wird, muss man eine Datei vault.txt anlegen (gleiche Ebene wie das playbook) und dort das vault Passwort eintragen.

Danach kann man dann mit dem Zusatz:

das eingeben des sudo Passwortes einfach überspringen .

SSH Key an alle hosts in ansible/hosts kopieren

Wenn man Ansible verwendet, benötigt man den lokalen ssh public key auf allen in der hosts Datei eingetragen Knoten – außer man verwendet das ansible_ssh_pass.
Damit man aber nicht für jeden Knoten einzeln ssh-copy-id aufrufen muss, hilft das folgenden Pyhton Script:



Die komplette Datei findet ihr unter https://gist.github.com/lightszentip/881593f03a7e3d1b107e3be889547941

Das Script baut auf der Datei von Jiri Tyr hostfile.py auf, welches eine hosts Datei parsed.

Der Aufruf sieht wie folgt aus:

Falls man es auf eine Gruppe einschränken möchte, kann man auch noch –group Groupname mitgeben (dieser ist aber optional). Als Beispiel:

Wie ihr den ssh key generiert, seht ihr unter adding-your-ssh-key-to-the-ssh-agent und den public key vom private key gibt es mit

Das ganze könnt ihr dann mit

testen.

Jenkins Pipeline – War File deployen

Mit dem folgende Script kann man eine war Datei mit Jenkins Pipeline auf einem Tomcat deployen. Für das deployen mit curl auf einem tomcat wird ein User mit der Rolle manager-script benötigt.

Checkout:

Beim checkout wird nur eine Schatten Kopie mit einer Tiefe von 2 vom Ziel Branch heruntergeladen. Das reduziert die Zeit für den checkout. Bei einem

werden hingegen alle branches und auch die History des aktuellen Branches komplett heruntergeladen. Dies wird an dieser Stelle aber nicht benötigt.

Deploy Stage:

Nach dem bauen wird mittels curl einfach die war Datei auf dem Tomcat deployed. Was noch fehlt ist eine Prüfung ob das deployen erfolgreich war und das Neustarten des Tomcats falls nicht. Die Prüfung kann man mit curl oder wget machen und das Neustarten mit Hilfe einer ssh Verbindung auf den Tomcat.

Ionic2 (rc3) mit firebase und google+facebook login

Inzwischen ist Ionic 2 in der RC3 Version vorhanden. Aufgrund von Änderungen zwischen RC0, RC2 und RC3 sowie einigen Änderungen bei firebase und angularfire2, sind leider die meisten Beispiele im Internet nicht mit RC3 kompatibel.

Ionic Projekt

Solltet ihr bisher ionic noch nicht installiert haben, könnt ihr das mit dem folgenden Befehl machen: sudo npm install -g ionic cordova

Falls ihr noch kein npm und node installiert habt, am besten die aktuelle Version installieren.

Danach könnt ihr wie folgt starten: ionic start NamederAnwendung blank --v2

Danach dann noch ios (falls ihr auf mac arbeitet) und android hinzufügen:

Nun könnt ihr die app mit dem folgenden Befehl unter android testen. Es empfiehlt sich das Testen immer im Emulator oder auf einem echten Device vorzunehmen, da für das login bei facebook und google cordova Plugins verwendet werden – welche untern “ionic serve” nicht beachtet werden:

Hinweis: Falls in der package.json > “@ionic/app-scripts”: “0.0.45”, steht. Bitte den Hinweis am Ende der Seite beachten – Firebase is not defined.

Firebase

Unter https://console.firebase.google.com/ erstellt ihr euch eine neue Anwendung. Am besten den geichen Namen wie der Name für die App. Danach unter Authentication >> Anmeldemethoden bei Google und Facebook auf editieren klicken und die Anmeldemethoden aktivieren. Für Facebook benötigt ihr die appId und appSecret, da wir aber noch keine Facebook App erstellt haben – dort aktuell nur einen Platzhalter eintragen.

Danach unter Einstellungen/Projekteinstellungen gehen (findet man beim klick auf das Zahnrad oben links) und auf “Firebase zu meiner WebApp hinzufügen” klicken. Danach erscheinen die Keys für eure Firebase Einstellungen:

Diese werden in eine Temporäre Textdaten kopiert, da sie später benötigt werden. Die messageId Variable wird nicht benötigt – wer Firebase Messaging verwenden möchte, kann das mit Ionic2 Push machen.

Facebook

Zuerst unter https://developers.facebook.com/apps eine neue App erstellen. Danach dann in der App unter “Produkt hinzufügen” auf “Facebook Login” klicken. Bei “Gültige OAuth Redirect URIs” die Url welche ihr unter von https://console.firebase.google.com/ >> Authentication >> Anmeldemethoden >> Facebook findet eintragen. Danach unter Einstellungen für eure Facebook App gehen und auf “Platfform hinzufügen” klicken. Daher erkläre ich im folgenden wie man mit ionic2 und firebase einen Google Login/SignIn und Facebook Login/SignIn realisieren kann:

Bei “Google Play Package-Name” tragt ihr die id aus eurer config.xml im root Ordner eures Ionic Projektes ein.

Den Schlüssel Hash bekommt ihr mit dem folgenden Befehl auf euer Command Line:

Linux:  keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base6

Win:  keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl base64

Den Schlüssel am besten in die Zwischenablage kopieren bzw. eine Textdatei – da diese bei Google wieder benötigt wird.

Danach SingleSignOn aktivieren und speichern.

Dann die AppId und den App-Geheimcode unter https://console.firebase.google.com/ >> Authentication >> Anmeldemethoden >> Facebook eintragen und speichern.

Google

Wieder auf https://console.firebase.google.com/ >> Projekteinstellungen gehen und auf “Firebase zu meiner Android App hinzufügen” klicken. Dort dann wie schon bei Facebook den Paketname (id) und den Hash eintragen und speichern. Continue reading “Ionic2 (rc3) mit firebase und google+facebook login”

Eigenes Gitbucket mit Qnap NAS und Docker

Auf den NAS Speichern von Qnap ist es möglich Docker Container laufen zu lassen. Dadurch kann man auch Gitbucket auf dem NAS laufen lassen und so sein eigenes “github” im Netzwerk haben.

Gitbucket ist eine Webanwendung welche die Funktionen von Github beinhaltet (minimale Funktionen).

Aber Schritt für Schritt. Zuerst wählt man auf dem NAS Speicher die Anwendung “Container Station” und wählt neuen Container erstellen. Dann verwendet man die Suche und sucht nach “hiono/gitbucket”. Beim erstellen am besten immer den Tab “Docker Hub” verwenden, damit man die aktuellste Version verwendet. Es ist zu empfehlen direkt eine Version auszusuchen anstatt latest. Dazu aber später mehr.

Wichtig bei den Daten sind dann zwei Einstellungen unter “Erweiterte Einstellungen”: Continue reading “Eigenes Gitbucket mit Qnap NAS und Docker”

Jenkins Pipeline

Die neue Pipeline Funktion von Jenkins kann mit Jenkins 1.x und 2.x verwendet werden. Bei Jenkins 2.x gibt es aber auch noch ein Plugin um die einzelnen Stages in einer View zu visualisieren.

Für die Pipeline gibt es auch einen Snippet Generator unter http://localhost:8080/jenkins/job/Pipelinetest/pipeline-syntax/.

Mit dessen Hilfe kann man für die meisten Anwendungsfälle Snippets generieren und diese dann nach den eigenen Anforderungen anpassen.

Der Beispiel Code für einen Github checkout und Maven aufruf sieht dabei wie folgt aus:

Dabei sieht man auch die Änderungen bei Jenkins 2, das Thirdparty Komponenten wie Maven über Variablen und nicht mehr über Pfad Angaben in der Konfiguration gemanagt werden. Die „stage“ aufrufe bilden dabei die einzelnen Schritte welche auch in der Stage View sichtbar sind.

Slim und Ionic und CORS

Wer sich mit Slim und Ionic ein kleine App und Rest Api bauen möchte, kann schnell mit dem Thema CORS in Kontakt kommen. Besonders beim testen auf der lokalen Maschine.

Damit es auch lokal funktioniert. Müssen die folgenden Zeilen am Anfang der index.php hinzugefügt werden (am besten ganz oben):

Dabei kann man natürlich auch die Freigabe auf bestimmte Domains einschränken. Falls man diese drei Zeilen jedoch nicht hinzufügt, erhält man bei einem http.get(…) die folgende Fehlermeldung: