Da ich schon lange eine TV Unterstüzung bei Alexa vermisse habe ich mir eben selbst eine gebastellt.
Getestet mit IPS 5.2
Intallation :
Wichtig.
- Alexa Modul installieren, falls noch nicht geschehen
- IPS beenden
- settings sichern … nur für den fall
- die in der ZIP Datei AlexaErweiterung1.zip (18.8 KB) enthaltenen dateien in das entsprechende verzeichnis, in dem alexa installiert ist, kopieren
- IPS starten.
Die bestehenden Einstellungen von Alexa werden übernommen und es gibt neue Rubriken
Lautsprecher experte
Equalizer
Equalizer Ony
MediaPlayer
MediaPlayer experte
Fernehgerät
Fernehgerät experte
Wenn du die Änderungen nicht mehr möchtest reicht es einfach die hinzugefügten dateien in verzeichnis zu löschen. Dabei gehen keine anderen einstellungen verloren und die neuen Rubriken sind wieder entfernt.
Beschreibung der Variablen bzw Profilen
Variable: Volume / Lautstärke
Type : Integer
Werte : 0 - 100
Profile : ~Intencity.100
Variable: Mute / Power
Type : Boolean
Werte : true/false
Profile : ~Switch
Variable: Channel / Kanal
Type : Integer
Werte : 1-128 IPS Version < 5 ( 1-32 )
Profile : Associations
value name icon color/farbe
1 Ard
2 ZDF
3 RTL
4 RTL 2
7 Pro 7
…
Bitte beachten:
Eingehende Namen wie schalte Kanal auf „ProSieben“ oder „RTL zwei“ oder „eins“…„zehn“ werden in
„Pro 7“, „RTL 2“, „1“…„10“ geändert, so dass im entsprechenden Profile auch „Pro 7“ stehen muss und ein ProSieben" nicht gefunden wird.
Wird ein „value/name“ empfangen der nicht im Profil enthalten ist, wird die verknüpfte Aktion nicht ausgeführt und alexa meldet einen Fehler,
Variable: Playstate
Type : Integer
Werte : 1-8
Profile : Associations
value name icon color/farbe
1 FastForward
2 Next
3 Pause
4 Play
5 Previous
6 Rewind
7 StartOver
8 Stop
möglich sind auch
2 Next
3 Pause
4 Play
5 Previous
8 Stop
wobei es wichtig ist das „value“ immer gleich ist.
Das Icon, die Farbe oder der Name kann geändert werden zb. „Next“ in „Weiter“
Wird die ein „value“ empfangen dass nicht im Profil enthalten ist, wird die verknüpfte Aktion nicht ausgeführt und alexa meldet einen Fehler,
Variable: Input
Type : Integer
Werte : User
Profile : Associations
value name icon color/farbe
0 AUX 1
1 DVD
2 HDMI 5
3 CD
der Wert von „value“ ist hier nicht relevant da Alexa nur die nachfolgenden Werte für den Eingang erlaubt.
Der „name“ darf jedoch NICHT verändert werden und muss einem der folgenden entsprechen:
‚AUX 1‘,‚AUX 2‘,‚AUX 3‘,‚AUX 4‘,‚AUX 5‘,‚AUX 6‘,‚AUX 7‘,‚BLURAY‘,‚CABLE‘,‚CD‘,‚COAX 1‘,‚COAX 2‘,‚COMPOSITE 1‘,‚DVD‘,‚GAME‘,‚HD RADIO‘,‚HDMI 1‘,‚HDMI 2‘,‚HDMI 3‘,‚HDMI 4‘,‚HDMI 5‘,‚HDMI 6‘,‚HDMI 7‘,‚HDMI 8‘,‚HDMI 9‘,‚HDMI 10‘,‚HDMI ARC‘,‚INPUT 1‘,‚INPUT 2‘,‚INPUT 3‘,‚INPUT 4‘,‚INPUT 5‘,‚INPUT 6‘,‚INPUT 7‘,‚INPUT 8‘,‚INPUT 9‘,‚INPUT 10‘,‚IPOD‘,‚LINE 1‘,‚LINE 2‘,‚LINE 3‘,‚LINE 4‘,‚LINE 5‘,‚LINE 6‘,‚LINE 7‘,‚MEDIA PLAYER‘,‚OPTICAL 1‘,‚OPTICAL 2‘,‚PHONO‘,‚PLAYSTATION‘,‚PLAYSTATION 3‘,‚PLAYSTATION 4‘,‚SATELLITE‘,‚SMARTCAST‘,‚TUNER‘,‚TV‘,‚USB DAC‘,‚VIDEO 1‘,‚VIDEO 2‘,‚VIDEO 3‘,‚XBOX‘
Wird ein „name“ empfangen der nicht im Profil enthalten ist, wird die verknüpfte Aktion nicht ausgeführt und alexa meldet einen Fehler,
Script zum Erstellen und löschen von Demo Variablen zum testen
<?php
const doCreate = true; // wenn true zu false geändert wird dann wird das demo icl der profile entfernt
function createVariable($name, $type, $profile, $parentID, $docreate=doCreate){
$varID = @IPS_GetObjectIDByName($name, $parentID);
if(empty($varID) && $docreate){
$varID = IPS_CreateVariable($type);
IPS_SetParent($varID, $parentID);
IPS_SetName($varID, $name);
IPS_SetVariableCustomProfile($varID, $profile);
}
return $varID;
}
function createActionScript($parentID, $docreate=doCreate){
$actionID = @IPS_GetObjectIDByName('Actionscript', $parentID);
if(empty($actionID) && $docreate){
$actionID=IPS_CreateScript(0);
IPS_SetName($actionID, 'Actionscript');
IPS_SetParent($actionID, $parentID);
IPS_SetHidden($actionID,true);
IPS_SetScriptContent($actionID, "<?
SetValue(\$_IPS['VARIABLE'], \$_IPS['VALUE']);
?>");
}
if($docreate)IPS_SetVariableCustomAction($parentID, $actionID);
elseif($actionID)IPS_DeleteScript($actionID, true);
return $actionID;
}
function createProfile($name, $assosiations, $docreate=doCreate){
if(!IPS_VariableProfileExists($name) && $docreate){
IPS_CreateVariableProfile($name, 1);
foreach($assosiations as $k=>$n){
IPS_SetVariableProfileAssociation($name, $k, $n, '', -1);
}
}
else
if(!$docreate && IPS_VariableProfileExists($name))
IPS_DeleteVariableProfile($name);
}
$ParentID = @IPS_GetObjectIDByIdent('DEMO_CAT', 0);
if(empty($ParentID) && doCreate){
$ParentID=IPS_CreateCategory();
IPS_SetIdent($ParentID, 'DEMO_CAT');
IPS_SetName($ParentID, 'Alexa TV Demo');
IPS_SetParent($ParentID, 0);
}
if(!$ParentID && !doCreate){
return true;
}
$dummyID = @IPS_GetObjectIDByIdent('DEMO_INSTANCE', $ParentID);
if(empty($dummyID) && doCreate){
$dummyID=IPS_CreateInstance( '{485D0419-BE97-4548-AA9C-C083EB82E61E}');
IPS_SetIdent($dummyID, 'DEMO_INSTANCE');
IPS_SetName($dummyID, 'Demo Module');
IPS_SetParent($dummyID, $ParentID);
}
if(!$dummyID && !doCreate){
IPS_DeleteCategory($ParentID);
return true;
}
$powerID = createVariable('Power',0,'~Switch',$dummyID);
createActionScript($powerID);
if($powerID && !doCreate)IPS_DeleteVariable($powerID);
$volumeID = createVariable('Volume',1,'~Intensity.100',$dummyID);
createActionScript($volumeID);
if($volumeID && !doCreate)IPS_DeleteVariable($volumeID);
$muteID = createVariable('Mute',0,'~Switch',$dummyID);
createActionScript($muteID);
if($muteID && !doCreate)IPS_DeleteVariable($muteID);
createProfile('PLAYMODE.DEMO', [1=>'FastForward',2=>'Next',3=>'Pause',4=>'Play',5=>'Previous',6=>'Rewind',7=>'StartOver', 8=>'Stop']);
$playmodeID = createVariable('PlayMode',1,'PLAYMODE.DEMO',$dummyID);
createActionScript($playmodeID);
if($playmodeID && !doCreate)IPS_DeleteVariable($playmodeID);
createProfile('INPUT.DEMO',[0=>'AUX 1','AUX 2','AUX 3','AUX 4','AUX 5','AUX 6','AUX 7','BLURAY','CABLE','CD','COAX 1','COAX 2','COMPOSITE 1','DVD','GAME','HD RADIO','HDMI 1','HDMI 2','HDMI 3','HDMI 4','HDMI 5','HDMI 6','HDMI 7','HDMI 8','HDMI 9','HDMI 10','HDMI ARC','INPUT 1','INPUT 2','INPUT 3','INPUT 4','INPUT 5','INPUT 6','INPUT 7','INPUT 8','INPUT 9','INPUT 10','IPOD','LINE 1','LINE 2','LINE 3','LINE 4','LINE 5','LINE 6','LINE 7','MEDIA PLAYER','OPTICAL 1','OPTICAL 2','PHONO','PLAYSTATION','PLAYSTATION 3','PLAYSTATION 4','SATELLITE','SMARTCAST','TUNER','TV','USB DAC','VIDEO 1','VIDEO 2','VIDEO 3','XBOX']);
$inputID = createVariable('Input select',1,'INPUT.DEMO',$dummyID);
createActionScript($inputID);
if($inputID && !doCreate)IPS_DeleteVariable($inputID);
createProfile('CHANNEL.DEMO',[1=>'ARD',2=>'ZDF',3=>'RTL',4=>'RTL 2',7=>'PRO 7',12=>'Tele 5']);
$channelID = createVariable('Channel select',1,'CHANNEL.DEMO',$dummyID);
createActionScript($channelID);
if($channelID && !doCreate)IPS_DeleteVariable($channelID);
if(!doCreate){
IPS_DeleteInstance($dummyID);
IPS_DeleteCategory($ParentID);
}
?>
Befehle :
name = zb. TV
Alexa TV play|stop|pause … oder TV abspielen|anhalten
Alexa schalte TV auf Kanal 1
Alexa schalte TV auf Kanal ARD
Alexa TV stumm
Alexa TV stumm aus
Alexa TV lautstärke 10 prozent
Neu * Erweiterung der Rubriken um ein Equalizer Modul für bass,mitten und höhen Einstellung (Sonos)
Variable: (Bänder) Bass / Mitten / Höhen
Type : Integer
Werte : abhängig von Min/Max im definierten Profil
Profile : ~Intencity.100
Es muss ein Integer Profile (type 1) vorhanden sein
Die Werte von Min und Max müssen im Profil definiert sein.
Mindestens 1 der Bänder Variablen muss zugewiesen sein.
Bei Änderung der werte von Min und Max in einem Profil,
sowie hinzufügen oder löschen einer der Bänder Variablen
ist es ratsam ein neues Discover der Geräte auszulösen
da der Eualizer die Konfiguration der Bänder sowie die
ermittelten Werte von Min/Max, zur bessern Steuerung,
an Alexa meldet.
Discover mit : Alexa, erkenne meine Geräte neu.
Befehle:
Alexa, stelle den Bass bei Gerät auf 5
Alexa, erhöhe den Bass bei Gerät um 2
Alexa, setze den Bass auf Gerät zurück
Alexa, setze den Equalizer auf Gerät zurück
Fix* Fehler behoben, wenn Emulate Status aktiviert ist
hier nochmal die zip datei : AlexaErweiterung1.zip (18.8 KB)
Nun viel Spass
LG Xaver
Bei fehlern bitte PN an mich da ich nicht immer online bin.