Ankündigung

Einklappen
Keine Ankündigung bisher.

Amazon Alexa Plugin

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Guten Tag zusammen,

    nach mehreren Anläufen habe ich es nun geschafft, das Alexa Plugin zum laufen zu bringen. Meine Nginx Config war bisher wohl nicht ganz richtig.
    Ich kann nun Lampen über Alexa schalten, aber das leider nicht immer. Oft läd Alexa vor sich hin und sagt dann nach ca. 10s "Gerät nicht verfügbar". Manchmal geht es 3x hintereinander gut. Dann wieder nicht. Hatte jemand vielleicht schon das gleiche Problem oder hat eine Idee wie ich die Ursache ermitteln könnte? Danke vorab.

    Gruß

    Kommentar


      Das liegt leider an Alexa und den benutzten Schlagwörtern.
      Bei mir ist es am schlimmsten mit dem Wort „Rolladen“ in Kombination mit anderen Worten. Das schnallt die Lady irgendwie nicht so richtig.

      Da hilft nur ausprobieren welche Worte am besten erkannt werden. Ich habe den Eindruck, wenn die Funktionen für Alexa eigene Sachen benutzt werden wird es schwieriger.

      Ich habe deshalb bei mir fast nur noch Szenen die ich ansteuere mit Alexa. Das funktioniert definitiv am besten und eigentlich immer problemlos. Beispiel im WZ „aktiviere Szene beschatten“

      Grüße, Marc

      Kommentar


        Mhm okay, danke für den Hinweis. Dann werde ich versuchen auf die Formulierung zu achten.
        Alexa hat damit Probleme auch wenn ich 10x genau den selben Wortlaut verwende? Dann geht es trotzdem manchmal und manchmal nicht?

        Kommentar


          Hallo zusammen, ich muss leider nochmals nachfragen, da ich nicht wirklich weiterkomme. Die Formulierung kann ich nun ausschließen, da es auch direkt über die Alexa App nur sporadisch funktioniert. Auch in der App steht öfter "Gerät reagiert nicht". Stellenweise funktionieren die Geräte trotzdem und die Meldung verschwindet kurz. Mittlerweise habe ich schon mehrere Lampen und auch Jalousien eingebunden. Grundsätzlich funktionieren alle Geräte, aber leider nur hin und wieder. So macht die Sprachsteuerung leider keinen Spaß. Hier ein Beispielcode einer Lampe:

          Code:
          lichtfenster:
          name: Licht Fenster
          type: bool
          knx_dpt: 1
          knx_send: 0/1/21
          knx_listen: 0/4/21
          knx_cache: 0/4/21
          alexa_name: Licht Küchenfenster
          alexa_description: Licht Küchenfenster
          alexa_device: Licht_kuechefenster
          alexa_actions: TurnOn TurnOff
          alexa_retrievable: true
          alexa_icon: LIGHT
          Hat jemand vielleicht eine Idee woran das liegen könnte oder einen Ansatz um die Sache zu untersuchen? Vielen Dank vorab!

          Gruß
          Angehängte Dateien

          Kommentar


            Hallo,

            zunächst eine Anmerkung: Du solltest einheitlich bleiben, also nicht Küchefenster und Küchenfesnter mischen..
            Funktioniert denn alles aus dem Webinterface des SHNG ohne Verzögerung?
            Bei mir habe ich ab und an Verzögerungen bei der Spracheingabe, dann hilft ein Reboot des Echos...

            Gruß Jürgen

            Kommentar


              Hi Lacroix ,

              zunächst würde ich den Versuch übers WEB-Interface, wie von Jürgen beschrieben, machen. Wenn das ohne Problem funktioniert solltest Du prüfen welche Anfragen
              im WEB-Interface im Protokoll bei Dir ankommen. Sollte hier schon nichts ankommen müsste die Suche in den NGINX-Logs und in den Cloudwatch Logs der Amazon-AWS-Konsole weitergehen. Am einfachsten findest Du die Probleme wahrscheinlich in den Cloudwatch Logs.

              Solltest Du nicht weiterkommen melde Dich nochmal.

              Viele Grüsse
              Andre

              Kommentar


                Vielen Dank für eure Tipps und Ansätze! Ich werde der Sache die Tage nachgehen.
                Langsam bekomme ich das Gefühl, es liegt generell an der Verbindung zum Pi (von außen). Wenn ich von außen /Alexa oder /smartvisu aufrufen möchte, dauert es manchmal 10-20s bis das Zertifikat-Prompt erscheint. Manchmal kommt das PopUp aber auch direkt.

                Gruß

                Kommentar


                  So, entschuldigt die späte Rückmeldung. Aktuell habe ich beruflich etwas Stress und das KNX Projekt ist für meine Schwester. Da kann ich an dem Alexa Thema nur weiterarbeiten wenn ich vor Ort bin.
                  Ich habe heute die NGINX Logs überprüft und dabei ist mir aufgefallen, dass sich in den "Gerät reagiert nicht"-Fällen überhaupt nichts tut.
                  Also bin ich zur CloudWatch Management Console und habe mir die Protokolle angeschaut. In den Problemfällen gibt es anscheinend ein Timeout nach 10s.

                  Code:
                  2021-09-04T11:59:27.775Z 10ff2090-1b7d-40a4-8366-28684a1ed262 Task timed out after 10.01 seconds
                  Wenn es funktioniert, geht das Ganze in fast einer Sekunde recht zügig über die Bühne. Hat jemand eine Idee woran das liegen könnte? Hin und wieder brauche ich auch bei einem externen Smartvisu Zugriff sehr lange bis die Zertifikatsanfrage kommt (bis zu 30s). In der Regel funktioniert es aber direkt. Ich weiß nicht ob das evt. zusammenhängt. Kann es sein, dass der DynDNS manchmal träge reagiert?

                  Kommentar


                    Ich habe mir eben lokal Node.JS installiert und die Lambda Request von meinem PC aus geschickt. Und siehe da, es funktioniert immer auf Anhieb. Es muss irgendwas mit Amazon zutun haben. Da alle Requests i.d.R. in weniger als 1000ms vonstatten gehen, habe ich den Timeout mal auf 2s gesetzt und die Lambda Funktion sehr oft hintereinander getestet. Dabei fiel mir auf, dass fast immer jede zweite Request in ein Timeout läuft?! Was ich absolut nicht verstehen kann. Testweise habe ich auch ohne Erfolg Node.JS 12 und 10 getestet. Als vorläufigen Workaround habe ich nun den Code so umgebaut, dass die Funktion einfach immer 2x ausgeführt wird. So funktioniert es nun in 95% der Fälle. Hier der Code falls jemand vor dem gleichen Problem steht:

                    Code:
                    exports.handler = function(event, context, callback) {
                    var data = JSON.stringify(event)
                    var options = {
                    hostname: process.env.SMARTHOME_HOST,
                    port: process.env.SMARTHOME_PORT,
                    path: process.env.SMARTHOME_PATH,
                    method: 'POST',
                    auth: process.env.SMARTHOME_AUTH,
                    headers: {
                    'Content-Type': 'application/json',
                    'Content-Length': Buffer.byteLength(data)
                    }
                    };
                    var https = require('https');
                    
                    function sendData() {
                    var req = https.request(options, (res) => {
                    console.log(`HTTP ${res.statusCode}`);
                    res.setEncoding('utf8');
                    var responseData = '';
                    res.on('data', (dataChunk) => {
                    responseData += dataChunk
                    });
                    res.on('end', () => {
                    console.log('raw response:', responseData)
                    var response = JSON.parse(responseData);
                    if (res.statusCode == 200) {
                    console.info('OK', JSON.stringify(response))
                    callback(null, response);
                    }
                    else {
                    console.error('Failed', JSON.stringify(response))
                    callback('DependentServiceUnavailableError');
                    }
                    });
                    });
                    req.on('error', (e) => {
                    console.error('request failed', e);
                    callback(e);
                    });
                    console.log('requesting', data)
                    req.write(data);
                    req.end();
                    }
                    
                    sendData();
                    sendData();
                    }
                    Kann sich da irgendjemand einen Reim darauf machen? Das Verhalten ist schon etwas seltsam.

                    Meine ursprüngliche Idee war es, einen eigenen Timeout im Code auf beispielsweise 1500ms zu setzen und im Timeout-Fall eine neue Request zu schicken und das bis zu 3x. Lokal konnte ich das umsetzen. Bei Amazon wurde mein Timeout Callback allerdings immer ignoriert.

                    Gruß
                    Zuletzt geändert von Lacroix; 10.09.2021, 11:13.

                    Kommentar

                    Lädt...
                    X