All posts by Tobi

Tobi

About Tobi

I am an software developer / scrum master / project manager and have interest for the topics wordress, spring, java, python, ionic, agile, lean, kanban, scrum, javascript, motivation, teamwork and good / lean software development.

TX-35-DTH mit JeeLink und FHEM verbinden

Der JeeLink kann unter The JeeLabs Shop bestellt werden. Die Lieferung dauert ca. 1-2 Wochen.

Das anlernen des JeeLink funktioniert unter Linux recht einfach, da die Treiber schon vorhanden sind. Einfach den JeeLink anschließen und mit  dmesg | tail -50  schauen ob er angelernt wurde und auf welchem Port.

Dann diesen Port

verbinden und es sollte eine Ausgabe erscheinen. Sollte ein  bash: /dev/ttyUSB0: Permission denied  kommen, helfen die folgenden beiden Befehle:

Danach sollte die Fehlermeldung nicht mehr auftauchen.

Damit man nun den JeeLink mit dem TX-35 verbinden kann, muss dieser geflashed werden – dazu gibt es zwei Möglichkeiten. Zum einen mit der Arduino IDE und den LaCrosse und JeeLink Sketches. Dieser Weg hat bei mir aber leider nicht funktioniert. Alternative kann man sich einfach FHEM installieren.

Neben fhem sollte man noch das Package avrdude installieren um den JeeLink flashen zu können:  sudo apt-get install avrdude fhem

Nach der Installation ruft man http://fhem-host:8083/fhem (fhem durch den eigenen hostname ersetzten) auf. Dort gibt man dann folgendes in die Commando Zeile ein:

ttyUSB1 und 57600 gegebenenfalls anpassen – falls bei dmesg andere Werte ausgegeben wurden.

Danach sollte der JeeLink in FHEM vorhanden sein. Mit   attr jeeLink initCommands 30t 0a v  wird der Toggle Modus aktiviert und die LED deaktiviert (0a v).

Das Pairing kann nun mit einer Zeit von 60 Sekunden gestartet werden:  set jeeLink LaCrossePairForSec 60

Nach dem herausnehmen und wiedereinlegen der Batterien sollte der TX-35-DTH erkannt werden. Die Werte werden in einer Log Datei unter  /opt/fhem/log/NameDesGeraetes-2017.log  gespeichert.

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.

Mysql root Passwort zurücksetzen

Solltest du dein Passwort für den User root vergessen haben, kannst du das mit

https://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html

zurücksetzen. Sollte das nicht funktionieren – kannst du die folgende Alternative verwenden:

  1. Öffne die Datei mysql.cnf und füge unter [mysqld]
    ein
  2. Starte danach mysql
  3. Logge dich mit
    ein
  4. Dann
    und den Passwort Befehl aus resetting-permission eingeben (je nachdem welche Version von mysql man hat)
    und danach
    sollte das nicht gehen – kann man auch noch
    versuchen.
  5. Danach skip-grant-tables wieder aus der mysql.cnf entfernen und mysql neustarten.

 

 

Firebase FCM Push Notification Backend

Mit Firebase Cloud Messaging, kurz FCM, kann man Notifications auf IOS und Android versenden. Im folgenden Beitrag geht es um das Versenden der Nachrichten im Backend mit PHP.

Um mit PHP Nachrichten an FCM zu schicken kann die Library

verwendet werden. Damit man Daten aus der Firebase Database verwenden kann, verwendet man zusätzlich noch die Library:

Damit ergibt sich das folgende composer File:

 

Um mit Firebase zu arbeiten erstellen wir eine backend.php Datei:

Mit der Variable $firebase kann nun auf die Datenbank zugegriffen werden und mit $client können Nachrichten versendet werden. Die json Datei und den apiKey findet man in der https://console.firebase.google.com/. Dort unter Deine App >> Projekteinstellungen >> Cloud Messaging ist der API Key und unter Deine App >> Projekteinstellungen >> Dienstkonten kann man sich einen privaten Schlüssel generieren lassen. Diesen dann entweder im gleichen Ordner wie die backend.php ablegen oder wie im Beispiel im Ordner secret. Wichtig ist das die Datei keinen entsprechende Zugriffsrechte hat, damit niemand diese über den Webserver auslesen kann.

Das folgende Beispiel liest Elemente aus der Tabelle ‘Todos’ aus. Weitere Informationen wie ihr mit firebase-php arbeiten könnt, findet ihr unter: https://github.com/kreait/firebase-php

Verschicken kann man dann eine solche ‘Aufgabe’ mit:

In dem Beispiel wird die Nachricht nur an die Clients verteilt, welche sich auf das Topic ‘todos’ subscribte haben. Hier kann man aber auch z.B. devices auswählen oder an alle verschicken. Mehr dazu unter:  https://github.com/Paragraph1/php-fcm

Ob das Senden an FCM erfolgreich war kann man mit

prüfen. Dabei sagt das Ergebnis aber nur aus ob die Nachricht an FCM übermittelt wurde, aber nicht ob die Clients diese erfolgreich erhalten haben.