Amazon Echo Remote Control

Danke für deine schnelle Antwort!
Das is noch die 6.1 :face_with_peeking_eye:

Dann liegt das daran. Da ist ist PHP Version noch zu alt. Du brauchst dann mindestens IPS Version 7.0.
Ich werde die Mindestanforderungen im Modul entsprechend korrigieren, damit das Modul nicht aktualisiert wird, wenn die IPS Version zu klein ist.

Probier mal die aktuelle BETA-Version. Da sollte die Kompatibilität auch für Symcon < 7.0 wiederhergestellt sein.

Hallo Leute!
Ich nutze dieses Modul um per Sprachbefehl den Staus von meinen Smart Home über die Alexas zu bekommen. Zum Beispiel “Fenster” gibt mir den Status meiner Fenster und Türen zurück. Das funktionierte bis jetzt immer sehr gut.
Über die “AmazonEchoIO” wurde die derzeitige aktive Alexa bestimmt “Letzte Aktivität Gerät (Sting)” bestimmt. Mein Problem diese wird nicht mehr aus dem Modul aktualisiert?
Der Zeit Stempel zeigt keine Änderung obwohl alles richtig eingerichtet sein sollte :wink:
Wird in der Instantz (Instanzkonfiguration) der Button “Aktualisiere letzte Aktivität” gedrückt ändern sich die werte und es funktioniert normal.
Nun die Frage, wie aktualisieren?
Bis jetzt war das nicht notwendig, war leider nicht aufmerksam wann es zur Umstellung gekommen ist :sweat_smile:
DANKE für die Unterstützung!

Du kannst die Funktion ECHOIO_GetLastActivity verwenden. Diese liefert ein Array mit allen relevanten Werten.

1 „Gefällt mir“

DANKE das war genau der “Schnipsel” der mir gefehlt hat :innocent:

Hola in die Runde!

Gibt es eigentlich eine Möglichkeit direkt mitzubekommen von welchem Device das Involvement kommt? ECHOIO_GetLastActivity ist bei mir immer genau “einen Befehl” hinterher.

Hintergrund: Ich möchte gerne anhand des Devices sowas wie das Licht schalten können aber halt eben nur in dem entsprechenden Raum und über einen generischen Befehl wie etwa “schalte Licht an”.
Any opinions?
Grüße,

Alex

Wenn dein Script aufgerufen wird musst Du ca. 1 Sekunde +/- warten bevor Du ECHOIO_GetLastActivity aufrufst.

Ralf

Ich habe das bei mir so gelöst, dass das Skript etwas wartet, bevor das letzte Deivce ermittelt wird. Das sind bei mir aktuell 500ms. Das funktioniert eigentlich recht gut (99%).

Als Beispiel mein Licht ein/aus

<?php
$ZimmerEcho=0;
$ZimmerEchoText=0;
[$ZimmerEcho,$ZimmerEchoText]=ECHO_Nr_T2Speech();
switch ($ZimmerEcho){
 case 3:
        RequestAction(42863, $_IPS['VALUE']);
        break;
 case 4:
        RequestAction(46405, $_IPS['VALUE']);
        if (!$_IPS['VALUE'])
        {
            RequestAction(56840, $_IPS['VALUE']);
            RequestAction(55433, $_IPS['VALUE']);
            RequestAction(26478, $_IPS['VALUE']);
            RequestAction(33943, $_IPS['VALUE']);
        }
        break;
 case 5:
        RequestAction(27934, $_IPS['VALUE']);
        break;
 case 7:
        RequestAction(46102, $_IPS['VALUE']);
        if (!$_IPS['VALUE'])
        {
            RequestAction(31819, $_IPS['VALUE']);
        }
        break;
 case 8:
        RequestAction(15399, $_IPS['VALUE']);
        RequestAction(48350, $_IPS['VALUE']);
        RequestAction(18295, $_IPS['VALUE']);
        RequestAction(17629, $_IPS['VALUE']);
        break;
 case 10:
        RequestAction(46405, $_IPS['VALUE']);
        if (!$_IPS['VALUE'])
        {
            RequestAction(56840, $_IPS['VALUE']);
            RequestAction(55433, $_IPS['VALUE']);
            RequestAction(26478, $_IPS['VALUE']);
            RequestAction(33943, $_IPS['VALUE']);
        }        
        break;
 case 11:
        RequestAction(59845, $_IPS['VALUE']);
        if (!$_IPS['VALUE'])
        {
            RequestAction(16942, $_IPS['VALUE']);
            RequestAction(28993, $_IPS['VALUE']);
            RequestAction(22618, $_IPS['VALUE']);
            RequestAction(59828, $_IPS['VALUE']);
        }        
        break;
 case 12:
        RequestAction(58305, $_IPS['VALUE']);
        if (!$_IPS['VALUE'])
        {
            RequestAction(32726, $_IPS['VALUE']);
        }
        break;            
 default: 
        ECHOREMOTE_TextToSpeech($ZimmerEchoText,"Hier gibt es kein Licht!");
}

Ganz oben hast du eine Funktion ECHO_Nr_T2Speech.

Das ist eine eigene Funktion von mir die ich in die autoload gepackt habe

function ECHO_Nr_T2Speech()
{
    
    $sleeptime_id=42758;
    $echoio_id=26201;
    
    $devicename="";
    $i=0;
    ips_sleep(getvalue($sleeptime_id));
    do
    {
        $i++;
        $alexa=ECHOIO_GetLastActivity($echoio_id);
        if (array_key_exists("deviceName", $alexa)) $devicename=$alexa["deviceName"]; else $devicename="";
        if ($devicename == "") Global_Log_Eintrag_erstellen("ERROR","Echo","Fehler Echo. Durchlauf ".$i);
    }
    while ($i<2 and $devicename == "");
    $echoID=0;
    if ($devicename != "")
    {
        switch ($alexa["deviceName"]){
            case "Badezimmer": $echoID=3; break;
            case "Schlafzimmer": $echoID=4; break;
            case "Küche": $echoID=5; break;
            case "Kinderzimmer": $echoID=7; break;
            case "Garten": $echoID=8; break;
            case "Schlafzimmer2": $echoID=10; break;
            case "Wohnzimmer": $echoID=11; break;
            case "Keller": $echoID=12; break;
        }
        $texttoSpeech=$alexa["instanceID"];
        Global_Log_Eintrag_erstellen("","Echo","Echo angesprochen: ".$alexa["deviceName"]." Text: ".$alexa["utterance"]);
    }
    if ($echoID == 0)
    {
        $echoID=11;
        $texttoSpeech=22576;
    }
    return [$echoID,$texttoSpeech];
}

Diese liefert eine ID und die InstanzID vom Echo.

Das Licht habe ich in IPS als deaktivierbare Szene definiert. Damit bekommst im aufgerufenen Skript den Wert mit, der geschalten werden soll (ein/aus)

$_IPS['VALUE']

Ich habe meinen Echos Namen gegeben die mit dem Zimmer zusammenhängen und vergleich den Namen. So kann ich die Dots/Echos einfach austauschen und muss keine IDs ändern.

Ralf

Ginge bei mir auch, nur hatte ich schon so viele Skripts mit den Nummer, dass ich das beibehalten habe. Die Namen kamen erst viel später dazu. Vorher waren es nur die Nummern aus dem Konfigurator

Ich habe nur vergleichsweise wenige Scripte die alle ähnlich aussehen wie z.B. Steckdose aus

<?php
$activity = NULL;
$activity = ECHOIO_GetLastActivity(17337);
if ($activity == null) return;
$echo = $activity["deviceName"];
if (strpos($echo, 'HK', 0) !== false){
}
else if (strpos($echo, 'SZ1', 0) !== false){
}
else if (strpos($echo, 'SZ2', 0) !== false){
}
else if (strpos($echo, 'WZ1', 0) !== false){
}
else if (strpos($echo, 'WZ2', 0) !== false){
}

?>

Und in der gleichen Art noch 10-15 andere Scripte da diese 5 Zimmer sehr ähnlich ausgestattet sind.

Ralf

Hey, danke für das Feedback und die tollen Vorlagen!
Finde es immer wieder erstaunlich was für cracks hier in der community rumlaufen.:flexed_biceps:

EDIT:
IPS_Sleep(2000);
$lastAc= ECHOIO_GetLastActivity(41930);
$TTS= IPS_GetVariableIDByName(„Text zu Sprache“,$lastAc[‚instanceID‘]);
RequestAction($TTS, "Du sprichst zu ".$lastAc[‚deviceName‘]);

Hinkt bei mir dennoch immer ein Involment hinterher. Liegts an meiner langen Leitung nach Spanien oder seht ihr irgendwo einen Fehler. Wäre eigentlich super wenn die API das mitgeben würde (vielleicht dann auch gerade noch wer gerade gesprochen hat). Weiß aber nicht ob Amazon das bereitstellt….

Viele Grüße aus Spanien!
Alex

Du kannst das auch über Echo Bot lösen in Verbindung mit einer Alexa Routine:

1 „Gefällt mir“

Moin Hirschbrat! Kannst Du mir verraten wo genau dieses Panel zu finden ist? Ich finde das bei mir nicht. :frowning:
Grüße,

Alex

EDIT: Gerade gefunden! Sorry!

das ist eine eigene Instanz. Unbedingt auch die Doku für die Ersteinrichtung befolgen:

1 „Gefällt mir“

Ich habe zwei Fragen:

  1. ECHOREMOTE_TextToSpeech funktioniert ohne Probleme. ECHOREMOTE_Announcement allerdings nicht. Nichts in den Logs ersichtlich. Hat jemand eine Idee, an was das liegen kannn?
  2. Über die Alexa App kann ich ja auch Töne und Bilder (Emojis) mitschicken. Geht das auch über dieses Modul?

Hallo, ich kämpfe leider gerade mit dem EchoBot. Ich hatte ihn schon einmal funktionierend laufend, aktuell bekomme ich aber keine REaktion (bzw. beim Testdialog einen Fehler). Ich habe ihn nochmal komplett neu eingerichtet, aber es scheint mich nicht zu mögen:

Folgenden Fehler bekomme ich beim Aktionstest:

Warning:
Notice: {„message“:„Internal Server Error“} in /var/lib/symcon/modules/.store/fonzo.ipsymconechoremote/Echo IO/module.php on line 1945
RESULT:{„http_code“:500,„header“:[„HTTP/1.1 500 Internal Server Error\r“,„Content-Type: application/octet-stream\r“,„Content-Length: 35\r“,„Connection: keep-alive\r“,„Server: Server\r“,„Date: Sat, 17 Jan 2026 10:04:02 GMT\r“,„Strict-Transport-Security: max-age=0; includeSubDomains;\r“,„x-amz-rid: <gelöscht>\r“,„Vary: Content-Type,Accept-Encoding,User-Agent\r“,„X-Cache: Error from cloudfront\r“,„Via: 1.1 3346ad1679ff01fe81e117084323b814.cloudfront.net (CloudFront)\r“,„X-Amz-Cf-Pop: MUC50-P3\r“,„X-Amz-Cf-Id: <gelöscht>==\r“,„\r“,„“],„body“:„{"message":"Internal Server Error"}“} in /var/lib/symcon/modules/.store/fonzo.ipsymconechoremote/EchoBot/module.php on line 480
in /- on line 4

Hat jemand eine Idee was ich falsch mache?

Könnte ein ungültiger oder abgelaufener Token sein

Das ist ein Server Fehler, ich würde abwarten und später erneut probieren. Ansonsten müsstest du auch mal schreiben, was du genau machst, wo der Fehler kommt und was nicht funktioniert