Ankündigung

Einklappen
Keine Ankündigung bisher.

Alexa Text to Speech

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

    Hallo AndreK, wäre es möglich, in einer zukünftigen Version des Plugins die Alexa Gerätenamen in ein Item zu schreiben?
    Hintergrund ist, ich versuche gerade die AKugel im Badezimmer als Radio zu nutzen. Um die Einstellungen auf Visu Seite zu vereinfachen, würde ich ein Auswahlmenü anbieten welches Gerät benutzt werden soll. Das wäre für ein späteres Widget sicher auch sinnvoll.

    Außerdem habe ich noch ein Problem, das sich das Plugin nach einer gewissen Zeit, mit dem Hinweis auf zu viele Anfragen, deaktiviert. Ich denke das kommt durch das ständige an/ausschalten durch den Präsenzmelder im Bad. Kann ich dem irgendwie entgegenwirken? Ich hatte schon probiert den erneuten Anmeldevorgang kürzer zu machen (Jetzt alle 3 Tage). Das hat aber nicht gefruchtet.

    Grüße, Marc

    Kommentar


      schuma
      Hi Marc,

      so etwas ist bereits vorbereitet. Es gibt ein Child-Struct für die Mediaplayer-Infos der Geräte. Details kann ich Dir heute abend senden.
      Es wird dann je Gerät ein Item mit der Struct definiert. Die Buttons sind "Stations" von TuneIn oder Spotify-Playlist, können aber auch Prime-Music-Stationen/Playlists sein

      Die Geräte einzeln zu ermitteln und in ein Item zu schreiben würde via Logik jetzt schon gehen. Post ich heute abend.

      Das sieht dann so aus :

      ___ShowKueche.png

      Betreffend der zu vielen Anfragen kannst Du das Kommunikations-Log im Web-IF mal sichten, bei Bedarf auch posten.

      Viele Grüße
      Andre

      Kommentar


        schuma Hallo Marc,

        hier die entsprechenden Infos. Eine Item-Datei definiert mit :

        Code:
        %YAML 1.1
        ---
        Alexas:
            EchoDotKueche:
                struct: alexarc4shng.child
                player_info:
                    play:
                        alexa_cmd_01: True:EchoDotKueche:Play:null
                        alexa_cmd_02: False:EchoDotKueche:Pause:null
                    mute:
                        alexa_cmd_01: True:EchoDotKueche:Mute:0
                        alexa_cmd_02: False:EchoDotKueche:VolumeSet:20                
                    volume:
                        alexa_cmd_01: True:EchoDotKueche:VolumeSet:#Alexas.EchoDotKueche.player_info.volume/#                
                    station_1:
                        alexa_cmd_01: True:EchoDotKueche:StartTuneInStation:s96141
                    station_2:
                        alexa_cmd_01: True:EchoDotKueche:StartTuneInStation:s1561
                    station_3:
                        alexa_cmd_01: True:EchoDotKueche:StartTuneInStation:s24896
                    station_4:
                        alexa_cmd_01: True:EchoDotKueche:StartTuneInStation:s294232                                
                    station_5:
                        alexa_cmd_01: True:EchoDotKueche:PlaySpotifyPlaylist:Andre
        Ein Widget mit diesen Items :

        Code:
        <div class="block">
        <div class="set-1" data-role="collapsible-set" data-theme="c" data-content-theme="a" data-mini="true">
        
        <div data-role="collapsible" data-collapsed="false">
        <h3>Alexa Show Küche</h3>
             {{ multimedia.station('', 'Alexas.EchoDotKueche.player_info.station_1', 'https://cdn-profiles.tunein.com/s96141/images/logod.png?t=637707576410000000', '1', 'mini') }}
             {{ multimedia.station('', 'Alexas.EchoDotKueche.player_info.station_2', 'https://cdn-profiles.tunein.com/s1561/images/logod.png?t=637121945220000000', '1', 'mini') }}
             {{ multimedia.station('', 'Alexas.EchoDotKueche.player_info.station_3', 'https://cdn-profiles.tunein.com/s24896/images/logod.png?t=636680257044500000', '1', 'mini') }}    
             {{ multimedia.station('', 'Alexas.EchoDotKueche.player_info.station_4', 'https://cdn-profiles.tunein.com/s294232/images/logod.png?t=637209241410000000', '1', 'mini') }}
             {{ multimedia.station('', 'Alexas.EchoDotKueche.player_info.station_5', 'dropins/icons/ws/spotify.png', '1', 'mini') }}        
            
        
                    {{multimedia.music('','Alexas.EchoDotKueche.player_info.play','Alexas.EchoDotKueche.player_info.pause','','','','Alexas.EchoDotKueche.player_info.volume','Alexas.EchoDotKueche.player_info.mute',
                      'Alexas.EchoDotKueche.player_info.artist','Alexas.EchoDotKueche.player_info.title','','','Alexas.EchoDotKueche.player_info.fan_art')}}
        
        </div>
        
        </div>
        Das sollte das Ergebnis des Screenshots liefern. Die Icons der multimedia.station`s musst Du natürlich anpassen - das sind direkte Links zu den TuneIn-Icons.
        Das Spotify-Logo hab ich lokal gespeichert. Das FanArt des aktuell abgespielten Songs kommt von Amazon und wird automatisch aktualisiert.

        Was nicht korrekt funktioniert ist die Lautstärkeeinstellung. Hier kommt sich die Abfrage in der Amazon-Cloud und das Ändern aus shNG in die Quere. Ich hab zwar eine Lösung ist aber noch nicht implemtiert.

        Die Struct sieht aktuell 6 "Stations" vor - bei mehr Bedarf gerne Rückinfo.

        Um die Geräte aus dem Plugin zu lesen reicht in einer Logik der folgende Code :

        Code:
        myDevices = sh.alexarc4shng.Echos.devices
        existingDevices = []
        for actDevice in myDevices:
          existingDevices.append(sh.alexarc4shng.Echos.devices.get(actDevice).name)
        Die vorhandenen Gerätenamen stehen dann im existingDevices-Array und könne in ein Item geschrieben werden.

        Vieleicht hilft Dir das weiter

        Viele Grüße
        Andre

        Kommentar


          Hallo Andre, wow… Das ist ja schon eine ganze Menge!
          Vielen Dank schon mal. Ich gucke mir das morgen mal genauer an und versuche das mal für meinem Zweck umzubauen.

          Vielen Dank für Deine Mühe!
          Grüße, Marc

          Kommentar


            Hallo AndreK, ich hab jetzt mal Zeit gehabt mich damit etwas zu beschäftigen .
            Aber ich komme da nicht auf einen grünen Zweig…

            Wenn ich die Items unterhalb des struct definiere (volume, station_1 etc) werden diese items aus dem Itembaum entfernt. Definiere ich sie nicht, sind Sie im struct enthalten. Dementsprechend kann ich dann auch nicht mehr auf die Items zugreifen.
            Auch werden die Items nicht mit Daten gefüllt.
            mir würden die Items Interpret, Lied und Cover schon reichen. Da kommt aber nichts in die Items.

            Hast Du evtl. eine Pluginversion am laufen, die noch nicht hochgeladen ist?

            Grüße, Marc

            Kommentar


              Hallo schuma Marc,

              das mit den Structs ist im letzten Plugin-Stand enthalten. Eventuell heißt Deine Instanz des Plugins anders ? Wenn Du ohne Ergänzungen die Child-Struct einbindest wie sieht das dann aus.
              Betreffend der automatischen Aktualisierung hast Du recht - das ist noch nicht fertig. Hier habe ich zu schnell geschossen.
              Ich habe die Items auch über eine kleine Logik befüllt, die habe ich leider nicht gespeichert.

              Im Executor (also auch so in einer Logik) liefert das Script :

              Code:
              import json
              state,MediaInfo = sh.alexarc4shng.get_player_info("EchoDotKueche")
              print ('State :' + str(state))
              print (json.dumps(MediaInfo,indent=2))​
              folgendes Json-Objekt, damit kann man dann die einzelnen Items befüllen :

              Code:
              {
                "playerInfo": {
                  "hint": null,
                  "infoText": {
                    "header": null,
                    "headerSubtext1": null,
                    "multiLineMode": false,
                    "subText1": "baden.fm OnAir",
                    "subText2": "Alle deine Lieblingssongs!",
                    "title": "ED SHEERAN - Shivers"
                  },
                  "isPlayingInLemur": false,
                  "lemurVolume": null,
                  "lyrics": null,
                  "mainArt": {
                    "altText": "Albumdesign",
                    "artType": "UrlArtSource",
                    "contentType": "image/jpeg",
                    "url": "https://cdn-profiles.tunein.com/s96141/images/logog.png?t=637707576410000000"
                  },
                  "mediaId": "07e1718a-dc9d-4edf-9b24-7106b4e3e688:1",
                  "miniArt": {
                    "altText": "Albumdesign",
                    "artType": "UrlArtSource",
                    "contentType": "image/jpeg",
                    "url": "https://cdn-profiles.tunein.com/s96141/images/logog.png?t=637707576410000000"
                  },
                  "miniInfoText": {
                    "header": null,
                    "headerSubtext1": null,
                    "multiLineMode": false,
                    "subText1": "baden.fm OnAir",
                    "subText2": null,
                    "title": "ED SHEERAN - Shivers"
                  },
                  "playbackSource": null,
                  "playingInLemurId": null,
                  "progress": {
                    "allowScrubbing": false,
                    "locationInfo": null,
                    "mediaLength": 0,
                    "mediaProgress": 590,
                    "showTiming": false,
                    "visible": true
                  },
                  "provider": {
                    "artOverlay": null,
                    "fallbackMainArt": {
                      "altText": null,
                      "artType": "IconArtSource",
                      "iconId": "music-no-art",
                      "iconStyles": null
                    },
                    "providerDisplayName": null,
                    "providerLogo": {
                      "altText": "TuneIn",
                      "artType": "IconArtSource",
                      "iconId": "tunein",
                      "iconStyles": null
                    },
                    "providerName": "TuneIn-Liveradio"
                  },
                  "quality": null,
                  "queueId": "07e1718a-dc9d-4edf-9b24-7106b4e3e688",
                  "state": "PAUSED",
                  "template": null,
                  "transport": {
                    "closedCaptions": null,
                    "layoutType": "MusicTransportLayout",
                    "lyrics": "HIDDEN",
                    "next": "DISABLED",
                    "playPause": "ENABLED",
                    "previous": "DISABLED",
                    "repeat": "HIDDEN",
                    "shuffle": "HIDDEN"
                  },
                  "upNextItems": null,
                  "volume": {
                    "muted": false,
                    "volume": 25
                  }
                }
              }
              Damit sollte es funktionieren.

              Viele Grüße
              Andre

              Kommentar


                Hallo Andre.
                Wenn ich ohne die Ergänzungen das Struct einbinde sind die Items wie station_1 vorhanden.
                Mit den Ergänzungen werden die Items anscheinend wieder entfernt.
                Die Instanz ist identisch und passt. Irgendwie komisch…

                Das Script füge ich heute Abend mal in meine Logik ein und teste dann noch mal.

                Kommentar


                  Huhu, das habe ich noch im Log gefunden:
                  Code:
                  2024-04-14  19:59:27 NOTICE   lib.metadata        Item 'EG.Raum3.AlexaRadio.Info.player_info', attribute 'volume': Attribute is undefined and has value 'alexa_cmd_01:True:Echo Bad:VolumeSet:#Alexas.Echo Bad.player_info.volume/#' (defined in home.yaml)
                  2024-04-14  19:59:27 NOTICE   lib.metadata        Item 'EG.Raum3.AlexaRadio.Info.player_info', attribute 'play': Attribute is undefined and has value 'alexa_cmd_01:True:Echo Bad:Play:nullalexa_cmd_02:False:Echo Bad:Pause:null' (defined in home.yaml)
                  2024-04-14  19:59:27 NOTICE   lib.metadata        Item 'EG.Raum3.AlexaRadio.Info.player_info', attribute 'mute': Attribute is undefined and has value 'alexa_cmd_01:True:Echo Bad:Mute:0alexa_cmd_02:False:Echo Bad:VolumeSet:20' (defined in home.yaml)
                  2024-04-14  19:59:27 NOTICE   lib.metadata        Item 'EG.Raum3.AlexaRadio.Info.player_info', attribute 'station_1': Attribute is undefined and has value 'alexa_cmd_01:True:Echo Bad:StartTuneInStation:s96141' (defined in home.yaml)
                  2024-04-14  19:59:27 NOTICE   lib.metadata        Item 'EG.Raum3.AlexaRadio.Info.player_info', attribute 'station_2': Attribute is undefined and has value 'alexa_cmd_01:True:Echo Bad:StartTuneInStation:s1561' (defined in home.yaml)
                  2024-04-14  19:59:27 NOTICE   lib.metadata        Item 'EG.Raum3.AlexaRadio.Info.player_info', attribute 'station_3': Attribute is undefined and has value 'alexa_cmd_01:True:Echo Bad:StartTuneInStation:s24896' (defined in home.yaml)
                  2024-04-14  19:59:27 NOTICE   lib.metadata        Item 'EG.Raum3.AlexaRadio.Info.player_info', attribute 'station_4': Attribute is undefined and has value 'alexa_cmd_01:True:Echo Bad:StartTuneInStation:s294232' (defined in home.yaml)​
                  was ich mir aber auch nicht erklären kann.

                  Grüße, Marc

                  Kommentar


                    Die Meldungen sagen, dass die Item Attribute (die Du in home.yaml bei einem Item verwendet hast) nicht in den Metadaten (plugin.yaml des Plugins) definiert sind.
                    Viele Grüße
                    Martin

                    There is no cloud. It's only someone else's computer.

                    Kommentar


                      Ok, das mit den Struct hat sich geklärt.
                      ich hatte in den Attributen zu den Items eine Leerzeichen zu wenig

                      vorher:
                      Code:
                      alexa_cmd_01:True:Echo Bad:Play​
                      jetzt:
                      Code:
                      alexa_cmd_01: True:Echo Bad:Play​
                      Das mit dem Füllen der Items habe ich aber noch nicht richtig verstanden.
                      wenn ich das ausführe:
                      Code:
                      import json
                      state,MediaInfo = sh.alexarc4shng.get_player_info("EchoDotKueche")​
                      sollten die Items gefüllt werden?
                      Da erhalte ich nur:
                      Code:
                      2024-04-15  14:18:33 INFO     logics.Musik        {
                        "playerInfo": {
                          "hint": null,
                          "infoText": null,
                          "isPlayingInLemur": false,
                          "lemurVolume": null,
                          "lyrics": null,
                          "mainArt": null,
                          "mediaId": null,
                          "miniArt": null,
                          "miniInfoText": null,
                          "playbackSource": null,
                          "playingInLemurId": null,
                          "progress": null,
                          "provider": null,
                          "quality": null,
                          "queueId": null,
                          "state": null,
                          "template": null,
                          "transport": null,
                          "upNextItems": null,
                          "volume": null
                        }
                      }
                      2024-04-15  14:18:35 WARNING  plugins.alexarc4shng itemStatus of send_cmd: 400: {"Message":null}​
                      Oder muss ich noch etwas anderes anstoßen?

                      Grüße, Marc

                      Kommentar


                        AndreK Hallo Andre, ich habe es jetzt hinbekommen. Ich muss nur etwas warten nach dem Einschalten/Play

                        Aber wie bekomme ich jetzt die Informationen aus dem json Objekt in die Items?

                        Kommentar


                          Hmm, ich stehe wirklich auf dem Schlauch….
                          was geht:
                          Im Executer Plugin kann ich eigentlich alles machen mit den Ergebnissen die ich erwarte:

                          Code:
                          import json
                          state,MediaInfo = sh.AlexaRc4shNG.get_player_info("Echo Bad")
                          print ('State :' + str(state))
                          print (json.dumps(MediaInfo,indent=2))
                          print(type(MediaInfo))
                          print(MediaInfo["playerInfo"]["infoText"]["title"])​
                          Das Selbe in einer Logik wird einfach nicht befüllt:
                          Code:
                          import json
                          state,MediaInfo = sh.AlexaRc4shNG.get_player_info("Echo Bad")
                          #state,MediaInfo =sh.AlexaRc4shNG.get_player_info(sh.EG.Raum3.AlexaRadio.Geraet()) #sh.EG.Raum3.AlexaRadio.Info.player_info.artist(MediaInfo["playerInfo"]["infoText"]["title"])
                          #sh.EG.Raum3.AlexaRadio.Info.player_info.fanArt(MediaInfo["playerInfo"]["meinArt"]["url"])
                          logger.info('State :' + str(state))
                          logger.info(json.dumps(MediaInfo,indent=2))
                          logger.info(type(MediaInfo))
                          logger.info(MediaInfo["playerInfo"]["infoText"]["title"])
                          logger.info(str(MediaInfo["playerInfo"]["infoText"]["subText1"]))
                          logger.info(MediaInfo["playerInfo"]["infoText"]["subText2"])
                          logger.info(MediaInfo["playerInfo"]["meinArt"]["url"])​
                          Kann sich das jemand erklären?

                          Grüße, Marc
                          Zuletzt geändert von schuma; 16.04.2024, 12:22.

                          Kommentar


                            Hallo schuma Marc,

                            ich verstehe "befüllt" nicht.Bleibt in der Logik das dict "Media-Info" komplett leer ?
                            Wird nichts in den Logger geschrieben ?
                            Was sagt das Kommunikations-Log im Web-IF des Alexa-Plugins ?
                            Ich meine, wenn auf dem Echo-Device gerade nichts läuft sind die Felder auch leer.

                            VG Andre

                            Kommentar


                              Ja genau, MediaInfo bleibt leer. So wie in Post 400.
                              Im Executer Plugin wird MediaInfo aber befüllt.
                              Im Log taucht dieser Eintrag auf:
                              Code:
                              2024-04-16  18:32:47 WARNING  plugins.alexarc4shng itemStatus of send_cmd: 400: {"Message":null}
                              Im Webif kommt nichts zu dem Vorgang.
                              ​​​​​​​

                              Kommentar


                                So, ich hab das Ganze noch mal in eine eigene Logik gepackt und von Hand getriggert.
                                Jetzt geht es!

                                Ich habe in der Logik den Echo eingeschaltet danach direkt MediaInfo abgefragt.
                                Das ist zu knapp! Da muss ich warten bis die Kugel richtig läuft.
                                Oder gibt es ein Event was ich abfragen kann wenn der Echo wirklich in Betrieb ist?

                                Kommentar

                                Lädt...
                                X