Amazon Echo Remote Control

Juhu, habe gerade den Durchbruch erziehlt … TuneIn geht bei mir :loveips:

Habe @Fonzo schon angeschrieben, aber noch keine Rückmeldung bekommen.

Kann gern (die Tage) eine Anleitung posten was man alles wo ändern muss. Ob die Änderungen Nebenwirkungen haben auf andere Funktionalitäten kann ich nicht 100% sagen, nutze sonst viel zu wenig davon :slight_smile:

Gruß Heiko

Hi,
Fonzo war seit ca. 4 Monaten hier nicht mehr aktiv. Kennt ihn jemand persönlich und könnte mal nachhaken? In der jetzigen Zeit ist ja leider alles möglich.

Ralf

Hallo an Alle,

Ich führe ein Script aus um ein bestimmten Song aus einer Playlist abzuspielen.
Allerdings wird immer der erste Titel der Playlist abgespielt.
Die Daten habe ich mir vorher mit ECHOREMOTE_GetQueueInformation geholt.

Das habe ich jetzt erst gemerkt. Seit wann es nicht mehr geht weiß ich nicht.

ECHOREMOTE_JumpToMediaId(33414,„b128a1f2-4c62-4f59-b4fb-7ff5d609967b:8“);

Bitte schreib eine Anleitung für uns. Das wäre super klasse. Kann ja jeder für sich ausprobieren. Meine Frau geht mir schon tierisch auf die Schnürsenkel weil es nicht mehr funzt. Gewohnheitstier und so :wink:

Dachte schon ich komm drum rum - nach dem doch sehr verhaltenen Reaktionen!!

Aber gut, Anleitung kommt jetzt gleich :wink:

Also, damit TuneIn wieder funktioniert muss man das Modul an paar Stellen patchen.

Basis des Patches ist die Beta Version aus dem Store!!!

Zu finden ist das Modul im Store-Unterverzeichnis von IPS => modules/.store/ fonzo.ipsymconechoremote.

HINWEIS: Da ich IPS auf einem RasbPi laufen zu haben => Erklärung via Linux (für Windows adaptieren)

Fangen wir mit dem Echo Device an:

  1. Wechseln in das Verzeichnis „Echo Device“ => cd Echo\ Device/
  2. Die Datei module.php mit Editor öffnen => sudo nano module.php
  3. in der Funktion public function TuneIn(string $guideId): bool folgendes ändern …
        $postfields = [
            'contentType'          => 'station',
            'guideId'              => $guideId,
            'mediaOwnerCustomerId' => $this->GetCustomerID()];

in

        $postfields = [
              'contentToken'          => 'music:' . base64_encode(base64_encode('["music/tuneIn/stationId","' . $guideId .'"]|{"previousPageId":"TuneIn_SEARCH"}'))];
//            'contentType'          => 'station',
//            'guideId'              => $guideId,
//            'mediaOwnerCustomerId' => $this->GetCustomerID()];

Also die original Fields auskommentieren oder löschen und den neuen ‚contentToken‘ aufnehmen.

  1. Speichern nicht vergessen :slight_smile:
  2. Wieder ein Verzeichnis hoch => cd ..

Jetzt geht’s an das Echo IO:

  1. Wechseln in das Verzeichnis „Echo IO“ => cd Echo\ IO/
  2. Die Datei module.php mit Editor öffnen => sudo nano module.php
  3. in der Funktion private function GetHeader(): array folgendes ändern …
        $header = [
            'User-Agent: ' . $this->ReadPropertyString('browser'),
            'Accept-Encoding: gzip, deflate, br',
            'Accept-Language:  de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7',
            'Accept: application/json, text/javascript, */*; q=0.01',
            'Referer: http://alexa.' . $this->GetAmazonURL() . '/spa/index.html',
            'Connection: keep-alive'];
        //'Content-Type: application/x-www-form-urlencoded; charset=UTF-8']; //todo: experimentell auskommentiert, damit Capabilities abgefragt werden können

in

        $header = [
            'User-Agent: ' . $this->ReadPropertyString('browser'),
            'Accept-Encoding: gzip, deflate, br',
            'Accept-Language:  de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7',
            'Accept: application/json, text/javascript, */*; q=0.01',
            'Referer: http://alexa.' . $this->GetAmazonURL() . '/spa/index.html',
            'Connection: keep-alive',
            'Content-Type: application/json; charset=UTF-8'];
            // 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8']; //todo: experimentell auskommentiert, damit Capabilities abgefragt werden können

Also die Zeile mit dem ‚Content-Type‘ kommt dazu!

  1. In der Funktion private function TuneinQueueandplay(array $getfields, array $postfields) folgendes ändern …
    private function TuneinQueueandplay(array $getfields, array $postfields)
    {
        $url = 'https://' . $this->GetAlexaURL() . '/api/tunein/queue-and-play?' . http_build_query($getfields);

        $header = $this->GetHeader();

        return $this->SendEcho($url, $header, $postfields);
    }

in

    private function TuneinQueueandplay(array $getfields, array $postfields)
    {
        //HW $url = 'https://' . $this->GetAlexaURL() . '/api/tunein/queue-and-play?' . http_build_query($getfields);
        $url = 'https://' . $this->GetAlexaURL() . '/api/entertainment/v1/player/queue?' . http_build_query($getfields);

        $header = $this->GetHeader();

        return $this->SendEcho($url, $header, $postfields, null, 'PUT');
    }

Also die URL und der SendEcho Aufruf ändert sich hier.

  1. Speichern nicht vergessen :slight_smile:

Das war’s auch schon! Sollte eigentlich ohne Restart usw. gehen, aber ich weiß es nicht mehr genau :slight_smile:

VielErfolg
Heiko

1 „Gefällt mir“

Hi Pitti,

Dankeschön. Hast Du auch noch eine Lösung für mein Problem ? …siehe 3 Posts weiter oben.

Leider nein - mit Playlists habe ich noch nix gemacht! Sorry!

Perfekt @pitti . Funktioniert bei mir auch. Auch mit der Stable Version.

1 „Gefällt mir“

Super, hat hier auch geklappt. Danke. :+1:

Gruß Horst

1 „Gefällt mir“

Hallo zusammen, ich hatte oben ( Beitrag 1283) mein Problem beschrieben, bin ich damit alleine? Hat keiner eine Idee was da schief läuft?

Danke!! Hat super funktioniert - gut und nachvollziehbar beschrieben.

1 „Gefällt mir“

`Hallo zusammen,

Ich brauche dringend Hilfe, seit gestern bekomme ich im 5-Minuten- Takt diese Meldungen. An IPS habe ich nichts geändert, da ich gar nicht zu Hause war.


IPS-Err-PHP  2021-11-13 13:55:44.799  Notice: Trying to access array offset on value of type bool
  Error in Script /var/lib/symcon/modules/.store/fonzo.ipsymconechoremote/Echo IO/module.php on Line 919
 137 in IPSLibrary/app/core/IPSLogger/IPSLogger.inc.php (call IPSLogger_Out)
  44 in IPSLibrary/app/core/IPSLogger/IPSLogger_PhpErrorHandler.inc.php (call IPSLogger_Err)
 919 in modules/.store/fonzo.ipsymconechoremote/Echo IO/module.php (call IPSLogger_PhpErrorHandler)
 881 in modules/.store/fonzo.ipsymconechoremote/Echo IO/module.php (call GetDevices)
 1073 in modules/.store/fonzo.ipsymconechoremote/Echo IO/module.php (call GetDeviceList)
 3555 in __generated.inc.php (call GetLastDevice)
   1 in /- (call ECHOIO_GetLastDevice)


IPS-Err-PHP  2021-11-13 13:55:44.812  Notice: Trying to access array offset on value of type bool
  Error in Script /var/lib/symcon/modules/.store/fonzo.ipsymconechoremote/Echo IO/module.php on Line 882
 137 in IPSLibrary/app/core/IPSLogger/IPSLogger.inc.php (call IPSLogger_Out)
  44 in IPSLibrary/app/core/IPSLogger/IPSLogger_PhpErrorHandler.inc.php (call IPSLogger_Err)
 882 in modules/.store/fonzo.ipsymconechoremote/Echo IO/module.php (call IPSLogger_PhpErrorHandler)
 1073 in modules/.store/fonzo.ipsymconechoremote/Echo IO/module.php (call GetDeviceList)
 3555 in __generated.inc.php (call GetLastDevice)

Moin,
ich habe mal wieder meine Probleme …
Ich habe versucht die Anpassung auf einer SymBox zu machen. Allerdings gibt es dort das Verzeichnis /.store/ nicht.
Der Ordner IPSymconEchoRemote liegt auch nicht in /modules, sondern findet sich bereits in var/lib/symcon.
Darin habe ich dann die beiden module.php geändert - was aber leider keine Wirkung bei der tunein Steuerung zeigt.

Hat jemand eine Idee wo/wie/was ich falsch mache?

Grüße, Uwe

Das Verzeichnis existiert:


image

Durch den vorangestellten Punkt wird das Verzeichnis auf nicht sichtbar gesetzt.
Wie gehst Du denn auf die Symbox? Mit WinSCP?
Dann musst Du einmal [STRG] + [ALT] + [H] drücken um das Verzeichnis anzuzeigen:

und noch einmal um es wieder zu verstecken.

Nordische Grüße,
Loerdy

Moin,
schon, weil ich es am einfachsten finde, mit WinSCP. Aber auch Putty wollte mir das nicht anzeigen …
Egal (danke), jetzt habe ich die beiden Dateien im 'hidden’store geändert.
Auch nach einem Neustart der Box wirft mir ein EchoRemote_TuneInPreset jetzt aber dieses aus:

PHP-Error-Warning:
Fatal error: Uncaught TypeError: Argument 3 passed to AmazonEchoIO::SendEcho() must be of the type string or null, array given, called in /mnt/data/symcon/modules/.store/fonzo.ipsymconechoremote/Echo IO/module.php on line 759 and defined in /mnt/data/symcon/modules/.store/fonzo.ipsymconechoremote/Echo IO/module.php:1035
Stack trace:
#0 /mnt/data/symcon/modules/.store/fonzo.ipsymconechoremote/Echo IO/module.php(759): AmazonEchoIO->SendEcho(‚https://alexa.a…‘, Array, Array, NULL, ‚PUT‘)
#1 /mnt/data/symcon/modules/.store/fonzo.ipsymconechoremote/Echo IO/module.php(1166): AmazonEchoIO->TuneinQueueandplay(Array, Array)
#2 /-(3): AmazonEchoIO->ForwardData(’{„DataID“:"{8E1…’)
#3 {main}
thrown in /mnt/data/symcon/modules/.store/fonzo.ipsymconechoremote/Echo IO/module.php on line 1035
PHP-Error-Error: Uncaught TypeError: Argument 3 passed to AmazonEchoIO::SendEcho() must be of the type string or null, array given, called in /mnt/data/symcon/modules/.store/fonzo.ipsymconechoremote/Echo IO/module.php on line 759 and defined in /mnt/data/symcon/modules/.store/fonzo.ipsymconechoremote/Echo IO/module.php:1035
Stack trace:
#0 /mnt/data/symcon/modules/.store/fonzo.ipsymconechoremote/Echo IO/module.php(759): AmazonEchoIO->SendEcho(‚https://alexa.a…‘, Array, Array, NULL, ‚PUT‘)
#1 /mnt/data/symcon/modules/.store/fonzo.ipsymconechoremote/Echo IO/module.php(1166): AmazonEchoIO->TuneinQueueandplay(Array, Array)
#2 /-(3): AmazonEchoIO->ForwardData(’{„DataID“:"{8E1…’)
#3 {main}
thrown
Error in Script /mnt/data/symcon/modules/.store/fonzo.ipsymconechoremote/Echo IO/module.php on Line 1035Abort Processing during Fatal-Error: Uncaught TypeError: Argument 3 passed to AmazonEchoIO::SendEcho() must be of the type string or null, array given, called in /mnt/data/symcon/modules/.store/fonzo.ipsymconechoremote/Echo IO/module.php on line 759 and defined in /mnt/data/symcon/modules/.store/fonzo.ipsymconechoremote/Echo IO/module.php:1035
Stack trace:
#0 /mnt/data/symcon/modules/.store/fonzo.ipsymconechoremote/Echo IO/module.php(759): AmazonEchoIO->SendEcho(‚https://alexa.a…‘, Array, Array, NULL, ‚PUT‘)
#1 /mnt/data/symcon/modules/.store/fonzo.ipsymconechoremote/Echo IO/module.php(1166): AmazonEchoIO->TuneinQueueandplay(Array, Array)
#2 /-(3): AmazonEchoIO->ForwardData(’{„DataID“:"{8E1…’)
#3 {main}
thrown
Error in Script /mnt/data/symcon/modules/.store/fonzo.ipsymconechoremote/Echo IO/module.php on Line 1035
Error in Script /mnt/data/symcon/modules/.store/fonzo.ipsymconechoremote/Echo Device/module.php on Line 405
Warning:
Fatal error: Uncaught TypeError: Argument 3 passed to AmazonEchoIO::SendEcho() must be of the type string or null, array given, called in /mnt/data/symcon/modules/.store/fonzo.ipsymconechoremote/Echo IO/module.php on line 759 and defined in /mnt/data/symcon/modules/.store/fonzo.ipsymconechoremote/Echo IO/module.php:1035
Stack trace:
#0 /mnt/data/symcon/modules/.store/fonzo.ipsymconechoremote/Echo IO/module.php(759): AmazonEchoIO->SendEcho(‚https://alexa.a…‘, Array, Array, NULL, ‚PUT‘)
#1 /mnt/data/symcon/modules/.store/fonzo.ipsymconechoremote/Echo IO/module.php(1166): AmazonEchoIO->TuneinQueueandplay(Array, Array)
#2 /-(3): AmazonEchoIO->ForwardData(’{„DataID“:"{8E1…’)
#3 {main}
thrown in /mnt/data/symcon/modules/.store/fonzo.ipsymconechoremote/Echo IO/module.php on line 1035
PHP-Error-Error: Uncaught TypeError: Argument 3 passed to AmazonEchoIO::SendEcho() must be of the type string or null, array given, called in /mnt/data/symcon/modules/.store/fonzo.ipsymconechoremote/Echo IO/module.php on line 759 in /mnt/data/symcon/modules/.store/fonzo.ipsymconechoremote/Echo Device/module.php on line 405
PHP-Error-Notice: Trying to access array offset on value of type null
Error in Script /mnt/data/symcon/modules/.store/fonzo.ipsymconechoremote/Echo Device/module.php on Line 1072
Notice: Trying to access array offset on value of type null in /mnt/data/symcon/modules/.store/fonzo.ipsymconechoremote/Echo Device/module.php on line 1072

… und die Ratlosigkeit ist immer noch da … (in den ‚angemeckerten‘ Zeilen habe ich ja eigentlich keine Änderungen gemacht)

Grüß, Uwe

Hi Uwe,

welche Version setzt Du ein? Die Zeilennummern landen bei mir bei ganz anderen Funktionen! Sicher das Du die letzte Beta hast?

Gruß Heiko

PS: Ansonsten sende mal die ganze module.php vom Echo IO!

Moin Heiko,
also im Store steht Version: 1.2#12 (11.10.2019) - auch schon mal neu installiert

In den Zeilen steht schon was von tunein, das ist aber eben nicht die geänderte Zeile.
Hier meine geänderte module.php aus dem EchoIO:
module.zip (11,1 KB)

Grüße, Uwe

Ich schau es mir an - weiß aber nicht ob ich es heute noch schaffe!

Heiko

Danke dir, Heiko
das geht ja schon seit Wochen nur mit Sprachsteuerung - da kommt es jetzt auf ein paar mehr oder weniger nicht an

Uwe