+ Antworten
Seite 1 von 7 1 2 3 ... LetzteLetzte
Ergebnis 1 bis 10 von 63
  1. #1
    Registriert seit
    Aug 2012
    Beiträge
    464

    Standard Info: Alexa Amazon Echo Integration

    Hallo zusammen,

    nach einigen Informationen (auch hier im Forum) möchte ich Euch meine Amazon Echo Integration vorstellen:
    Ich habe zwar noch keine hier, aber es gibt eine online-Version die perfekt funktioniert.

    Amazon Developer Account anmelden
    https://developer.amazon.com/edw/home.html#/skills/list
    Unter Alexa einen Skill Anlegen

    Erstmal einen Englischen anlegen (kann man später noch 'verdeutschen').
    Einen namen geben.
    Invocation Name eingeben: Darauf hört Alexa später, z.B: myhome

    --> Next

    Intent Schema:
    Code:
    { "intents": [ 
        { "intent": "DoCommand", 
          "slots": [ { 
            "name": "command", 
            "type": "LITERAL" } ] } ] }
    Sample Utterances
    Code:
    DoCommand {script parameters|command}
    -->NEXT

    HTTPS Als Endpoint wählen.
    Jetzt brauchen wir die symcon connect URL (Dazu wer noch nicht hat einen Symcon Connect Instanz in IPS aktivieren oder anlegen), doppelklick auf symcon connect instanz und open in webfront. dann url kopieren und wie folgt einfügen bei beiden(!) - wenn wir online testen möchten.

    North America: https://<irgendeineidvonsymconconnectg>.ipmagic.de/hook/echo/
    Europe: https://<irgendeineidvonsymconconnectg>.ipmagic.de/hook/echo/

    Beide haken setzen (EU + NA)

    -->NEXT

    Certificate Endpoint (EU / NA) beide setzen auf:
    (o) My development endpoint is a sub-domain of a domain that has a wildcard certificate from a certificate authority

    --> NEXT

    Wir springen kurz ins IPS:
    Jetzt in IPS ein Script anlegen mit folgendem Inhalt:
    PHP-Code:
    <?
     
    /*
         Amazon Echo Interface / Webhook
     */

     // Debugging anschalten? --> Log wird mit Script ID im Log Ordner geschrieben.
     
    $CONF["debug"]              = true;
     
    $applicationIdValidation    'amzn1.ask.skill.<SKILLID>'// aus dem log herausfinden
     
    $userIdValidation           'amzn1.ask.account.<USERID>'//aus dem log herausfinden
     
    $echoServiceDomain          'echo-api.amazon.com';

    $found false;
    logentry("--------------------------- NEW REQUEST ---------------------------------");
    logentry("SERVER ARRAY:");
    logentry(print_r($_SERVERtrue));
    logentry("GET ARRAY:");
    logentry(print_r($_GETtrue));
    logentry("POST ARRAY:");
    logentry(print_r($_POSTtrue));

    // Capture Amazon's POST JSON request:
    $jsonRequest    file_get_contents('php://input');
    $data           json_decode($jsonRequesttrue);
    logentry("JSON Object:");
    logentry(print_r($data,true));

    //
    // Parse out key variables
    //
    $sessionId          = @$data['session']['sessionId'];
    $applicationId      = @$data['session']['application']['applicationId'];
    $userId             = @$data['session']['user']['userId'];
    $requestTimestamp   = @$data['request']['timestamp'];
    $command            = @$data['request']['intent']['slots']['command']['value'];
    $command            strtolower($command); // For the GUI
    $requestType        $data['request']['type'];

    if( (
    $applicationId != $applicationIdValidation) || ($userId != $userIdValidation) ){
        
    logentry("Access denied, AppID or UserID wrong.");
        
    header("HTTP/1.0 404 Not Found");
        return;
    }


    #@list($script,$args) = explode(" ", $command);
    logentry("Command recieved: $command");
    $words explode(" "$command);
    $resp="";

    /* Customize your commands -------------------------------------------
     if you want to enable multiple words e.g coffee or coffemachine use | between
     the words. eg: "coffemachine|coffee on"
    */


    # Lichter ---
    #if(WordProbe("lights|light on")){              ZW_SwitchMode(47217 /*[Objekte\Funksteckdosen\Steckdose Dimmer 1 (Wohnzimmer Stehlampe)]*/,true);$resp.="";}
    #if(WordProbe("lights|light off")){             ZW_SwitchMode(47217 /*[Objekte\Funksteckdosen\Steckdose Dimmer 1 (Wohnzimmer Stehlampe)]*/,false);$resp.="";}

    # Jalousien
    #if(WordProbe("alle jalousien schräg")){         IPS_RunScript(24265 /*[Scripts\Jalousien Scripte\Jalousien ALLE schrägstellen]*/);$resp.="";}
    #if(WordProbe("alle jalousien auf|hoch|hochfahren")){IPS_RunScript(38846 /*[Scripts\Jalousien Scripte\Jalousien EG auf]*/); IPS_RunScript(11917 /*[Scripts\Jalousien Scripte\Jalousien OG auf]*/);$resp.="";}

    #Geräte
    #if(WordProbe("radio aus")){SEIR_SendCommand(15613 /*[Objekte\Sonstige Objekte\Verstärker]*/,"KEY_POWER"); $resp.="";}
    #if(WordProbe("coffee|coffeemachine on")){ZW_SwitchMode(48388 /*[Objekte\Funksteckdosen\Steckdose 1 (Kaffeemaschine)]*/,true);$resp.="";}
    #if(WordProbe("coffee|coffeemachine off")){ZW_SwitchMode(48388 /*[Objekte\Funksteckdosen\Steckdose 1 (Kaffeemaschine)]*/,false);$resp.="";}

    # Abfragen ---
    #if(WordProbe("temperature outside")){           $resp.= "Temperature outside is ".GetValueFormatted(42998 /*[Objekte\1Wire\Read1Wire über OWServer\1W_AussenNord]*/);}

    logentry("Found command: $found");
    if(
    $found && $resp == "")$resp "OK";
    if(!
    $found$resp "Command not found. I understood: $command";
    logentry("Response:  $resp");


     
    // Provide JSON response to echo.
     
    header('Content-Type: application/json;charset=UTF-8');
     
    // Determine whether or not to end this interaction with Alexa
     
    $shouldEndSession 'true';
     
    $text '{
                    "version" : "1.0",
                    "response" : {
                        "outputSpeech" : {
                                            "type" : "PlainText",
                                            "text" : "'
    .$resp.'"
                                            },
                        "shouldEndSession" : '
    .$shouldEndSession.'
                    }
                }'
    ;

     
    // Response do Amazon Web Service (or GUI)
     
    header('Content-Length: ' strlen($text));
     echo 
    $text;

    /*--------------------------------------------------------------------------*/

    function WordProbe($wrd){
       global 
    $words$found;
       
    $wrd strtolower($wrd);
        
    $p explode(" "$wrd);

        
    $cnt 0;
        foreach(
    $p as $w){
            
    // Mehrere Wörter prüfen
            
    if(strpos($w"|")){
               
    // Mehre Optionen
               
    $wa2 explode("|",$w);
               foreach(
    $wa2 as $w2){
                      if(
    in_array($w2$words)) $cnt++;
               }
            } else {
                
    // EInzelwort
                
    if(in_array($w$words)) $cnt++;
            }
        }
        if(
    $cnt >= count($p)){
            
    $found true;
            return 
    true;
        }else{
           return 
    false;
        }
    }

    function 
    logentry($msg ""){
     global 
    $CONF;
     
    $id $_IPS['SELF'];
     if(
    $CONF["debug"])file_put_contents("../logs/".$id."_dbg.log"date('Y-m-d H:i:s').": ".$msg."\n"FILE_APPEND);
    }


     
    ?>
    Jetzt mit dem WebHook Control noch einen Webhook auf dieses script mit kennung 'echo' in IPS anlegen.

    Zurück zur Amazon Sklill definition

    Unter Service Simulator einen Befehl eingeben und den Ask knopf drücken.
    Jetzt müsste vermutlich eine Fehlermeldung kommen.
    Das Script muss jetzt in IPS angepasst werden:

    Zurück zu IPS:
    Im Log Ornder müsste eine Log Datei vorhanden 21694_dbg.log (script id im dateinamen entsprechend dem eben erstellten script).
    In dieser LogDatei finden wir die Parameter die Echo übermittelt hat:
    -applicationId
    -userId
    Beide Werte passen wir im Script entsprechend an und speichern das script.

    Zurück zu der Einrichtung bei Amazon
    Nochmals testen.
    Jetzt müsste die Verbindung klappen.
    wenn nicht nochmals alles genau prüfen.

    --->NEXT

    Weitere Felder entsprechend der Defintion ausfüllen und den Skill fertigstellen.

    Nun auf echoism.io einmal mit amazon user anmelden und alexa irgendwas fragen. Wetter etc. (englisch).

    Jetzt gehen wir auf https://alexa.amazon.de
    Unter Settings müssten wir die echosim.io alexa finden.
    Nun Links im Menü Skills auswählen dann oben rechts "your Skills" wählen.
    dort könnt Ihr den eben erstellen Skill aktivieren.

    Bitte beachten - derzeit ist alles Englisch / Deutsch ist noch nicht frei.

    Nun könnt ihr auf echosim.io mit dem invocation name IPS ansprechen:
    "Alexa, ask myhome turn on lights"

    --> die daten werden per Webhook an das script übermittelt.
    Im mittleren Bereich des Scriptes könnt Ihr auswerten - dazu gibt es schon eine Funktion im script:
    Alles ist derzeit auskommentiert.
    PHP-Code:
    if(WordProbe("lights|light on")){ ...} 
    Prüft ob alexa im command lights oder light und das wort on gesendet hat.

    Es funktioniert bei mir tadellos und ich freu mich schon auf die deutsche Alexa.
    Viel spass beim nachbasteln

    PS:
    nicht vergessen logging später wieder zu deaktivieren. Im log findet ihr alles, was alexa sendet.
    • IPS auf HP Proliant N40L 1x64GB SSD, 3TB, 6GB RAM •
    • Z-Wave von Fibaro und Everspring • OpenWRT Ansteuerung • 1-Wire •
    • WMRS 200 Wetterstation • CAPI mit FritzBox •

  2. #2
    Registriert seit
    Feb 2011
    Beiträge
    685

    Find ich gut das hier was passiert.... !!
    Vielleicht hängst du dich hier mit ran. Es gibt zum Echo schein Thread mit Script.

    Gruß
    Christian
    IPS 5.3 @ Synology Docker DS916+ / RaspBerryMatic / ipsView / Sonos / PhilipsHue / Z-Wave / Unifi Protect / Ubiquity / Amazon Echo

  3. #3
    Registriert seit
    Aug 2012
    Beiträge
    464

    Hallo zusammen,

    ein gleines Update in diesem Thread aber mit einfache rund großer Wirkung:

    Gestern mein Echo bekommen!
    Und hier die Integration OHNE externe URL oder einem zusatz Skill oder sonst wie.
    Der Trick:

    Echo kann mit Philips hue Reden im selben Netz.
    Wir nehmen einen Hue Emulator mit Bridge und leiten die Befehle an einen IPS Hook weiter:

    Hier kurz die Schritte:

    1.
    Die HA Bridge auf einem Rechner im Netz Installieren:
    GitHub - bwssytems/ha-bridge: Home automation bridge that emulates a Philips Hue light system and can control other systems such as a Vera, Harmony Hub, Nest, MiLight bulbs or any other system that has an http/https/tcp/udp interface. This is a compact impl to run on small format computers. This is impl started from this project GitHub - armzilla/amazon-echo-ha-bridge: emulates philips hue api to other home automation gateways.

    2.
    Geräte auf de HA Bridge einrichten und mit einer Webhook URL an IPS versehen
    ON Url zb. http://IPS:8080/hook/hue/?d=stehlampewohnzimmer&stat=on

    3. Echo nach Geräten suchen lasen.

    4. Webook in IPS für /hue einrichten.

    Beispielscript für den hook:
    PHP-Code:
        $device $_GET["d"];
        
    $stat   = ($_GET["stat"] == "on")? truefalse;
        
    $dim    intval(@$_GET["dim"]);
        
    $hue =  $device.":".$stat.":".$dim;
        echo 
    $hue;
        
    IPS_LogMessage($_IPS['SELF'],$hue);

        switch(
    strtolower($device)){
           case 
    "stehlampe"zw_switchmode(33630 /*[Objekte\Funksteckdosen\Funksteckdose Strommesser EG Lampe greenwave]*/$stat);
                             break;
            case 
    "kaffeemaschine"ZW_SwitchMode(48388 /*[Objekte\Funksteckdosen\Steckdose 1 (Kaffeemaschine)]*/,$stat);
                             break;

            case 
    "stehlampewohnzimmer"ZW_SwitchMode(47217 /*[Objekte\Funksteckdosen\Steckdose Dimmer 1 (Wohnzimmer Stehlampe)]*/,$stat);
                                                 if(!empty(
    $dim)) ZW_DimSet(47217 /*[Objekte\Funksteckdosen\Steckdose Dimmer 1 (Wohnzimmer Stehlampe)]*/,$dim);
            break;

    That's it.

    Wäre mal ein Grund ein Hue Emulator in IPS einzubauen und das native zu unterstützen.
    Sourcen sind ja vorhanden.

    Viel Erfolg - es ist GENIAL.
    • IPS auf HP Proliant N40L 1x64GB SSD, 3TB, 6GB RAM •
    • Z-Wave von Fibaro und Everspring • OpenWRT Ansteuerung • 1-Wire •
    • WMRS 200 Wetterstation • CAPI mit FritzBox •

  4. #4
    Registriert seit
    Mar 2007
    Ort
    Oberhausen-Rheinhausen
    Beiträge
    409

    Standard Super Idee....

    Hallo,

    finde deinen Ansatz ohne dass ein Zugriff nach extern erfolgen muss sehr gut.

    So in der Art wie die Philips Hue angesprochen wird müsste es direkt an die IPS gehen - das wäre sicherlich die beste Lösung......

    Super Idee

    Grüße Heinz

    iP-Symcon 5.x (Windows 10 x64 auf ESXi 5)
    Z-Wave | IRTrans (Ethernet) | eHZ | Bose Lifestyle 650 | SONOS | LAN-T 846 | Keba | Tesla | Pool mit Bayrol und euromatik | verschiedene IP-Cams

  5. #5
    Registriert seit
    Jul 2007
    Ort
    Altlußheim
    Beiträge
    346

    Hallo zusammen,

    Ich glaube nicht, dass die HUE-Variante sehr viel sicherer ist und ohne Zugriff von extern funktioniert. Im der Konfig findet sich z.B.

    Code:
    --upnp.config.address=192.168.1.240 --server.port=8081
    oder

    Code:
    --upnp.config.address=$(ip route get 8.8.8.8 | egrep -o '[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\s*$')"]
    Hier wird vermutlich eine Portweiterleitung auf den "HUE"-Dienst vorgenommen, ist zwar besser als IPS im Internet, aber schön ist es auch nicht ...

    Grüße

    Andreas
    Chromoflex III @ ubox, Homematic über LAN-Adapter
    1-Wire-Master@Lantronics (Shutter, Temp, Helligkeit, Luftfeuchte, Luftqüte)
    AVR-Net-IO (Helligkeitsmessung/Regendauer/S0-Counter), PoKeys56E
    WMRS200 an SX-1000U / Z-Wave / RaspberryPi

  6. #6
    Registriert seit
    Jul 2014
    Beiträge
    45

    Hi Andreas,

    nein, da wird die IP des lokalen PCs angegeben. Die virtuelle Hue Bridge connected also imho nicht das Netz.
    Und Echo fragt nur die lokalen HUE Bridge ab. (ich habe die Sourcen allerdings nicht durchforstet...)
    Und das ich mein IPS nicht von außen erreichbar machen muß ist für mich der wichtigste Punkt überhaupt für die HueBridge Lösung. Insbesondere da die Sicherheit von IPS ja gerade recht kontrovers diskutiert wird.

    Gruß Frank

  7. #7
    Registriert seit
    Apr 2005
    Beiträge
    41

    Hallo Zusammen,

    da ich mein Echo dot nun Samstag erhalten habe, versuchte ich gestern Abend mal mit Hilfe dieser Anleitung es in IPS zu integrieren. (Nicht per virtueller Hue Bridge)
    Tja irgendwie habe ich es weder mit der Skill Testumgebung noch nach Aktivierung des eigenen Skills mit dem Echo selbst hinbekommen.
    Den Skill habe ich, wie aus der Anleitung ersichtlich, erstellt.
    So richtig weiß ich die Ursache nicht, eventuell kann mir jemand einen Tipp geben was ich vergessen haben könnte oder auf was ich besonders achten muss…
    Ich habe unter Kern Instanzen IP-Symcon Connect aktiviert und den String „Open in Webfront“ auch im Skill eingetragen. Nach Serverneustart kam ich mit dem String auch von außen auf mein Webfront.
    Habe dann Webhook hinzugefügt und als Ziel das Beispiel-Script angegeben, muss ich da eventuell auf etwas achten, mit dem Thema (Webhook) kenne ich mich leider gar nicht aus.
    Die Nutzer-Id etc. hatte ich schon aus dem Protokoll, welches mir die Amazon Testumgebung vom Skill anzeigte, im Script eingetragen.
    Letztendlich wurde das Script aber nie aufgerufen, habe gestern erst mal alles wieder gelöscht.
    Da ich es eventuell heute Abend nochmal versuchen möchte bin ich nun für jeden Tipp dankbar…


    Gruß André

  8. #8
    Registriert seit
    Apr 2005
    Beiträge
    41

    Hallo,

    habe gerade nochmal gelesen und glaube ich habe den Fehler gefunden!
    Hatte zwar "xxxx.ipmagic.de/hook/echo/" im Skill eigegeben aber den Hook "Echo1" genannt


    Gruß André

  9. #9
    Registriert seit
    Apr 2005
    Beiträge
    41

    Hallo,

    so,...es war der Fehler wie gedacht!
    Funktioniert jetzt, Licht etc. wird geschaltet allerdings meldet Alexa das bei der Kommunikation mit dem Skill ein Fehler aufgetreten ist. Sehe dann in der App unerwarteter Kommunikationsfehler darunter ist dann der "Request Identifier" aufgelistet. Da scheint wohl die Antwort nicht zu passen...
    Da komme ich jetzt auch nicht weiter, habe es wie oben im script,... jemand eine Idee?


    Gruß André

  10. #10
    Registriert seit
    Apr 2005
    Beiträge
    41

    @Stele99,

    vielen Dank für die super Anleitung, sowie für die Scripte zur Integration!
    Inzwischen hab ich diese mit alternativen kombiniert, auf meine Bedingungen angepasst und es funktioniert bestens!

    Nochmals vielen Dank für die Arbeit!


    Gruß André

Ähnliche Themen

  1. Amazon Echo an Symcon anbinden inklusive Proxy
    Von axelroro im Forum Amazon Alexa
    Antworten: 622
    Letzter Beitrag: 13.12.18, 09:28
  2. Integration mit Amazon Echo funktioniert
    Von ckerndl im Forum Allgemeine Diskussion
    Antworten: 19
    Letzter Beitrag: 24.12.16, 10:31
  3. Amazon "Echo"
    Von pleibling im Forum Off Topic
    Antworten: 36
    Letzter Beitrag: 14.09.16, 12:32
  4. Amazons Alexa auf Raspberry Pi
    Von da8ter im Forum Mikrocontroller
    Antworten: 1
    Letzter Beitrag: 26.03.16, 21:45
  5. Amazon Echo
    Von aag im Forum Schaufenster
    Antworten: 6
    Letzter Beitrag: 10.03.16, 10:12