Ankündigung

Einklappen
Keine Ankündigung bisher.

Alexa Text to Speech

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

    #61
    so bin nen schritt weiter, habe die Exception umgebaut, so dass er vernünftig loggt - eines meiner Geräte heißt "Büro", das mag er wohl beim laden nicht?

    Bitte passt das ('Error while getting Devices: %s' %err) so bei Dir an.. im code war ", err"
    Code:
            try:
                buffer = BytesIO()
                myCurl = pycurl.Curl()
                myCurl.setopt(myCurl.URL,'https://alexa.amazon.de/api/devices-v2/device?cached=false')
                myCurl.setopt(pycurl.FOLLOWLOCATION, 1)
                myCurl.setopt(pycurl.COOKIEJAR ,self.cookiefile)
                myCurl.setopt(pycurl.COOKIEFILE ,self.cookiefile)
                myCurl.setopt(pycurl.WRITEDATA , buffer)
                myCurl.setopt(pycurl.HTTPGET,1)
                myCurl.perform()
                self.logger.error('Status of getDevicesbyCurl: %d' % myCurl.getinfo(myCurl.RESPONSE_CODE))
                
                body=buffer.getvalue()
                mybody = body.decode()
                myDict=json.loads(mybody)
                myDevices = EchoDevices()
                self.logger.error("DONE")
                
            except Exception as err:
                self.logger.error('Error while getting Devices: %s' %err)
                return None
    Code:
    2019-05-04  11:16:30 ERROR    plugins.alexarc4shng Status of getDevicesbyCurl: 200
    2019-05-04  11:16:30 ERROR    plugins.alexarc4shng Status of getDevicesbyCurl: 200
    2019-05-04  11:16:30 ERROR    plugins.alexarc4shng Error while getting Devices: 'utf-8' codec can't decode byte 0x8b in position 1: invalid start byte
    2019-05-04  11:16:30 ERROR    plugins.alexarc4shng Error while getting Devices: 'utf-8' codec can't decode byte 0x8b in position 1: invalid start byte
    für das ut8 brauchst du ne python weiche wie im pushbullet plugin:

    Code:
                if sys.version_info < (3, 5):
                    upload_request_response = requests.post(self._upload_apiurl, data=json.dumps(
                        {"file_name": os.path.basename(filepath),
                         "file_type": magic.from_file(filepath, mime=True).decode("UTF-8")}), headers=headers,
                                                            auth=(apikey, ""))
                else:
                    upload_request_response = requests.post(self._upload_apiurl, data=json.dumps(
                        {"file_name": os.path.basename(filepath), "file_type": magic.from_file(filepath, mime=True)}),
                                                            headers=headers, auth=(apikey, ""))
    Müsste dann so sein:
    Code:
                if sys.version_info < (3, 5):
                    mybody = body.decode()
                else:
                    mybody = body
    update das gleich nochmal, muss glaube ich noch in str casten
    Zuletzt geändert von psilo; 04.05.2019, 10:26.

    Kommentar


      #62
      kriegs gerade nicht gebacken.. ich denke es ist ein problem mit dem encoding dessen was zurueckkommt. mglw wie oben abh. von der python version.

      ist die response utf-8?? dumme frage aber hätte man das nicht auch mit Python Requests lösen können?
      (bspw. https://stackoverflow.com/questions/...uests/14762163)

      und noch ein bug: im webif machst du value1 = self.plugin.parseCookieFile("/tmp/cookie.txt") auf nen fixen pfad. folglich kein cookie sichtbar
      Zuletzt geändert von psilo; 04.05.2019, 10:50.

      Kommentar


        #63
        Hallo psilo,

        das mit dem fixen Pfad ist korrekt, ich schreib ja das cookie dort vorher auch hin. Dann wir das cookie geprüft und bei Erfolgt unter dem korrekten Pfad
        weggeschrieben.
        Die Rückgabe des Cookies ins Web-Interface hatte ich gar nicht vor.
        Kann man aber einbauen. Mit dem Autologin mach es dann auch Sinn das Cookie anzuzeigen. Mache ich im Zuge des Autologins. (Ich denke ich bin hier auf der Zielgeraden)

        Code:
        file=open("/tmp/cookie.txt","w")
            for line in myLines:
                file.write(line+"\r\n")
            file.close()
            value1 = self.plugin.parseCookieFile("/tmp/cookie.txt")
        Gruss Andre

        Kommentar


          #64
          Bin kurz vor der Aufgabe. Aktuell werden die Devices auch im Webif nicht mehr angezeigt.. Permanent der Encoding Error :-/ kannst du spasseshalber einem deiner devices mal ein ü oder sowas geben?

          UPDATE: habe gerade das COOKIE neu gesetzt.. jetzt geht es.. hääää?

          invalidiert das cookie evtl, wenn ich neu auf amazon alexa einlogge? (also im browser)
          Zuletzt geändert von psilo; 04.05.2019, 11:01.

          Kommentar


            #65
            ja das ist es.. fehler ist nach ausloggen - einloggen auf der webseite und nach einem restart des core wieder da :-( teste das mal bei dir

            ps: und nach einem erneuten update des cookies geht es auch wieder

            der fehler tritt etwas anders auch nach einem neustart auf.. besuche ich aber das web interface, geht es.. sehr sehr seltsam
            plugins.alexarc4shng Error while getting Devices: the JSON object must be str, not 'bytes'

            Ich gebe die suche aber erstmal auf, wenn du sowieso an dem autologin arbeitest.
            Zuletzt geändert von psilo; 04.05.2019, 12:44.

            Kommentar


              #66
              nochwas (vor einem PR): das bild das du als logo im webif verwendest ist frei benutzbar?

              Kommentar


                #67
                das mit dem item mag bei mir auch nicht. ich habe das item general.communication.alexa_rc angelegt und wechselnd auf True und False geschaltet. Ich hätte in einem Fall erwartet, dass dann nichts mehr gesprochen wird?!


                Mein direkter Aufruf der Methode sh.alexarc4shng.SendCmdByCurl('Büro','Text2Speech' ,'...') führt aber in beiden Fällen zu einer Ausgabe?

                Ok sehe gerade. Das zieht nur, wenn es ein Item betrifft für das die Ausgabe aktiviert wurde. Mhmmmm. Sollte man klar kennzeichnen in der Doku. Ansich machts ja Sinn, in den Logiken kann ich komplexere Bedingungen definieren, wann ausgegeben werden soll.

                Bitte benenne Pluginattribute noch in Kleinschreibung und mit "_": Bspw:

                Item2EnableAlexaRC -> item_2_enable_alexa_rc
                Zuletzt geändert von psilo; 04.05.2019, 12:55.

                Kommentar


                  #68
                  OK, die Attribute ändere ich, im Zuge mit den Methoden. Das mit dem "Enable"-Item hab ich in der Doku explizit nochmal erläutert (zieht nur bei update_item).

                  Das mit dem Cookie - Login - Logoff Problem schau ich mir nochmal an. Auch das mit der "Küche"

                  Zum Thema
                  Zitat von psilo Beitrag anzeigen
                  ist die response utf-8?? dumme frage aber hätte man das nicht auch mit Python Requests lösen können?
                  Ich hatte beim Start des Projekts auf jeden Fall CURL vermeiden wollen. Habs mit requests, urllib, sockets, HTTPClient, http probiert. Nix ging.
                  Irgendwie ist das Cookie-Handling bei CURL anders. Hab mittels wireshark alles untersucht, konnte aber die Ursache nicht finden.
                  Falls es doch noch eine Lösung gibt das mit request zu lösen würde ich das auch noch umbauen. Hab versucht die CURL-Sachen so gut es ging zu kapseln.

                  Vielleicht hat ja jemand dazu noch einen Ansatz.

                  Kommentar


                    #69
                    Zitat von AndreK Beitrag anzeigen

                    Vielleicht hat ja jemand dazu noch einen Ansatz.
                    N´Ahmd..

                    Also ich zumindest verstehe von den letzten drei Seiten nicht eine Silbe
                    Aber die Jungs beim Stammtisch waren schon sehr von den Möglichkeiten der Sprachausgabe beeindruckt.
                    Bin gespannt, was sich alles ändert wenn Ihr zwei fertig seit ;-)

                    Gruß und Dank
                    Jürgen

                    Kommentar


                      #70
                      Wir könnten hier mal ein paar Anwendungsfälle brainstormen..

                      Ich habe bspw. gerade Alexa mit der Anrufererkennung der Fritzbox (AVM Plugin) kombiniert. Sobald jemand anruft, liest mir Alexa den Anrufernamen vor Haben wir nen Command der auf Geräten mit Bildschirm Text einblendet?
                      Zuletzt geändert von psilo; 05.05.2019, 14:00.

                      Kommentar


                        #71
                        Schöne Idee!

                        Kommentar


                          #72
                          Wir haben einen Rfid-Leser an der Haustür. Alexa liest mir im (Homeoffice-)Büro vor, wer gerade zur Tür herein kommt.

                          Jeder, der nach Hause kommt, wird mit Namen begrüßt. Den Kids wird gesagt, dass sie ihre Brotdose, die Schuhe und Jacke wegräumen sollen. Meine Frau wird daran erinnert, dass man das Auto abschließen kann.

                          Wenn man an der Haustür auf Abwesenheit schaltet, sagt Alexa bescheid, wenn noch irgendwo ein Fenster offen ist.

                          Wenn nach 22.00h erst unten, dann oben im Flur der BWM angeht und im EG noch ein Fenster auf ist, sagt Alexa Bescheid.

                          Wenn ich am Müllabfuhr-Tag ins Büro komme, fragt mich Alexa, ob die Mülltonne draußen steht.

                          Kommentar


                            #73
                            Wenn nach 22.00h erst unten, dann oben im Flur der BWM angeht und im EG noch ein Fenster auf ist, sagt Alexa Bescheid.
                            Ich habe mir auch schon überlegt, wie ein Einbrecher reagieren würde, wenn Alexa im sagt, dass alles über den Einbruch jetzt in der Amazon Cloud liegt

                            Auf welche Distanz geht das RFID bei Dir? Oder verwendet ihr das zum Türe öffnen? Hatte da auch schon mal überlegt, der Leser den ich gekauft habe ging aber nur auf max 30cm.
                            Ich verwende Geozonen für das "nach Hause kommen", aber da ist das Timing nicht gut genug.. Das "Hallo sagen" geht wahrsch. echt nur über Türe öffnen vernünftig..

                            Kommentar


                              #74
                              Ja, ist der Türöffner.

                              Anders ginge es ggf. mit Geofencing in Verbindung mit der WLAN-Anmeldung des jeweiligen Handys. Dafür sind unsere Kids aber noch was jung.

                              Kommentar


                                #75
                                Geofencing und WLAN Anmeldung ist zu träge. Geofence muss (weil das mein Tor öffnet) ca 200m vorher triggern. WLAN erkennt die Fritzbox erst im nächsten Loop, was 3 Minuten sein können.

                                Kommentar

                                Lädt...
                                X