Ankündigung

Einklappen
Keine Ankündigung bisher.

Alexa Smarthome Skill (Payload Version 3)

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

    Zitat von nullo83 Beitrag anzeigen
    hast du noch einen tipp oder idee woran es noch scheitern könnte?
    Der Fehler tritt auf, wenn die Aktivierung nicht erfolgreich verläuft.
    Was erscheint denn im Log des Skill Skripts?
    Sicher, dass du die aktuellste Version verwendest, die ich letzte Woche hochgeladen habe?

    Kommentar


      Falls jemand wie ich Edomi auf dem Raspberry (mit Ubuntu) laufen hat muss folgendes gemacht werden, damit die Prüfung des tokens funktioniert:
      Code:
      sudo mkdir -p /etc/pki/tls/
      sudo ln -s /etc/ssl/certs/ca-certificates.crt /etc/pki/tls/cacert.pem
      Ansonsten kann der Skill erst gar nicht aktiviert werden und im log erscheint nur "OAUTH Access Token invalid"

      Kommentar


        Zitat von Guidokoeller Beitrag anzeigen
        Gibt es auch die Möglichkeit eine Jalousie zu steuern? Abgesehen über ein/aus
        Ich habe gerade was in der Dokumentation von Amazon gefunden: Alexa, raise the bedroom blinds.
        https://developer.amazon.com/de-DE/d...ontroller.html
        Es müsste also prinzipiell möglich sein EIN/AUS auf HOCH/RUNTER zu mappen.

        Kommentar


          Zitat von philipp900 Beitrag anzeigen
          Ich habe gerade was in der Dokumentation von Amazon gefunden: Alexa, raise the bedroom blinds.
          https://developer.amazon.com/de-DE/d...ontroller.html
          Es müsste also prinzipiell möglich sein EIN/AUS auf HOCH/RUNTER zu mappen.
          Damit habe ich heute angefangen. Ich hoffe, dass ich morgen erfolgreich RangeController discovern kann. Ist aber mit Abstand das komplexeste Alexa Device, daher wird die Implementierung nicht generisch sein, sondern zunächst speziell für Rolläden, d.h. hoch/runter, 0-100%. Ich denke im Laufe der nächsten zwei Wochen wird da bestimmt was funktionierendes bei herauskommen.

          Was ich übrigens auch erfolgreich getestet habe, ist der CameraStreamController, um z.B. Hikvision Kameras auf dem Echo Show oder Spot anzuzeigen. Allerdings sind hierzu die Tools Live555 als Proxy und stunnel als TLS1.2 Tunnel notwendig. Die Verzögerung von ca. 10 Sekunden zum Livestream ist allerdings nicht ganz so prickelnd, ist aber vermutlich die Komplexität geschuldet (Kamera=>Proxy=>stunnel=>Echo).
          Zuletzt geändert von jonofe; 23.12.2019, 00:50.

          Kommentar


            Danke jonofe für deinen Einsatz diesen komplexen LBS zu erstellen. Danke auch an panzaeron für die ausführliche Anleitung.
            Bis auf Problem das meiner spezifischen Hardware geschuldet war, lief die Einrichtung problemlos.

            Wie handhabt ihr die unterschiedliche Skalierung zwischen KNX (0-255) und Alexa (0-100%).
            Vielleicht könnte man die Skalierung auch in den LBS (als Parameter) integrieren.

            Muss eigentlich im lbs_exec wirklich in einer Schleife dauerhaft gepollt werden?
            Könnte man die Logik nicht ereignisbasiert triggern, immer wenn "edomi-smarthome-skill-PLv3.php" von extern aufgerufen wurd.
            Oder die logic vom exec gleich in diese php Datei verschieben?

            Kommentar


              Zitat von philipp900 Beitrag anzeigen
              Wie handhabt ihr die unterschiedliche Skalierung zwischen KNX (0-255) und Alexa (0-100%).
              Vielleicht könnte man die Skalierung auch in den LBS (als Parameter) integrieren.
              Ich verwende für diesen Fall den LBS % -> Byte 19001840 und bei Byte -> % 19001841.

              Kommentar


                Zitat von philipp900 Beitrag anzeigen
                Muss eigentlich im lbs_exec wirklich in einer Schleife dauerhaft gepollt werden?
                Es wird nicht gepollt. Das usleep() könnte man auch problemlos weglassen.

                Diese Zeile

                PHP-Code:
                while ($con stream_socket_accept($socket, - 1)) { 
                führt dazu, dass ein Socket geöffnet wird. Der Aufruf ist aber blockierend, d.h. es wird der nachfolgende Code nur ausgeführt, wenn durch das Skillskript eine Connection angefordert wird. Hat also keine Auswirkung auf die Last des Systems.

                Zitat von philipp900 Beitrag anzeigen
                Könnte man die Logik nicht ereignisbasiert triggern, immer wenn "edomi-smarthome-skill-PLv3.php" von extern aufgerufen wurd.
                Wie oben beschrieben, passiert dies heute schon so. Es wird nur Code ausgeführt, wenn eine Socketverbindung aufgebaut wird.

                Zitat von philipp900 Beitrag anzeigen
                Oder die logic vom exec gleich in diese php Datei verschieben?
                Es war ursprünglich gedacht, dass das Skillskript auch auf einem anderen Rechner laufen kann, z.B. ReverseProxy, daher die Socket Kommunikation.
                Klar könnte man das verschieben, steht aber auch meiner Liste ziemlich weit hinten, da es ja auch so sehr gut funktioniert.

                Kommentar


                  Zitat von jonofe Beitrag anzeigen
                  Es wird nicht gepollt. Das usleep() könnte man auch problemlos weglassen.
                  Ok, Danke für die Aufklärung.
                  Woher kommt denn folgender Eintrag im Log fast 80mal in der Sekunde wenn debug aktiv ist?
                  Code:
                  EXE19001200.php | Error: 2 | Line: 75 | stream_socket_accept(): accept failed: Connection timed out
                  Kann das an meinem System (PHP 7.2.24 auf ubuntu 18.04.1) liegen?
                  Ich sehe auch einen Anstieg in der Leerlauflast, je nachdem ob 19001200 gestartet oder gestoppt ist.

                  Kommentar


                    Zitat von philipp900 Beitrag anzeigen
                    Kann das an meinem System (PHP 7.2.24 auf ubuntu 18.04.1) liegen?
                    Ich sehe auch einen Anstieg in der Leerlauflast, je nachdem ob 19001200 gestartet oder gestoppt ist.
                    Das hängt dann vermutlich beides zusammen, denn wenn das socket_accept nicht funktioniert, dann geht er natürlich in die Schleife.
                    Frage ist, warum das socket_accept nicht funktioniert. Könnte an einem belegten Port liegen.
                    Aber wenn es grundsätzlich funktioniert, dann ist es für mich nicht so leicht erklärbar.
                    Wie oft kommt denn der Fehler? Ist er reproduzierbar?

                    Kommentar


                      Zitat von jonofe Beitrag anzeigen
                      Frage ist, warum das socket_accept nicht funktioniert. Könnte an einem belegten Port liegen.
                      Aber wenn es grundsätzlich funktioniert, dann ist es für mich nicht so leicht erklärbar.
                      Wie oft kommt denn der Fehler? Ist er reproduzierbar?
                      Fehler kommt dauerhaft. 100MB log innerhalb einer Stunde
                      Direkt nach dem Start des LBS.
                      Ports habe ich geprüft.
                      Ist frei und erst nach Start des LBS wird er als belegt durch PHP angezeigt.
                      LBS ist auch nur einmal in Verwendung.

                      Kommentar


                        Ehrlich gesagt, kann ich mir dieses Verhalten nicht erklären. Evtl. ist wirklich etwas anders konfiguriert auf Ubuntu.
                        Meine Empfehlung ist, auf eine EDOMI Umgebung zu migrieren, die näher am Standard liegt (x86, CentOS), ansonsten wird es vermutlich nicht das letzte Problem bleiben.

                        Kommentar


                          Habe das Problem gefunden.
                          Ist ein BUG in php auf arm.
                          https://bugs.php.net/bug.php?id=62816

                          Wenn ich es folgendermaßen umbaue funktioniert es.
                          https://hotexamples.com/de/site/file...pserver-in-php

                          Kommentar


                            Zitat von jonofe Beitrag anzeigen

                            Der Fehler tritt auf, wenn die Aktivierung nicht erfolgreich verläuft.
                            Was erscheint denn im Log des Skill Skripts?
                            Sicher, dass du die aktuellste Version verwendest, die ich letzte Woche hochgeladen habe?
                            hi jonofe,
                            ich hab nun den LBS sicherheitshalber nochmals ausgetauscht aber leider ohne erfolg. eigenartigerweise bekomme ich im log des skillscripts keinen eintrag wenn E46 auf 1 geht.

                            wenn ich aber zb "Alexa stelle Lamellen auf 0%" sage, wird es ausgeführt und ich bekomme auch Logeinträge.

                            Der LBS, welche die Sprachausgabe starten soll, wird mir in der Alexaapp angezeigt, also von daher dürfte die kommunikation passen.

                            lg nullo83

                            Kommentar


                              Zitat von nullo83 Beitrag anzeigen
                              eigenartigerweise bekomme ich im log des skillscripts keinen eintrag wenn E46 auf 1 geht.

                              wenn ich aber zb "Alexa stelle Lamellen auf 0%" sage, wird es ausgeführt und ich bekomme auch Logeinträge.

                              Der LBS, welche die Sprachausgabe starten soll, wird mir in der Alexaapp angezeigt, also von daher dürfte die kommunikation passen.
                              Sorry du hast mich abgehängt.
                              Am besten Skill aus der App entfernen. Aktuelle Version des LBS verwenden. Dann Skill aktivieren und das Log posten. Und dann beschreiben was genau nicht funktioniert. Es ist schwierig über mehrere Thread-Seiten hinweg ein Problem zu debuggen.

                              Kommentar


                                In der discovery response ist eine Zeile zu viel welche zu einem Fehler im Log führt:
                                Code:
                                Zeile 430
                                // device name
                                $endpointId = $event['directive']['endpoint']['endpointId'];

                                Kommentar

                                Lädt...
                                X