# Philips Somneo Binding

This binding integrates Philips Somneo HF367X into openHAB.

# Supported Things

This binding does only support one Thing:

  • Philips Somneo HF367X: A connected sleep and wake-Up light with the ThingTypeUID hf367x

# Thing Configuration

The Philips Somneo thing requires the hostname it can connect to. Its API only allows HTTPS access, but unfortunately the SSL certificate is not trusted and must be ignored by the parameter.

Parameter Values Default
hostname Hostname or IP address of the device -
port Port number 443
refreshInterval Interval the device is polled in sec 30
refreshIntervalAlarmExtended Interval the device is polled in sec (alarm clock settings) 30
ignoreSSLErrors Ignore SSL Errors true

# Channels

Channel Type Read/Write Description
Sensor
sensor#illuminance Number:Illuminance R The current illuminance in lux
sensor#temperature Number:Temperature R The current temperature
sensor#humidity Number:Dimensionless R The current humidity in %
sensor#noise Number:Dimensionless R The current noise in dB
Light
light#main Switch RW Turn the light on, off and set the brightness
light#night Switch RW Turn the night light on or off
Sunset
sunset#switch Switch RW Turn the sunset program on or off
sunset#remainingTime Number:Time R Remaining time from an activated program
sunset#lightIntensity Dimmer RW Set the brightness during the sunset programme
sunset#duration Number:Time RW The duration of sunset program in minutes
sunset#colorSchema Number RW Choose a personal sunset
sunset#ambientNoise String RW Ambient noise played during the sunset
sunset#volume Dimmer RW Set the volume during the sunset programme
Relax
relax#switch Switch RW Turn the relax breathe program on or off
relax#remainingTime Number:Time R Remaining time from an activated program
relax#breathingRate Number RW Breathing rate per minute during the relax program
relax#duration Number:Time RW The duration of breathe program in minutes
relax#guidanceType Number RW Select a breath guidance type during the relax program
relax#lightIntensity Dimmer RW Set the brightness during the breathe programme
relax#volume Dimmer RW Set the volume during the breathe programme
Audio
audio#radio Player RW Controlling the radio and seeking for a frequency
audio#aux Switch RW Turn the AUX input on or off
audio#volume Dimmer RW Change the sound volume of the device
audio#preset String RW The Device has 5 presets to store radio frequencies
audio#frequency String R The currently selected radio frequency
Alarm
alarm#snooze Number:Time RW The duration of the snooze function in minutes
Alarm[1...16]
alarm[]#configured Switch RW The duration of the snooze function in minutes
alarm[]#switch Switch RW Turn the alarm clock on or off
alarm[]#repeatDay Number RW The days on which the alarm is repeated
alarm[]#alarmTime DateTime RW Alarm clock time
alarm[]#powerWake Switch RW Turn the power wake on or off
alarm[]#powerWakeDelay Number:Time RW How long after the normal alarm should Power Wake start
alarm[]#sunriseDuration Number:Time RW The duration of sunrise program in minutes
alarm[]#sunriseBrightness Dimmer RW The channel allows to set the sunrise light intensity
alarm[]#sunriseSchema Number RW Choose a personal sunrise
alarm[]#sound String RW The type of sound used for the alarm sound
alarm[]#volume Dimmer RW Change the sound volume of the alarm clock

# Full Example

somneo.things:

Thing somneo:hf367x:1 "Philips Somneo" @ "Bedroom" [ hostname="192.168.0.110", ignoreSSLErrors=true ]

somneo.items:

// Sensors
Number:Illuminance   PhilipsSomneo_Illuminance "Illuminance" <Sun>         ["Measurement", "Light"]       { channel="somneo:hf367x:1:sensor#illuminance" }
Number:Temperature   PhilipsSomneo_Temperature "Temperature" <Temperature> ["Measurement", "Temperature"] { channel="somneo:hf367x:1:sensor#temperature" }
Number:Dimensionless PhilipsSomneo_Humidity    "Humidity"    <Humidity>    ["Measurement", "Humidity"]    { channel="somneo:hf367x:1:sensor#humidity" }
Number:Dimensionless PhilipsSomneo_Noise       "Noise"       <Noise>       ["Measurement", "Noise"]       { channel="somneo:hf367x:1:sensor#noise" }
// Light
Dimmer PhilipsSomneo_MainLight       "Light"        <Light> ["Control", "Light"] { channel="somneo:hf367x:1:light#main" }
Switch PhilipsSomneo_NightLite       "Night Light"  <Light> ["Control", "Light"] { channel="somneo:hf367x:1:light#night" }
// Sunset
Switch      PhilipsSomneo_SunsetSwitch    "Sunset Program"  <Light>       ["Switch", "Power"]             { channel="somneo:hf367x:1:sunset#switch" }
Number:Time PhilipsSomneo_SunsetRemaining "Remaining Time"  <Time>        ["Status", "Duration"]          { channel="somneo:hf367x:1:sunset#remainingTime" }
Dimmer      PhilipsSomneo_SunsetIntensity "Light Intensity" <Light>       ["Control", "Light"]            { channel="somneo:hf367x:1:sunset#lightIntensity" }
Number:Time PhilipsSomneo_SunsetDuration  "Duration"        <Time>        ["Control", "Duration"]         { channel="somneo:hf367x:1:sunset#duration" }
Number      PhilipsSomneo_SunsetColor     "Sunset Color"    <Sunset>      ["Control", "ColorTemperature"] { channel="somneo:hf367x:1:sunset#colorSchema" }
String      PhilipsSomneo_SunsetNoise     "Ambient Noise"   <Noise>       ["Control", "Noise"]            { channel="somneo:hf367x:1:sunset#ambientNoise" }
Dimmer      PhilipsSomneo_SunsetVolume    "Volume"          <SoundVolume> ["Control", "SoundVolume"]      { channel="somneo:hf367x:1:sunset#volume" }
// Relax
Switch      PhilipsSomneo_RelaxSwitch        "Relax Program"   <Light>       ["Switch", "Power"]        { channel="somneo:hf367x:1:relax#switch" }
Number:Time PhilipsSomneo_RelaxRemaining     "Remaining Time"  <Time>        ["Status", "Duration"]     { channel="somneo:hf367x:1:relax#remainingTime" }
Number      PhilipsSomneo_RelaxBreathingRate "Breathing Rate"                ["Control"]                { channel="somneo:hf367x:1:relax#breathingRate" }
Number:Time PhilipsSomneo_RelaxDuration      "Duration"        <Time>        ["Control", "Duration"]    { channel="somneo:hf367x:1:relax#duration" }
Number      PhilipsSomneo_RelaxGuidanceType  "Guidance Type"                 ["Control"]                { channel="somneo:hf367x:1:relax#guidanceType" }
Dimmer      PhilipsSomneo_RelaxIntensity     "Light Intensity" <Light>       ["Control", "Light"]       { channel="somneo:hf367x:1:relax#lightIntensity" }
Dimmer      PhilipsSomneo_RelaxVolume        "Volume"          <SoundVolume> ["Control", "SoundVolume"] { channel="somneo:hf367x:1:relax#volume" }
// Audio
Player PhilipsSomneo_AudioRadio     "Radio Control" <MediaControl> ["Control"]                { channel="somneo:hf367x:1:audio#radio" }
Switch PhilipsSomneo_AudioAux       "AUX-Input"                    ["Switch", "Power"]        { channel="somneo:hf367x:1:audio#aux" }
Dimmer PhilipsSomneo_AudioVolume    "Volume"        <SoundVolume>  ["Control", "SoundVolume"] { channel="somneo:hf367x:1:audio#volume" }
String PhilipsSomneo_AudioPreset    "FM Preset"                    ["Control"]                { channel="somneo:hf367x:1:audio#preset" }
String PhilipsSomneo_AudioFrequency "FM Frequency"                 ["Status"]                 { channel="somneo:hf367x:1:audio#frequency" }
// Alarm
Number:Time PhilipsSomneo_AlarmSnooze "Alarm Snooze"              ["Control", "Duration"]     { channel="somneo:hf367x:1:alarm#snooze" }

Switch          PhilipsSomneo_Alarm1Switch              "Alarm Clock"                                                 ["Switch", "Power"]             { channel="somneo:hf367x:1:alarm1#switch" }
DateTime        PhilipsSomneo_Alarm1Time                "Alarm Clock Time"                              <Time>        ["Control"]                     { channel="somneo:hf367x:1:alarm1#alarmTime" }
Number          PhilipsSomneo_Alarm1RepeatDay           "Repeat on [JS(somneorepeatday.js):%s]"         <calendar>    ["Control"]                     { channel="somneo:hf367x:1:alarm1#repeatDay" }
Switch          PhilipsSomneo_Alarm1PowerWake           "Power Wake"                                                  ["Control"]                     { channel="somneo:hf367x:1:alarm1#powerWake" }
Number:Time     PhilipsSomneo_Alarm1PowerWakeDelay      "Power Wake Delay"                              <Time>        ["Control", "Duration"]         { channel="somneo:hf367x:1:alarm1#powerWakeDelay" }
Number:Time     PhilipsSomneo_Alarm1SunriseDuration     "Sunrise Duration"                              <Time>        ["Control", "Duration"]         { channel="somneo:hf367x:1:alarm1#sunriseDuration" }
Dimmer          PhilipsSomneo_Alarm1SunriseBrightness   "Sunrise Brightness"                            <Light>       ["Control", "Light"]            { channel="somneo:hf367x:1:alarm1#sunriseBrightness" }
Number          PhilipsSomneo_Alarm1SunriseSchema       "Sunrise Color"                                 <sunrise>     ["Control", "ColorTemperature"] { channel="somneo:hf367x:1:alarm1#sunriseSchema" }
String          PhilipsSomneo_Alarm1Sound               "Sound"                                                       ["Control"]                     { channel="somneo:hf367x:1:alarm1#sound" }
Dimmer          PhilipsSomneo_Alarm1Volume              "Volume"                                        <SoundVolume> ["Control", "SoundVolume"]      { channel="somneo:hf367x:1:alarm1#volume" }

transform/somneorepeatday.js

(function(i) {
    if (i == 254) {
        return "Daily";
    }
    if (i == 192) {
        return "Weekend";
    }
    if (i == 62) {
        return "Weekdays";
    }
    days = [];
    [
        ["Sunday", 128],
        ["Saturday", 64],
        ["Friday", 32],
        ["Thursday", 16],
        ["Wednesday", 8],
        ["Tuesday", 4],
        ["Monday", 2]
    ].forEach(function (x) {
        if (i >= x[1]) {
            days.push(x[0]);
            i = i % x[1];
        }
    });

    if (days.length === 0) {
        return "Never";
    }
    if (days.length == 1) {
        return days[0];
    }
    return days.reverse().map(function(x) {
        return x.slice(0, 2);
    }).join(" ");
})(input)

somneo.sitemap:

sitemap somneo label="Philips Somneo" {
    Frame label="Sensors" {
        Default item=PhilipsSomneo_Illuminance
        Default item=PhilipsSomneo_Temperature
        Default item=PhilipsSomneo_Humidity
        Default item=PhilipsSomneo_Noise
    }
    Frame label="Lights" {
        Default item=PhilipsSomneo_MainLight
        Default item=PhilipsSomneo_MainLight visibility=[PhilipsSomneo_MainLight>0]
        Default item=PhilipsSomneo_NightLite
    }
    Frame label="Programs" {
        Default item=PhilipsSomneo_SunsetSwitch
        Default item=PhilipsSomneo_SunsetRemaining visibility=[PhilipsSomneo_SunsetSwitch==ON]
        Text label="Sunset Settings" icon="settings" {
            Default item=PhilipsSomneo_SunsetIntensity
            Default item=PhilipsSomneo_SunsetDuration
            Selection item=PhilipsSomneo_SunsetColor
            Default item=PhilipsSomneo_SunsetNoise
            Default item=PhilipsSomneo_SunsetVolume
        }
        Default item=PhilipsSomneo_RelaxSwitch
        Default item=PhilipsSomneo_RelaxRemaining visibility=[PhilipsSomneo_RelaxSwitch==ON]
        Text label="Relax Settings" icon="settings" {
            Default item=PhilipsSomneo_RelaxBreathingRate
            Selection item=PhilipsSomneo_RelaxDuration
            Switch item=PhilipsSomneo_RelaxGuidanceType mappings=[0="Light", 1="Sound"]
            Default item=PhilipsSomneo_RelaxIntensity
            Default item=PhilipsSomneo_RelaxVolume
        }
    }
    Frame label="Audio" {
        Default item=PhilipsSomneo_AudioRadio
        Default item=PhilipsSomneo_AudioAux
        Default item=PhilipsSomneo_AudioVolume visibility=[PhilipsSomneo_AudioRadio==PLAY, PhilipsSomneo_AudioAux==ON]
        Default item=PhilipsSomneo_AudioPreset visibility=[PhilipsSomneo_AudioRadio==PLAY]
        Default item=PhilipsSomneo_AudioFrequency visibility=[PhilipsSomneo_AudioRadio==PLAY]
    }
    Frame label="Alarm Common" {
        Setpoint item=PhilipsSomneo_AlarmSnooze minValue=1 maxValue=20
        Text label="Alarms" icon="settings" {
            Default item=PhilipsSomneo_Alarm3Configured
            Default item=PhilipsSomneo_Alarm4Configured
            Default item=PhilipsSomneo_Alarm5Configured
            Default item=PhilipsSomneo_Alarm6Configured
            Default item=PhilipsSomneo_Alarm7Configured
            Default item=PhilipsSomneo_Alarm8Configured
            Default item=PhilipsSomneo_Alarm9Configured
            Default item=PhilipsSomneo_Alarm10Configured
            Default item=PhilipsSomneo_Alarm11Configured
            Default item=PhilipsSomneo_Alarm12Configured
            Default item=PhilipsSomneo_Alarm13Configured
            Default item=PhilipsSomneo_Alarm14Configured
            Default item=PhilipsSomneo_Alarm15Configured
            Default item=PhilipsSomneo_Alarm16Configured
        }
    }    
    Frame label="Alarm [1]" {
        Default         item=PhilipsSomneo_Alarm1Switch
        Default         item=PhilipsSomneo_Alarm1Time
        Default         item=PhilipsSomneo_Alarm1PowerWake
        Slider          item=PhilipsSomneo_Alarm1PowerWakeDelay minValue=0 maxValue=59
        Slider          item=PhilipsSomneo_Alarm1RepeatDay minValue=0 maxValue=254 step=2
        Text label="Settings" icon="settings" {
            Default         item=PhilipsSomneo_Alarm1SunriseDuration
            Slider          item=PhilipsSomneo_Alarm1SunriseBrightness 
            Selection       item=PhilipsSomneo_Alarm1SunriseSchema
            Default         item=PhilipsSomneo_Alarm1Sound
            Default         item=PhilipsSomneo_Alarm1Volume
        }
    }
    Frame label="Alarm [2]"{
        Default         item=PhilipsSomneo_Alarm2Switch
        Default         item=PhilipsSomneo_Alarm2Time
        Default         item=PhilipsSomneo_Alarm2PowerWake
        Slider          item=PhilipsSomneo_Alarm2PowerWakeDelay minValue=0 maxValue=59
        Slider          item=PhilipsSomneo_Alarm2RepeatDay minValue=0 maxValue=254 step=2
        Text label="Settings" icon="settings" {
            Default         item=PhilipsSomneo_Alarm2SunriseDuration
            Slider          item=PhilipsSomneo_Alarm2SunriseBrightness minValue=4 maxValue=100 step=4
            Selection       item=PhilipsSomneo_Alarm2SunriseSchema
            Default         item=PhilipsSomneo_Alarm2Sound
            Slider          item=PhilipsSomneo_Alarm2Volume minValue=4 maxValue=100 step=4
        }
    }
    Frame label="Alarm [3]" visibility=[PhilipsSomneo_Alarm3Configured==ON] {
        Default         item=PhilipsSomneo_Alarm3Switch
        Default         item=PhilipsSomneo_Alarm3Time
        Default         item=PhilipsSomneo_Alarm3PowerWake
        Slider          item=PhilipsSomneo_Alarm3PowerWakeDelay minValue=0 maxValue=59
        Slider          item=PhilipsSomneo_Alarm3RepeatDay minValue=0 maxValue=254 step=2
        Text label="Settings" icon="settings" {
            Default         item=PhilipsSomneo_Alarm3SunriseDuration
            Slider          item=PhilipsSomneo_Alarm3SunriseBrightness minValue=4 maxValue=100 step=4
            Selection       item=PhilipsSomneo_Alarm3SunriseSchema
            Default         item=PhilipsSomneo_Alarm3Sound
            Slider          item=PhilipsSomneo_Alarm3Volume minValue=4 maxValue=100 step=4
        }
    }
    Frame label="Alarm [4]" visibility=[PhilipsSomneo_Alarm4Configured==ON] {
        Default         item=PhilipsSomneo_Alarm4Switch
        Default         item=PhilipsSomneo_Alarm4Time
        Default         item=PhilipsSomneo_Alarm4PowerWake
        Slider          item=PhilipsSomneo_Alarm4PowerWakeDelay minValue=0 maxValue=59
        Slider          item=PhilipsSomneo_Alarm4RepeatDay minValue=0 maxValue=254 step=2
        Text label="Settings" icon="settings" {
            Default         item=PhilipsSomneo_Alarm4SunriseDuration
            Slider          item=PhilipsSomneo_Alarm4SunriseBrightness minValue=4 maxValue=100 step=4
            Selection       item=PhilipsSomneo_Alarm4SunriseSchema
            Default         item=PhilipsSomneo_Alarm4Sound
            Slider          item=PhilipsSomneo_Alarm4Volume minValue=4 maxValue=100 step=4
        }
    }
}

# Acknowledgements

Thanks to: