『瀚思彼岸』» 智能家居技术论坛

标题: 让sonos成为智能家居的一部分 [打印本页]

作者: wyz6123707    时间: 2018-1-21 13:28
标题: 让sonos成为智能家居的一部分
本帖最后由 wyz6123707 于 2018-1-21 13:31 编辑

去年双十一在京东券后850入手了一台sonos play1,收到货后音质真的让人很惊艳。说实话买sonos也是因为ha可以控制,sonos可以成为我家智能化系统的一个重要部分。
记录一下sonos的配置过程,以供各位参考,如有错漏之处还望各位大佬指教。

参考:
ha官网sonos插件https://home-assistant.io/components/media_player.sonos/
debitus的帖子 [已解决] 如何配置Sonos音箱?https://bbs.hassbian.com/forum.p ... 497&highlight=sonos

H大大的帖子 [进阶教程] 多个Sonos音箱的HA自动化packages https://bbs.hassbian.com/forum.php?mod=viewthread&tid=498



以下正文开始:

1、基本连接配置
按照产品说明书连接配置好,登录好几个音乐平台。
注意:sonos的名称要用英文,不然ha会识别不到。
我给sonos起的名字是livingroom,登录了Apple Music,网易云和QQ音乐。
[attach]5020[/attach]

2、ha配置

进入路由器检查sonos的IP地址
首先打开configuration,加入media player

  1. media_player:
  2.   - platform: sonos
  3.   - interface_addr: 192.168.XXX.XXX
复制代码


保存重启后ha的web界面上就可以找到sonos播放器了,如果没有出现可能是discovery组件有问题。
然后打开左下角的service,可以看到很多和mediaplayer有关的service,可以利用这些service为sonos添加控制的script,这样可以添加到homebridge和habridge。
[attach]5018[/attach]
3、script

我写了几个可能用到的script当做按键,play1只有三个按键,播放暂停和音量加减,如果想切歌还要打开app,我感觉很不方便,所以根据services写了这些script。
[attach]5017[/attach]

```
  1. # 上一首

  2. sonos_pre:

  3.   sequence:

  4.     - service: media_player.media_previous_track



  5. # 下一首

  6. sonos_next:

  7.   sequence:

  8.     - service: media_player.media_next_track



  9. # 播放暂停

  10. sonos_play:

  11.   sequence:

  12.     - service: media_player.media_play_pause



  13. # 音量设为60%

  14. sonos_volume50:

  15.   sequence:

  16.     - service: media_player.volume_set

  17.       entity_id: media_player.livingroom

  18.       data:

  19.         volume_level: 0.5



  20. # 音量设为30%

  21. sonos_volume30:

  22.   sequence:

  23.     - service: media_player.volume_set

  24.       entity_id: media_player.livingroom

  25.       data:

  26.         volume_level: 0.3



  27. # 停止播放

  28. stop_sonos:

  29.   sequence:

  30.     - service: media_player.media_pause

  31.       entity_id: media_player.livingroom





  32. # 打开播放列表

  33. playjazz:

  34.   sequence:

  35.     - service: media_player.select_source

  36.       data_template:

  37.         entity_id: media_player.livingroom

  38.         source: jazz1

  39. playwyy:   

  40.   sequence:

  41.     - service: media_player.select_source

  42.       data_template:

  43.         entity_id: media_player.livingroom

  44.         source: Neteasy

  45. playapplemusic:

  46.   sequence:

  47.     - service: media_player.select_source

  48.       data_template:

  49.         entity_id: media_player.livingroom

  50.         source: applemusic
复制代码

```
前面的基本操作都很简单,后面打开播放列表的几个script比较麻烦。
要先在sonos的app里,把喜欢的播放列表收藏到sonos中,然后名字要设为英文的,再用select source服务调用。[attach]5019[/attach]







作者: 囧    时间: 2018-1-21 13:33
感谢楼主分享,有个小问题,我记得有人说sonos如果正在播放音乐,tts来了可以播放,等tts完会自动切换回音乐,这个我测试不行呀,需要自己写自动化吗?
作者: wyz6123707    时间: 2018-1-21 13:58
Jones 发表于 2018-1-21 13:33
感谢楼主分享,有个小问题,我记得有人说sonos如果正在播放音乐,tts来了可以播放,等tts完会自动切换回音 ...

囧帅客气了,调用SONOS_SNAPSHOT服务和SONOS_RESTORE服务,前者类似截屏,保存mediaplayer的播放状态,后者将保存的该状态恢复,这样就可以实现tts后恢复播放。
以下是我的一段automation,配合小米人体传感器实现:工作日早上使用sonos原生闹钟,起床走到客厅的时候sonos播报当天天气、家到公司路况,然后恢复播放。
  1. - alias: goodmorning
  2.   trigger:
  3.     platform: state
  4.     entity_id: binary_sensor.motion_sensor_158d0001d926fa
  5.     from: 'off'
  6.     to: 'on'
  7.   condition:
  8.     condition: time
  9.     after: '05:00:00'
  10.     before: '08:00:00'
  11.     weekday:
  12.       - mon
  13.       - wed
  14.       - fri
  15.       - tue
  16.       - thu
  17.   action:
  18.     - service: media_player.sonos_snapshot
  19.     - service: script.morningreport
  20.     - delay: 00:00:30
  21.     - service: media_player.sonos_restore
  22.     - service: automation.turn_off
  23.       entity_id: automation.goodmorning
复制代码


作者: fotanski    时间: 2018-4-22 12:05
wyz6123707 发表于 2018-1-21 13:58
囧帅客气了,调用SONOS_SNAPSHOT服务和SONOS_RESTORE服务,前者类似截屏,保存mediaplayer的播放状态,后 ...

action:
    - service: media_player.sonos_snapshot
    - service: script.morningreport   这个脚本能请教下吗
    - delay: 00:00:30
    - service: media_player.sonos_restore
    - service: automation.turn_off   
      entity_id: automation.goodmorning    这个自动化能请教下吗
作者: wyz6123707    时间: 2018-4-22 12:09
fotanski 发表于 2018-4-22 12:05
action:
    - service: media_player.sonos_snapshot
    - service: script.morningreport   这个脚本 ...

这个和sonos无关的……只是我日常用的一个自动化
作者: fotanski    时间: 2018-4-22 12:13
wyz6123707 发表于 2018-4-22 12:09
这个和sonos无关的……只是我日常用的一个自动化

嗯,我觉得这个自动化还比较实用,可以学习下吗
作者: wyz6123707    时间: 2018-4-22 12:32
fotanski 发表于 2018-4-22 12:13
嗯,我觉得这个自动化还比较实用,可以学习下吗

script

  1. morningreport:
  2.     sequence:
  3.       - service: tts.baidu_say
  4.         data_template:
  5.           entity_id: media_player.livingroom
  6.           message: >
  7.             早上好!今天是{{states('sensor.laohuangli')}},现在天气{{states('sensor.today_weather_day')}},今天{{states('sensor.today_mintmp')}}到{{states('sensor.today_maxtmp')}}度,9小时内下雨概率为百分之{{states('sensor.9hour_pop')}},现在去华林大厦路况
  8.             {{states.sensor.traffic_home_to_office.attributes.路况}},预计需要{{states.sensor.traffic_home_to_office.state}}分钟
复制代码


automation
  1. - alias: goodmorning
  2.   trigger:
  3.     platform: state
  4.     entity_id: binary_sensor.roomcheck
  5.     to: 'on'
  6.   condition:
  7.     condition: and
  8.     conditions:
  9.       - condition: time
  10.         after: '06:30:00'
  11.         before: '09:00:00'
  12.       - condition: state
  13.         entity_id: sensor.holiday
  14.         state: '工作日'
  15.   action:
  16.     - service: media_player.sonos_snapshot
  17.     - service: script.say_news
  18.     - service: switch.turn_on
  19.       entity_id: switch.tv
  20.     - delay: 00:00:20
  21.     - service: media_player.sonos_restore
  22.     - service: script.tvtojidinghe
  23.     - service: automation.turn_off
  24.       entity_id: automation.goodmorningdatou
复制代码


怕是看了也没啥用 各种调用
作者: fotanski    时间: 2018-4-22 12:39
wyz6123707 发表于 2018-4-22 12:32
script

[code] morningreport:

哈哈,有些调用可以换成自己的,有些我没有的可以删掉,非常感谢哈
作者: wyz6123707    时间: 2018-4-22 12:42
fotanski 发表于 2018-4-22 12:39
哈哈,有些调用可以换成自己的,有些我没有的可以删掉,非常感谢哈

不客气 有问题我们继续探讨
作者: fotanski    时间: 2018-4-22 13:34
fotanski 发表于 2018-4-22 12:39
哈哈,有些调用可以换成自己的,有些我没有的可以删掉,非常感谢哈

本帖值得收藏
作者: puppy0505    时间: 2019-4-1 15:33
楼主 按照你的方法 把播放列表设置成了英文,但是再用select source服务调用还是不行。
只能调用收藏的歌曲,不能调用播放列表 啥问题
作者: wyz6123707    时间: 2019-4-3 11:17
puppy0505 发表于 2019-4-1 15:33
楼主 按照你的方法 把播放列表设置成了英文,但是再用select source服务调用还是不行。
只能调用收藏的歌曲 ...

区分大小写
不过sonos组件好像改版了,上官网看看

作者: withome    时间: 2019-6-14 00:22
谢谢分享!
作者: nnssz    时间: 2019-11-25 12:54
sonos play:1 home assistant的自动化设置。感谢分享!
作者: zhuceshishiyong    时间: 2020-5-18 23:15
puppy0505 发表于 2019-4-1 15:33
楼主 按照你的方法 把播放列表设置成了英文,但是再用select source服务调用还是不行。
只能调用收藏的歌曲 ...

楼主的方法调用播放列表已经失效了,我的版本是0.109.6,可用服务如下
--------------------
【服务】
media_player.play_media
【服务数据】
entity_id: media_player.xxxxx
media_content_id: 播放列表名字中文也支持
media_content_type: playlist
作者: Yangyoujia    时间: 2022-4-10 11:27
太有想法了
作者: hjj    时间: 2023-9-27 15:53
请问如何在sonos里添加QQ音乐播放列表?




欢迎光临 『瀚思彼岸』» 智能家居技术论坛 (https://bbs.hassbian.com/) Powered by Discuz! X3.5