diff --git a/.gitignore b/.gitignore
index 93f8fcbb6200b..1fa39ea94ddff 100644
--- a/.gitignore
+++ b/.gitignore
@@ -19,6 +19,7 @@ xtend-gen/
**/.settings/org.eclipse.*
bundles/**/src/main/history
+bundles/**/.vscode
features/**/src/main/history
features/**/src/main/feature
diff --git a/CODEOWNERS b/CODEOWNERS
index ae0d5d1a3c958..768f73de87de8 100755
--- a/CODEOWNERS
+++ b/CODEOWNERS
@@ -157,6 +157,7 @@
/bundles/org.openhab.binding.hpprinter/ @cossey
/bundles/org.openhab.binding.http/ @J-N-K
/bundles/org.openhab.binding.hue/ @cweitkamp @andrewfg
+/bundles/org.openhab.binding.huesync/ @pgfeller
/bundles/org.openhab.binding.hydrawise/ @digitaldan
/bundles/org.openhab.binding.hyperion/ @tavalin
/bundles/org.openhab.binding.iammeter/ @lewei50
diff --git a/bom/openhab-addons/pom.xml b/bom/openhab-addons/pom.xml
index 3a3e20519aec8..d518bbbfcc63b 100644
--- a/bom/openhab-addons/pom.xml
+++ b/bom/openhab-addons/pom.xml
@@ -781,6 +781,11 @@
OFF in case of powersave or passthrough mode, and ON in case of video, game or music mode. When changed from OFF to ON, it will start syncing in last used mode for current source. When changed from ON to OFF, will set passthrough mode.
+
+![Play HDMI Sync Box](doc/bridge1.png)
+![Play HDMI Sync Box](doc/bridge2.png)
+
+
+
+## Discovery
+
+The binding is using [mDNS](https://en.wikipedia.org/wiki/Multicast_DNS) to discover HDMI Sync devices in the local network.
+The LED on the Sync Box must be white or red.
+This indicates that the device is connected to the Network.
+If the LED is blinking blue, you need to setup the device using the official [Hue Sync App](https://www.philips-hue.com/en-in/explore-hue/propositions/entertainment/hue-sync).
+
+If the device is not discovered you can check if it is properly configured and discoverable in the network:
+
+Linux (Ubuntu based distributions)
+
+```bash
+$ avahi-browse --resolve _huesync._tcp
++ wlp0s20f3 IPv4 HueSyncBox-XXXXXXXXXXX _huesync._tcp local
+= wlp0s20f3 IPv4 HueSyncBox-XXXXXXXXXXX _huesync._tcp local
+ hostname = [XXXXXXXXXXX.local]
+ address = [192.168.0.12]
+ port = [443]
+ txt = ["name=Sync Box" "devicetype=HSB1" "uniqueid=XXXXXXXXXXX" "path=/api"]
+```
+
+Expert Mode - Configuration Example
+
+Group HueSyncBox "HueSyncBox" <iconify:mdi:tv> ["NetworkAppliance"]
+
+Group HueSyncBox_Inputs "Inputs" <receiver> (HueSyncBox) ["Receiver"]
+
+Group HueSyncBox_Input_1 "Input 1" <iconify:mdi:hdmi-port> (HueSyncBox_Inputs) ["Receiver"]
+Group HueSyncBox_Input_2 "Input 2" <iconify:mdi:hdmi-port> (HueSyncBox_Inputs) ["Receiver"]
+Group HueSyncBox_Input_3 "Input 3" <iconify:mdi:hdmi-port> (HueSyncBox_Inputs) ["Receiver"]
+Group HueSyncBox_Input_4 "Input 4" <iconify:mdi:hdmi-port> (HueSyncBox_Inputs) ["Receiver"]
+Group HueSyncBox_Output "Output" <iconify:mdi:tv> (HueSyncBox) ["Screen"]
+Group HueSyncBox_Firmware "Firmware" <iconify:mdi:information> (HueSyncBox)
+Group HueSyncBox_Execution "Remote Control" <iconify:mdi:remote> (HueSyncBox) ["RemoteControl"]
+
+String HueSyncBox_Device_Mode "Mode" <iconify:mdi:multimedia> (HueSyncBox_Execution) { channel="huesync:huesyncbox:HueSyncBox:device-commands#mode" }
+String HueSyncBox_Device_Input "Input" <iconify:mdi:input> (HueSyncBox_Execution) { channel="huesync:huesyncbox:HueSyncBox:device-commands#hdmi-source" }
+Switch HueSyncBox_Device_Hdmi "HDMI" <iconify:mdi:hdmi-port> (HueSyncBox_Execution) { channel="huesync:huesyncbox:HueSyncBox:device-commands#hdmi-active" }
+Switch HueSyncBox_Device_Sync "Sync" <iconify:mdi:sync> (HueSyncBox_Execution) { channel="huesync:huesyncbox:HueSyncBox:device-commands#sync-active" }
+Number:Dimensionless HueSyncBox_Device_Brightness "Brightness " <iconify:mdi:brightness-percent> (HueSyncBox_Execution) { channel="huesync:huesyncbox:HueSyncBox:device-commands#brightness" }
+
+String HueSyncBox_Firmware_Version "Firmware Version" <iconify:mdi:text> (HueSyncBox_Firmware) { channel="huesync:huesyncbox:HueSyncBox:device-firmware#firmware" }
+String HueSyncBox_Latest_Firmware_Version "Latest Firmware Version" <iconify:mdi:text> (HueSyncBox_Firmware) { channel="huesync:huesyncbox:HueSyncBox:device-firmware#available-firmware" }
+
+String HueSyncBox_Device_hdmi_in1_Name "Name - Input 1" <iconify:mdi:text> (HueSyncBox_Input_1) { channel="huesync:huesyncbox:HueSyncBox:device-hdmi-in-1#name" }
+String HueSyncBox_Device_hdmi_in1_Type "Type - Input 1" <iconify:mdi:devices> (HueSyncBox_Input_1) { channel="huesync:huesyncbox:HueSyncBox:device-hdmi-in-1#type" }
+String HueSyncBox_Device_hdmi_in1_Status "Status - Input 1" <iconify:mdi:connection> (HueSyncBox_Input_1) { channel="huesync:huesyncbox:HueSyncBox:device-hdmi-in-1#status" }
+String HueSyncBox_Device_hdmi_in1_Mode "Mode - Input 1" <iconify:mdi:multimedia> (HueSyncBox_Input_1) { channel="huesync:huesyncbox:HueSyncBox:device-hdmi-in-1#mode" }
+
+String HueSyncBox_Device_hdmi_in2_Name "Name - Input 2" <iconify:mdi:text> (HueSyncBox_Input_2) { channel="huesync:huesyncbox:HueSyncBox:device-hdmi-in-2#name" }
+String HueSyncBox_Device_hdmi_in2_Type "Type - Input 2" <iconify:mdi:devices> (HueSyncBox_Input_2) { channel="huesync:huesyncbox:HueSyncBox:device-hdmi-in-2#type" }
+String HueSyncBox_Device_hdmi_in2_Status "Status - Input 2" <iconify:mdi:connection> (HueSyncBox_Input_2) { channel="huesync:huesyncbox:HueSyncBox:device-hdmi-in-2#status" }
+String HueSyncBox_Device_hdmi_in2_Mode "Mode - Input 2" <iconify:mdi:multimedia> (HueSyncBox_Input_2) { channel="huesync:huesyncbox:HueSyncBox:device-hdmi-in-2#mode" }
+
+String HueSyncBox_Device_hdmi_in3_Name "Name - Input 3" <iconify:mdi:text> (HueSyncBox_Input_3) { channel="huesync:huesyncbox:HueSyncBox:device-hdmi-in-3#name" }
+String HueSyncBox_Device_hdmi_in3_Type "Type - Input 3" <iconify:mdi:devices> (HueSyncBox_Input_3) { channel="huesync:huesyncbox:HueSyncBox:device-hdmi-in-3#type" }
+String HueSyncBox_Device_hdmi_in3_Status "Status - Input 3" <iconify:mdi:connection> (HueSyncBox_Input_3) { channel="huesync:huesyncbox:HueSyncBox:device-hdmi-in-3#status" }
+String HueSyncBox_Device_hdmi_in3_Mode "Mode - Input 3" <iconify:mdi:multimedia> (HueSyncBox_Input_3) { channel="huesync:huesyncbox:HueSyncBox:device-hdmi-in-3#mode" }
+
+String HueSyncBox_Device_hdmi_in4_Name "Name - Input 4" <iconify:mdi:text> (HueSyncBox_Input_4) { channel="huesync:huesyncbox:HueSyncBox:device-hdmi-in-4#name" }
+String HueSyncBox_Device_hdmi_in4_Type "Type - Input 4" <iconify:mdi:devices> (HueSyncBox_Input_4) { channel="huesync:huesyncbox:HueSyncBox:device-hdmi-in-4#type" }
+String HueSyncBox_Device_hdmi_in4_Status "Status - Input 4" <iconify:mdi:connection> (HueSyncBox_Input_4) { channel="huesync:huesyncbox:HueSyncBox:device-hdmi-in-4#status" }
+String HueSyncBox_Device_hdmi_in4_Mode "Mode - Input 4" <iconify:mdi:multimedia> (HueSyncBox_Input_4) { channel="huesync:huesyncbox:HueSyncBox:device-hdmi-in-4#mode" }
+
+String HueSyncBox_Device_hdmi_out_Name "Name - Output" <iconify:mdi:text> (HueSyncBox_Output) { channel="huesync:huesyncbox:HueSyncBox:device-hdmi-out#name" }
+String HueSyncBox_Device_hdmi_out_Type "Type - Output" <iconify:mdi:tv> (HueSyncBox_Output) { channel="huesync:huesyncbox:HueSyncBox:device-hdmi-out#type" }
+String HueSyncBox_Device_hdmi_out_Status "Status - Output" <iconify:mdi:connection> (HueSyncBox_Output) { channel="huesync:huesyncbox:HueSyncBox:device-hdmi-out#status" }
+String HueSyncBox_Device_hdmi_out_Mode "Mode - Output" <iconify:mdi:multimedia> (HueSyncBox_Output) { channel="huesync:huesyncbox:HueSyncBox:device-hdmi-out#mode" }
+
+Friendly Type
Device connection status
Mode
Hue Sync operation mode
Source
Synchronization
Brightness
OFF in case of powersave or passthrough mode, and ON in case of video, game or music mode.
When changed from OFF to ON, it will start syncing in last used mode for current source. When changed from ON to OFF, will set passthrough mode.
OFF in case of powersave mode and ON in case of passthrough, video, game or music mode.
When changed from OFF to ON, it will set passthrough mode. When changed from ON to OFF, will set powersave mode.
OFF in case of powersave mode and ON in case of passthrough, video, game or music mode.
When changed from OFF to ON, it will set passthrough mode. When changed from ON to OFF, will set powersave mode.
+channel-type.huesync.execution-brightness.label = Brightness +channel-type.huesync.execution-brightness.description =0 ... 200
Analyzes the on-screen visuals, translating colors and brightness into corresponding light effects for an immersive movie-watching experience.
Analyzes the rhythm and beat of your music, creating dynamic light along to your tunes.
Reacts to the action on your screen, intensifying the in-game atmosphere with bursts of light that correspond to explosions, gunfire, and other gameplay events.
OFF in case of powersave or passthrough mode, and ON in case of video, game or music mode.
When changed from OFF to ON, it will start syncing in last used mode for current source. When changed from ON to OFF, will set passthrough mode.
+ +# channel types + +channel-type.huesync.connection-lastSyncMode.label = Last sync mode +channel-type.huesync.connection-lastSyncMode.description = Last sync mode used for this channel +channel-type.huesync.executioin-hdmiActive.label = HDMI Active +channel-type.huesync.executioin-hdmiActive.description =OFF in case of powersave mode and ON in case of passthrough, video, game or music mode.
When changed from OFF to ON, it will set passthrough mode. When changed from ON to OFF, will set powersave mode.
+channel-type.huesync.execution-hdmiSource.label = HDMI input +channel-type.huesync.execution-hdmiSource.description =
OFF in case of powersave or passthrough mode, and ON in case of video, game or music mode.
When changed from OFF to ON, it will start syncing in last used mode for current source. When changed from ON to OFF, will set passthrough mode.
+ +# channel types + +channel-type.huesync.connection-type-in.label = Friendly type +channel-type.huesync.connection-type-out.label = Friendly type + +# channel group types + +channel-group-type.huesync.device-hdmi-connection.label = hdmi +channel-group-type.huesync.device-hdmi-connection.description = HDMI connection + +# channel group types + +channel-group-type.huesync.device.label = Generic device information + +# channel types + +channel-type.huesync.device-info.label = Last Updated +channel-type.huesync.device-info.description = The date and time when the sensor was last updated. +channel-type.huesync.device-info.state.pattern = %1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS + +# thing types + +thing-type.huesync.huesyncbox.channel.test.label = test +thing-type.huesync.huesyncbox.channel.test.description = test + +# channel group types + +channel-group-type.huesync.deviceGroup.label = Device Information + +# channel group types + +channel-group-type.huesync.test.label = Test Group +channel-group-type.huesync.test.description = Culpa occaecat aliquip tempor ipsum exercitation incididunt culpa sit mollit officia labore commodo. + +# channel types + +channel-type.huesync.mode.label = Sync Mode +channel-type.huesync.mode.description = Select the sync mode +channel-type.huesync.mode.state.option.powersave = Powersave +channel-type.huesync.mode.state.option.video = Video +channel-type.huesync.mode.state.option.music = Music +channel-type.huesync.mode.state.option.game = Game + +# thing types + +thing-type.huesync.box.label = Hue HDMI Sync Box +thing-type.huesync.box.description = Sync your smart lights to your on-screen TV content with the Philips Hue Play HDMI Sync Box. Four HDMI inputs allow you to connect your media devices to your Hue setup, resulting in a fast, seamless display of colorful smart light that responds to and reflects the content you watch or listen to. + +# thing types config + +thing-type.config.huesync.box.apiAccessToken.label = API Access Token +thing-type.config.huesync.box.apiAccessToken.description = To enable the binding to communicate with the device, a registration is required. Once the registration process is completed, the acquired token will authorize the binding to interact with the device. After initial discovery and thing creation the device will stay offline. Press the registration button on the sync box for 3 seconds to grant the binding the required permissions. +thing-type.config.huesync.box.group.connection.label = Connection Settings +thing-type.config.huesync.box.host.label = Network Address +thing-type.config.huesync.box.host.description = Network address of the HDMI Sync Box. +thing-type.config.huesync.box.port.label = Port +thing-type.config.huesync.box.port.description = Port of the HDMI Sync Box. +thing-type.config.huesync.box.registrationId.label = Application Registration Id +thing-type.config.huesync.box.registrationId.description = The id of the API registration. +thing-type.config.huesync.box.statusUpdateInterval.label = Status Update Interval +thing-type.config.huesync.box.statusUpdateInterval.description = Seconds between fetching values from the Hue Sync Box. + +# thing types + +thing-type.huesync.huesync.label = Hue HDMI Sync Box +thing-type.huesync.huesync.description = Sync your smart lights to your on-screen TV content with the Philips Hue Play HDMI Sync Box. Four HDMI inputs allow you to connect your media devices to your Hue setup, resulting in a fast, seamless display of colorful smart light that responds to and reflects the content you watch or listen to. + +# *** exceptions *** + +exception.generic.connection = "Unable to connect to device." + +# api exceptions + +api.minimal-version = Only devices with API level >= 7 are supported +api.communication-problem = Communication problem with the device + +# registration + +thing.config.huesync.box.registration = Device registration pending. Please press the HDMI Sync Box device button for 3 seconds. + +# logger (to keep text in sync with on-screen messages, log messages will always be in locale.english) + +logger.initialization-problem = Unable to initialize handler for {} ({}): {} diff --git a/bundles/org.openhab.binding.huesync/src/main/resources/OH-INF/thing/channel-types.xml b/bundles/org.openhab.binding.huesync/src/main/resources/OH-INF/thing/channel-types.xml new file mode 100644 index 0000000000000..46991adf1435f --- /dev/null +++ b/bundles/org.openhab.binding.huesync/src/main/resources/OH-INF/thing/channel-types.xml @@ -0,0 +1,225 @@ + ++ Analyzes the on-screen visuals, translating colors and brightness into corresponding light + effects for an immersive movie-watching experience. +
++ Analyzes the rhythm and beat of your music, creating + dynamic light along to your tunes. +
++ Reacts to the action on your screen, intensifying the in-game atmosphere + with bursts of light that correspond to explosions, gunfire, and other gameplay events.
++ When changed from OFF to ON, it will start syncing in last used mode for current source. + When changed from ON to OFF, will set passthrough mode. +
+ ]]> ++ When changed from OFF to ON, it will set passthrough mode. + When changed from ON to OFF, will set powersave mode. +
+ ]]> +