Amazon Echo Remote Control

Dann müsste es sich beim Echo 2 (ich habe leider keinen) reproduzieren lassen mit:

EchoRemote_UpdateStatus(<Instanz id des Echo2>);

Kannst du das mal probieren und mir den Debug Auszug der IO-Instanz zur Verfügung stellen?

Gruß

Burkhard

Bin etwas schlauer. Es tritt nicht auf wenn auf dem Echo TuneIn oder Amazon Music läuft oder zuletzt lief. Es tritt aber auf wenn man ein Hörbuch von Audible wiedergibt oder als letztes wiedergegeben hat.

Danke für den Hinweis. Mit der nächsten Version ist es korrigiert.

Der Echo Show bietet ja die Möglichkeit das Display zu deaktivieren.
Gibt es evtl. die Möglichkeit das auch mit dem Modul bereitzustellen?
Ich schalte automatisiert viele Sachen ab bei Abwesenheit, das wäre dann ein weiterer Punkt :slight_smile:

Kann man mehrer Befehle in eine Art Warteschlange absetzen, damit diese nacheinander abgearbeitet werden?
Wenn ich zB. einen TTS String absetze und danach die Wetterabfrage kommt nur das Wetter, ich möchte ungerne mit ips_sleep zwischen den befehlen arbeiten.

Ansonsten feines Modul, danke für die Arbeit!
Hat alles auf Anhieb geklappt.

Loerdy

Schau mal hiernach. Ist zwar schon etwas älter, erfüllt aber seinen Zweck.

@bumaas.

Danke für den Hinweis. Mit der nächsten Version ist es korrigiert.

Danke - die Fehlermeldung taucht nicht mehr im Logfile auf. :slight_smile:

Dafür habe ich bislang nichts gefunden. Wenn jemand eine Möglichkeit kennt, kann ich es gerne einbauen.
Ich vermute aber, dass es da keine Möglichkeit gibt, zumal der Show ja selber über eine Bewegungserkennung verfügt und sich selber abschaltet.

Auch da ist mir leider nichts bekannt.

Hallo,

ich nutze das Modul nun auch schon seit einigen Tagen und es funktioniert wirklich super. Klasse Arbeit! :smiley:

Ein Problem habe ich allerdings, was ich mir nicht so recht erklären kann.
Ich kann alle möglichen EchoRemote-Befehle ausführen und der Echo tut anschließend auch das, was ich will (z.B. TTS).

Wenn ich jedoch EchoRemote_TuneIn() ausführe und es eine Weile her ist, dass ich zuletzt TuneIn abgespielt habe, passiert nichts. Im Skript gibt es auch keinen Fehler. Im Debug der Echo-Instanz bekomme ich aber ein „x-amzn-error: QUEUE_EXPIRED“ als Rückmeldung.

Wie gesagt, IO verbunden und andere Befehle werden korrekt ausgeführt. Wenn ich allerdings in der Echo-Instanz unten auf den Button „Spiele TuneIn Station FFH Lounge“ klicke, legt der Echo direkt los. Danach funktioniert EchoRemote_TuneIn() auch wieder.

Was macht der Button in der Instanz denn anders als der Befehl, dass es mit dem Button immer funktioniert, mit dem Befehl jedoch nur, wenn es nicht zu lange her ist, dass ich TuneIn abgespielt habe?

Gruß
Slummi

Sehr seltsam.
Beim Button wird

 EchoRemote_TuneIn($id, 's84483'))

aufgerufen.

Hast du es schon einmal mit einem anderen Sender probiert? Welchen Sender rufst du auf?

Also das ist echt eigenartig.
Ich habe es gerade noch mal versucht. Als Sender habe ich Radio Sauerland genommen (s79771).

Als Antwort bekomme ich:
Result: {„http_code“:400,„header“:[„HTTP/1.1 400 Bad Request\r“,„Server: Server\r“,„Date: Sat, 15 Sep 2018 12:10:55 GMT\r“,„Content-Type: application/json\r“,„Content-Length: 36\r“,„Connection: keep-alive\r“,„x-amzn-RequestId: ***\r“,„Content-Encoding: gzip\r“,„x-amzn-error: QUEUE_EXPIRED\r“,„x-amz-rid: ***\r“,„Vary: Accept-Encoding,User-Agent\r“,"\r",""],„body“:"{„message“:null}"}

Der Echo macht nichts, in der App wird aber die Kachel mit dem Sender angezeigt.

Nehme ich statt Radio Sauerland FFH Lounge (s84483), bekomme ich als Antwort:
Result: {„http_code“:200,„header“:[„HTTP/1.1 200 OK\r“,„Server: Server\r“,„Date: Sat, 15 Sep 2018 12:12:04 GMT\r“,„Content-Type: application/json\r“,„Content-Length: 34\r“,„Connection: keep-alive\r“,„x-amzn-RequestId: ***\r“,„Content-Encoding: gzip\r“,„x-amz-rid: ***\r“,„Vary: Accept-Encoding,User-Agent\r“,"\r",""],„body“:"{„error“:null}"}

Der Echo legt direkt los, in der App ist ebenfalls die Kachel zu sehen und es folgen noch ein paar „GetTuneInStation Preset“.

Danach funktioniert es auch mit Radio Sauerland wieder problemlos. Das gibt’s doch nicht. Wieso geht es bei dem einen Sender auf Anhieb und bei dem anderen nicht, aber die App zeigt alles korrekt an. :confused:

Ich werde es noch mal mit anderen Sendern testen. Dummerweise muss ich immer eine Weile warten, bis der Fehler wieder auftritt.

Gruß
Slummi

EDIT:
Kann es einen Zusammenhang damit geben, ob der Sender in der Instanz eingetragen ist oder nicht?
Nehme ich einen Sender der eingetragen ist, kommen nach dem Ausführen des Befehls die „GetTuneInStation Preset“ hinterher.
Nehme ich einen Sender der nicht in der Instanz steht, kommen die nicht.

Hi zusammen,

habe gerade mal mit den Listen (Shopping & Task) rumgespielt und das Ganze so Umgebaut das auch erledigte Items angezeigt werden (siehe Screenshot).

Dafür habe ich die „$getfields“ Arrays in „Echo Device/module.php“ verandert, d.h. den Eintrag „completed: false“ auskommentiert.


      //update ShoppingList
        if ($this->ReadPropertyBoolean('ShoppingList')) {
            $getfields = [
               // 'completed' => 'false',
                'type'      => 'SHOPPING_ITEM',
                'size'      => 500];
            $return    = $this->CustomCommand('https://{AlexaURL}/api/todos?' . http_build_query($getfields));
            if ($return['http_code'] != 200) {
                return false;
            }
            $html = $this->GetListPage(json_decode($return['body'], true)['values']);
            //neuen Wert setzen.
            if ($html != $this->GetValue('ShoppingList')) {
                $this->SetValue('ShoppingList', $html);
            }

        }

        //update TaskList
        if ($this->ReadPropertyBoolean('TaskList')) {
            $getfields = [
               // 'completed' => 'false',
                'type'      => 'TASK',
                'size'      => 500];
            $return    = $this->CustomCommand('https://{AlexaURL}/api/todos?' . http_build_query($getfields));
            if ($return['http_code'] != 200) {
                return false;
            }
            $html = $this->GetListPage(json_decode($return['body'], true)['values']);
            //neuen Wert setzen.
            if ($html != $this->GetValue('TaskList')) {
                $this->SetValue('TaskList', $html);
            }
        }

Die Formatierung in „GetListPage“ habe ich auf UL/LI umgebaut und versucht den Check-Status visuell zu stylen:


    private function GetListPage(array $Items)
    {
$html = '<style>';
$html .= 'ul { margin:0px; padding: 0px 0px 0px 5px; list-style: none;}';
$html .= 'ul li:before { content: \'\25EF\'; padding-right:7px;}';
$html .= 'ul li.checked:before { content: \'\29BF\'; padding-right:7px;}';
$html .= '</style>';
$html .= '<ul>';
foreach ($Items as $Item) {
  if($Item['complete'] == true) {
    $html .= '<li class=\'checked\'>' . $Item['text'] . '</li>';
  }
  else {
    $html .= '<li>' . $Item['text'] . '</li>';
  }
}
$html .= '</ul>';
return $html;
    }

Kann man bestimmt noch schöner machen, aber für den Anfang für mich okay!

Vielleicht ist es ja für den einen oder anderen auch interessant!

Ciao Heiko

PS: könnte man natürlich per schalter fest ins Modul einbauen :smiley:

Also daran scheint es nicht zu liegen. Habe den Sender mal zur Instanz hinzugefügt. Die „GetTuneInStation Preset“ kommen dann auch, aber trotzdem QUEUE_EXPIRED. Ich kapier’s nicht. Wieso klappt es bei anderen Sendern auf Anhieb und wieso wird die Kachel korrekt angezeigt? :frowning:

Mal sehen, ob ich noch einen Sender finde, bei dem es nicht klappt.

Moin Moin,
also ich habe aktuell auch schon Probleme mit dem Radio-Start, wenn ich „nur“ eine Routine von Alexa aufrufe (also gänzlich ohne IPS). Eine Ansage und einen Witz macht sie - das Radio spielt aber erst beim 2. oder sogar 3. Aufruf. Mit „spiel HR3“ dudelt die Kiste immer sofort los. Alle anderen Schaltungen (mit IPS) funzen bei mir klaglos.
Ich habe das für mich mal unter „Alexa-Bug“ einsortiert und warte mal auf Amazon Upgrades …

Grüße, Uwe

Kann man denn die betroffenen Sender im Alexa Webfront ohne Probleme starten? Da müsste man mal nachsehen.
Ich kann es mir erst ab Mittwoch ansehen. Meiner Meinung nach liegt es wahrscheinlich am Sender.

Also im WebFront funktioniert es mit dem Sender leider auch nicht. Es kommt ebenfalls zu der Fehlermeldung QUEUE_EXPIRED.

Was zusätzlich merkwürdig ist:
Ich habe den Sender im Preset der Instanz auf Position 1 gelegt. Im WebFront wird der Sender auch an erster Stelle der Variablen angezeigt. Wenn ich zuvor einen anderen Sender ausgewählt habe (und der Echo bereits spielt) wechselt der Sender auch. Allerdings wird das Bild und die Senderinfo nicht angezeigt, was hingegen bei anderen Sendern der Fall ist. Gehe ich anschließend noch mal in die Instanz steht an Position 1 auch wieder der ursprüngliche Sender. Die Variable enthält aber weiterhin den geänderten Sender und startet diesen auch (vorausgesetzt der Echo spielt bereits).

Also im Moment würde ich auch vermuten, dass es am Sender liegt. Die Frage ist nur, warum? Was ist an dem Sender anders und wieso geht es, wenn TuneIn bereits läuft. Vielleicht finde ich ja noch einen weiteren Sender mit dem Problem. Das dauert leider nur recht lange, da der Fehler ja immer erst nach einer längeren Unterbrechung auftritt.

Kann ggf. mal jemand testen, ob bei ihm das gleiche Verhalten mit diesem Sender auftritt?

Gruß
Slummi

Ich meinte das „Alexa Webfront“ Alexa.amazon.de. Hast du dort geguckt?

Ich probiere es morgen auch mal aus. Dann habe ich wieder Zeit.

Gruß

Burkhard

Ah dann hatte ich dich falsch verstanden, sorry.
Habe es aber auch auf der Alexa-Webseite noch mal probiert. Der Echo dudelt ebenfalls direkt los. Die Sender ID ist die gleiche wie im Modul.

Moin,
ich muss auch noch mal …
Seit ich aus meiner Alexa-Routine (ohne IPS) die vorhergehende Lautstärkeein/verstellung entfernt habe, geht sie immer auf Anhieb.
Grüße, Uwe

Ich vermute, dass die erledigten Items für die meisten nicht so interessant sind. Daher habe ich die Änderung ersteinmal nicht übernommen. Aber dafür gibt es jetzt eine neue Methode, um sich die Items geben zu lassen:):

EchoRemote_GetToDos(int $InstanceID, string $type, bool $completed)

Bei dem QUEUE_EXPIRED Problem beim Abspielen von Sendern handelt es sich vermutlich um ein Timing Problem, das auftritt, wenn direkt nach dem Einstellen des Senders der Status abgefragt wird. Hier wird nun in der aktuellen Version etwas länger gewartet.

Gruß

Burkhard

Hallo zusammen,

ich habe seit heute das Problem, dass sich das Modul nicht mehr anmelden kann. Es liegt wohl daran, dass jetzt immer ein Captcha bei mir vorgeschaltet wird. Auch wenn ich 2FA aktiviere, taucht immer zuerst das Captcha nach der Passwort-Eingabe auf. Irgendeine Idee, wie ich die umgehen kann?

Viele Grüße,
Kai