Category Archives: Sonstiges

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.

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.

Dazu unter Run Configurations unter Maven einen Build Job erstellen.

Bei Base directory folgendes eintragen:

und bei Goals:

Dabei bitte die Version entsprechend anpassen.