volume up/down

Kurze Frage. Kann ich eine Integer-Variable (Lautstärke, z.B. 1-100) irgendwie mit Alexa um 5% erhöhen bzw. herabsetzen?

Hintergrund: die Lautsprechervariable erlaubt nur das Setzen eines spezifischen Werts, aber ich finde keine Hex-Codes um dies auf meinem Sony-Receiver umzusetzen. Alles was ich gefunden habe, sind folgende Hex-Codes:


$systemPowerOn = hex2bin("0220A02100");
$systemPowerOff = hex2bin("0202A02000");
$volumeUp =  hex2bin("0202A05500");
$volumeDown =  hex2bin("0202A05600");
$volumeLeveleQuery =  hex2bin("0204A092000100");
$muteOn=  hex2bin("0204A053000100");
$muteOff =  hex2bin("0204A053000000");
$installerModeNetwork =  hex2bin("0203A0630200");
$installerModeOff =  hex2bin("0203A0630000");
$inputHdmi1=  hex2bin("0204A042002100");
$inputHdmi2 = hex2bin("0204A042002200");
$inputHdmi3 =  hex2bin("0204A042002300");
$inputHdmi4 =  hex2bin("0204A042002400");
$inputHdmi5 =  hex2bin("0204A042002500");
$inputHdmi6 =  hex2bin("0204A042002600");	

Aber selbst wenn man einen Wert setzen könnte, „Volume up“ bzw. „Volume down“ wären trotzdem sehr nützlich!

Hi,
das IPS-Alexa-Gerät Lautsprecher hört auch auf lauter und leiser und man kann dann im Aktionsscript darauf reagieren. Bei mir werden die D&M-Receiver um 2dB verändert und bei Harmony-Steuerung schicke ich dann 2 mal den Volume-Befehl. Lauter/leiser verändern die Werte glaube ich um 10.

Ralf

dankeschön! Es wäre schon gut, wenn beim IPS-Skill (und allen anderen skills) eine klare Dokumentation aller Sprachbefehle irgendwo vorhanden wäre. Oder vielleicht gibt es die - aber ich habe sie nirgendwo gefunden…

Lautsprecher, die in der Alexa-Instanz eingestellt wurden können auch höher oder niedriger gestellt werden. Beachte dabei nur, dass Alexa leider nicht damit klarkommt, wenn du deine Ansage mit Prozent formulierst. Ein „Erhöhe Lautstärke von … um 15.“ funktioniert wohl, ein „Erhöhe Lautstärke von … um 15 Prozent.“ allerdings nicht.

Alle möglichen Schaltoperationen, die Alexa unterstützt mit allen möglichen Formulierungen können wir in der Doku leider nicht bieten, insbesondere, da diese ja auch regelmäßig angepasst und erweitert werden. Ein paar Formulierungen, die ich beim Testen verwendet habe, findest du dort allerdings.

Danke, das ist aufschlussreich. Ich verstehe aber nicht ganz. Die „Schaltoperationen“, sind sie das, was Amazon als „Utterances“ bezeichnet? Wenn ja, werden diese nicht vom Skill-Entwickler gepflegt?

Nein, die kommen von Alexa. Wir bieten im Skill „lediglich“ die API mit der Alexa die Geräte schalten kann. Dabei teilen wir Alexa auch mit, was das jeweilige Gerät alles unterstützt. Alexa wertet dann allerdings selbst aus, dass du alle Lampen im Wohnzimmer ausschalten möchtest und schickt uns dann für all diese Geräte einen „Aus“-Befehl.

Es gibt auch Skills bei denen „Utterances“ selbst definiert werden können, das wird bei unserem Alexa-Skill allerdings nicht getan.

Hi,
„Utterances“ sind doch eigentlich die Namen die im IPS Alexa Modul vergeben werden.

Ralf

Das sind die Namen „Utterances“ sind so etwas wie „Alexa, schalte das Licht an.“, also gesamte Anweisungen. Und solange man keinen Custom Skill schreibt kommen die nunmal von Amazon und nicht von uns.

Hi,
ich meine wenn man eine Lampe in IPS Weihnachtsbaum nennt und sagt „Alexa schalte Weihnachtsbaum ein“. Licht ist definiert und kann nicht geändert werden.

Stimmt aber schon mal kann „Alexa schalte XYZ ein“ nicht ändern.

Ralf

Ok, ich habe nun folgendes Problem. Mein Sony receiver kann „volume up“ und „volume down“ über IP ausführen, kann aber nicht die Lautstärke auf ein bestimmtes Niveau setzen. Was es immerhin eventuell kann (habs aber nicht getestet) ist eine Abfrage der Lautstärke wiedergeben.

Meine Frage ist: wie kann ich dies am besten durch Alexa steuern? Eine Laustprecher-Instanz lässt sich nicht wirklich direkt in dieser Situation abbilden. Ist es zweckmässig, die Variable auszuwerten vor und nach der „Increase Volume of Receiver“-Utterance, und ein Volume-Up auslösen? Mag jemand etwas Pseudocode dazu erfinden? Um die Details kümmere ich mich schon.

Hi,
ich habe es so gelöst:


<?php
$Lautstärke = $_IPS['VALUE'];
SetValue($_IPS['VARIABLE'], 10);

switch ($Lautstärke){
    case 0:
        $Lautstärke_dif =  -2;
        break;
    case 20:
        $Lautstärke_dif =  2;
        break;
    default:
        $Lautstärke_dif = $Lautstärke - 50;
        if (abs($Lautstärke_dif) < 0.1) return;
        break;
}

$room = GetValue(16733);
switch ($room){
    case 1:
        if ($Lautstärke_dif > 0){
            DAVRT_MasterVolumeStep(23843, "UP", $Lautstärke_dif);    // add device to trigger
        }
        else{
            DAVRT_MasterVolumeStep(23843, "DOWN", -$Lautstärke_dif);    // add device to trigger
        }
        break;
    case 2:
        if ($Lautstärke_dif > 0){
            for ($i = 0; $i < $Lautstärke_dif; $i++){
              LHD_Send(54629, "VolumeUp");
            }
        }
        else{
            for ($i = 0; $i < -$Lautstärke_dif; $i++){
              LHD_Send(54629, "VolumeDown");
            }
        }
        break;
}
?>

nachdem ich die Lautstärke ausgewertet habe setzt ich die Variable auf 10 dann kann ich mit Vergleich auf 0 und 20 erkennen ob lauter/leiser gemeint ist. In diesem Fall ändere ich die Lautstärke um 2 Stufen. Bei mir entspricht Lautstärke 50 keine Änderung und > 50 lauter und < 50 leiser. Alexa Ton auf 55 erhöht die Lautstärke so um 5 Stufen und 45 verringert die Lautstärke um 5 Stufen.

In meinem Beispiel wird in Raum 1 ein Denon AVR angesprochen der die Werte direkt verarbeiten kann. In Raum 2 steht „nur“ eine Harmony und die Stufen werden durch eine Schleife erreicht.

Vorteil u.a. man kann so alle Geräte gleich behandeln.

Ralf