Ankündigung

Einklappen
Keine Ankündigung bisher.

Amazon Alexa Plugin

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

    Hi schuma

    wenn schon mal wieder einer durch die aktuelle "Hell of Amazon" geht - mit all den Oberflächenänderungen - wäre es schön nicht nur eine Diff-Doku
    (was alles nicht mehr passt) zu erstellen sondern eine "komplette" Doku. Zieh das mal in Betracht, würde sicherlich allen helfen. (Ein paar Screen-Shots mit bunten frames und Hinweisen helfen da schon viel :-) ). Wo die Doku dann gehostet wird können wir dann immer noch festlegen.
    Da bei Amazon die Seiten sehr schnell umgestellt werden ist es fast aussichtslos hier immer aktuell zu bleiben - aber, das System lebt !

    Gruss Andre

    Kommentar


      Da hast Du recht. Mache ich dann!
      Aber erstmal muss das laufen....

      Grüße, Marc

      Kommentar


        Hallo Salf ,

        ja die die fehlenden Actions sind dort drin, irgendwas ging bei Deinem Upate schief - meine Vermutung.
        Kannst ja mal die Dateien durch suchen :

        Code:
        cat /usr/local/smarthome/plugins/alexa4p3/p3_action.py | grep SetRangeValue
        Sollte liefern :

        Code:
        @alexa('SetRangeValue', 'SetRangeValue', 'rangeValue','Alexa.RangeController',[],"3")
        def SetRangeValue(self, directive):
        self.logger.info("Alexa P3: SetRangeValue({}, {:.1f})".format(item.id(), item_new))
        Falls nicht fehlt hier noch etwas

        Gruss Andre

        Kommentar


          Hallo @AndreK,

          Danke für die Hilfe. Es lag doch an mir. Vergesse immer ein paar Schritte auf der Synology NAS.

          Mein Fehler war, dass ich das Plugin in meinen separaten Smarthome Ordner gelegt hatte, aber vergessen habe die dem Docker Image zu mappen. Dadurch hatte ich nur die Standard alexa4p3 aus dem Master von SHNG v1.6.

          Habe aber durch deine Hilfe ein paar Tricks gelernt, wo ich nachschauen kann.

          Jetzt kommt aber eine neue Fehlermeldung.
          Code:
          2020-01-16 21:44:45 ERROR alexa4p3 Plugin 'alexa4p3' exception in run() method: local variable 'msg' referenced before assignment
          Traceback (most recent call last):
          File "/usr/local/smarthome/lib/plugin.py", line 674, in run
          self.plugin.run()
          File "/usr/local/smarthome/plugins/alexa4p3/__init__.py", line 102, in run
          self.validate_devices()
          File "/usr/local/smarthome/plugins/alexa4p3/__init__.py", line 316, in validate_devices
          if not device.validate(self.logger, self._proto):
          File "/usr/local/smarthome/plugins/alexa4p3/device.py", line 127, in validate
          proto.addEntry('WARNING',msg)
          UnboundLocalError: local variable 'msg' referenced before assignment
          Gruß Salf

          Kommentar


            Hallo AndreK

            ich habe soeben in der Datei device.py die Zeile 127 wie folgt geändert und es kommt nun keine Fehlermeldung.

            ALT:
            Code:
            proto.addEntry('WARNING',msg)
            NEU:
            Code:
            proto.addEntry('WARNING',"Alexa-Device {}: empty description, fallback to name '{}' - please set `alexa_description`".format(self.id, self.name))
            PS: Das Problem mit der Beschreibung ist nun auch behoben.

            Gruß Salf

            Kommentar


              Noch eine kurze Frage....
              Habt Ihr in Eurem Amazon development Account die
              ausgefüllt? Oder ist das für unseren Zweck nicht nötig?

              Kommentar


                Zitat von schuma Beitrag anzeigen
                Habt Ihr in Eurem Amazon development Account dieausgefüllt?
                Ich habe da nichts ausgefüllt
                Meine Installation: VM Debian Stretch SH NG 1.6, SmartVISU 2.9, KNX, DMX, 1-wire, Cisco ASA 5512X IPS, VMware vSphere 6.7

                Kommentar


                  Zitat von yachti Beitrag anzeigen
                  Ich habe da nichts ausgefüllt
                  OK, Danke für die Info!

                  Onkelandy Was muss ich in dem Image genau an den nginx Dateien ändern um das Alexaplugin zu benutzen?
                  Am besten ersteinmal mit basic auth. Oder ist das mit den Zertifikaten schon angelegt?

                  Es schein jetzt, bei mir, nur noch daran zu liegen.

                  Im Webif wird die eine Lampe angezeigt und in der Alexa App konnte ich den selbst erstellten Skill verbinden und aktivieren.
                  Die Verbindung der beiden (Alexa/shng) scheint aber noch nicht zu klappen.
                  Alexa findet keine Geräte.

                  Grüße, Marc

                  Kommentar


                    Bei mir ist die domain.conf im nginx wie folgt.
                    Zitat von schuma Beitrag anzeigen

                    Was muss ich in dem Image genau an den nginx Dateien ändern um das Alexaplugin zu benutzen?
                    Code:
                    # alexa
                    server {
                    server_tokens off;
                    listen 443 ssl;
                    server_name host.domain.de;
                    # gzip should not be used with ssl
                    gzip off;
                    ##
                    # SSL
                    # Global SSL in nginx.conf
                    ##
                    # ssl on;
                    ssl_certificate /etc/letsencrypt/live/host.domain/fullchain.pem;
                    ssl_certificate_key /etc/letsencrypt/live/host.domain/privkey.pem;
                    add_header Strict-Transport-Security "max-age=63072000; includeSubDomains" always;
                    access_log /var/log/nginx/host.log combined;
                    # maintain the .well-known directory alias for letsencrypt & renewals
                    location /.well-known {
                    auth_basic off;
                    alias /var/www/html/.well-known;
                    }
                    auth_basic "user";
                    auth_basic_user_file /etc/nginx/htpasswd;
                    
                    location / {
                    add_header Strict-Transport-Security "max-age=63072000; includeSubDomains" always;
                    proxy_set_header Host $host;
                    proxy_set_header X-Real-IP $remote_addr;
                    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                    proxy_set_header X-Forwarded-Proto $scheme;
                    proxy_pass http://hostintern.domain.de:9000/;
                    proxy_read_timeout 90;
                    }
                    
                    }
                    Gruß
                    Michael
                    Meine Installation: VM Debian Stretch SH NG 1.6, SmartVISU 2.9, KNX, DMX, 1-wire, Cisco ASA 5512X IPS, VMware vSphere 6.7

                    Kommentar


                      schuma am besten orientierst du dich am monit Eintrag in der nginx Config Datei unter availablesites.
                      Statt proxy_pass http://monithost; müsstest du http://alexa eingeben und ganz oben in der Datei checken, ob 9000 der richtige Port ist.

                      Wäre super, du könntest hier die fertige Config posten, dann kann ich das aktualisieren. Persönlich würde ich präferieren, Alexa ist in einem entsprechenden Unterverzeichnis und nicht im HTML Root.

                      Mit Zertifikaten müsste alles klappen, aber du musst neue anlegen lassen, am besten mit setup_all

                      Kommentar


                        Zitat von Onkelandy Beitrag anzeigen
                        Mit Zertifikaten müsste alles klappen, aber du musst neue anlegen lassen, am besten mit setup_all
                        Das heißt, wenn ich setup_all aufrufe kann ich dort ein Zertifikat anlegen lassen, und damit sollte alexa dann funktionieren? Ohne weitere Einstellungen?
                        Muss man dann das Zertifikat alle 3 Monate von Hand aktuallisieren und passiert das irgendwie automatisch?

                        Was muss ich dann in der Lambda Funktion bei SMARTHOME_AUTH als userasswort eintragen?

                        Kommentar


                          Was muss ich dann in der Lambda Funktion bei SMARTHOME_AUTH als userasswort eintragen?
                          Ich habe da den User und Passwort eingetragen aus der nginx

                          Code:
                          auth_basic "user";
                          auth_basic_user_file /etc/nginx/htpasswd;
                          Meine Installation: VM Debian Stretch SH NG 1.6, SmartVISU 2.9, KNX, DMX, 1-wire, Cisco ASA 5512X IPS, VMware vSphere 6.7

                          Kommentar


                            schuma ,
                            schau mal hier, da steht wie man den User für Alexa und andere anlegt und wie die Config aussehen muss. Da hat sich meines Wissens nichts geändert.

                            Am besten im AWS-Zentrum mal mit einer Test-Funktion zugreifen - dort bekommst du dann entsprechende Fehlermeldungen.

                            Test-Funktion für ein Discovery :
                            Code:
                            {
                            "directive": {
                            "header": {
                            "namespace": "Alexa.Discovery",
                            "name": "Discover",
                            "payloadVersion": "3",
                            "messageId": "abc-123-def-456"
                            },
                            "payload": {
                            "scope": {
                            "type": "BearerToken",
                            "token": "access-token-from-skill"
                            }
                            }
                            }
                            }
                            Die Testfunktionen findest Du oben rechts - "configure Test-Events" bei der Lambda-Funktion - dort einfach den obigen Code einfügen und speichern, danach kannst Du mit "Test" die Funktions ausführen. - Meldungen kommen dann prompt.


                            Gruss Andre

                            Kommentar


                              Zitat von Onkelandy Beitrag anzeigen
                              schuma am besten orientierst du dich am monit Eintrag in der nginx Config Datei unter availablesites.
                              Statt proxy_pass http://monithost; müsstest du http://alexa eingeben und ganz oben in der Datei checken, ob 9000 der richtige Port ist.
                              Hmm, irgendwie schnalle ich es nicht....

                              Es gibt ja unter nginx/conf.d die Datei https.conf

                              Dort gibt es ja diesen Eintrag:
                              Code:
                              # Alexa Plugin Weiterleitung
                              location /alexa/ {
                              include /etc/nginx/headers.conf;
                              satisfy any;
                              auth_basic "Restricted Area: Alexa";
                              auth_basic_user_file /etc/nginx/.alexa;
                              allow 127.0.0.1;
                              allow 192.168.0.0/16;
                              allow 10.0.0.0/16;
                              allow ::1;
                              deny all;
                              
                              # This script tests the SSL certificate and enables Websocket access with Apple devices.
                              # If you want to limit your access to devices with certificates (recommended!), don't remove this line!
                              access_by_lua_file /etc/nginx/scripts/hass_access.lua;
                              
                              proxy_pass http://alexa;
                              }
                              Jetzt habe ich in der Datei nginx/.alexa mein Passwort und Benutzername aus der Lambdafunktion eingefügt.

                              In welcher Datei soll ich nun den Port checken?

                              Sorry, aber ich stehe hier echt auf dem Schlauch....

                              Kommentar


                                /etc/nginx/sites-available/default

                                Allerdings ist da die Frage, ob es mit den Zertifakten der richtige Weg ist. Kannst aber natürlich auch einfach nur basic auth aktivieren.
                                Die Zertifikate werden automatisch alle 3 Monate aktualisiert, sofern man aus dem Internet auf dem Port 80 auf deinen Rechner kommt.

                                Kommentar

                                Lädt...
                                X