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

 找回密码
 立即注册
查看: 2991|回复: 25

[新奇玩法] 让家里的彩色灯组炫起来! - 用Pyscript来写颜色搭配

[复制链接]

29

主题

911

帖子

4113

积分

论坛元老

Rank: 8Rank: 8

积分
4113
金钱
3192
HASS币
70
发表于 2022-8-22 07:45:55 | 显示全部楼层 |阅读模式
本帖最后由 relliky 于 2022-8-29 19:54 编辑

最近入手了一些彩色灯,特别喜欢飞利浦hue的颜色搭配,但也不想全买hue的灯具,太贵,买多了钱包烧不起。

飞利浦Hue手机应用里的场景颜色搭配众多,好多搭配都很优秀(见下图),想导入HA。可是国内外论坛都问了问搜了搜,也没人干这个事。

Screenshot 2022-08-22 at 01.00.23.png     081816jmddqu2d8mly70kl.jpeg

那就卷起袖子自己来吧。


最近发现了pyscript的强大,就用pyscirpt来写了这个东西。要是拿yaml和jinja写这个东西一定会把我痛苦死。没有接触过的朋友可以看这个贴

思路很简单,就是用取颜色的工具取出截图里的每一个颜色的RGB值。我下面的例子里导入了3组配色,每个配色里有5种RGB颜色。然后只需要调用服务pyscript.set_rgb_light_list加上你要用的彩色灯,它会筛选掉不支持彩色的灯,然后把每个灯随机分配选定配色里的某一个颜色。

service: pyscript.set_rgb_light_list
data:
  light_list:
    - light.master_room_lamp_1
    - light.master_room_lamp_2
    - light.master_room_drawer_led
    - light.master_room_tv_led
    - light.master_room_bed_led

下面的用pyscript写的hue里的三组颜色搭配:

@service
def get_hue_colour_profiles():
    return {
    'hal' :    [(110,237,252),
                (171,221,251),
                (236,97, 96),
                (237,119,104),
                (248,210,93)],
    'tyrell' : [(183,37, 246),
                (235,82, 185),
                (240,105,204),
                (207,149,248),
                (106,229,251)],  
    'soho' :   [(234,51, 100),
                (241,154,122),
                (237,114,141),
                (178,41, 245),
                (145,251,213)]
    }



然后配上开灯的pyscript代码就可以了



@service
def filter_rbg_light_list(light_list=None ):
    assert isinstance(light_list, list), log.info ('input light_list '+light_list+' is not a list.')
    filter_light_list = []
    for light in light_list:
        if light.startswith('light'):
            rgb_supported = 0
            for color_mode in state.getattr(light)['supported_color_modes']:
              rgb_supported += 1 if color_mode == 'hs'  else 0
              rgb_supported += 1 if color_mode == 'rgb' else 0
            filter_light_list += [light] if rgb_supported > 0 else []
    return filter_light_list

@service
def set_rgb_light_list(light_list=None, profile_name='soho'):
    assert isinstance(light_list, list), log.info ('input light_list '+light_list+' is not a list.')
    
    # Filter lights that support colour mode
    light_list = filter_rbg_light_list(light_list)
    
    # Select a colour profile
    colour_list = []
    for _profile_name, _colour_list in get_hue_colour_profiles().items():
      if profile_name == _profile_name:
        colour_list = _colour_list

    # Picking up random colour for a light from a sepecific colour profile 
    num_of_lights = len(light_list)
    colour_index_5 = [0,1,2,3,4]
    import random
    random.shuffle(colour_index_5)
    colour_index = []
    for i in range(len(light_list)):
        colour_index += [colour_index_5[i%5]]
        
    # Turn on lights with the selected colour index
    for i in range(len(light_list)):
        rgb_colour = colour_list[colour_index[i]]
        light.turn_on(entity_id=light_list[i], rgb_color=rgb_colour)



游客,如果您要查看本帖隐藏内容请回复



我家全屋智能的HA设置 https://github.com/relliky/Tais_Home_Assistant_Config
回复

使用道具 举报

0

主题

4

帖子

24

积分

新手上路

Rank: 1

积分
24
金钱
20
HASS币
0
发表于 2022-8-22 10:36:26 | 显示全部楼层
飞利浦都还没接入ha吗?
回复

使用道具 举报

0

主题

18

帖子

223

积分

中级会员

Rank: 3Rank: 3

积分
223
金钱
205
HASS币
0
发表于 2022-8-22 14:07:06 | 显示全部楼层
66666666666
回复

使用道具 举报

0

主题

11

帖子

214

积分

中级会员

Rank: 3Rank: 3

积分
214
金钱
203
HASS币
0
发表于 2022-8-22 14:11:37 | 显示全部楼层
加油  加油
回复

使用道具 举报

29

主题

911

帖子

4113

积分

论坛元老

Rank: 8Rank: 8

积分
4113
金钱
3192
HASS币
70
 楼主| 发表于 2022-8-22 16:36:54 | 显示全部楼层
Auttom 发表于 2022-8-22 10:36
飞利浦都还没接入ha吗?

接入了啊,但飞利浦集成只能控制飞利浦灯泡。
我家全屋智能的HA设置 https://github.com/relliky/Tais_Home_Assistant_Config
回复

使用道具 举报

35

主题

370

帖子

2237

积分

金牌会员

Rank: 6Rank: 6

积分
2237
金钱
1867
HASS币
10
发表于 2022-8-22 18:02:00 | 显示全部楼层
这是控制的灯泡,还是LED灯带?是整条单色灯带,还是能够逐颗变色的?
回复

使用道具 举报

29

主题

911

帖子

4113

积分

论坛元老

Rank: 8Rank: 8

积分
4113
金钱
3192
HASS币
70
 楼主| 发表于 2022-8-22 18:44:32 | 显示全部楼层
lexcao 发表于 2022-8-22 18:02
这是控制的灯泡,还是LED灯带?是整条单色灯带,还是能够逐颗变色的?

这个是控制的一组灯泡和灯带。我上面的例子是把2个灯泡和3个灯带设成图片里叫soho的颜色搭配

因为我只有单色灯带,所以上面的代码都是只支持把灯带设成单色的
我家全屋智能的HA设置 https://github.com/relliky/Tais_Home_Assistant_Config
回复

使用道具 举报

35

主题

370

帖子

2237

积分

金牌会员

Rank: 6Rank: 6

积分
2237
金钱
1867
HASS币
10
发表于 2022-8-23 10:25:05 | 显示全部楼层
明白了,关键点在颜色搭配
回复

使用道具 举报

0

主题

45

帖子

224

积分

中级会员

Rank: 3Rank: 3

积分
224
金钱
179
HASS币
0
发表于 2022-8-23 11:42:52 | 显示全部楼层
学习学习
回复

使用道具 举报

29

主题

911

帖子

4113

积分

论坛元老

Rank: 8Rank: 8

积分
4113
金钱
3192
HASS币
70
 楼主| 发表于 2022-8-23 16:15:50 | 显示全部楼层
本帖最后由 relliky 于 2022-8-23 16:18 编辑
lexcao 发表于 2022-8-23 10:25
明白了,关键点在颜色搭配

对的,我看过的好多人的视频,飞利浦hue的颜色搭配种类最多也最好。等下次家里整理干净了,我拍个视频贴在原贴里。
我家全屋智能的HA设置 https://github.com/relliky/Tais_Home_Assistant_Config
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-4-19 16:19 , Processed in 0.150213 second(s), 34 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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