[Начало] [Предыдущая] [Следующая] [Содержание] 


Использование AXIS 240

После инсталляции AXIS 240 и присвоения ему соответствующего Internet адреса, его можно использовать в каких-либо видео-приложениях.

Этот раздел описывает способы эффективного использования AXIS 240 с учетом всех его функциональных возможностей, включающих в себя:

Замечание:


Кадры

Получение кадров

Для каждого полученного кадра AXIS 240 создает файл с формате JPEG и сохраняет его во внутренней памяти.

 Кадр на базовой странице Home
Для создания кадра, который отображается на базовой странице AXIS 240 Home, необходимо ввести имя или Internet адрес AXIS 240 в поле URL локального Web браузера.

Например,

http://172.16.253.80/ 

В результате этого AXIS 240 создает изображение размера "fullsize" в формате JPEG. При каждой перезагрузке (reload/refresh) страницы на странице AXIS 240 Home отображается новый кадр.

 "Чистый" кадр
Для получения "чистого" кадра, не используя страницу AXIS 240 Home, нужно задать требуемый тип кадра в URL локального Web браузера, и он будет содержаться в JPEG файле. Можно создавать кадры с различными размерами, т.е. fullsize (нормальный), halfsize(половинный) и т.д.

 Пример

http://172.16.253.80/fullsize.jpg 
http://172.16.253.80/halfsize.jpg 

Типы кадров

Можно изменять размер и вид кадров AXIS 240, начиная от кадров малого размера с высоким уровнем сжатия и заканчивая кадрами большого размера с высоким качеством (низким сжатием) отображения.

Размер файла зависит от нескольких факторов. Изображения с низким сжатием и большого размера имеют наибольший размер файла, однако при этом достигается наивысшее качество изображения. Изображения, содержащие большое количество деталей, также имеют наибольшие размеры. Как это свойственно для всех web приложений, обратной стороной увеличения размера и качества изображений является снижение быстродействия!

Следующие типы кадров имеются в AXIS 240:

Наименование  Размер в пикселах (PAL)  Размер в пикселах (NTSC)  Описание 
fullsize.jpg  352 x 288
(30 kБайт)
320 x 240 Стандартное разрешение. Кадр создается аппаратно за 0.5 секунды. 
halfsize.jpg 176 x 144
(15 kБайт)
160 x 112
Половинное разрешение. Создается аппаратно за 0.3 секунды.
lastshot.jpg 352 x 288
или
176 x 144
320 x 240
или
160 x 112
Предыдущий кадр, полученный с помощью любой камеры формата `fullsize' или `halfsize'. Основное назначение - приложения для архивирования и буферизации изображений.
hugesize.jpg 704 x 576 640 x 480 Кадр максимального разрешения. В противовес изоображениям `fullsize' и `halfsize', `hugesize' создается программно, для чего требуется около 18 секунд.
zoom.jpg 352 x 288 320 x 240 Центральный "кусок" из изображения 'hugesize'. Для создания требуется около 8 секунд.

Интеграция кадров в Web страницы

Следуйте следующим инструкциям для интеграции "живых" кадров в web страницы:

  1. Создайте Web страницу любым средством для HTML, например, стандартным текстовым редактором или специальными средствами создания HTML типа Microsoft Internet Assistant, Front Page или Adobe PageMill.
  2. Введите URL в Web браузере, который соответствует имени или Internet адресу AXIS 240 и типу требуемого кадра. Например:
  3. http://camserv/fullsize.jpg 
  4. Добавьте HTML ссылку на кадр в целевую web страницу, как это показано ниже:
  5. <HTML> <HEAD> <TITLE>Sample page</TITLE> </HEAD> <BODY> <H1>Welcome to my camera server demo</H1> <IMG ALT="Fullsize JPEG Image" SRC="http://camserv/fullsize.jpg?camera=1" WIDTH="320" HEIGHT="240"> </BODY> </HTML> 

При каждом посещении этой страницы новый кадр fullsize.jpg будет создаваться и отображаться средствами Web браузера.


Автоматическое обновление изображений

AXIS 240 поддерживает три метода для автоматического обновления изображений:

Они представлены линками на странице AXIS Home.

 Server Push
Функция Server push постоянно "выталкивает" новые кадры в Web браузер.

Частота смены изображений зависит от того, насколько быстро AXIS 240 может создавать и передавать данные по сети. Между тем, можно варьировать частоту изменения кадров в Server push внутри Web браузера.

В целях минимизации требуемой памяти для реализации данной функции AXIS 240 количество одновременно активных клиентов (точнее, запросов) в режиме Server push ограничено 5 для одного устройства. В случае превышения этого лимита для всех дополнительных пользователей становится доступен только один кадр.

 Замечание:

Java Image Feed
Эта функция реализована как Java апплет, который можно запускать из любого места сети. Скорость обновления кадров программируется.

 Refresh Image Feed
Эта функция обязывает Web браузеры получать новые кадры с переменной скоростью. Данный режим поддерживается большинством стандартных Web браузеров.

 Замечание:


Управление позиционером

При использовании позиционера Web интерфейс AXIS 240 позволяет изменять ориентацию подключенной к нему камеры удаленно.

Придерживайтесь данной последовательности шагов:

  1. На странице AXIS 240 Home выберите Pan/Tilt Control.
  2. С левой стороны страницы представлены маленькие изображения с активных камер. Выберите ту камеру, ориентацию которой необходимо изменить.
  3. Изображение переместится на правую часть страницы. Дополнительно можно активизировать режим Start server push для автоматического обновления изображений или Update picture для создания нового кадра.

Canon, Sony
Выберите положение на кадре или на изображении координат для перемещения камеры в данное положение.

240_51.gif (1312 bytes)Градуировка на координатах положения соответствует абсолютным положениям камеры. Это означает, что при нажатии на левую стрелку позационер переместит камеру в ее крайнее левое положение.

Выберите Home 240_52.gif (975 bytes) для перемещения камеры в ее базовое (home) положение, которое определяется самим позиционером.

 VideMech
Выберите положение на координатной полосе для перемещения камеры в заданное положение.

240_51.gif (1312 bytes)Координатная полоса соответствует абсолютным положениям камеры. Это означает, что при нажатии на левую стрелку позиционер переместит камеру в ее крайнее левое положение.

Выберите Home 240_52.gif (975 bytes) для перемещения камеры в ее базовое (home) положение, которое находится точно посередине между ее крайними положениями.

Изменение установок зума и фокуса осуществляется нажатием на полосу zoom and focus соответственно.

 Замечание:

Ernitec
Нажмите на стрелку для пошагового перемещения камеры в заданное положение.

 240_53.gif (1693 bytes)

Перемещение задается относительно текущего положения камеры. Это означает, что при каждом нажатии на левую стрелку камера переместится на один шаг влево вне зависимости от текущего положения.

Для изменения зума камеры нажмите Wide (угол обзора) или Tele (масштаб) соответственно.

 Замечания:


Внешние Web сайты

При использовании AXIS 240 в Internet мы рекомендуем устанавливать ее с промежуточным Web сервером, а не непосредственно. Это связано с ограниченным количеством ресурсов для буферов в AXIS 240, которые могут потребоваться для таких приложений.

 Замечания:

Можно использовать CRON скрипты для задания моментов получения кадров. Если публичный web сайт не имеет высокую загрузку, то можно использовать в нем непосредственную ссылку на AXIS 240. Однако, при этом возникают три основные проблемы:


CRON скрипт

Axis разработал расширенный сервис под названием CRON для обеспечения выполнения сервером камеры последовательностей периодических команд. Этот сервис позволяет пользователю программировать осуществляемые AXIS 240 события и выполняемые функции в зависимости от состояния триггеров/времени (triggered functions).


Script формат

CRON скрипт может содержать одну или несколько процедур (entry). Каждая процедура содержит следующие элементы:

Стандартная конструкция CRON скрипта представлена ниже:

# <comment> <comment><>  (first entry) 
  <trigger condition> : 
    <command 1> ;  
<command 2> ;  
 
 
<command n> ; 
   
# <comment>  (second entry) 
  <trigger condition> : 
    <command 1> ;  
<command 2> ;  
 
 
<command n> ; 
   
# <comment>  (...nth entry) 
  <trigger condition> : 
    <command 1> ;  
<command 2> ;  
 
 
<command n> ; 
   

Комментарии (Comments)

Хорошим стилем программирования считается наличие перед началом каждой процедуры комментариев с ее кратким описанием. Комментарии не являются обязательными, но они должны следовать за символом <#>, как это показано ниже:

# <comment> 

Пример:

# This cron entry will... 

Состояние триггеров (Trigger Condition)

Выполнение содержащейся в процедуре команды зависит от состояния триггеров. Состояние триггеров задается шестью раздельными полями, заканчивающимися обязательно двоеточием ":".

<Minute> <Hour> <Day> <Month> <Day of the week> <Input and Boot (optional)> : 

Поля времени и даты (Time and Date Event Fields)
Первые пять полей определяют время и дату события, т.е. минуту, час, день, месяц и день недели. Обратите внимание, что CRON скрипт использует 24-часовое представление времени.

Синтаксис каждого поля определяется следующими правилами:

Пример:
Срабатывать каждый месяц, между 4ым и 8ым числами в 10.03,12.03 и 14.03:

3 10,12,14 4-8 * * : 

Поле Input и Boot
Шестое поле содержит массив символов. Это поле необязательно и определяет срабатывание по значениям Input и Boot.

Оно позволяет запрограммировать AXIS 240 по включению, загрузке и по заранее определенным состояниям кнопки Control и портам Digital Input, используя триггерные переменные BOOT, B, I1, I2, I3 и I4 соответственно. Триггерные переменные B, I1, I2, I3 и I4 используются для активизации условий, а /, \, 0 или 1 описывают, когда необходимо реагировать на то или иное состояние триггерных переменных.

Следующая таблица содержит возможные значения триггерных перменных и их условие срабатывания:

Триггерная переменная  Описание 
BOOT  Активизация при инициализации. 
\B  Активизировать, когда кнопка Control переходит из состояния "1" (high) в "0" (low). 
/B  Активизировать, когда кнопка Control переходит из состояния "0" в "1" 
1B  Активизировать, когда кнопка Control в состоянии "1" (нажата). 
0B  Активизировать, когда кнопка Control в состоянии "0" (отпущена) 
\I1  Активизировать после перехода состояния порта Input 1 из "1" в "0". 
/I2  Активизировать после перехода "0"-"1" порта Input 2. 
1I3  Активизировать, когда порт Input 3 имеет уровень "1". 
0I4  Активизировать, когда порт Input 4 имеет значение "0". 
... и т.д. 

Замечание:

Пример 1
Активизировать после того, как к кнопка Control меняет состояние с "1" на "0" и порт Input 1 принимает значение "1".

\B&1I1 

Пример 2
Активизировать по условию порт Input 2 - "0" и Input 4 - "1".

0I2&1I4 

Сводная информация
Приведенная ниже таблица содержит допустимые значения триггерных полей:

  Поля даты и времени 

Поля портов Input и Boot (опция) 
Поле # 
Описание  Минута  Час  День  Месяц  День недели  Условие 
Допустимые значения *
0-59
*
0-23
*
1-31
*
1-12
*
0-6
0 = Воскресенье
BOOT
B
I1, I2, I3, I4

Команды

Внутри процедур используется несколько команд. Все команды должны оканчиваться точкой с запятой <;>.

Список команд:

Команда  Описание 
alert  Посылает небольшое сообщение на удаленный хост. 
buffer_init  Инициирует (стирает) буфер изображений. 
buffer_start  Начинает записываеть кадры в буфер изображений. 
buffer_stop  Прекращает записывать кадры в буфер изображений. 
ftp  Передает изображение на удаленный хост, используя FTP. 
mail  Посылает e-mail по SMTP. 
offline  Прекращает текущее PPP соединение. 
online  Производит набор номера на модеме для установки PPP соединения. 
reset  Стирает программое обеспечение или инициирует состояние устройства. 
sleep  Прерывает выполнение CRON скрипта. 
snapshot  Обновляет изображение последнего кадра. 

Замечания:


Редактирование CRON скрипт

Выберите на странице AXIS 240 Home кнопку CRON для доступа к встроенному текстовому редактору для генерации CRON скрипта. Новый CRON скрипт затем будет автоматически загружен в AXIS 240.

Для редактирования CRON скрипта можно также использовать стандартный текстовый редактор и затем загрузить его в AXIS 240 по FTP.

 Замечания:

Пример:

# Это пример CRON скрипта:  

# Раз в день моя мать получает письмо по e-mail 
# содержащее изображение lastshot.jpg.  
0 0 * * * * :  
mail -s "Hi mom! Look what my little camera has taken for you." -a lastshot.jpg -t mother@some.site;  
 

# Вторая процедура сохраняет изображение fullsize  
# используя ftp на ftp сервер an.ftp.site в   
# /home/snapshots когда input 1 принимает значение "1".   
* * * * * /I1 :   
ftp -host an.ftp.site -user aUser -pass aPass -src fullsize.jpg -dest home/snapshots;   
%   

# Третья процедура набирает ISP и запоминает   
# изображение на ftp сервере an.ftp.site каждый   
# час. После этого соединение прекращается.   
0 * * * * :   
online -dial aNumber -user aUser -pass aPass;   
ftp -host an.ftp.site -user aUser -pass aPass -src fullsize.jpg -dest home/snapshots;   
offline;   


Загрузка CRON скрипта по FTP

Загрузки файла с CRON скриптом cron.txt в AXIS 240 по FTP осуществляется в следующей последовательности:

Пример

C:\Temp>ftp 171.16.3.30  
Connected to 171.16.3.30.  
220 AXIS 240 Jun 6 1998 ready.  
User (171.16.3.30:(none)): root  
331 User name ok, need password  
Password:  
230 Root user logged in  
ftp> bin  
200 TYPE set to I.  
ftp> put cron.txt cronscript  
200 PORT command successful.  
150 Opening data connection for cronscript (171,16,4,70,4,6), (mode binary).  
226- Compilation OK  
Events initiated  
226 File transfer complete  
112 bytes sent in 0.00 seconds (112000.00 Kbytes/sec)  
ftp> quit  
221 Goodbye. 

Параметры Common Gateway Interface (CGI)

Common Gateway Interface (CGI) является стандартным интерфейсом информационного HTTP или Web сервера для внешних приложений.

CGI программа внутри AXIS 240 позволяет пользователю задать характеристики кадра в рамках встроенного запроса URL. Пользователь генерирует эти запросы в форме строки запроса, добавленной к URL AXIS 240.

Можно использовать CGI параметры для простых операций ввода-вывода через HTTP с портом позиционера.

 CGI параметры кадров

 Для запроса кадра используется следующий синтаксис:

http://<cameraname>/<imagefile>?<parameter>=<value>[&<parameter>=<value>...]

Приведенная ниже таблица содержит CGI параметры кадра:

Параметр/Синтаксис  Описание  Значения 
camera=<n>  Задается источник создаваемого кадра. Если параметр отсутствует, то используется базовая камера.  1/2/3/4/5 
compression= 
<value> 
Изменение качества изображения и размера файла.  medium/high/low 
color=<value>  Выбор цветного или черно-белого изображения.  normal/none 
axislogo=<value>  Показывать/Скрыть логотип Axis.  off/on 
clock=<value>  Показывать/Скрыть штамп времени.  off/on 
rotation=<value>  Вращение изображения.  normal/upsidedown/90deg/ 270deg 
mirror=<value>  Зеркальное отображение кадра в горизонтальной плоскости.  off/on 
Cropping/ 
top=<value> 
&left=<value> 
&width=<value> 
&height=<value>
Отображение части кадра формата `hugesize'. 

Значения параметров задаются в пикселах и округляются до чисел, кратных 8 (например, 45 округлится до 40). 

 

Сумма параметров Top+height не должна превышать размер по высоте изображения `hugesize' (576 для PAL и 480 для NTSC). 

 

Сумма параметров Left+width не должна превышать размер по длине изображения `hugesize' (704 для PAL и 640 для NTSC) 

move=<x>  Повернуть позиционер на 5 градусов в заданном направлении.  up/down/left/right/home 
pan=<n>  Повернуть позиционер по вертикали на <n> градусов относительно базового положения.  -180 ... 180 
tilt=<n>  Повернуть позиционер по горизонтали на <n> градусов относительно базового положения.  -180 ... 180 
rpan=<n>  Повернуть позиционер по вертикали на <n> градусов относительно текущего положения.  -180 ... 180 
rtilt=<n>  Повернуть позиционер по горизонтали на <n> градусов относительно текущего положения.  -180 ... 180 
zoom=<n>  Изменить зум камеры на заданный угол.  1 ... 999 
где 1 соответствует отсутствию зума 

Замечания:

Пример 1
Запрос кадра fullsize JPEG от базовой камеры, подключенной к AXIS 240, называемой camserv, который должен содержать данные о времени и иметь вращение на 270 градусов:

http://camserv/fullsize.jpg?clock=on&rotation=270deg 

Пример 2
Запрос кадра с высоким сжатием формата hugesize JPEG от камеры, подключенной к camserv, порт CAM2:

http://camserv/hugesize.jpg?camera=2&compression=high 

Пример 3
Повернуть камеру, подключенную к camserv , порт CAM3 на 45 градусов вправо:

http://camserv/fullsize.jpg?camera=3&pan=45 

CGI параметры для операций ввода/вывода
Для операций ввода/вывода через порт позиционера используется синтаксис:

http://<cameraname>/cgi-bin/control?<parameter>= <value>[&<parameter>=<value>...] 

Приведенная ниже таблица содержит CGI параметры для операций ввода/вывода:

Параметр/Синтаксис  Описание  Значения 
dataout=<string>  Передает строку данных на порт позиционера. Максимальный размер - 128 байт.  Шестнадцатиричное кодирование байтов {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, a, b, c, d, e, f} 
read=<n>  Считывает заданое количество байтов с порта позиционера. Возвращаемое значение имеет шестнадцатиричный код и размещается между символами "#", например #3A#.  1 ... 128 
wait=<n>  Означает ожидание заданного количества секунд перед считыванием с порта позиционера. Используется совместно с параметром "read".  1 ... 9 
flush=<value>  Стирает входной буфер порта позиционера. Требуется всегда при комбинировании с другими параметрами.  yes/no 

Пример 1
Записать строку данных 430001FF в порт позиционера:

http://camserv/cgi-bin/control?dataout=430001FF 

Пример 2
Очищает входной буфер, записывет строку данных 2B004C4C4F в порт позиционера и ожидает 5 секунд до получения ответа. AXIS 240 вернет значение Web браузеру:

http://camserv/cgi-bin/control?flush=yes 
&dataout=2B004C4C4F&wait=5&read=20 

Пример 3
Страница HTML page для считывания и записи в порт позиционера:

<HTML>  
<HEAD>  
<TITLE>HTTP Input/Output Test Page</TITLE>  
</HEAD>  
<BODY>  
<H2>HTTP Input/Output Test Page</H2>  
<FORM ACTION="http://camserv/cgi-bin/control" method=post>Write hexadecimal byte string&nbsp;  
<input type=text size=20 maxsize=19 name="dataout"> to Pan/Tilt port.  
<P>Read &nbsp;<input type=text name=read value="0" size=4> bytes from Pan/Tilt port.  
<P>Wait &nbsp;<input type=text name=wait value="1" size=4> seconds.  
<P><input type=submit name="Send" value="Send HTTP Request"></FORM>  
</BODY>  
</HTML> 

Замечание:


Потокол поддержки режима точка-точка (PPP)

AXIS 240 поддерживает протокол работы точка-точка Point to Point Protocol (PPP), предназначенный для использования в Internet-соединениях и в других сетевых протоколах по последовательному каналу. Реализуется это следующими способами:


Установка PPP в среде Windows 95

Выполняйте следующую инструкцию при конфигурировании PPP в среде Windows 95:

  1. Подключите модем к последовательному порту AXIS 240 (рекомендуется использовать модем US Robotics).
  2. Из Windows desktop дважды нажмите на иконку My Computer и затем откройте Dial-Up Networking.
  3. Двойное нажатие на Make New Connection. В этом диалоге определите имя создаваемого нового подключения в поле `Type name for the computer you are using'. Выберите имя модема из отображаемого списка модемов.
  4. Выберите Configure... и задайте параметры модема на странице Properties. Можно использовать все имеющиеся установки "по умолчанию", но убедитесь, что заданная скорость соответствует установленному модему и не превышает 38,400 bps, что является максимальной скоростью для последовательного порта AXIS 240.
  5. Выберите Connection tab и затем кнопку Advanced. Проверьте `Use flow control' и выберите select Hardware (RTS/CTS). Выберите OK для возврата в диалог `Make new connection'.
  6. Введите номер телефона, к которому подключен AXIS 240 с другим модемом. Выберите Next.
  7. Выберите Finish. Система скорректирует базу данных драйверов и новый диалог появится в Dial-Up Networking.

Обращение к удаленному AXIS 240
Следуйте инструкции по установке соединения с удаленным AXIS 240:

  1. Для установки подключения по модему к удаленному AXIS240 необходимо два раза нажать на созданную в рамках предыдущего параграфа иконку.
  2. Введите имя пользователя и пароль, затем выберите Connect. Диалоги состояния "Dialing" и "Logging onto the network" предназначены для отображения состояния и успешности соединения с <name>. Для получения доступа к AXIS 240 введите Internet адрес (URL) камеры в поле location Web браузера. Убедитесь, что опция proxy сервера не используется (Netscape: меню Options\Select Network\Proxies).

Установка режима PPP в Linux

Следуйте приведенным ниже инструкциям для соединения хоста Linux с AXIS 240, используя PPP:

  1. Создайте файл, используя команды:
  2. ABORT BUSY ABORT 'NO CARRIER' '' ATDT<phone number> CONNECT 
  3. Сохраните файл в виде .DIAL_240 в корневой директории. Этот скрипт производит набор номера <phone number> и затем ожидает соединения с последующей отработкой процесса установки PPP соединения.
  4. Для открытия соединения введите:
  5. pppd connect '/usr/sbin/chat -f DIAL_240' 115200 /dev/modem  или

    pppd connect '/usr/sbin/chat -f DIAL_240' :192.168.3.219 115200 /dev/modem 

    Последний вариант команды присваивает AXIS 240 временный Internet адрес 192.168.3.219. Если адрес не задается, как это показано в первом варианте, устройство использует свой адрес, ранее определенный командой arp. Обратите внимание на то, что для установки соединения необходимо быть пользователем или иметь права пользователя root. Модем постарается установить соединение, и затем процесс PPP будет работать как фоновый. Подсказка shell при этом появится автоматически. Для прекращения взаимодействия необходимо задать команду -detach.

  6. Приблизительно через 20 секунд соединение будет осуществлено. Затем необходимо обратиться командой ping к AXIS 240 и убедиться, что он находится в режиме online. Ответ на команду ping будет выглядеть аналогично представленному ниже:
  7. 64 bytes from 192.168.3.219: icmp_seq=0 ttl=15 time=197.0 ms  

    64 bytes from 192.168.3.219: icmp_seq=1 ttl=15 time=180.0 ms 

  8. Для прекращения соединения введите:
  9. kill -TERM `cat /var/run/ppp0.pid` 

Режим Zmodem

Подключение модема

При подключении AXIS 240 к модему появляется возможность загрузки изображений кадров на удаленный компьютер, используя стандартный модем.

240_54.gif (10617 bytes)

Данные по изображениям и конфигурации могут быть переданы по последовательному каналу при помощи протокола Zmodem. Этот протокол поддерживается большинством коммуникационных пакетов для UNIX и PC/Mac.


Передача файлов

Для инициализации передачи файлов наберите команду sz и затем имя передаваемого файла, например:

sz fullsize.jpg 

Большое количество коммуникационных пакетов позволяет автоматически загружать файлы с кадрами, т.е. они сами обнаруживают, что процесс передачи файлов установлен, и отвечают за выполнение процесса передачи. Если коммуникационный пакет не поддерживает этого, то необходимо вручную указывать 'receive zmodem' (или нечто подобное).

Успешно переданный файл изображения кадра будет в формате JPEG, т.е. будет являться копией кадра, имевшегося в собственной файловой системе AXIS 240.

 Замечание:

До передачи файла от AXIS 240 необходимо правильно сконфигурировать хост и удаленный модем. Более подробная информация по этому поводу содержится в Приложение E - Последовательный порт ввода-вывода.


[Начало] [Предыдущая] [Следующая] [Содержание]  [Сервера Камер]


Все технические вопросы посылайте в адрес:

AXIS Internatinal Tech-Support или Техническая поддержка AXIS в Компании TerraNet

Возврат на первую страницу
© TerraNet
webmaster@terranet.ru
Tel: +7 499 1909986, +7 495 7691306 Fax: +7 499 1909986
125367, Москва, Полесский проезд дом 16 офис 309