Simple Echo/Alexa-integration mit fauxmo

Begonnen von AndiTheBest, 02 September 2017, 10:26:18

Vorheriges Thema - Nächstes Thema

AndiTheBest

Hallo,

für alle die wie ich keine aufwendigen Installationen durchführen wollen und mit einfachem ein/ausschalten von Geräten auskommen, habe ich eine simple Methode gefunden.

Zuerst brauchen wir eine apache-installation mit php
sudo apt-get install libapache2-mod-php5

und fauxmo (https://github.com/makermusings/fauxmo)

git clone https://github.com/makermusings/fauxmo.git
cd fauxmo
nano fauxmo.py


Am unteren Ende der Datei findet sich die Befehlsliste "FAUXMOS"

Hab folgendes eingetragen:
FAUXMOS = [
    ['Fernseher', rest_api_handler('http://10.0.0.10/get.php?set=TV&state=on', 'http://10.0.0.10/get.php?set=TV&state=off')],
    ['Radio', rest_api_handler('http://10.0.0.10/get.php?set=Radio&state=on', 'http://10.0.0.10/get.php?set=Radio&state=off')],
]


Hinweis: 10.0.0.10 ist die IP meines Raspberrys, auf dem auch FHEM läuft, und TV bzw. Radio sind in FHEM als Intertechno Steckdosen definiert.
Anschließend wird fauxmo gestartet.
./fauxmo.py -d
Der -d Parameter dient zum debuggen und kann später weggelassen werden. Ich starte meine Dienste immer in einem "screen" damit sie dann im Hintergrund weiterlaufen.


Im Ordner /var/www/html erstellen wir jetzt die Datei "get.php", mit der die GET-Requests von Alexa an FHEM weitergegeben werden:

<?php

if(isset($_GET["set"])) {
        
$cmd="echo 'set ".$_GET["set"]." ".$_GET["state"]"' | nc -w5 localhost 7072 &";
        
shell_exec ($cmd);
}

?>


Hinweis: Der telnet-Port meiner FHEM-Installation ist nicht Passwortgeschützt.
Es müsste aber auch mit folgendem befehl mit passwort gehen:
$cmd="echo PASSWORT; sleep 1; echo 'set ".$_GET["set"]." ".$_GET["state"]"' | nc -w5 localhost 7072 &";

Fertig. Mit einem einfachen "Alexa, schalte den Fernseher ein" läuft die Kiste.

Ich hoffe ich habe nicht zu viel übersehen bezüglich Zugriffsberechtigungen, da ich schon relativ viel mit FHEM-externen Scripts gearbeitet habe.