Amazon Echo Remote Control

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“