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

 找回密码
 立即注册
查看: 15987|回复: 16

[基础教程] 让sonos成为智能家居的一部分

[复制链接]

12

主题

335

帖子

2348

积分

论坛DIY达人

积分
2348
金钱
2008
HASS币
0
发表于 2018-1-21 13:28:23 | 显示全部楼层 |阅读模式
本帖最后由 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音乐。
IMG_EE95940DDEB7-1.jpeg

2、ha配置

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

media_player:
  - platform: sonos
  - interface_addr: 192.168.XXX.XXX


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

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

```
# 上一首

sonos_pre:

  sequence:

    - service: media_player.media_previous_track



# 下一首

sonos_next:

  sequence:

    - service: media_player.media_next_track



# 播放暂停

sonos_play:

  sequence:

    - service: media_player.media_play_pause



# 音量设为60%

sonos_volume50:

  sequence:

    - service: media_player.volume_set

      entity_id: media_player.livingroom

      data:

        volume_level: 0.5



# 音量设为30%

sonos_volume30:

  sequence:

    - service: media_player.volume_set

      entity_id: media_player.livingroom

      data:

        volume_level: 0.3



# 停止播放

stop_sonos:

  sequence:

    - service: media_player.media_pause

      entity_id: media_player.livingroom





# 打开播放列表

playjazz:

  sequence:

    - service: media_player.select_source

      data_template:

        entity_id: media_player.livingroom

        source: jazz1

playwyy:    

  sequence:

    - service: media_player.select_source

      data_template:

        entity_id: media_player.livingroom

        source: Neteasy

playapplemusic:

  sequence:

    - service: media_player.select_source

      data_template:

        entity_id: media_player.livingroom

        source: applemusic

```
前面的基本操作都很简单,后面打开播放列表的几个script比较麻烦。
要先在sonos的app里,把喜欢的播放列表收藏到sonos中,然后名字要设为英文的,再用select source服务调用。 屏幕快照 2018-01-21 下午1.24.58.jpg






评分

参与人数 3金钱 +21 收起 理由
hundajdx + 2 目前已经可以直接使用中文了!!!.
hugo + 1 谢谢分享!
+ 18 楼主玩的666!

查看全部评分

回复

使用道具 举报

123

主题

4661

帖子

1万

积分

管理员

囧死

Rank: 9Rank: 9Rank: 9

积分
16410
金钱
11664
HASS币
45
发表于 2018-1-21 13:33:48 | 显示全部楼层
感谢楼主分享,有个小问题,我记得有人说sonos如果正在播放音乐,tts来了可以播放,等tts完会自动切换回音乐,这个我测试不行呀,需要自己写自动化吗?
回复

使用道具 举报

12

主题

335

帖子

2348

积分

论坛DIY达人

积分
2348
金钱
2008
HASS币
0
 楼主| 发表于 2018-1-21 13:58:26 | 显示全部楼层
Jones 发表于 2018-1-21 13:33
感谢楼主分享,有个小问题,我记得有人说sonos如果正在播放音乐,tts来了可以播放,等tts完会自动切换回音 ...

囧帅客气了,调用SONOS_SNAPSHOT服务和SONOS_RESTORE服务,前者类似截屏,保存mediaplayer的播放状态,后者将保存的该状态恢复,这样就可以实现tts后恢复播放。
以下是我的一段automation,配合小米人体传感器实现:工作日早上使用sonos原生闹钟,起床走到客厅的时候sonos播报当天天气、家到公司路况,然后恢复播放。
- alias: goodmorning
  trigger:
    platform: state
    entity_id: binary_sensor.motion_sensor_158d0001d926fa
    from: 'off'
    to: 'on'
  condition:
    condition: time
    after: '05:00:00'
    before: '08:00:00'
    weekday:
      - mon
      - wed
      - fri
      - tue
      - thu
  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

回复

使用道具 举报

30

主题

441

帖子

1614

积分

金牌会员

Rank: 6Rank: 6

积分
1614
金钱
1173
HASS币
0
QQ
发表于 2018-4-22 12:05:47 | 显示全部楼层
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    这个自动化能请教下吗
回复

使用道具 举报

12

主题

335

帖子

2348

积分

论坛DIY达人

积分
2348
金钱
2008
HASS币
0
 楼主| 发表于 2018-4-22 12:09:12 | 显示全部楼层
fotanski 发表于 2018-4-22 12:05
action:
    - service: media_player.sonos_snapshot
    - service: script.morningreport   这个脚本 ...

这个和sonos无关的……只是我日常用的一个自动化
回复

使用道具 举报

30

主题

441

帖子

1614

积分

金牌会员

Rank: 6Rank: 6

积分
1614
金钱
1173
HASS币
0
QQ
发表于 2018-4-22 12:13:44 | 显示全部楼层
wyz6123707 发表于 2018-4-22 12:09
这个和sonos无关的……只是我日常用的一个自动化

嗯,我觉得这个自动化还比较实用,可以学习下吗
回复

使用道具 举报

12

主题

335

帖子

2348

积分

论坛DIY达人

积分
2348
金钱
2008
HASS币
0
 楼主| 发表于 2018-4-22 12:32:52 | 显示全部楼层
fotanski 发表于 2018-4-22 12:13
嗯,我觉得这个自动化还比较实用,可以学习下吗

script

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


automation
- alias: goodmorning
  trigger:
    platform: state
    entity_id: binary_sensor.roomcheck
    to: 'on'
  condition:
    condition: and
    conditions:
      - condition: time
        after: '06:30:00'
        before: '09:00:00'
      - condition: state
        entity_id: sensor.holiday
        state: '工作日'
  action:
    - service: media_player.sonos_snapshot
    - service: script.say_news 
    - service: switch.turn_on
      entity_id: switch.tv
    - delay: 00:00:20
    - service: media_player.sonos_restore
    - service: script.tvtojidinghe
    - service: automation.turn_off
      entity_id: automation.goodmorningdatou


怕是看了也没啥用 各种调用
回复

使用道具 举报

30

主题

441

帖子

1614

积分

金牌会员

Rank: 6Rank: 6

积分
1614
金钱
1173
HASS币
0
QQ
发表于 2018-4-22 12:39:56 | 显示全部楼层
wyz6123707 发表于 2018-4-22 12:32
script

[code] morningreport:

哈哈,有些调用可以换成自己的,有些我没有的可以删掉,非常感谢哈
回复

使用道具 举报

12

主题

335

帖子

2348

积分

论坛DIY达人

积分
2348
金钱
2008
HASS币
0
 楼主| 发表于 2018-4-22 12:42:19 | 显示全部楼层
fotanski 发表于 2018-4-22 12:39
哈哈,有些调用可以换成自己的,有些我没有的可以删掉,非常感谢哈

不客气 有问题我们继续探讨
回复

使用道具 举报

30

主题

441

帖子

1614

积分

金牌会员

Rank: 6Rank: 6

积分
1614
金钱
1173
HASS币
0
QQ
发表于 2018-4-22 13:34:17 | 显示全部楼层
fotanski 发表于 2018-4-22 12:39
哈哈,有些调用可以换成自己的,有些我没有的可以删掉,非常感谢哈

本帖值得收藏
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-25 04:52 , Processed in 1.333761 second(s), 36 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表