【问题标题】:Controlling Philips Hue using OpenHAB in Raspberry Pi在 Raspberry Pi 中使用 OpenHAB 控制 Philips Hue
【发布时间】:2016-03-10 02:11:50
【问题描述】:

我想用 OpenHAB 控制飞利浦 Hue Lux 彩色灯。所以我想知道我应该做什么步骤,如果我遗漏了什么。

pi@raspberrypi:/opt/openhab/configurations/rules $ sudo vi demo.rules

rule "Select scene"
    when
        Item scene received command
    then
        switch(receivedCommand) {
            /*alles uit */
            case 0 : {
            sendCommand(Toggle_7, OFF); 
            sendCommand(Toggle_3, OFF);
            sendCommand(Toggle_1, OFF);
            sendCommand(Toggle_10, OFF);
            sendCommand(Toggle_11, OFF);
            sendCommand(Toggle_5, OFF);
            sendCommand(Toggle_9, OFF);
            }
            /*sfeer */
            case 1 : { 
            sendCommand(LWD_3, 90);
            sendCommand(Color_7, "45.584415,86.033516,70.19608");
            sendCommand(Color_1, "45.584415,86.033516,70.19608");
            sendCommand(Color_10, "45.584415,86.033516,70.19608");
            sendCommand(Color_11, "45.584415,86.033516,70.19608");
            sendCommand(Color_5, "45.584415,86.033516,70.19608");
            sendCommand(LWD_9,10);
            }
            /*Alles aan */
            case 2 : {
            sendCommand(Toggle_7, ON); 
            sendCommand(Toggle_3, ON);
            sendCommand(Toggle_1, ON);
            sendCommand(Toggle_10, ON);
            sendCommand(Toggle_11, ON);
            sendCommand(Toggle_5, ON);
            sendCommand(LWD_9,100);
            }
            /*eten */
            case 3 : {
            sendCommand(Toggle_3, OFF);
            sendCommand(Color_7, "42.391304,73.6,100.0");
            sendCommand(Color_1, "42.391304,73.6,100.0");
            sendCommand(Color_10, "42.391304,73.6,100.0");
            sendCommand(Color_11, "60,42,100");
            sendCommand(Color_5, "60,42,100");
            sendCommand(LWD_9,10);        
            }
            case 4 : {
            /*nacht */
            sendCommand(LWD_9, 50);
            sendCommand(Color_7, "46.25,37.64706,100.0");
            sendCommand(Color_10, "46.25,37.64706,100.0");
            sendCommand(Toggle_1, OFF);
            sendCommand(Toggle_3, OFF);
            sendCommand(Toggle_11, OFF);
            sendCommand(Toggle_5, OFF);
            }
            case 5 : {
                /* Sunset */
            sendCommand(Color_7, "42.391304,73.6,100.0");
            sendCommand(Color_1, "42.391304,73.6,100.0");
            sendCommand(Color_10, "42.391304,73.6,100.0");
            sendCommand(Color_11, "42.391304,73.6,100.0");
            sendCommand(Color_5, "42.391304,73.6,100.0");
            sendCommand(Toggle_3, OFF);
            sendCommand(LWD_9,10);        
            }
            case 6 : {
                /* Aqua */
            sendCommand(Color_7, "230.82353,100.0,100.0");
            sendCommand(Color_1, "230.82353,100.0,100.0");
            sendCommand(Color_10, "230.82353,100.0,100.0");
            sendCommand(Color_11, "230.82353,100.0,100.0");
            sendCommand(Color_5, "230.82353,100.0,100.0");
            sendCommand(Toggle_3, OFF);
            sendCommand(LWD_9,10);        
            }
            case 7 : {
            /* Duo */
            sendCommand(Color_7, "272,100.0,100.0");
            sendCommand(Color_5, "272,100.0,100.0");
            sendCommand(Color_1, "330,100.0,100.0");
            sendCommand(Color_10, "330,100.0,100.0");
            sendCommand(Color_11, "330,100.0,100.0");
            sendCommand(Toggle_3, OFF);
            sendCommand(LWD_9,10);        
            }

            case 8 : {
            /* Duo ambilight play */
            sendCommand(Color_7, "272,100.0,30.0");
            sendCommand(Color_5, "272,100.0,30.0");
            sendCommand(Color_1, "330,100.0,30.0");
            sendCommand(Color_10, "330,100.0,30.0");
            sendCommand(Color_11, "330,100.0,30.0");        
            }
            case 9 : {
            /* Duo ambilight pauze*/
            sendCommand(Color_7, "272,100.0,100.0");
            sendCommand(Color_5, "272,100.0,100.0");
            sendCommand(Color_1, "330,100.0,100.0");
            sendCommand(Color_10, "330,100.0,100.0");
            sendCommand(Color_11, "330,100.0,100.0");
            }
        }
end

pi@raspberrypi:/opt/openhab/configurations/items $ vi demo.items

我有

/* Hue */
Switch Toggle_1   "left bulb"   (Switching) {hue="1"}
Switch Toggle_2   "center bulb" (Switching) {hue="2"}
Switch Toggle_3       "right bulb"  (Switching) {hue="3"}

Color Color_1     "left bulb"   (Colorize)  {hue="1"}
Color Color_2         "center bulb" (Colorize)  {hue="2"}
Color Color_3     "right bulb"  (Colorize)  {hue="3"}

Dimmer Dimm_1     "left bulb"   (WhiteDimmer)   {hue="1;brightness;30"}
Dimmer Dimm_2     "center bulb" (WhiteDimmer)   {hue="2;brightness;30"}
Dimmer Dimm_3     "right bulb"  (WhiteDimmer)   {hue="3;brightness;30"}

Dimmer CT_Dimm_1      "left bulb"   (CTDimmer)  {hue="1;colorTemperature;30"}
Dimmer CT_Dimm_2      "center bulb" (CTDimmer)  {hue="2;colorTemperature;30"}
Dimmer CT_Dimm_3      "right bulb"  (CTDimmer)  {hue="3;colorTemperature;30"}

pi@raspberrypi:/opt/openhab/configurations $ vi openhab.cfg:

我有:

############################### Philips Hue Binding ###################################
#
# IP address of Hue Bridge (optional, default is auto-discovery)
hue:ip=192.168.1.117
hue:secret=openHABRuntime
hue:refresh=10000

我使用sudo ./start.sh 运行它,然后将 Hue 集线器与 OpenHAB 配对。我不是缺少什么,因为我仍然无法使用 OpenHAB 控制 Hue。

我的主要困难是将 Web UI 连接到 openHAB 中的代码。任何指针都非常感谢!另外我已经从各种教程中拼接了上面的代码,所以它可能根本没有意义!

【问题讨论】:

  • 您使用什么与设备通信? (RaspBee、Elelabs ZigBee、CC2531、ConBee 2)

标签: philips-hue openhab


【解决方案1】:

使用 *.sitemap 文件更改 UI 的外观。 此文件定义 UI 中显示的方式和项目: https://github.com/openhab/openhab/wiki/Explanation-of-Sitemaps

至于示例的其余部分: - 你确定Hue桥的ip和secret吗? - 有多少灯泡连接到桥上?因为在 *.items 文件中 hue=1 表示第一个灯泡连接到您的网桥。

【讨论】:

  • 是的,我确定hue的IP,我认为hue的秘密是一个随机字符串,不是这样吗?
【解决方案2】:

这是随机的,但您还必须配对网桥。你有没有做到至少一个灯泡可以打开和关闭?

只是检查,但您的 switchscene 项目不称为开关和场景吗?

绑定很挑剔,您可能必须为每个声明声明变量类型:

var DecimalType hue = new DecimalType(240) // 0-360; 0=red, 120=green, 240=blue, 360=red(again)
var PercentType sat = new PercentType(100) // 0-100
var PercentType bright = new PercentType(100) // 0-100
var HSBType light = new HSBType(hue,sat,bright)
sendCommand(Light_GF_Lounge_C, light)

坦率地说,绑定有点麻烦,最好直接使用API​​,然后设置你在应用程序或其他东西中设置的场景。

或者直接

rule "Set lights"
when
    Item Switch_Lounge received update ON
then
    var String hueApiCall = "curl@@-X@@PUT@@-d@@{\"on\": %s, \"hue\":%d , \"sat\": %d, \"bri\": %d, \"transitiontime\": %d}@@http://192.168.1.147/api/YOURPAIREDHUEUSERID/groups/%d/action"
    executeCommandLine(String::format(hueApiCall, true, 13088, 212, 100, 10, 2 ))
end

executeCommandLine 中的每个值都按顺序匹配 % 占位符,在此示例中为:true,hue:13088,sat:212,bri,100,transition time:10,group 2

使用该语法,您可以设置场景、警报等各种类型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-01
    • 2013-08-18
    相关资源
    最近更新 更多