[HowTo] DECT 200 von Android via Command-line (PHP) steuern

hedak

Neuer User
Mitglied seit
19 Aug 2011
Beiträge
21
Punkte für Reaktionen
0
Punkte
0
Hallo,

ich hatte mich ein Wochenende lang mit der Steuerung von DECT 200 Steckdosen über mein Samsung Galaxy S4 Mini beschäftigt und möchte die Erkenntnisse einfach nur der Nachwelt mitteilen. Ich habe wahrscheinlich alle Threads zu diesem Thema hier im Forum studiert, doch leider war keine Lösung für ein Android Gerät dabei (in den meisten Fällen scheiterte es am fehlenden Binary für iconv). Da ich anfangs auf die PHP Lösung gestoßen bin, habe ich diese für mich auch erfolgreich zu Ende geführt.

Ziel:
Schalten einer DECT 200 Steckdose getriggert durch NFC am Smartphone. Auf dem gerooten Smartphone läuft Llama, welches die NFC-Tags erkennt und daraufhin zunächst die DECT 200 (ein)schalten soll und mit meiner Minute Verzögerung dann am SONOS Play:1 meinen favoriten Radio-Stream spielen soll.

Problem:
Ich habe keine Möglichkeit gefunden, dies ohne Eigeninitiative zu bewerkstelligen, obwohl ich BoxToGo Pro installiert habe. Dessen Widget konnte ich von Llama nicht ansteuern.

Nur zur Info: Nachdem ich fertig war, stellte ich fest, dass BoxToGo Pro neben den Smarthome Widgets auch noch Smarthome Verknüpfungen bereitstellt, die ich ganz einfach von Llama aufrufen kann :blonk:


Als Grundlage habe ich folgendes PHP-Skript verwendet:
http://www.ip-phone-forum.de/showthread.php?t=257944&p=1949987&viewfull=1#post1949987

Der Weg zum Ziel:

Nach langer Recherche habe ich den (nicht mehr gepflegten) PHP Interpreter PHP for Android gefunden und herausgefunden, wie er zu bedienen ist. Nächstes (viel größeres Problem) war dann, dass zwei der im vorliegenden PHP Skript genutzte Funktionen nicht verfügbar waren, da PHP for Android beim Erstellen nicht dafür konfiguriert wurde. Die XML-Parser Funktion war schnell (wenn auch nicht perfekt) mit String-Funktionen nachgebildet, aber einen Workaround für die fehlende mb_convert_encoding($s, "UCS-2LE", "UTF-8") zum Fritzbox-Login zu finden, hat mit Kopfzerbrechen bereitet... Da ich keine nutzbare Lösung finden konnte, habe ich mich der Dokumentation von AVM bedient (warum sie in dem Beispiel gerade einen Umlaut verwenden, ist mir ein Rätsel...) und die Umwandlung von UTF-8 zu UTF-16 LE selbst implementiert (was schlussendlich sehr einfach war). Damit nicht genug, musste ich feststellen, dass der Login an der Fritzbox abhängig von deren Anmeldungs-Einstellung funktioniert (siehe unten bei Punkt 3). Am Ende der zwei Tage hat es dann aber glücklicherweise funktioniert :)


Nun zu "meiner" Lösung:
(ein gerootet Smartphone ist meines Erachtens nicht notwendig)

1) Den Installer für PHP for Android 0.3 downloaden und installieren: http://www.phpforandroid.net/doku.php?id=releases
2) "PHP for Android" starten und "Install" klicken (Achtung: Es werden dabei etwa 3,5 MB Daten heruntergeladen)
3) Bei Bedarf IP der Fritzbox und zu nutzenden User und Passwort (bei Web-Interface Anmeldung mit globalem Fritzbox-Passwort ist dieses zu verwenden, bei Anmeldung über Nutzer ist das entsprechende Nutzer-Passwort zu nutzen) im angehangenen Skript anpassen und irgendwo auf dem Smartphone ablegen, Hinweis: Da das Passwort dann in Klartext auf dem Smartphone rumliegt, ist es ratsam einen eigenen Benutzer in der Fritzbox anzulegen (z.B. "smart") und diesem nur die Steuerung der Smarthome Geräte zu erlauben, außerdem sollte dann die Anmeldung an die Fritzbox auf Benutzeranmeldung umgestellt werden, da ja sonst das globale Fritzbox-Passwort in Klartext lesbar wäre)
4) Über Command-line das PHP-Skript aufrufen (ich habe das Skript in /sdcard/sl4a/scripts/ abgelegt, 087610012345 ist die Pseudo-AIN eines DECT 200, 0 bedeutet ausschalten (1 einschalten), "-c /sdcard/com.irontec.phpforandroid/extras/php/" ist der Suchpfad für die benötigte php.ini):
/data/data/com.irontec.phpforandroid/files/bin/php -c /sdcard/com.irontec.phpforandroid/extras/php/ -f /sdcard/sl4a/scripts/fritzhome.php 087610012345 0


Noch ein wenig Wissenswertes:

Wen das Icon von PHP for Android im Menü stört, der kann sich auch die Verzeichnisse /data/data/com.irontec.phpforandroid und /sdcard/com.irontec.phpforandroid/extras/php/ und deren Inhalte sichern (am besten umbenannt direkt daneben, damit keine Rechte-Änderungen erfolgen), PHP for Android deinstallieren (ein "Uninstall" im Installer der Anwendung ist nicht notwendig) und anschließend die Kopien wieder herstellen (dafür werden sehr wahrscheinlich root Rechte benötigt)

PHP for Android ist nur einer von vielen Interpretern für das "Framework" SL4A (Scripting Layer for Android). In Verbidnung mit PHP for Android ist die Installation von SL4A samt Download-Link hier zu finden: http://www.phpforandroid.net/doku.php Wer noch mehr Infos zu SL4A sucht: https://github.com/damonkohler/sl4a Hier gibt es weitere Interpreter (Python, Perl, ...), Source Code usw. Interpreter lassen sich aber auch bequem über das installierte SL4A beziehen und installieren ("View"->"Interpreters"->"Add", dort ist bspw. auch PHP for Android zu finden). Eine Shell ist standardmäßig dabei (um den zu sehen in den Einstellungen "Show all files" aktivieren).

SL4A ist übrigens nach dessen Installation in Llama unter "Locale-Plugin" verfügbar. Wählt man es aus, gelangt man zur Startansicht von SL4A und kann dort das zu startende Skript wählen.

Gruß
hedak

PS: Im Grunde ist die Portierung auf andere Skript-Sprachen (Perl, Shell, Python) damit kein Problem (zumal hier im Forum genügend Vorlagen existieren), solange eben die Kodierungs-Umwandlung verfügbar ist
 

Anhänge

  • fritzhome_hedak.zip
    1.6 KB · Aufrufe: 28
Zuletzt bearbeitet:
Super!!!!

genau das suche ich gerade! Da ich einen Rasp Pi2 mit Kodi hauptsächlich per Smartphone bediene fehlte mir jetzt noch ein schneller Weg einen älteren Amp und Lautsprecher zuzuschalten der noch nicht auf CEC reagiert. Über die MyFritz oder Fritzbox Oberfläche ist das einfach zu umständlich.

Werd ich demnächst ausprobieren. Danke für die detaillierten Notizen!!!
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.