Amazon Echo Skill & Modul

Hallo Gemeinde,

gibt es eine einfache Möglichkeit, alles was Alexa versteht (nachdem ich Alexa gesagt habe), in eine Variable zu schreiben und so einen Monitor im Webfront zu haben ?

Würde da gerne ein paar tests machen, ohne die app auf zu haben.

LG
Sascha

Davor habe ich mich bislang immer gedrückt. Ich finde die Einrichtung des „Bauwerks“ von Dave so herrlich einfach, dass ich auch gerne auf seine ‚angedrohten‘ Erweiterungen warte :smiley:

Da ja aber anscheinend auch alles problemlos parallel läuft könnte ich ja doch mal etwas „üben“ mit einem Custom Skill.

Ich sehe das nach wie vor immer noch als nettes „Spielzeug“ und nutze es überwiegend als Schreibtischradio :slight_smile:

Grüße, Uwe

Hallo Uwe,

ich hab mich auch davor gedrückt, muß aber sagen, das die Anleitung ganz oben in diesem Thread wirklich SEHR gut gemacht ist.

Und wenn ich das schaffe, schafft es jeder :slight_smile:
Der Hauptgrund für mich war, das ich Werte von IPS abfragen wollte, das klappt auch schon super.
Einzig und alleine die Formulierung „Alexa, frage IPS nach der Temperatur im Pool“ würde ich mir eher so wüschen :
„Alexa, wie ist die Temperatur im Pool“

Aber einen Skill muß man eben leider immer namentlich aufrufen.

LG
Sascha

Moin Sascha,
ich habe mich ja nicht gedrückt, weil ich Angst hatte, es nicht hin zu bekommen :slight_smile:
Im Moment schiebt sich aber gerade mal eine Baustelle etwas, weil die anderen Gewerke noch nicht so weit sind.
Die Gelegenheit wäre also günstig :smiley:
Variablenwerte abzufragen und anzusagen hat auch bei mir einen gewissen ‚Spieltrieb‘ - solange ich ihr zur Abfrage nicht erst sonst was erzählen muss, soll sie doch sabbeln :cool:

Grüße, Uwe

Ich habe es gar nicht mehr ausprobiert ob sich was geändert hat, ist das mit der Beschreibung schon implementiert?

Hi Fonzo,
Das nächste Update ist quasi fertig und kommt die Tage, bin aktuell noch am testen der neuen ApplicationTypes und scenen

Grüße
Dave

Gesendet von iPhone mit Tapatalk

Danke für die Info, ich beschäftige mich ja mehr Custom Skills, mit SmartHomeSkills kenne ich mich nicht so aus, da tobst Du Dich ja schon aus ;). Daher mal ne Frage bei Custom Skills kann ich ja die Device ID des Echo / Dots abgreifen und weis daher welcher Dot etwas geschickt hat, ist dies inzwischen bei SmartHome Skills ebenfalls möglich?

Leider Nein…

Gesendet von iPhone mit Tapatalk

Hallo Dave.

Wenn es dem Esel zu wohl wird macht er ein Update :rolleyes:. Ich bin auf Win 4.3 mit dem Kernel vom 22.8.17 und es hatte eigentlich alles funktioniert - bis ich heute ein Modul-Update gemacht habe. Wenn ich nun die IQL4SmartHome-Instanz öffne kommen im Modulfenster nur noch Fehlermeldungen:

Undefined index: VariablesType in D:\IP-Symcon\modules\IQL4Symcon\IQL4AmazonEcho\module.php on line 755

Im IPS-Log sieht das dann so aus:

[06-Sep-2017 10:18:09 Europe/Berlin] PHP Notice: Undefined index: VariablesType in D:\IP-Symcon\modules\IQL4Symcon\IQL4AmazonEcho\module.php on line 755

Stoppe ich IPS und tausche den Modulordner gegen den Stand von gestern aus und starte den Dienst wieder funktioniert alles einwandfrei.

Das Problem tritt auch auf wenn ich die IQL4SmartHome-Instanz lösche und komplett mit Import der Konfiguration usw. neu anlege. Verzichte ich auf den Import läßt sich das Modulfenster öffnen.

Hi,

bitte nicht den Beta branch nutzen, der ist zur zeit nicht lauffähig, da hab ich was mit paresy getestet…
mit dem Master Branch sollte alles einwandfrei funktionieren…

Grüße
Dave

Ok, danke für den Hinweis.

Hallo Gemeinde,

ich versuche gerade mit dem Custom Skill zu unterscheiden, ob ich einen Aktor ein, oder ausschalten will.

Nur irgendwie wird mein $zustand noch ignoriert, obwohl wenn ich ganz oben die Bedingung von $zustand != „“ auf $zustand == „ein“ setze, ich die bedingung erfülle…

aber unten werden meine if abfrage nicht erkannt und alexa wird unverschämt siehe „else“ :slight_smile:

Habt ihr da eine idee ? Ich baue da schon den ganzen Tag rum :frowning:

Lieben Dank
Sascha

<?
function Execute(Request $request)
{
    if($request->IsLaunchRequest())
    {
        $text = 'Dies war der Launch Intent von Aktoren. Du kannst mit mir Aktoren schalten';
    }
    
    $room = strtolower($request->slots->Zimmer);
    $aktoren = strtolower($request->slots->aktoren);
	$zustand = strtolower($request->slots->zustand);
    if ($room != "" && $aktoren != "" && $zustand != "")
    {
        // Set Device
        // your command
        switch ($room)
        {
        
			case 'arbeitszimmer':
    
			
			switch ($aktoren)
			{
			case 'computer':
			   if ($zustand == "an" or $zustand == "ein")
			   {
			   $text = "computer an im Arbeitszimmer erkannt";
			   }
			   if ($zustand == "aus" or $zustand == "ab")
			   {
			   $text = "computer aus im Arbeitszimmer erkannt";
			   }
			   else
			   {
			   $text = "geht wohl noch nicht, du depp";
			   }
			
			break;
			
			case 'tisch':
			$text = "tisch Arbeitszimmer erkannt";
			break;
			}
            
            break;
			
			
	
        default:
            // The subject slot was invalid
            // Ask the user for the correct object type
            return AskResponse::CreatePlainText(
                'Diesen Raum kenne ich nicht. Zu welchem Raum wolltest Du Informationen haben?'
            )->SetRepromptPlainText(
                'Wie bitte?'
            );
        }
		
		
		
		
		
		
        // Response
        //$text = "Ich habe im ".$room." den ".$aktoren." geschaltet"; 
    }
    else
    {
        $text = "Ich konnte den Raum ".$room." oder den Aktor ".$aktoren." leider nicht verstehen.";
    }
    
    
    return TellResponse::CreatePlainText($text);
}

Ich würde das ja eher in den anderen Thread packen hier geht es ja primär um den SmartHomeSkill ;).
Was steht denn im Debug dort siehst Du ja erst mal was von Alexa überhaupt geschickt wird?

Hallo Dave,

erst einmal: Vielen herzlichen Dank für das Modul, ist der Wahnsinn, wie einfach es geht.

Allerdings habe ich ein kleines Problem mit den Scripten. Du hast in Deiner Doku ja glücklicherweise das Schalten einer Homematic Device als Beispiel genannt.

Dieses habe ich folgendermaßen übernommen:

<?
if($_IPS['SENDER'] == "AlexaSmartHome") {
	HM_WriteValueBoolean(22489 /*[Räume\Küche\Küche - Licht Fenster]*/, "STATE", $_IPS['VALUE']);
	HM_WriteValueBoolean(59155 /*[Räume\Küche\Küche - Licht Waschbeckenseite]*/, "STATE", $_IPS['VALUE']);
}
?>

Nur geschaltet wird da nichts. Wahrscheinlich stelle ich mich da ein wenig zu dumm an. Ich habe auch ein Script für die Hue’s am Laufen:


<?
if($_IPS['SENDER'] == "AlexaSmartHome") {
	HUE_SetState(34784 /*[Räume\Küche\Küche - Licht Decke1\Zustand]*/, $_IPS['VALUE']);
	HUE_SetState(15572 /*[Räume\Küche\Küche - Licht Decke2\Zustand]*/, $_IPS['VALUE']);
}
?>

und für die Lightify:


<?
if($_IPS['SENDER'] == "AlexaSmartHome") {
	OSR_SetValue(54244 /*[Geräte\Lightify\Gerät\B40TW 01]*/, "STATE", $_IPS['VALUE']);
	OSR_SetValue(57381 /*[Geräte\Lightify\Gerät\B40TW 02]*/, "STATE", $_IPS['VALUE']);
}
?>

ohne Probleme. Wenn ich das Script oben richtig verstanden habe, ersetzt es doch den State-Wert „$_IPS[‚VALUE‘]“ mit dem gesprochenen „An“ oder „Aus“, richtig? Oder muss ich das irgendwo noch definieren?

Im Log zeigt er keine komischen Fehler an und Alexa sagt immer nur „Okay“, obwohl „Status emulieren“ ausgeschaltet ist.

Viele Grüße,

Burkhard

Hi,
Auf den ersten Blick sieht alles gut aus… du kannst ja mal die value Variable ausgeben lassen…

Gesendet von iPhone mit Tapatalk

Ja der Code ist falsch deswegen wirst du beschimpft ;).

Du führst mehrere if hintereinander aus und am Schluss ein else. Das Du beschimpft wirst ist logisch, da geprüft wird ob ein vorhanden ist. Die erste Bedingung greift anschließend prüfst du aber nochmals ob die Bedingung


$zustand == "aus" or $zustand == "ab"

zutrifft, das ist nicht der Fall, da ja ein ein übergeben wird. Und weil das nicht der Fall ist, wird dann die else Schleife ausgeführt.

Die Lösung ist relativ simpel. Kein if verwenden das geht schief sondern ein elseif also


case 'computer': 
               if ($zustand == "an" or $zustand == "ein") 
               { 
               $text = "computer an im Arbeitszimmer erkannt"; 
               } 
               elseif ($zustand == "aus" or $zustand == "ab") 
               { 
               $text = "computer aus im Arbeitszimmer erkannt"; 
               } 
               else 
               { 
               $text = "geht wohl noch nicht, du depp"; 
               } 

dann sollte das Beschimpfe ein Ende haben und Du die richtige Antwort bekommen.

Hallo Dave,

manchmal ist Technik einem Wunder gleich zusetzen. Habe genau das gleiche Script ein zweites mal erstellt und siehe da, es läuft. Hatte beim ersten Versuch mit Copy & Paste aus Deiner Doku gearbeitet und nur die Instanzen angepasst. Könnte es daran gelegen haben?

Viele Grüße,

Burkhard

Da ich das natürlich vor dem Update nicht gelesen habe :frowning: geht bei mir mit Alexa im Moment nichts mehr. Kommt demnächst eine neue Beta/Testing-Version für den Raspberry wo das wieder geht? Oder gibt es eine Möglichkeit wieder von der Testing-Version auf die Stable zu wechseln auf dem RPI? Wenn ja wie?

Notiz an mich :slight_smile: Nächstes Mal das Backup VORHER machen und nicht hinterher :banghead:

Gruss Mayday

@mayday

eine funktionierende Beta kommt heute Abend…
da funktioniert dann auch alles wieder :wink:

Grüße
Dave

Perfekt, Danke. :slight_smile: