Ankündigung

Einklappen
Keine Ankündigung bisher.

Alexa Text to Speech

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

    #16
    Nach oben hol...

    Hallo zusammen,

    ich möchte mal berichten, dass ich das Plugin von Andre (https://github.com/Andrek01/alexarc4shng) relativ problemlos in kurzer Zeit aktiviert habe.
    Ein kleiner Stolperstein waren nur Umlaute in den Sprachbefehlen, die mag das Plugin nicht. Toll gemacht, vielen Dank dafür!

    Gruß Jürgen

    Kommentar


      #17
      oha AndreK wenn wir schnell wären, könnten wirs noch ins neue release reinnehmen?!

      Kommentar


        #18
        hmm und ich scheitere schon mit der installation von pycurl?!

        Code:
        pip3 install pycurl                                                                                                                                                                    
        Collecting pycurl                                                                                                                                                                                                      
          Using cached https://files.pythonhosted.org/packages/e8/e4/0dbb8735407189f00b33d84122b9be52c790c7c3b25286826f4e1bdb7bde/pycurl-7.43.0.2.tar.gz                                                                        
        Building wheels for collected packages: pycurl                                                                                                                                                                          
          Building wheel for pycurl (setup.py) ... error                                                                                                                                                                        
          ERROR: Complete output from command /usr/bin/python3 -u -c 'import setuptools, tokenize;__file__='"'"'/tmp/pip-install-9jdesu77/pycurl/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read()
        .replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /tmp/pip-wheel-qh0mpwxy --python-tag cp35:                                                              
          ERROR: Using curl-config (libcurl 7.52.1)                                                                                                                                                                            
          running bdist_wheel                                                                                                                                                                                                  
          running build                                                                                                                                                                                                        
          running build_py                                                                                                                                                                                                      
          creating build                                                                                                                                                                                                        
          creating build/lib.linux-x86_64-3.5                                                                                                                                                                                  
          creating build/lib.linux-x86_64-3.5/curl                                                                                                                                                                              
          copying python/curl/__init__.py -> build/lib.linux-x86_64-3.5/curl                                                                                                                                                    
          running build_ext                                                                                                                                                                                                    
          building 'pycurl' extension                                                                                                                                                                                          
          creating build/temp.linux-x86_64-3.5                                                                                                                                                                                  
          creating build/temp.linux-x86_64-3.5/src                                                                                                                                                                              
          x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -fdebug-prefix-map=/build/python3.5-3.5.3=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE
        =2 -fPIC -DPYCURL_VERSION="7.43.0.2" -DHAVE_CURL_SSL=1 -DHAVE_CURL_GNUTLS=1 -DHAVE_CURL_SSL=1 -I/usr/include/python3.5m -c src/docstrings.c -o build/temp.linux-x86_64-3.5/src/docstrings.o                            
          In file included from src/docstrings.c:4:0:                                                                                                                                                                          
          src/pycurl.h:168:30: fatal error: gnutls/gnutls.h: Datei oder Verzeichnis nicht gefunden                                                                                                                              
           #   include <gnutls/gnutls.h>                                                                                                                                                                                        
                                        ^                                                                                                                                                                                      
          compilation terminated.                                                                                                                                                                                              
          error: command 'x86_64-linux-gnu-gcc' failed with exit status 1                                                                                                                                                      
          ----------------------------------------                                                                                                                                                                              
          ERROR: Failed building wheel for pycurl                                                                                                                                                                              
          Running setup.py clean for pycurl                                                                                                                                                                                    
        Failed to build pycurl                                                                                                                                                                                                  
        Installing collected packages: pycurl                                                                                                                                                                                  
          Running setup.py install for pycurl ... error                                                                                                                                                                        
            ERROR: Complete output from command /usr/bin/python3 -u -c 'import setuptools, tokenize;__file__='"'"'/tmp/pip-install-9jdesu77/pycurl/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read
        ().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-iqepzdju/install-record.txt --single-version-externally-managed --compile:          
            ERROR: Using curl-config (libcurl 7.52.1)                                                                                                                                                                          
            running install                                                                                                                                                                                                    
            running build                                                                                                                                                                                                      
            running build_py                                                                                                                                                                                                    
            creating build                                                                                                                                                                                                      
            creating build/lib.linux-x86_64-3.5                                                                                                                                                                                
            creating build/lib.linux-x86_64-3.5/curl                                                                                                                                                                            
            copying python/curl/__init__.py -> build/lib.linux-x86_64-3.5/curl                                                                                                                                                  
            running build_ext                                                                                                                                                                                                  
            building 'pycurl' extension                                                                                                                                                                                        
            creating build/temp.linux-x86_64-3.5                                                                                                                                                                                
            creating build/temp.linux-x86_64-3.5/src                                                                                                                                                                            
            x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -fdebug-prefix-map=/build/python3.5-3.5.3=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOUR
        CE=2 -fPIC -DPYCURL_VERSION="7.43.0.2" -DHAVE_CURL_SSL=1 -DHAVE_CURL_GNUTLS=1 -DHAVE_CURL_SSL=1 -I/usr/include/python3.5m -c src/docstrings.c -o build/temp.linux-x86_64-3.5/src/docstrings.o                          
            In file included from src/docstrings.c:4:0:                                                                                                                                                                        
            src/pycurl.h:168:30: fatal error: gnutls/gnutls.h: Datei oder Verzeichnis nicht gefunden                                                                                                                            
             #   include <gnutls/gnutls.h>                                                                                                                                                                                      
                                          ^                                                                                                                                                                                    
            compilation terminated.                                                                                                                                                                                            
            error: command 'x86_64-linux-gnu-gcc' failed with exit status 1                                                                                                                                                    
            ----------------------------------------                                                                                                                                                                            
        ERROR: Command "/usr/bin/python3 -u -c 'import setuptools, tokenize;__file__='"'"'/tmp/pip-install-9jdesu77/pycurl/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"
        ', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-iqepzdju/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/p
        ip-install-9jdesu77/pycurl/

        Ok, nach einem sudo apt-get install libgnutls28-dev geht es
        Zuletzt geändert von psilo; 29.04.2019, 17:32.

        Kommentar


          #19
          Hallo,

          ich glaube, du brauchst libcurl4-openssl-dev libssl-dev und dann erst pycurl.

          Gruß,
          Hendrik

          Kommentar


            #20
            und beim startup läuft es in ein:
            Code:
            019-04-29  18:34:43 ERROR    lib.plugin       Plugin 'alexarc4shng' exception in run() method: name 'sleep' is not defined                                                                                            
            Traceback (most recent call last):                                                                                                                                                                                      
              File "/python/smarthome/lib/plugin.py", line 674, in run                                                                                                                                                              
                self.plugin.run()                                                                                                                                                                                                  
              File "/python/smarthome/plugins/alexarc4shng/__init__.py", line 138, in run                                                                                                                                          
                sleep(2)                                                                                                                                                                                                            
            NameError: name 'sleep' is not defined
            müsste es nicht ein time.sleep sein? (https://www.tutorialspoint.com/python/time_sleep.htm)

            PS: damit startet es jetzt.. import time und time.sleep(...)
            Zuletzt geändert von psilo; 29.04.2019, 17:38.

            Kommentar


              #21
              Hallo zusammen,

              stimmt, konnte ich auch nicht installieren, mein Debian ist wohl zu alt.
              Andre hat schnell geholfen, mit diesen Befehlen funktionierte es dann (brachten aber auch z.T. Fehler)

              sudo apt-get install libcurl3-gnutl
              sudo apt-get install libcurl4-gnutls-dev
              sudo apt-get install librtmp-dev
              sudo apt-get install libc6
              sudo apt-get install libgnutls30
              sudo apt-get install libcurl3-gnutls
              sudo pip install pycurl

              Bei den Sprachtexten unbedingt Umlaute vermeiden!

              Gruß Jürgen

              Kommentar


                #22
                achja und ein haufen pfade ist hard coded (und fliegt daher bei mir auf die nase - sh in /python/smarthome):

                files = os. listdir('/usr/local/smarthome/plugins/alexarc4shng/cmd/')

                Besser wäre einfach den shng pfad im plugin auszulesen...

                PS: das mit dem cookie ging dafür jetzt fix
                Zuletzt geändert von psilo; 29.04.2019, 17:45.

                Kommentar


                  #23
                  Ok läuft... gibt es erfahrungen wie lange das cookie gültig bleibt? Muss ich das irgendwann händisch resetten?

                  Wie kann ich "dynamisch" Text vorlesen? Bisher sehe ich nur für True und False ein Beispiel? Was wenn ich Zahlenwerte vorlesen will? Oder kann ich irgendwie den String in einem STR Item vorlesen? Bspw. den Wetterbericht?

                  Cool wäre eine API Funktion des Plugins, die ich aus einer Logik aufrufen kann!

                  ok habs schon...

                  Code:
                  sh.alexarc4shng.SendCmdByCurl('Büro','Text2Speech','Der Sensor der Hebenlage signalisiert ein Problem.')
                  Zuletzt geändert von psilo; 29.04.2019, 18:06.

                  Kommentar


                    #24
                    Hallo,

                    keine Ahnung, Cookie hält seit 24 Stunden ;-)

                    In der Doku hat Andre auch die Lautstärke als existing command, bei mir ist es nicht drin. In Foren ist erwähnt, dass man die gewünschte Lautstärke (1-6 oder 0-100%) dem Sprachtext voranstellen kann. Klappt aber im Testfenster zumindest nicht.
                    Da würde ich gerne per Komando einen Default setzen, damit man die Sprachausgabe bei Bedarf in der Nacht auf Null setzen kann und die Texte nur Auf Wunsch ausgegeben werden.

                    Ich habe auch das Problem, dass zwar Schaltzustände nur bei Wertänderung gesprochen werden, die = / 1 meiner Wetterstation für den Regenmelder aber als 1 Bit Wert 00 und 01 kommen und zyklisch wiederholt werden.

                    Gruß Jürgen
                    Zuletzt geändert von Jürgen; 29.04.2019, 18:24.

                    Kommentar


                      #25
                      Jürgen wenn du das Plugin aus einer Logik aufrufst, oder evtl über ein EVAL, müsste mehr gehen.. siehe mein Beispiel oben Ich habe gerade meinen Sohn durch Alexa ins Bett geschickt -g-

                      Sowas geht so halbwegs bspw:

                      sh.alexarc4shng.SendCmdByCurl('Büro','Text2Speech' ,'Die Aussentemperatur ist %s Grad' %sh.eta_unit.temperature_outside.value())

                      ich rege zudem diese Änderung an der plugin.yaml an - damit taucht das Plugin dann im Autocomplete des Logikeditors auf:
                      Code:
                      plugin_functions:
                          # Definition of function interface of the plugin
                      
                          SendCmdByCurl:
                              type: str
                              description:
                                  de: "Sendet einen Befehl an Alexa."
                                  en: "Sends a command to Alexa."
                              parameters:
                                  dvName:
                                      type: str
                                      description:
                                          de: "Name des Alexa Devices."
                                          en: "Name of Alexa device."
                                  cmdName:
                                      type: str
                                      description:
                                          de: "Name des Befehls, z.b. Text2Speech."
                                          en: "Name of command, e.g. Text2Speech."
                                  mValue:
                                      type: str
                                      description:
                                          de: "Wert, der gesendet werden soll."
                                          en: "Value to send."
                      Zuletzt geändert von psilo; 29.04.2019, 18:29.

                      Kommentar


                        #26
                        Hallo Psilo,

                        da habe ich heute noch drüber gesprochen: Eine Temperaturwarnung wie im Auto: Wenn Wert kleiner 2°, dann Sprachausgabe "Achtung Frostgefahr".
                        Wäre schön, wenn es zu solchen Funktionen ein Beispiel für C&P gäbe, damit sich nicht jeder den Kopf zerbrechen muss ;-)

                        Andre hat wohl auch noch eine Stummschaltung über Schaltuhr (UZSU) realisiert, schaun mer mal, was er noch schreibt.

                        Gruß Jürgen

                        Kommentar


                          #27
                          Wäre schön, wenn es zu solchen Funktionen ein Beispiel für C&P gäbe, damit sich nicht jeder den Kopf zerbrechen muss ;-)
                          Evals, die etwas unter einer bestimmten Bedingung machen, geistern doch wie sand am Meer hier als Beispiele herum?! und danach nur den Pluginaufruf wie ich ihn oben nutze, müsste gehen!

                          Das Plugin ist echt cool, aber fürs Release braucht es doch noch Feinschliff.. Ich habe recht viel an anderen Baustellen zu tun. Zudem kenne ich @andrek's pläne nicht.. ich könnte schon schauen, die flaws die ich noch sehe rauszubauen (konfiguration pfade, plugin.yaml, ggf mehr infos fürs README). Ich weiss auch garnicht inwieweit der Sourcecode ins Release dürfte.
                          Zuletzt geändert von psilo; 29.04.2019, 18:36.

                          Kommentar


                            #28
                            Hi Jungs,

                            jetzt gebt ihr aber Gas. Das ist alles noch Alpha (hard-coded pathes usw.) Ich wollte Jürgen nur noch ein paar Brocken, was alles möglich ist, für den Stammtisch hinwerfen.
                            Wenn das alles schon (fast) perfekt wäre gäbs einen PR fürs Develop.

                            Aber ich sehe dass Ganze findet Interesse. Ich hab bereits einen weiteren Upload in Arbeit, wird aber noch bis Mittwoch abend dauern.
                            Eventuell schafft es das Plugin in dann noch in Release.
                            Dann können wir (shNG) auch SSML. (Many Thanks to jonofe )

                            Gerne auch Hinweise hier im Forum, versuche ich zu berücksichtigen.

                            Gruss

                            Andre
                            Zuletzt geändert von AndreK; 29.04.2019, 20:30.

                            Kommentar


                              #29
                              Hallo psilo , hallo Juergen ,

                              hab mir alles nochmal angesehen.


                              sleep-Problem - ist behoben - keine Ahnung warum ich das übersehen habe (bzw. mein Python-Interpreter hat das so akzeptiert, wieso auch immer und der von Jürgen wohl auch)
                              hard-coded paths - ist behoben
                              API-Doku wie von psilo vorgeschlagen ist in der plugin.yaml eingearbeitet
                              dynamische Inhalte - ist erledigt, es kann mit einem Platzhalter #item-Pfad/# der Wert des items in den Text integriert werden
                              Vergleiche <= / >= / = / < / > sind eingebaut - in der config sieht das dann so aus :

                              Code:
                              alexa_cmd_01: "<20.0:EchoDotKueche:Text2Speech:Die Temperatur in der Kueche ist niedriger als 20 Grad Die Temperatur ist jetzt #test.testzimmer.temperature.actual/# Grad"
                              Prüfung auf Umlaute und Sonderzeichen ist eingebaut.
                              Bei Angabe eines Items in der plugin.yaml unter
                              Code:
                              Item2EnableAlexaRC: 'OG.Buero.Alexa'
                              wird geprüft ob die Ansteuerung des Echos erlaubt ist.
                              Das Item kann dann via USZU, Bewegungsmelder oder wie auch immer geschalten werden.

                              Zur Info - Das Cookie sollte 6-8 Wochen halten, danach muss man manuell erneuern. Ein automatisches Einloggen mittels Amazon-User und Passwort bin ich noch am
                              ausprogrammieren. In der plugin.yaml sind bereits Parameter für die Credentials vorgesehen, es funktioniert aber noch nicht.

                              Ich muss jetzt noch eine Upload-Version herstellen und die Doku überarbeiten. Dann wirds hochgeladen. Ich geb dann nochmal eine kurze Info raus.
                              Wenn psilo ein IO gibt stell ich das auch gerne im Develop bereit.

                              Gruss Andre

                              Kommentar


                                #30
                                Hi,

                                was ist ein IO? Input Output?

                                Was mich noch etwas verwundert bei Dir ist, dass Du Funktionsnamen immer mit einem Großbuchstaben beginnst. Ich hätte das wie in Java gemacht und nur Klassen mit Großbuchstaben beginnen lassen. Ist etwas ungewöhnlich wenn man das im Logikedtior jetzt via Autocomplete sieht..
                                Gibt es in Python irgendwo eine Konvention die das so macht? Sonst vielleicht vor einem PR noch anpassen

                                Ich teste dann mal die aktuelle Version und gebe noch bis heute EOB Feedback.. Bin längere Zeit weg, da super Wetter hier.

                                Kommentar

                                Lädt...
                                X