Как мы сокращали персонал через Wi-Fi

в 7:12, , рубрики: 1С для склада, бесшовный wi-fi, Блог компании Сервер Молл, ит-инфраструктура, саботаж на работу, Серверное администрирование, Сетевые технологии, системное администрирование, метки: , ,

image alt text

На одном складе работа была организована так, что сотрудники с навыками работы на ПК все время пребывали в режиме "аврал". При отгрузке заказов толпа комплектовщиков стояла в очереди за сверкой и сканированием штрих-кодов. Естественно, поломка одного из двух операторских компьютеров превращала весь процесс в сплошные мучения для самих операторов и радость для остальных (о, чайку можно попить!).

В статье расскажу, как мы испортили людям отдых с помощью бесшовного Wi-Fi.

Для разгрузки операторов установили несколько стационарных терминалов, с которыми смогут справится даже не владеющие магией 1С сотрудники. Но склад еще регулярно навещали ревизоры с беспроводными терминалами сбора данных. Их беда была в том, что приходилось ловить беспроводную сеть лишь в одном складском углу… да-да, именно там, где народу и так было с избытком. В общем, решили заодно опутать весь склад сетями бесшовного Wi-Fi. Именно эта часть проекта получилась любопытнее всего.

Котики-Микротики

Как известно, сейчас в моде минимализм. В том числе и проводной, поэтому оборудование искали с поддержкой PoE (Power Over Ethernet).

Для покрытия всего склада беспроводной сетью понадобились:

  • Точки доступа, умеющие работать с управляющим контроллером и PoE-in;

  • Контроллер для управления точками доступа;

  • Коммутатор с поддержкой PoE-out.

Решения Cisco, Zyxel и D-link в бюджет явно не пролезали, поэтому остались Ubiquity UniFi и MikroTik.

Семейство Unifi с программными контроллерами хорошо запомнилось еще по прошлым проектам своей нестабильной связью при перемещениях клиентов между точками. К тому же, у местных админов нашелся MikroTik RB951Ui-2HnD, потерявший два порта после удара молнии. Что ж, это явно судьба, поэтому "инвалиду" решили дать новую жизнь в качестве контроллера Wi-Fi.

В качестве точек доступа изначально планировали MikroTik mAP lite, которые подкупали стоимостью и поддержкой работы с Wi-Fi контроллером – Controlled Access Point system Manager (CAPsMAN) в терминологии MikroTik. Правда, смущало неудобное магнитное крепление на стену, ответная часть которого крепилась на не внушающий доверия скотч. В итоге, купили MikroTik mAP 2nD без всяких магнитов, из-за которых у mAP lite бывают проблемы с сетью при включении.

Заказали всего 9 точек и коммутатор D-link DES-1018MP с поддержкой PoE. Такого набора оказалось достаточно для уверенного приема на всей территории склада.

image alt text

Кроме использования по назначению, из такой точки можно сделать сетевой тестер. Еще в комплекте нашлись кабели micro-usb OTG, которые мигом разошлись по ИТ-отделу.

Вторая часть квеста

Напомню, что основной проблемой склада была неправильная организация операторских рабочих мест. Поэтому нужно было не только увеличить их количество, но и оптимизировать для использования не искушенными в компьютерах сотрудниками склада. Решили ставить терминалы с сенсорным экраном и сканером штрих-кодов. При максимально упрощенном интерфейсе 1С и отсутствии стандартной оболочки Windows выходило довольно наглядно.

В качестве рабочих станций рассматривали тонких клиентов, моноблоки и даже Raspberry Pi под Linux. Но c Linux у местных специалистов дела шли не так радужно, поэтому все же вернулись к Windows. В конце-концов, там меньше проблем с совместимостью оборудования.

Кстати, вместо моноблока с креплением на стену нашелся INTEL Compute Stick размером с ладонь – подходящая модель выпускается как Lenovo IdeaCentre Stick 300:

  • 32 ГБ места на диске;

  • 2 ГБ оперативной памяти;

  • Windows 8.1 with Bing;

  • Цена вопроса – менее 6 000 ₽.

Выглядит как решение всех проблем. Конечно, было некоторое недоверие к самому формату "флешки с виндой" – особенно смущали перспективы перегрева и вопрос быстродействия. Но пробная “флешка” выдержала все проверки без особых проблем, поэтому махнули рукой и закупили остальные.

image alt text

К терминалу еще нужен был беспроводной сканер, база которого работала бы по USB с эмуляцией COM – просьба заказчика.

Получился такой набор:

Наименование Модель Количество Цена, шт
Точка доступа MikroTik mAP 2nD 9 2 800 ₽
Компьютер Lenovo IdeaCentre Stick 300 9 5 900 ₽
Монитор Viewsonic TD2220-2 9 17 000 ₽
Переходник HDMI BURO DVI-D(m) — HDMI19 (f) 9 590 ₽
Сканер ШК Honeywell 1202g 9 21 150 ₽
Коммутатор D-link DES-1018MP 1 15 700 ₽
Итого 442 660 ₽

Цены указаны на лето 2016

Примечательно, что сама сеть Wi-Fi стоила менее 50 000 ₽, даже с учетом контроллера.

Часть третья, в которой появляется гик-порно

Про настройку CAPsMAN на MikroTik уже достаточно материала, поэтому больше расскажу о нюансах.

Сеть делали вещью в себе, без лишних пересечений с офисной. От использования VLAN пришлось отказаться, так как сетевое оборудование уже было нагружено сверх меры. На контроллере Wi-Fi подняли NAT с сетевым экраном, за которым разместили точки доступа с клиентами.

В процессе тестирования решения обнаружились несколько проблем:

  • Если точки и клиенты находились в одном сегменте сети, то при подключении клиента контроллер ругался на появление петли и отключал его. Обойти проблему можно было сегментированием сети или явным включением точки доступа в bridge на контроллере. Я выбрал первый вариант, как наиболее простой:

    /interface bridge
    add name=bridge-wifi
    /caps-man configuration
    set [find comment="warehouse"] datapath.bridge=bridge-wifi'
    #настройка адресации и DHCP на bridge-wifi

  • Если на точке доступа явно не указать IP-адрес контроллера, то при подключении к сети трех и более точек лишь одна регистрировалась. Решилось указанием адреса контроллера в настройках CAP:
    /interface wireless cap
    set caps-man-addresses=Адрес_контроллера discovery-interfaces=bridge-local 
    enabled=yes interfaces=wlan2
  • Некорректно работало разрешение имен офисных серверов и, как следствие, не запускалась база 1С. Настроили выдачу правильного DNS-суффикса службой DHCP на MikroTik:
    #Добавляем опцию 15. содержимое - сконвертированый в HEX суффикс.
    /ip dhcp-server option
    add code=15 name=dns value=0x57687920616c6c207468697320736869743f
    #Добавляем опцию к DHCP-серверу для клиентов.
    /ip dhcp-server network
    set [find comment="wi-fi client dhcp"] dhcp-option=dns

image alt text

Схема получившейся сети с двумя бриджами

Интерфейс, который не даст выстрелить в ногу

Новые пользователи не очень дружны с компьютерами, поэтому лишние "соблазны" нужно было убрать. В системе появилась новая учетная запись пользователя с ограниченными правами и автоматическим входом в систему. Кроме того, при загрузке оболочка explorer.exe менялась на скрипт запуска 1С.

Памятка по замене оболочки

Нужно всего лишь создать в реестре строковый параметр с именем "Shell" в ветке HKEY_CURRENT_USERSoftwareMicrosoftWindows NTCurrentVersionWinlogon, а в его значении прописать путь запуска альтернативной оболочки. Для запуска VBS-скрипта это выглядело так:

cscript.exe "Путь к скрипту"

Чтоб не менять скрипт для каждого компьютера, я назвал пользователей в 1С аналогично именам компьютеров.

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

strComputer = "."

strServer="Имя сервера 1С"

strBase="название базы 1С"

Set objShell = CreateObject("Wscript.Shell")

‘ Получаем имя компьютера в переменную 

strUsername= objShell.ExpandEnvironmentStrings("%computername%")

‘ Проверяем сервер на доступность несколько раз, на случай поздней инициализации сети.

For iCounter = 1 to 5

     If  Ping(StrServer) then

    Exit For     

end If

WScript.Sleep 1000

Next

If  iCounter =5  Then

MsgBox ("Сервер не обнаружен, обратитесь в IT-отдел")

objShell.Run("shutdown -s -t 0")

else

    ‘ Запускаем 1С

objShell.Run("""C:Program Files1cv8common1cestart.exe"" enterprise /s"+strServer+""+strBase+" /N"""+strUsername+"""")

Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\" & strComputer & "rootcimv2") 

Set colProcesses = objWMIService.ExecQuery ("Select * from Win32_Process Where Name = '1cv8.exe'") 

‘ Ждем появления основного процесса 1С

 Do While colProcesses.Count = 0  

Set colProcesses = objWMIService.ExecQuery ("Select * from Win32_Process Where Name = '1cv8.exe'")     

WScript.Sleep 1000 

Loop  

‘ Ждем завершения процесса 1С

Do While colProcesses.Count > 0  

Set colProcesses = objWMIService.ExecQuery ("Select * from Win32_Process Where Name = '1cv8.exe'")  

WScript.Sleep 1000 

Loop  

objShell.Run("shutdown -s -t 0")

end if

Function Ping( myHostName )

Dim colPingResults, objPingResult, strQuery

strQuery = "SELECT * FROM Win32_PingStatus WHERE Address = '" & myHostName & "'"

Set colPingResults = GetObject("winmgmts://./root/cimv2").ExecQuery( strQuery )

For Each objPingResult In colPingResults

If Not IsObject( objPingResult ) Then

Ping = False

ElseIf objPingResult.StatusCode = 0 Then

Ping = True

Else

Ping = False

End If

Next

Set colPingResults = Nothing

End Function

Через некоторое время терминалам добавили Bluetooth-колонки, через которые приятный женский голос сообщает об ошибках в работе при помощи Windows Speech.

А теперь про обещанные увольнения

Тестирование роуминга заказчик проводил так: сотрудник отдела ИТ с софтфона на мобильном звонил мне и гулял по складу. Обрывов связи и "заиканий" не было – точки доступа исправно передавали смартфон друг другу.

Позже мне рассказали, что после внедрения новой системы работники склада устроили настоящий саботаж, с возгласами "Так работать невозможно!" и демонстративной работой по-старинке. Видимо, смекнули, что придется работать вместо обсуждения рыбалки в очередях и за чаем. Но пришел большой босс и все наладил волшебной силой убеждения.

image alt text

Э, насяльнике, помоги! Вайвай поставиль, байтик бегаэт, адинэс считаэт, работник бешельме-мешельме нехочэт

Наша оптимизация для людей имела и побочный эффект. Оказалось, что такая орава на складе не нужна – на волне кризиса в стране это натолкнуло начальство на идею сокращения штата. Теперь изображать бурную деятельность на том складе непросто.

А у вас когда-нибудь случалось так, что внедрение во благо людям оборачивалось неприятностями для них же?

Автор: Сервер Молл

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js