mambur

 
<<< Back

playSoundToTerminal()

Воспроизведение mp3 либо wav файла на колонку Google Nest Mini 2

Умная колонка Google

Долго искал возможность воспроизведения файла на колонку Google Nest Mini 2. Не нашел.

Реализация

Сделал следующее решение:
Требует наличие статического адреса (доступ из мира)!
[YOUR_STATIC_IP] заменить в коде на ваш IP или доменное имя.
Само собой ранее должен бить добавлен терминал. У меня назван googleNest1.

Если используете авторизацию, то ее следует отключить добавив рядом с друними location
/etc/nginx/sites-available/default:

        location /cms/sounds {
            auth_basic off;
        }

Majordomo -> Panel -> Objects - > Scripts -> Add new script
name: playSoundToTerminal

Code:

// Usage: runScript('playSoundToTerminal', array('filename'=>'dingdong', 'vol'=>'25', 'terminal'=>'googleNest1'));

// File name
if ($params['filename']){ 
    if (file_exists(ROOT . 'cms/sounds/' . $params['filename'] . '.mp3')){
        $params['filename'] = $params['filename'] . '.mp3';
    }elseif (file_exists(ROOT . 'cms/sounds/' . $params['filename'] . '.wav')){
        $params['filename'] = $params['filename'] . '.wav';
    }
    if (!preg_match("/^https?:/i",$params['filename'])){
        $filename = 'http://[YOUR_STATIC_IP]/cms/sounds/' . $params['filename'];
    }else{
        $filename = $params['filename'];
    }
    unset($params['filename']);
}else{
    return 'unknown filename';
}

// Speaker volume
if ($params['vol']){ // 22
    $vol = $params['vol'];
    unset($params['vol']);
}else{
    $vol = 25;
}

// Play file
if ($params['terminal']){ // 'googleNest1'
    $terminal = $params['terminal'];
    unset($params['terminal']);
    setGlobal('RadioSetting.PlayTerminal', $terminal);
    callMethod('RadioSetting.Control', array('cmd'=>'stop'));
    callMethod('RadioSetting.Control', array('vol' => $vol));
    return playMedia($filename,$terminal);  
}else{
    return playMedia($filename);    
    #return playSound($filename);
}

Использование

  1. Визов из любого кода:
    runScript('playSoundToTerminal', array('filename'=>'dingdong', 'vol'=>'25', 'terminal'=>'googleNest1'));
  2. Я использую blockly. Визов как на картинке
    blockly

TTS

Для воспроизведения произвольного текста на колонку все еще разискивается решение

Discuss (1) (2)

See also:
2022-08-02 MegaD по-киевски с сыром
2022-08-02 MegaD по-киевски с подливкой
2022-08-01 MegaD по-киевски

Odessa, Украина