Документация по D-Link DVG-2102s и DVG-7111

Как могли многие обнаружить документации по данным девайсам вообще нет. Однако есть его клоны или он клон ;) VoiceCom90

Вот ПДФ файл на русском: http://www.voipdevice.ru/docs/Voicecom90-Manual-RUS.pdf

А вот далее детальный разбор некоторых основных параметров шлюзов, перепечатанный с сайта http://www.lynks.ru/blog/nastroika-voip-shlyuza-d-link-dvg-xxxx, за что им огромное спасибо. Ведь бывает что статьи пропадают, а такой ценный текст терять нельзя.

Настройка VoIP шлюза D-Link DVG-XXXX

В последнее время на форумах очень часто начали спрашивать, как настроить ту или иную модель шлюза D-Link для работы совместно с сервером Asterisk. Популярность этих шлюзов растет уже много лет, ведь за сравнительно небольшие деньги потребитель получает качественный продукт, отлично работающий на подавляющем большинстве линий, но на сайте производителя мало информации для нашего конкретного случая – работы с Asterisk. Эта статья освещает все особенности настройки шлюзов современной серии DVG.

Настройка абонента в FreePBX

Настройка порта FXS со стороны сервера не отличается от настройки обычного телефона: нужно лишь создать SIP аккаунт, которому прописать номер, имя (английскими буквами) и пароль как показано на рисунке (для простоты пароль пользователя равен выданному номеру):
Добавление аккаунта для абонентского порта шлюза серии DVG Как видно из рисунка, параметр dtmfmode установлен в режим rfc2833, это значение нужно изменить на info.

Настройка транка и маршрутов в FreePBX

Настройка порта FXO несколько сложнее: нужно создать транковый аккунт, прописать исходящий и входящий маршруты. Для создания транка нужно перейти в Trunks, затем выбрать Add SIP Trunk. В открывшейся форме нужно в поле Trunk Name дать имя транку. Для удобства нужно дать имя, не пересекающееся с общей нумерацией системы для того, чтобы легко различать транки и абонентов в команде sip show peers, например 78XY, где X – номер шлюза в инсталляции, а Y – номер порта на шлюзе. Для того, чтобы шлюз мог зарегистрироваться в системе, необходимо задать параметры SIP пира, например так:
username=7811      ;имя пользователя для порта 
type=friend        ;позволяет и принимать и отправлять вызовы
secret=7811        ;для простоты пароль равен логину
qualify=yes        ;разрешает серверу определять доступность шлюза
port=5060          ;SIP порт шлюза
nat=no             ;запрещает NAT
host=dynamic       ;для работы шлюз должен зарегистрироваться
dtmfmode=info      ;режим DTMF должен быть общим для всего шлюза
context=from-pstn  ;контекст указывает обработчик входящих вызовов
canreinvite=no     ;запрещает передачу медиатрафика минуя астериск
По большому счету после этих настроек шлюз может зарегистрироваться и работать как обычно. Однако даже если прописать все порты по отдельности как положено, шлюз будет выбирать линию для выхода по принципам, известным только его разработчикам. Это происходит из-за того, что умная электроника сама определяет статус городской линии: если она не подключена к физически то шлюз не даст совершить вызов по этому порту и вызов перейдет на другой. Однако в некоторых случаях эта особенность только мешает и необходимо жестко прописывать порядок занятия портов. Для этого в первую очередь нужно прописать правило набора для этого транка (Dial Rules):
7811+X.
Это правило будет преобразовывать отправляемый номер, добавляя номер порта к набираемому номеру, что шлюз интерпретирует как занятие конкретного порта. Чтобы это работало, в шлюзе должна быть установлены опции в разделе Telephony Settings (обычно включены по умолчанию):
Включения занятия транка по портам Однако при прямом выборе транка шлюз не контролирует статус выбранной линии, если она будет отключена, то шлюз, как ни в чем не бывало, “поднимет трубку” и наберет вызываемый номер в линию, а вызывающий будет слышать лишь тишину. Так же не будет работать автоматический выбор другой линии, если по выбранная уже занята разговором. Для решения проблемы необходимо изменить исходный код FreePBX. Для этого нужно модифицировать файл /var/www/html/admin/modules/core/functions.inc.php, в котором примерно со строки 1240 после строчки

$exten = 's-BUSY';
будет примерно следующее содержимое:
$ext->add($context, $exten, '', new ext_noop('Dial failed due to trunk reporting BUSY - giving up'));
$ext->add($context, $exten, '', new ext_playtones('busy'));
$ext->add($context, $exten, '', new ext_busy(20)); 
этот код нужно изменить на следующий:
$ext->add($context, $exten, '', new ext_gotoif('$["x${OUTFAIL_${ARG1}}" = "x"]','noreport')); 
$ext->add($context, $exten, '', new ext_agi('${OUTFAIL_${ARG1}}'));
$ext->add($context, $exten, 'noreport', new ext_noop('TRUNK Dial failed due to ${DIALSTATUS} '));
Побочным эффектом может быть некорректная работа цифровых транков к провайдерам: при обнаружении занятости вызываемого номера система автоматически перейдет на следующий транк и повторит дозвон до тех пор, пока не дойдет до последнего транка в маршруте.
Для распределения звонков, поступающих с FXO портов шлюза следует настроить входящую маршрутизацию: прописать DID и CID номера в разделе Inbound Routes. В данном случае DID номер отвечает за то, на звонок с какого порта шлюза нужно реагировать, а CID номер определяет совпадение с номером звонящего:
Входящая маршрутизация шлюза DVG-XXXX Отбор по CID номеру будет работать только в том случае, если городские линии, подключенные к FXO порту шлюза, выдают CallerID. Многие пользователи жалуются на задержку в “два гудка” с момента поступления вызова на порт шлюза до поступления его в сервер. Эта задержка связана с технологией определения CallerID: дело в том, что тональный посыл вызываемого номера осуществляется между первой и второй посылкой вызывного сигнала. В текущей версии прошивки шлюза отключить эту паузу невозможно.

Базовые настройки шлюза

Сетевые параметры
Все шлюзы с завода имеют статический IP адрес 192.168.8.254, что по понятным причинам подойдет не всем. Самый простой способ включить получение параметров сети по DHCP – с помощью встроенного голосового меню. Для доступа в меню нужно подключить любой аналоговый телефон в порт FXS и нажать **#, после чего будет слышно однократное прерывание КПВ. Шлюзы без FXS портов можно подключить к городской линии с известным номером, позвонить с другого телефона на эту линию и набрать **# (после настройки не забудьте отключить сервисное голосовое меню).
После входа в режим IVR нужно набрать 114, шлюз спросит: “Enter value”, введите 2 для переключения в DHCP режим. Для сохранения настроек нужно нажать 509, через некоторое время шлюз сообщит: “One”, это означает, что настройки сохранены. Для перезагрузки можно набрать 118. После того, как шлюз перезагрузится можно снова войти в сервисное меню и, набрав 101, услышать присвоенный IP адрес.
Теперь нужно настроить основные параметры шлюза, для чего заходим на его веб интерфейс по полученному адресу. В разделе Network Settings нужно установить порты SIP и RTP в значения, актуальные для Вашей системы. Для TrixBox Embedded это, как правило, так:
Задание номеров SIP и RTP портов для работы D-link и Asterisk
Настройка телефонных сервисов
Если к шлюзу подключены телефоны, которые понимают посылки CallerID, то нужно включить передачу номера в разделе Caller ID (прием по умолчанию включен):
Включение генерации CallerID Для того, чтобы пользователи могли воспользоваться функцией “Flash” своего телефона необходимо включить эту возможность в разделе Calling Features:
Включение перевода звонка средствами шлюза Также можно включить и Call Waiting, однако нужно быть готовым, что пользователей будет выводить из себя обратный отзвон при неправильно положенной трубке. В новых версиях прошивки шлюзов в этом разделе присутствуют элементы управления дополнительными сервисами и их клавиатурными кодами. Эти коды пересекаются со встроенными в Trixbox и их необходимо отключить полностью.
Настройка DTMF и кодеков
Для правильной работы системы требуется четко определить способ передачи тоновых посылок между шлюзом и сервером. Ранее, при определении транка, мы прописали dtmfmode=info, аналогичные настройки нужно сделать и на шлюзе в разделе Advanced Options:
Настройка DTMF Опцию Enable Non-SIP Inbox Call следует отключить, она отвечает за режим работы шлюза с исходящими звонками: при ее включении все вызовы маршрутизируются шлюзом самостоятельно без участия сервера телефонии.
Так как в большинстве случаев шлюзы устанавливаются в локальной сети, в непосредственной близости от сервера телефонии. В этом случае нет необходимости нагружать оборудование сжатием голоса, тем более что это ухудшает качество связи и мешает передаче факсов. В разделе Codec Settings нужно выбрать кодек G.711:
Настройка кодеков

Настройки SIP подсистемы

Для того, чтобы шлюз взаимодействовал с сервером телефонии, его необходимо настроить: прописать SIP сервер, параметры регистрации, учетные данные для каждого порта шлюза. В разделе SIP нужно отметить опцию Enable Support of SIP Proxy Server / Soft Switch, а адрес сервера прописать в три поля:
Настройки SIP сервера в шлюзе В шлюзах D-Link есть возможность представлять все порты одного типа под одним логином, при этом шлюз сам выбирает доступные для звонка линии. Однако удобнее, когда управление выбора линий осуществляется с сервера, поэтому нужно прописать логины и пароли для каждого порта шлюза: Настройки SIP аккаунтов на примере шлюза DVG-7044 Для того, чтобы включить регистрацию порта шлюза, нужно отметить опцию Register.
После выполнения этих настроек уже должна работать исходящая связь в городские линии, а так же абонентские порты. Однако входящая связь работать не будет. Причина этому проста: шлюз не знает куда направить вызов по порту FXO. Для этого нужно всего лишь прописать Hotline в разделе Telephony Settings:
Hotline в разделе Telephony Settings Номер, который указываем в Hotline был прописан ранее при настройке входящей маршрутизации FreePBX. Если прописать эту опцию для FXS порта, то при поднятии трубки на подключенном телефоне шлюз моментально произведет набор указанного номера. В поле “Fax/Modem” нужно установить значение Disable, это предотвратит распознавание шлюзом факсовых сигналов и все данные будут отправляться в голосовом канале как есть.
Для сохранения настроек и применения их необходимо в разделе System Operation отметить соответствующие опции и перезагрузить шлюз:
Сохранение и применение настроек шлюза После перезагрузки шлюз зарегистрируется на сервере и будет готов к работе. Проверить это можно перейдя в модуль Asterisk CLI системы управления FreePBX и выполнив команду sip show peers. Эта команда должна вывести информацию о всех заведенных устройствах и их регистрации в системе:
Вывод команды sip show peers

Настройка определения сигнала “Занято”

Шлюзы D-Link обладают развитыми средствами определения сигналов на линии (CPT – Call Progress Tones), самым важным из которых является определение сигнала отбоя (или занятости линии). Надежное определение отбоя гарантирует отсутствия зависших линий. Для правильной настройки необходимо прописать точные параметры длительности и частоты сигналов. В России стандартная частота сигнала отбоя 425 Гц при длительности 350 мс через 350 мс тишины. Однако на местах величины этих параметров могут быть непредсказуемыми и требуют определения. Самый простой способ это сделать – записать сигнал и проанализировать в аудиоредакторе. Для этого нужно включить запись на каком-либо внутреннем номере и позвонить через внешнюю линию на другой телефон (например на сотовый). После ответа на удаленном телефоне необходимо положить трубку, на вызывающем немного подождать для записи достаточного повторов для точного анализа. После этого полученный файл нужно открыть в аудиоредакторе, например, Audacity:
Определение периодичности сигнала в Audacity В конце файла можно увидеть характерные прямоугольные импульсы – это и есть графическое отображение сигнала отбоя. Нужно точно выделить полное количество периодов сигнала, как показано на рисунке, в строке состояния будет отображено время выделенного промежутка в секундах. Поделив количество секунд на количество периодов получим длительность сигнала. Поделив еще на два, получим длительность сигнала и тишины отдельно. В данном случае длительность равна 2560 мс, следовательно длительность периодов равна 2560/4/2=320 мс.
Для измерения частоты сигнала необходимо выделить участок с сигналом и построить график спектра:
График спектра в Audacity На этом графике будет отчетливо видны пики на тех частотах, которые используются в формировании сигнала. В данном случае сигнал одночастотный (а бывают и двухчастотные, для них будет два пика) с максимальной амлитудой на частоте 425 Гц. Полученные значения нужно прописать в шлюз. В разделе CPT / Cadence Settings в таблице Busy Tone Cadence Measurement нужно прописать в одной из строк длительности периодов сигнала:
Задание параметров длительности периодов сигнала "занято" Эта таблица отвечает за обнаружение периодичности сигнала без учета частот. Опцию Auto Learning нужно отключить во всех строчках, в других незадействованных строках все значения нужно выставить в 0. Точную частоту сигнала нужно прописать в одной из секций CPT:
Задаем точную частоту сигнала "занято" После этих настроек шлюз должен “железно” определять занятость линии и прекращать соединение.

Методы устранения эха и других проблем

Устранение эха
Эхо это основная врожденная болезнь стыка VoIP и аналоговых систем, оно образуется из-за задержки при кодировании и декодировании сигнала. В традиционных системах эхо так же есть, но задержка во времени минимальна и ухом человека почти не воспринимается, а также легко давится примитивными противоместными схемами. Устранение эха в шлюзах D-Link сводится к простому перебору преднастроенных параметров импеданса FXO линий в разделе Advanced Options:
Подбор параметров для удаления эха Хорошие результаты обычно показывают варианты для Новой Зеландии и Греции. Если эхо все равно есть, то можно попробовать другие варианты. Удобно, что перезагрузки шлюза для вступления в силу этой настройки не требуется, нужно просто нажать в нижней части страницы кнопку Accept. Все изменения слышны на слух. Для проверки нужно позвонить в FXO линию и разговаривать, подбором параметра добиться пропадания эха с обоих сторон.
Регулировка громкости и длительности Flash
Часто бывает, что порт подключен к тихой линии и одного из абонентов плохо слышно. Это можно исправить в разделе Advanced Options -> Line Settings, там же можно настроить длительность определения сигнала flash:
Регулировка громкости и длительности flash При изменении громкости эхо может возникнуть снова, это можно попробовать исправить повторным подбором импеданса линии, однако при сильном увеличении громкости зачастую эхо невозможно убрать. В таком случае можно попробовать увеличивать громкость на абонентских устройствах.
Самопроизвольный обрыв разговора
После обновления прошивки около года назад многие пользователи шлюзов заметили спонтанные обрывы связи, при этом со стороны сервера все выглядело так, как будто на стороне FXO линии произошел отбой. Долгие часы и дни решения проблемы выявили новую опцию в подсистеме распознавания сигнала занято: Auto Learning. В общем-то полезная опция появилась неожиданно, однако ее нужно отключать сразу после того, как шлюз определит параметры сигнала, т.е. в процессе начальной настройки. Если этого не сделать, то умная железка может обнаружить повторяющиеся последовательности в процессе обычного разговора и прервать вызов.
Отладка шлюза
Шлюзы D-Link могут выдавать подробный лог своих действий, что незаменимо при отладке проблемных моментов. Для этого нужна специальная программа slmon, которая присоединяется к шлюзу по TCP или UDP соединению, снимает лог событий в реал-тайм режиме и сохраняет их на диск.

Установка разъема под внешнюю антенну на 3g (gsm, gprs, edge) модем

Как известно скоростной интернет пришел только в большие города. А некоторые люди из эти, больших, городов стремятся в деревни. Но вот только интернета им все равно хочется. Пытаются ловить 3G, да только он не ловится как не забрасывай невод. Поэтому и приходится делать некоторые усовершенствования в стандартных модемах. Самый правильный и эффективный метод, это установка разъема под внешнюю антенну.

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

На просторах интернета много инструкций, я взял, на мой взгляд, самую самую)) http://www.give-all.ru/articles/1/35/3g-modem-huawei-e1550-peredelka-pod-vneshnyuyu-antennu/

Linksys pap2t После поднятия трубки не набрать цифру в течении нескольких секунд, то идет сигнал занято

Возникла проблема с сип шлюзом Linksys pap2t.
Если после поднятия трубки не набрать цифру в течении 3 секунд и если между цифра будет пауза больше 3х секунд, то идет сигнал отбоя и надо начинать все с начала.
Думал проблема решается настройкой диал-плана - не помогло. Начал искать параметры счетчиков и интервалов. И вот так я вышел на то, что надо выставить Interdigit Short Timer вместо 3 секунд на 10, к примеру.

Теория по диалплану.

Диалплан отвечает в Linksys за обработку набранного пользователем номера. За основу применяемого формата взят формат описанный в спецификации MGCP/MEGACO. Этот параметр настройки применяется на всей линии устройств, пожалуй кроме SPA400, который, кажется, имеет совершенно иную от остальных основу. Не держал в руках, так что могу ошибаться.
Диалплан представляет из себя последовательность шаблонов, разделённых вертикальной чертой '|' и ограниченных круглыми скобками. Для каждой линии может задаваться свой диалплан (параметр Dial_Plan). Для устройств, где присутствуют FXO порты (например, SPA3102 и AG310), настроек с диалпланами гораздо больше (по 2 на каждый PIN, используемый для авторизации), в названиях есть аббревиатура DP, перечислять не буду. Есть ограничение на длину параметра, что-то около 256 или 128 символов, сейчас не могу найти точную информацию.
Следует заметить, что все коды дополнительных сервисов, сконфигурированных на устройстве, автоматически добавляются к диалплану, и их не нужно учитывать в записи параметра.
Запись последовательности цифр
Основой записи являются обозначения для записи последовательности набранных цифр. Последовательность цифр записывается с помощью нескольких обозначений:
  1. Цифры набираемые с клавиатуры телефона: 0123, ..., 9# и *. Заметьте, что использование символа # в диалплане может блокировать завершение набора с помощью этой клавиши.
  2. Последовательность цифр, заключённая в квадратные скобки, соответствует любому из заключённых в скобки символу.
    • Пр.: ([1239]) — соответствует любой из цифр 1, 2, 3 или 9
  3. Через тире может быть указан диапазон символов. Чаще всего используется внутри квадратных скобок.
    • Пр.: (1-5) — любая цифра от 1 до 5, ([1-39]) — пример из прошлого пункта, но записанный по-другому
  4. Символ X соответствует любому числу от 0 до 9
    • Пр.: (1XX) — любой трёхзначный номер, начинающийся на 1
  5. Если после символа поставлена точка, то считается, что этот символ может быть повторён любое количество раз (больше нуля)
    • Пр.: (810X.) — международный номер, с любым количеством цифр
Настройки, влияющие на обработку диалплана
  • Interdigit Long Timer — время ожидания ввода следующей цифры в том случае если нет подходящих под набранную комбинацию шаблонов
  • Interdigit Short Timer — время ожидания ввода следующей цифры, если есть один или более подходящий шаблон
  • Enable IP Dialing — разрешает использование в диалплане также и прямых ip-адресов для набора номера, примеры ниже.
Дополнительные возможности:
  1. Замена набранной последовательности. Синтаксис: <arg1:arg2>. Возможность позволяет заменить набранную последовательность на любую последовательность набираемых символов. При этом второй аргумент должен быть указан определённым значением, оба аргумента могут быть пустыми.
    • Пр.: (<83812:> XXXXXX) — данная запись будет соответствовать набранным цифрам 83812, но эта последовательность будет опущена и передана на SIP сервер не будет.
  2. Вставка тона в набор. При выходе на межгород или, в офисных станциях, на город привычно слышать КПВ, что можно реализовать вставкой запятой в нужную позицию последовательности цифр.
    • Пр.: (8, 770) — при наборе номера 8770 после цифры 8 будет выдан непрерывный тон
  3. Запрет набора номера. Если в конце шаблона номера добавить восклицательный знак '!', то набор номеров, соответствующих шаблону будет заблокирован.
    • Пр.: (8 10X xxxxxxx ! | 8 xxx xxxxxxx ) — разрешает набор только междугородних номеров и исключает международные вызовы
  4. Замена значений таймеров набора номера. Значения таймеров могут быть назначены как для всего диалплана, так и для определённого шаблона.
  • Буква S отвечает за установку Interdigit Short Timer, а L — Interdigit Long Timer
  • Значение таймеров может быть указано для всех шаблонов в диалплане, если значение перечислены до открывающейся круглой скобки (если указано только значение короткого таймера, то обязательно должна присутствовать запятая после значение, как показано в примере). Пр.: S:4, (8XXX.) или S:4,L:8 (XXX)
  • Если эти значения указаны только в одной из последовательностей, то действуют только для неё. Так же в этом случае не надо ставить двоеточие между ключём и значением таймаута, значение может быть расположено в любом месте шаблона. Пр.: (S4 8XXX. | XXX) или ([1-5] XX S0) — вызовет мгновенную передачу вызова при наборе трехзначного номера, начинающегося на 1,2, ... , 5.
  • Так же в некоторую последовательности может быть вставлена пауза (ключ P)
Набор по прямому адресу (IP Dialing)
Символ @ поставленный после номера означает что далее будет указан адрес сервера, на который будет отправлен вызов на набранный номер. Лучше всего, если используется IP Dialing разрешить так же приём и передачу вызовов без регистрации (Call Without RegAnswer Without Reg). Может помочь в случае отказа сервера :)
Для шлюзов SPA3102 вместо адреса может быть использовано ключевое слово gw0, тогда вызов пойдёт через PSTN линию. Адреса gw1, ... , gw4 используются для шлюзов заданных в Gateway1-4. Так же для авторизации на серверах прямо в диалплане могут быть указаны параметры usrpwdnat.
Кроме того формат адреса с IP Dialing может быть использован в номерах, предназначенных для переадресации звонков.
Примеры:
  • ( 8 xxx xxxxxxx ) — 11-значный номер, начинающийся на 8.
  • ( 8 xxx xxxxxxx | <:8495> xxxxxxx ) — 11-значный номер, начинающийся на 8, если введён 7-ми значный, то добавить к передаваемому номеру 8495. Очень удобно делать набор локальных номеров через SIP провайдера вроде SIPNET.
  • ( 0[123] | 8 [2-9]xx [2-9]xxxxxx ) — набор номеров экстренных служб, а так же некоторого странного набора междугородних номеров
  • ( S0 <:82125551234> ) — быстрый набор указанного номера, аналог режима хотлайн на других шлюзах
  • ( P5 <:1000> | xxxx ) — такой диал-план позволяет набрать любой номер, состоящий из цифр, а если ничего не введено в течении 5 секунд вызвать номер 1000 (пусть это будет секретарь)
  • Звонить с первой линии на вторую линию устройства: (<02:3463463@192.168.254.254:5061>). С учётом что аккаунт на второй линии 3463463, устройство настроено с использованием указанного IP адреса и номером порта на второй линии.

Официальная дока по диал-плану от cisco: http://www6.nohold.net/Cisco2/ukp.aspx?vw=1&docid=97e3dc8f2ce6498285a3bfedd92195db_5212.xml&pid=80&respid=0&snid=6&dispid=0&cpage=search

Интерфейс интернет камеры с управлением trendnet tv-ip400 для пользователей

Месяц назад я задумал сделать камеру, которая показывает панораму города в реальном времени. Взял обычную камеру интернет камеру и собрал поворотное устройство на базе ардуино. Но сразу выползли косяки. Камера питается от 5В, ардуино с сервоприводами нужно 12В. 5В не хватает сервам и они трещат, кряхтят и все дергается. Конструкция тоже оказалась не очень гармоничной. Разместить это все в прозрачной колбе получалось с трудом.

Так оказалось, что одна из первых моих интернет камер оказалась без дела. Матрица старого образца шумит. Разрешение не ахти - 640 х 480, однако даже при таком она картинку кажет не очень, по сравнению с существующими ныне камерами такого же разрешения. Так вот она и отошла от дела. А тут на днях она мне попадает в руки. Решено, что надо ее использовать.

Просто прокинуть порт на нее не интересно. Да и тяжеловат он. Плюс там много лишнего и "секретного" для пользователя из вне. Надо сделать свой интерфейс. Но не просто показывать снапшот, а дать на время управление камерой. Повертеть же головой всем интересно .

Решил посерфить базу интернета на наличие api. Естественно ничего не существует. И тут попалась поделка нашего немецкого друга. Ее я и взял за основу.

if ($control) {
  // Generate the request header
  # Configuration
  $Host="хх.хх.хх.хх.";
  $Port="хх";
  #PanTiltSingleMove:
  # 0 1 2
  # 3 4 5
  # 6 7 8
  //echo "<pre>";
  //var_dump($_POST);
  if ($d>0){
          $dir1=$d;
          $pan=$x;
          $tilt=$y;
          if ($d2>0)
                    $kuda='инициализация...';
          else
                    $kuda='поворот';
  } else {
    $pan=0;
    $tilt=0;
    $dir1=4;
    $kuda='';
    if ($here_x>200) {
            $dir1=5;
            $pan=3;
            $kuda='вправо';
    } elseif ($here_x<100) {
            $dir1=3;
            $pan=3;
            $kuda='влево';
    }
    if ($here_y>160) {
       if ($dir1!=4) {
         $dir1=$dir1+3;
         $kuda=$kuda.' и ';
       } else {
         $dir1=7;
       }
            $kuda=$kuda.'вниз';
            $tilt=4;
    } elseif ($here_y<80) {
       if ($dir1!=4) {
         $dir1=$dir1-3;
         $kuda=$kuda.' и ';
       } else {
         $dir1=1;
       }
            $kuda=$kuda.'вверх';
            $tilt=4;
    }
  }
  if ($dir1==4) {
    $kuda='центровка';
    header("Refresh: 0; URL=?control=1&d=8&x=10&y=3&d2=5&x2=10&y2=0");
  } else {
    if ($d2>0) {
        header("Refresh: 0; URL=?control=1&d=$d2&x=$x2&y=$y2");
    } else {
        header("Refresh: 0; URL=?1=1"); //делайте как хотите этот рефреш
    }
  }
  //начинается секретное API
  $ReqBody = "PanSingleMoveDegree=$pan&TiltSingleMoveDegree=$tilt&PanTiltSingleMove=$dir1";
  $URI="/PANTILTCONTROL.CGI";
  $ReqHeader =
  "POST $URI HTTP/1.1\n".
  "Authorization: Basic ".base64_encode("guest")."\n".
  "Host: $Host:$Port\n".
  "Content-Type: application/x-www-form-urlencoded\n".
  "Content-Length: ".strlen($ReqBody)."\n\n";
  $Zapros=$ReqHeader."$ReqBody\n";
  // Open the connection to the host
  $socket = fsockopen($Host, $Port, &$errno, &$errstr);
  if (!$socket)
  {
    echo "error";
  } else {
    fputs($socket, $Zapros);
    $idx = 0;
    while (!feof($socket)) {$Result1[$idx++] = fgets($socket, 128);}
  }
  //конец серкретного АПИ
  echo '<BODY STYLE="MARGIN: 0; PADDING: 0; BACKGROUND-COLOR: #000000">';
  echo "<table width=100% height=100% cellpadding=0 cellspacing=0><tr><td valign=middle align=center bgcolor=black><font color=white>
  <b>$kuda";//<br>pan=$pan tilt=$tilt dir1=$dir1<br>";
  //var_dump($Result1);
  echo "</td></tr></table>";
  exit;
}
  header("Refresh: 15; URL=?1=1"); //рефреш в себя
?>
<BODY STYLE="MARGIN: 0; PADDING: 0; BACKGROUND-COLOR: #000000"><form action=?1=1 method=post><input type=image src=http://HOST:PORT/IMAGE.JPG name=here><input type=hidden name=control value=1></form>

Это только начало. Надеюсь не заброшу :)

Расчет радиоканала онлайн

Частенько приходилось тестировать всякие линки и для этого я использовал Google Earth. В ней можно было построить трассу, посмотреть перепады высот.

Но вот, а если надо срочно посмотреть можно ли расчитывать на wi-fi канал? Качать, устанавливать, она же тяжелая - не вариант. Сегодня наткнулся на очень интересный ресурс для построения таких линков в онлайн на базе Google Maps + Earth. Имя ему http://www.linktest.ru

Для оффлайн расчетов можно использовать программу RadioMobile http://www.cplus.org/rmw/english1.html

alt-f Альтернативная прошивка на linux для старых дисковых НАС

 Данная прошивка подходит для D-Link DNS-320/320L/321/323/325/327L Кроме расширения функционала в ней используется smb 2.0 вместо smb 1.0 (c...