# 蓝小飞智能底座开发者模式指引

# 说明

为了使开发者可以在音箱上运行自己开发的应用,以完成更高级的音箱定制功能,iFLYOS 提供了蓝小飞智能底座极客版音箱。

如按照此指引操作,且查看了相关文档后,开发过程中仍遇到接入问题,可以通过iFLYOS工单或论坛咨询,我们会在12小时内响应回复。

iFLYOS工单:http://support.iflyos.cn/hc/request/new/ (opens new window)

iFLYOS论坛:http://support.iflyos.cn/hc/community/topic/ (opens new window)

如需更高效的技术支持,可选择购买为期2个月的 iFLYOS 技术支持包 (opens new window),购买了技术支持包的用户,可享受以下服务:

  1. 开通工单绿色通道;
  2. 问题咨询2小时内回复响应;
  3. VIP技术支持,优先回复解决开发中遇到的接入问题;
  4. 开通新需求评估通道,2个工作日内回复评估结论;

# 前期准备

# 了解iFLYOS设备接入

在进行二次开发之前,建议你先了解一下iFLYOS设备接入,避免因不了解系统造成设备不可用。

iFLYOS官网地址:https://www.iflyos.cn/ (opens new window)

iFLYOS设备接入参考文档:https://doc.iflyos.cn/device/ (opens new window)

# 在设备接入控制台创建一个设备

步骤参考: https://doc.iflyos.cn/device/console.html (opens new window)

注意

  1. 创建产品类型时,建议选择EVS网络协议,以便获得更多能力;

  2. 为了保证你的设备在小飞在线 App (opens new window)中可正常添加和配网,请确保:

​ a)在【设备控制台-设备能力】中开启蓝牙配网。

​ b)在【设备控制台-设备测试】中配置手机号白名单。

# 温馨提示

在使用开发者模式之前,请确认已知晓以下事项:

  1. 【升级固件】为保证能够使用我们最新的功能和更稳定的体验,请将音箱OTA更新至最新固件版本。更新方式为配网后重启音箱,重启后等待25分钟再重启,开机过程提示“正在升级”等待即可。

  2. 进入过开发者模式并更改了 clientId 的设备,除了硬件问题将不享受其他保修服务。

  3. 由于音乐服务与设备的 clientIddeviceId 挂钩,修改 clientId 后的音箱将无法使用该音箱自带的一年免费音乐服务。

  4. iFLYOS 的极客版音箱皆固件采用了在线更新能力,每天定时检查并自动更新。当你需要使用开发者模式,我们建议你更改clientId ,以免在线更新覆盖了你的开发成果。

    注意:更改clientid可能导致无法进行保修,所以请谨慎使用开发者模式。

# 进入开发者模式

  1. 将音箱的电源线USB口插至电脑,等待音箱开机启动。建议使用一个独立供电,并且电流在1.5A 以上的USB HUB 接入,避免出现供电不足导致的不稳定现象。
  2. 最新版固件已默认开启开发者模式,升级至最新固件即可体验;

# 可以做什么

通过开发者模式,你可以使用 adb (opens new window) 执行 adb shell 命令连接到音箱。连接成功后,你可以做这些事情。

# 更换配置文件

  1. 配置文件名为 iFLYOS.json,可通过以下命令,将取配置文件拉取到本地。

    adb pull /iflyos/iFLYOS.json <保存本地路径>
    

    iFLYOS.json 示例

    {
      "playerBin":"/iflyos/bin/RMediaPlayer",
      "deviceID": "",  
      "clientID": "01234567-89ab-cdef-0123-456789abcdef",  //更换主程序使用的 clientId
      "clientSecret": "01234567-89ab-cdef-0123-456789abcdef",  //更换主程序使用的 clientSecret
      "ivsLog": "DEBUG2",
      "caeResPath": "/iflyos/caeResFile.jet",
      "dbPath":"/data",
      "bleName": "iflyOS-a01",
      "soundDir": "/iflyos/sound_effect",
      "preKill": ["btgatt-server", "RMediaPlayer"]
    }
    
    参数 说明
    deviceID 设备的唯一ID,每个设备具备不同的deviceId,此ID用于OS的鉴权,请勿更改或填写任何值。如有出货需求可通过平台 (opens new window)选择您的设备解决方案,并填写您的联系方式,我们商务同事会联系您。
    clientID 更新主程序的clientID,从设备接入平台 (opens new window)中获取
    clientSecret 更新主程序的clientSecret,从设备接入平台 (opens new window)中获取
  2. 完成修改后,可通过以下命令, 将修改后的配置文件推送至设备目录。

adb push <配置文件路径> /iflyos/

然后执行adb shell sync命令即可生效,注意 iFLYOS.json文件不要存放在有中文目录路径下,否则有可能会导致 adb push 失效。

  1. 更换配置文件后,系统会优先应用配置文件中的参数,此时原有的授权信息会失效,需要重新授权绑定音箱。

注意

  1. 尽管音箱通过配置文件中的相关参数来连接到EVS,但是 OTA 检查更新服务不会去检查你自定义的 clientId 对应的 OTA 后台中的包更新。
  2. 更换client_id完成,设备重启后,你需要为设备重新配置网络。在小飞在线 App (opens new window)中添加设备,选择相应产品,按照APP流程指引为音箱配置一个可用的 WLAN 网络。即可通过蓝小飞智能底座体验你自己创建的设备的相关功能。

# 将自己的设备加入白名单

当你更改成自己的ClientID后,需要在设备管理后台的“产品发布 - 设备ID”选项添加白名单,设备才能完成鉴权操作。执行以下命令即可查询设备DeviceID,将查询到的ID添加至后台即可。

grep xor /data/evs.log

# 更换自定义唤醒词

在蓝小飞智能底座中,我们支持了自定义唤醒词的更换。

# 生成唤醒词资源

请访问自定义唤醒词平台 (opens new window)选择“平台通用唤醒词”生成你的专属唤醒词,后续只需在设备手动替换即可。

# 备份原唤醒词资源

为防止操作失误,导致后续无法唤醒,建议先将官方唤醒词备份至本地,通过adb连接音箱后,执行

adb pull /iflyos/caeResFile.jet <保存本地路径>

即可将机器的唤醒资源备份到本地。

# 替换唤醒词资源

通过 adb 连接到音箱后,在下载好的唤醒词资源目录下执行

adb push <资源文件路径> /iflyos/caeResFile.jet

替换完成后,执行adb shell sync 命令再重启音箱即可。

# 恢复设备默认唤醒词

通过 adb 连接到音箱后,在备份好的唤醒词资源目录下执行

adb push <资源文件路径> /iflyos/caeResFile.jet

替换完成后,执行adb shell sync 命令再重启音箱即可。

# 更换唤醒词后注意事项

1

蓝小飞智能底座可作为IP结合产品,本极客版产品不搭配任何IP人偶,顶部磁片仅作为功能展示。将磁片放置在蓝小飞智能底座上,将会优先使用另一唤醒词“小飞小飞”。如果开发者已手动更换唤醒词,需拿下磁片才能体验更新后的默认唤醒词。

从产品设计上,蓝小飞智能底座可以通过更换磁片(玩偶)输出对应的IP内容、定制唤醒词、对话人格、隐藏技能等。此能力无法通过开发者模式进行更改,有意向进行IP合作的用户/客户可以通过iFLYOS官网 (opens new window)联系商务进行洽谈。

# 更换开机欢迎音效

你可以在 TTS合成页面 (opens new window) 选择对应的发音人,生成专属开机欢迎语,下载的音频只需push至设备的/iflyos/sound_effect/tts_state_is_ready.mp3目录下即可,完成替换后需执行adb shell sync命令生效。

# 音效对应说明表

说明 英文名称
调整音量 sound_effect_ui_volume
闹钟 sound_effect_ui_alerts
开机 sound_effect_ui_boot
唤醒 sound_effect_ui_wakesound
关机 sound_effect_ui_shut_down
无法识别,请重新放置人偶 tts_state_adam_disconnected
蓝牙已连接 tts_state_bluetooth_connected
蓝牙已断开 tts_state_bluetooth_disconnected
等待蓝牙连接 tts_state_bluetooth_in_preparation
蓝牙已打开 tts_state_bluetooth_on
进入工厂模式 tts_state_factory_mode_on
欢迎使用 tts_state_is_ready
麦克风已禁用 tts_state_microphone_off
麦克风已打开 tts_state_microphone_on
已退出网络配置模式 tts_state_network_mode_off
进入网络配置模式,请打开APP按照流程指引设置网络 tts_state_network_mode_on
恢复出厂设置 tts_state_reset
固件升级中1 tts_state_upgrading
升级成功 tts_state_upgraded
我还在开机,请稍后再唤醒我吧 tts_system_boot_in_preparation
我已联网,你可以对我说:来点音乐 tts_system_network_connected
收到密码,正在努力联网 tts_system_network_connecting
已失去网络连接,请打开APP检查网络配置 tts_system_network_disconnected
网络配置失败,请重试 tts_system_network_fail_1
网络好像有点问题,休息下再试试吧 tts_system_network_fail_2
网络好像出了点问题,检测下网络吧 tts_system_network_fail_3
联网失败,请确认WiFi是否可用 tts_system_network_fail_4
联网超时,请重试 tts_system_network_fail_5
开始联网,请耐心等待 tts_system_network_in_preparation
网络有点问题,请稍后重试 tts_system_network_retry
WiFi密码不对 tts_system_network_wrong_password
我正在准备,请稍等一下 tts_system_service_in_preparation
登录状态失效,请打开APP重新登录 tts_system_token_fail

# RAW音效替换

部分音效为raw格式音频,可通过ffmpeg将要替换的音频文件转换为raw格式,命令参数如下:

ffmpeg -i <input> -ac 1 -f s16le -ar 16000 -acodec pcm_s16le <output>

# 退出开发者模式

重启音箱后即恢复正常模式。

最简易的方式,通过断电重连即可重启音箱。另,在 adb 已连接的情况下,通过调用 adb reboot 可以触发设备的重启。

# 常见问题

# 授权时显示无效应用

解决方法: 请确定以下事项:

  1. 请在设备接入控制台-设备详情-设备能力处,已打开蓝牙配网;
  2. 请在设备接入控制台-测试调试处,在白名单中输入用于登录小飞在线的手机号。

# 蓝牙配网时无法配网成功

解决方法:请在设备接入控制台-设备详情-设备能力处,打开蓝牙配网。