Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Cloud Dienste
    4. ALEXA spricht endlich beliebigen text !!!

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    ALEXA spricht endlich beliebigen text !!!

    This topic has been deleted. Only users with topic management privileges can see it.
    • apollon77
      apollon77 last edited by

      Cool. Ich habe es mal soef (Alexa Adapter) geschickt 😉

      1 Reply Last reply Reply Quote 0
      • Mic
        Mic Developer last edited by

        @liv-in-sky:

        bevor ich alles umstelle warte ich lieber noch wie stabil das login mit dem linux skript ist - kann ja sein, dass in zwei wochen wieder bzw. auch damit probleme auftreten - habe erstmal nur badradio ein und aus umgesetzt und lass das mal 2 wochen laufen `

        Macht auch absolut Sinn erst mal zu testen 🙂 Da die Alexa-Scripts allerdings für mich sehr unzuverlässig laufen, habe ich zum testen schon mal komplett umgestellt. Nur ein paar JS-Funktionen, die ich über überwachte Datenpunkte ansteuere (wie schon vorher). Ich mache aber im Endeffekt auch nur TuneIn, die Sprachausgabe ist jetzt echt nice, und Befehl "alles aus".

        Dazu habe ich dieses Script unter Global, füllt natürlich keine Datenpunkte usw., aber für den ersten Test läuft es eben:

        ! ````
        /**************************************************************************************

        • Alexa via Linux Shell fernsteuern.
        • Many thanks to Thorsten Gehrig - Lötzimmer
        • .sh Script: https://github.com/thorsten-gehrig/alexa-remote-control
        • Mehr dazu: https://blog.loetzimmer.de/2017/10/amazon-alexa-hort-auf-die-shell-echo.html
        • Installation: siehe https://forum.iobroker.net/viewtopic.php?f=37&t=15024#p156796

        **************************************************************************************/

        ! /**

        • Changelog:
        • 0.0.1 - Mic (forum.iobroker.net) - Neu

        */

        ! ////////////////////////// KONFIGURATION ///////////////////////////////////////
        ! // Pfad zur .sh-Datei
        const M_SH_PATH = '/opt/iobroker/xy/alexa_remote_control.sh';
        ! ////////////////////////// Ab hier nichts mehr ändern //////////////////////////
        ! /**

        • @desc Alexa, say it. Alexa will output the phrase in the room you specify
        • @param string strAlexaDevice - the Alexa device
        • @param string strPhrase - the phrase
          */
          function G_AlexaSayIt(strAlexaDevice, strPhrase) {
          G_PerformExec(strAlexaDevice, "-e speak:'" + strPhrase + "'");
          }

        ! /**

        • @desc Alexa will turn ALL devices off / pause
          */
          function G_AlexaAllPause() {
          G_PerformExec("ALL", "-e pause");
          }

        ! /**

        • @desc Alexa will turn on the TuneIn station you specify
        • @param string strAlexaDevice - the Alexa device
        • @param string strStationID - the TuneIn Station ID, e.g. "s259245" for "Het Bosch Waterfront Radio"
          */
          function G_AlexaTunein(strAlexaDevice, strStationID) {
          G_PerformExec(strAlexaDevice, "-r " + strStationID );
          }

        ! ////////////////////////// Hilfsfunktionen /////////////////////////////////////
        ! /**

        • @desc performs the actual exec() function
        • @param string strAlexaDevice - the Alexa Device
        • @param string strCommand - the command
          */
          function G_PerformExec(strAlexaDevice, strCommand) {
          exec("bash " + M_SH_PATH + " -d " + strAlexaDevice + " " + strCommand);
          }

        ! ````

        1 Reply Last reply Reply Quote 0
        • N
          Nikoxx last edited by

          Guten Abend könnte mir jemand verraten wie ich die globale Funktion aufrufe.

          Hab es so versucht aber irgendwie klappt das nicht.

          ! ````
          G_AlexaSayIt("Echo Wohnzimmer", "Das ist ein Test");

          
          Gruß Niko
          1 Reply Last reply Reply Quote 0
          • liv-in-sky
            liv-in-sky last edited by

            @Mic

            hi mic,

            ich bin nicht das hellste licht im programmieren - würdest du mir bitte kurz erklären (falls kurz möglich) warum du das global machst. ich mache das ähnlich wie du aber mit einen normalen blockly - hat das einen vorteil? alexa.rede ist ein bashscript, welches das alexa_remote_control_plain.sh nutzt.

            4447_alexa-blockly.jpg

            1 Reply Last reply Reply Quote 0
            • Mic
              Mic Developer last edited by

              Hi liv-in-sky,

              @liv-in-sky:

              würdest du mir bitte kurz erklären (falls kurz möglich) warum du das global machst `

              Ich arbeite dann mit globalen Scripts Javascripts (JS), wenn ich auf diese von beliebigen anderen Scripts zugreifen möchte.

              Im Prinzip ähnlich wie Du, wenn Du "alexa.rede.sh" ausführst, das ist ja quasi auch global verfügbar.

              Zu meiner Vorgehensweise:

              Ich habe Datenpunkte angelegt, einer heißt z.B. "tunein_current_station" (also Radiosender). Diese Datenpunkte werden überwacht mit einem nicht globalen Script (JS). Diese Datenpunkte spreche ich auch mit Alexa an.

                  var strObjPathB = 'javascript.0.mic.cloud-trigger.tunein_current_station';
                  on({id: strObjPathB, change: "any"}, function (obj) {
              

              In diesem nicht globalen Script führe ich dann den gewünschten Code aus wenn sich der Datenpunkt ändert. In diesem Fall wird, sobald "3" in den Datenpunkt eingetragen wird, bei mir der Radiosender 1Live auf der Überall-Gruppe von Alexa gespielt.

              G_AlexaTunein('Überall', strStationID);
              

              (strStationID ist in dem Fall dann "s100198" für den Sender 1Live. G_AlexaTunein() führt die Funktion im globalen Script aus, das u.a. eben den exec() für "alexa_remote_control.sh" enthält.

              In dem Script schalte ich auch noch den Receiver gleich mit ein.

              Vorteil für mich: mein globales Script macht alles für mich, ich muss mich nicht mehr darum kümmern, wie der exec()-Befehl aufgebaut sein muss etc., um das "alexa_remote_control.sh" entsprechend zu steuern. D.h. ich kann das so beliebig einfach erweitern.

              Ich bin allerdings erst seit ein paar Monaten bei ioBroker, die Fortgeschrittenen und Profis hier würden das wahrscheinlich noch deutlich eleganter lösen 🙂

              1 Reply Last reply Reply Quote 0
              • Mic
                Mic Developer last edited by

                @Nikoxx:

                Guten Abend könnte mir jemand verraten wie ich die globale Funktion aufrufe. `

                Hi Niko,

                funktioniert es denn, wenn Du ohne der globalen Funktion die exec() direkt ausführst?

                Also z.B.

                exec("bash /opt/iobroker/xy/alexa_remote_control.sh -d Wohnzimmer -e speak:'Das ist ein Test'");
                

                (Pfad etc. natürlich anpassen, und vorausgesetzt, alexa_remote_control.sh funktioniert, wenn Du das z.B. mit Putty testest.)

                Mir fällt außerdem auf, dass Du in Deinem Beispiel ein Alexa-Gerät mit "Echo Wohnzimmer" bezeichnest, heißt das wirklich so, also mit "Echo " vorangestellt? Das könnte zum Problem führen, ich hatte auch gemeint, "Echo" und "Alexa" dürfen in den Gerätenamen nicht enthalten sein.

                1 Reply Last reply Reply Quote 0
                • N
                  Nikoxx last edited by

                  Hi,

                  ja wenn ich die exec so ausführe klappt das ohne Probleme.

                  bin jetzt gerade durch dich auf die Lösung gekommen.

                  Hab den Namen "Echo Wohnzimmer" nochmal in Anführungszeichen gesetzt.

                  Also :

                  G_AlexaSayIt('"Echo Wohnzimmer"', 'Das ist ein Test');
                  

                  So funktioniert es jetzt, werde aber bei Gelegenheit die "Echos" umbennen. Wußte nicht das es damit zu Problemen kommen kann.

                  Super das es jetzt klappt. 😄

                  1 Reply Last reply Reply Quote 0
                  • liv-in-sky
                    liv-in-sky last edited by

                    hi mic,

                    vielen dank für die ausführliche erklärung

                    1 Reply Last reply Reply Quote 0
                    • TomT
                      TomT last edited by

                      Funktioniert wunderbar, danke für die Beschreibung wie man das nutzt 🙂

                      Ich habe es ohne alexarede.sh gemacht und mir das als Vorlage für die einzelnen anderen Scripte in Blockly vorbereitet.

                      So muss ich nur noch einen Textblock editieren.

                      der erste Textblock im Screenshot

                      bash /opt/iobroker/alexaTalk/alexa_remote_control.sh -d 
                      

                      3351_alexatalk.png

                      Es müssen die Leerzeichen unbedingt mit eingefügt werden sonst klappts nicht

                      Blockly Export :

                      ! ````
                      <xml xmlns="http://www.w3.org/1999/xhtml"><block type="comment" id="W%hp(PL8C~/lyy-KyyEK" x="38" y="38"><field name="COMMENT">bash /opt/iobroker/alexaTalk/alexa_remote_control.sh -d Wohnzimmer -e speak:'Guten Abend, Meister'</field>
                      <next><block type="schedule" id="-v.JH~cM[EfD@no?]].k"><field name="SCHEDULE">* * * * </field>
                      <statement name="STATEMENT"><block type="exec" id="[bZ%PACuS/qXQnM,JH%X"><mutation with_statement="false"></mutation>
                      <field name="WITH_STATEMENT">FALSE</field>
                      <field name="LOG">log</field>
                      <value name="COMMAND"><shadow type="text" id="xA}H!7RUZownpg(GHv]S"><field name="TEXT">text</field></shadow>
                      <block type="text_join" id="
                      /2tm:tVFv(@hH3(IqEW"><mutation items="5"></mutation>
                      <value name="ADD0"><block type="text" id="8fy9?O!/2OS7lh.~08|"><field name="TEXT">bash /opt/iobroker/alexaTalk/alexa_remote_control.sh -d</field></block></value>
                      <value name="ADD1"><block type="text" id="siK
                      :tK;BvQRP/@MpHU!"><field name="TEXT">Wohnzimmer</field></block></value>
                      <value name="ADD2"><block type="text" id="*)ZS3UU6GgAM_))36?"><field name="TEXT"> -e speak:'</field></block></value>
                      <value name="ADD3"><block type="text" id="0fOFO4Z]o_MZ6cg#Z;8"><field name="TEXT">Your Text Here!</field></block></value> <value name="ADD4"><block type="text" id="5)VlH?bMtUbC3Q::0[~"><field name="TEXT">'</field></block></value></block></value></block></statement></block></next></block></xml>

                      Grüße
                      
                      Tom
                      1 Reply Last reply Reply Quote 0
                      • C
                        CBeck last edited by

                        Leider funktioniert es bei mir nicht.

                        Ich bin wie von Mic beschrieben vorgegangen.

                        Weder als JS noch direkt in putty kommt eine Ausgabe.

                        Rufe ich im Terminal alexa_remote_control_plain.sh -d Wohnzimmer -e speak:'endlich kann ich frei reden' aus, kommt nur:

                        -bash: alexa_remote_control.sh: Kommando nicht gefunden.

                        Bestimmt nur eine Kleinigkeit für euch…Danke schon mal!

                        1 Reply Last reply Reply Quote 0
                        • apollon77
                          apollon77 last edited by

                          Mach mal ein./ beim Aufruf davor

                          1 Reply Last reply Reply Quote 0
                          • liv-in-sky
                            liv-in-sky last edited by

                            versuch mal im directory den befehl :

                            chmod +x alexa_remote_control.sh

                            damit machst du die datei ausführbar

                            1 Reply Last reply Reply Quote 0
                            • lobomau
                              lobomau last edited by

                              @CBeck:

                              Leider funktioniert es bei mir nicht.

                              Ich bin wie von Mic beschrieben vorgegangen.

                              Weder als JS noch direkt in putty kommt eine Ausgabe.

                              Rufe ich im Terminal alexa_remote_control_plain.sh -d Wohnzimmer -e speak:'endlich kann ich frei reden' aus, kommt nur:

                              -bash: alexa_remote_control.sh: Kommando nicht gefunden.

                              Bestimmt nur eine Kleinigkeit für euch…Danke schon mal! `
                              Bist du im Verzeichnis wo die .sh-Datei liegt?

                              Befehl lautet: bash alexa_remote_…...

                              1 Reply Last reply Reply Quote 0
                              • C
                                CBeck last edited by

                                Vielen Dank für eure Hilfe!

                                mit ./ davor oder auch mit bash, wird das Skript ausgeführt. Ich kann mich nur leider nicht anmelden, vermute, dass liegt an der Zwei-Faktor-Anmeldung?

                                Email und Kennwort habe ich natürlich 😉 im Skript vorher hinterlegt.

                                chmod, hatte ich bereits gemacht, vielen Dank aber trotzdem!

                                1 Reply Last reply Reply Quote 0
                                • cvidal
                                  cvidal Forum Testing last edited by

                                  Bei mit läufts auch iregendwie nicht, er sendet bei mir immer nur an die App, nicht aber an die Echos.

                                  Hat jemand eine idee warum das so ist?

                                  root@odroid:/opt/iobroker/xy# bash alexa_remote_control_plain.sh -d ALL -e speak:'Test'
                                  sending cmd:speak:Test to dev:ALL type:XXXXXXXXXXX serial:XXXXXXXXXXXXXXXXXXXX customerid:
                                  Sequence command: Alexa.Speak
                                  
                                  

                                  Gruß Christian

                                  1 Reply Last reply Reply Quote 0
                                  • liv-in-sky
                                    liv-in-sky last edited by

                                    versuch es doch mal ohne "ALL" und probiere nur einen echo.

                                    ich musste z.b eine neue multigruppe machen, da die existierende nicht funktionierte.

                                    1 Reply Last reply Reply Quote 0
                                    • M
                                      Marty56 last edited by

                                      Super. Hat nach Anleitung von MIC sofort funktioniert. Großes Dankeschön. 😄

                                      Habe jeden Alex Speaker separat angesteuert und (noch) keine 2nd Factor Auth.

                                      1 Reply Last reply Reply Quote 0
                                      • cvidal
                                        cvidal Forum Testing last edited by

                                        @liv-in-sky:

                                        versuch es doch mal ohne "ALL" und probiere nur einen echo.

                                        ich musste z.b eine neue multigruppe machen, da die existierende nicht funktionierte. `

                                        Ja hatte ich Probiert, lief auch nicht.

                                        Gruppen habe ich keine, sind diese erforderlich?

                                        Gruß Christian

                                        1 Reply Last reply Reply Quote 0
                                        • cvidal
                                          cvidal Forum Testing last edited by

                                          @lobomau:

                                          @CBeck:

                                          Leider funktioniert es bei mir nicht.

                                          Ich bin wie von Mic beschrieben vorgegangen.

                                          Weder als JS noch direkt in putty kommt eine Ausgabe.

                                          Rufe ich im Terminal alexa_remote_control_plain.sh -d Wohnzimmer -e speak:'endlich kann ich frei reden' aus, kommt nur:

                                          -bash: alexa_remote_control.sh: Kommando nicht gefunden.

                                          Bestimmt nur eine Kleinigkeit für euch…Danke schon mal! `
                                          Bist du im Verzeichnis wo die .sh-Datei liegt?

                                          Befehl lautet: bash alexa_remote_…... `

                                          Ja in dem Verzeichnis bin ich.

                                          Ich habe die alexa_remote_control_plain.sh in dem Verzeichnis mit der alexa_remote_control.sh freigabe hat es nicht funtioniert.

                                          Edit:

                                          Ich habe jetzt die alexa_remote_control.sh drauf und die plain.sh gelöscht.

                                          Nun bekomme ich folgende meldung:

                                          root@odroid:/opt/iobroker/xy# bash alexa_remote_control.sh -d all -e speak:'Test'
                                          ERROR: unkown device dev:all
                                          
                                          

                                          Ich habe eine Gruppe "überall" erstellt, damit geht es auch nicht. Device name der Echos geht auch nicht….

                                          Nochmal Edit:)

                                          Nun geht es, mit "ALL" mit Großschrift läufts aber Geräte einzeln ansprechen geht nicht, kann man sich irgendwie die Geräte anzeigen lassen? Laut App ist der Name Christians Echo ´...

                                          Gruß Christian

                                          1 Reply Last reply Reply Quote 0
                                          • liv-in-sky
                                            liv-in-sky last edited by

                                            wenn du einen echo namen mit leerzeichen hast, müssen die in anführungszeichen im bash gesetzt werden - ansonten bedeutet es : der device name ist "christians" und "echo" ist ein weiterer parameter

                                            –> bash alexa_remote_control.sh -d "christians echo"-e speak:'Test'

                                            so nebenbei:

                                            umlaute und leerzeichen würde ich im allgemeinen nie bei namen für geräte oder sonstiges benutzen - macht immer wieder mal probleme

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate
                                            FAQ Cloud / IOT
                                            HowTo: Node.js-Update
                                            HowTo: Backup/Restore
                                            Downloads
                                            BLOG

                                            535
                                            Online

                                            31.7k
                                            Users

                                            79.9k
                                            Topics

                                            1.3m
                                            Posts

                                            24
                                            87
                                            21210
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo