function Entertainment_SyncRoomControls($RoomId) { $RoomName = IPS_GetName($RoomId); $RoomPower = GetValue(get_ControlIdByRoomId($RoomId, c_Control_RoomPower)); $RoomConfig = get_RoomConfiguration(); $ControlTypes = $RoomConfig[$RoomName]; foreach ($ControlTypes as $ControlType=>$ControlData) { if ($ControlType==c_Control_Muting or $ControlType==c_Control_Volume or $ControlType==c_Control_Balance or $ControlType==c_Control_Treble or $ControlType==c_Control_Middle or $ControlType==c_Control_Bass or $ControlType==c_Control_Program or $ControlType==c_Control_RemoteVolume or $ControlType==c_Control_iRemoteVolume or $ControlType==c_Control_RemoteSource or $ControlType==c_Control_iRemoteSource or $ControlType==c_Control_Mode) { $RoomControlId = get_ControlIdByRoomId($RoomId, $ControlType); $DeviceControlId = get_DeviceControlIdByRoomControlId($RoomControlId); if ($DeviceControlId===false and $ControlType==c_Control_iRemoteVolume) { $DeviceControlId = get_DeviceControlIdByRoomControlId($RoomControlId, c_Control_RemoteVolume); } else if ($DeviceControlId===false and $ControlType==c_Control_iRemoteSource) { $DeviceControlId = get_DeviceControlIdByRoomControlId($RoomControlId, c_Control_RemoteSource); } else { // } IPSLogger_Trc(__file__,'Sync Room="'.$RoomName.'", Control="'.$ControlType.'", DeviceControlId='.$DeviceControlId); if ($DeviceControlId!==false) { SetValue($RoomControlId, GetValue($DeviceControlId)); Entertainment_SetRoomControlVisibility($RoomControlId, $RoomPower); } else { Entertainment_SetRoomControlVisibility($RoomControlId, false); } } } }
function Entertainment_SetDeviceControlByRoomControlId($RoomControlId, $Value) { $DeviceControlId = get_DeviceControlIdByRoomControlId($RoomControlId); if ($DeviceControlId !== false) { Entertainment_SetDeviceControl($DeviceControlId, $Value); } else { IPSLogger_Err(__file__, 'No DeviceControl found for RoomControlId='.$RoomControlId.', Name="'.IPS_GetName($RoomControlId).'"'); } }