1. Intro
В нашем офисе порядка 30 человек, и на всех нас приходится 1 туалет, чтобы посетить который нужно пройти коридор, дёрнуть ручку и, если не открывается дверь — смириться и ждать, когда освободится.
Включенный свет — это не показатель свободности данного объекта, т.к. рядом с ним ещё есть раковина, которая может быть занята, а сам туалет нет.
1.1 Если нет желания читать весь текст, то можно сразу перейти к демонстрации
2. Цель
Пока я работаю в этом офисе (почти 4 года), эта проблема назрела достаточно сильно, и поэтому нужно было очевидное и простое решение, дабы узнавать, свободен ли туалет или нет.
3. Простейшая схема
Простая схема всей конструкции выглядит так:
Закрыта дверь — горит красная лампочка
Открытая дверь — горит зелёная лампочка
4. Начинаем добавлять элементы
Наша компания занимается разработкой и внедрением ПО, поэтому все за компьютерами сидят почти весь день, значит, нужно вывести на веб-страничку статус свободности туалета. Наиболее надёжным и простым в реализации показалось взять концевик от автомобиля, витую пару и сервер с двумя сетевыми картами.
4.1. Как узнать, что закрыта дверь или нет
Самое простое — это сходить и посмотреть
Bryulchik предложил использовать концевик от автомобиля (Концевик Россия PS-116 R (PS 2B, AU-30B)) для определения статуса двери.
У него достаточная простая схема — если дверь закрыта, то он размыкает цепь, в обратном случае — цепь замкнута и дверь открыта, а значит всё свободно.
4.2. Тянем витую пару и подсоединяем
Есть такая штука, называется RJ-45 Loopback, она нужна для тестирования, и нет необходимости использовать вторую сетевую карту или тестер, чтобы, например, проверить, не перебит ли кабель.
Мы эти знания будем использовать для нашего проекта.
Протянули витую пару ко входу, другой конец обжали и вставили в сервер.
Линка, разумеется, нет пока что.
Берем 1-ую и 3-ю жилы и смыкаем, со -2ой и 6-ой жилой поступаем так же.
Через секунду появляется линк на порту у сервера, теперь размыкаем 2 и 6, линк пропал, в целом, это то, что нам нужно.
4.3. Крепим
Берем концевик и вешаем его на косяк у двери, смотрим, чтобы его не вырвали наши могущественные охранники, прижав дверь вплотную к косяку, но в то же время был контакт, когда дверь открыта.
1-ую и 3-ю жилы так и оставляем скрученными, прячем их под обналичник двери, на 2-ую жилу и крепим движущуюся часть концевика, 6-ую жилу на сам концевик и всё аккуратно обматываем изолентой.
4.4. Нужно больше изоленты
Как показала практика, пока нет адекватного объяснения, почему так происходит, но суть в том, что если взяться за открытые участки меди пальцами (за конец 2-ой и 6-ой жил), то появится линк (!), а если отпустить жилы, то линк не пропадёт (!!!). Это мы не смогли никак объяснить, но если не трогать ничего своими жирными пальцами, то всё будет работать как задумывалось.
5. ПО
Самая увлекательная (для меня) часть это написание ПО.
Весь комплекс разделён на 2 части — сервер, который опрашивает датчик и веб страничка.
Раз в 3 секунды mii-tool, на сервере с датчиком и двумя сетевухами, смотрит на интерфейс и его статус, а потом сбрасывает этот статус опцией -R
Если статус сменился с предыдущего, то делает простой HTTP GET запрос на сервер с веб-страничкой.
В свою очередь, на сервере с веб страничкой висит скрипт, который пишет изменённый статус в файл, а уже обычная html-страничка опрашивает этот файл и выводит на экран зелёную лампочку или красную.
6. Демонстрация
Всё, что мы сделали, можно увидеть на видео:
Комментарии (46)
brzsmg
06.05.2015 13:40+3Огромное спасибо за RJ-45 Loopback, никогда не знал об этом, вечером буду тестировать. Попытаюсь разобраться с проблемой в пункте 4.4.
AcidumIrae
06.05.2015 14:12Я правильно понял, что если кто-то выйдет из кабинки и прикроет за собой дверь она будет в занятом статусе?
la_stik Автор
06.05.2015 14:28Увы, нет.
У концевика пружина достаточно сильная, она сможет дверь оттолкнуть и дверь старая советская, у которой только ручка и щеколда.sashabeep
06.05.2015 14:35Вы недостаточно тестировали систему… А если замок сменят на захлопывающийся? PIR датчик стоит копейки
la_stik Автор
06.05.2015 14:38+2Мы исходили из того, что у нас есть, а у нас есть дверь, без язычка и ручки и 1 шпингалет, который всего лишь раз меняли за 4 года.
Это дверь, как в сельском туалете.JerleShannara
06.05.2015 16:09+11У нас был один туалет, замок без язычка, ручка, шпингалет, пара PIR датчиков, полсотни пользователей, несколько концевиков, камера и raspberry pi. Не ничего ужаснее, чем контроль сортира обработкой изображений с камеры на raspberry, но рано или поздно мы дойдем и до этой дури… =)
Corpsemeister
06.05.2015 14:20+3Вариант. Но ворованный пешеходный светофор я бы все же повесил на видном месте. Иногда все же голову поднять проще.
Но здесь все зависит от геометрии пространства.
Sadler
06.05.2015 14:28+1Как показала практика, пока нет адекватного объяснения почему так происходит, но суть в том, что если взяться за открытые участки меди пальцами (за конец 2ой и 6ой жил), то появится линк (!), а если отпустить жилы, то линк не пропадёт (!!!). Это мы не смогли никак объяснить, но если не трогать ничего своими жирными пальцами, то всё будет работать как задумывалось.
Моя Arduino тоже себя так вела, пока я не повесил подтягивающий резистор.
alexcom
06.05.2015 14:30+16Осталось доделать статистику. Количество посещений, средний вес, количество метана…
Iv38
06.05.2015 14:34+5Автомобильный концевик, наверное, несколько проще достать, но смонтировать проще герконовый датчик открытия двери.
muryk
06.05.2015 14:42+14Естественное развитие системы — организация очереди и выдача номерков. Фидбяк, отзывы, учет метража тбумаги. Это же поле непаханое.
dimonnwc3
06.05.2015 17:20Анализатор всего, что люди туда выпускают, и личная учетная запись пользователя, где видны данные о том, как он питается и советы по улучшению питания.
mtp
06.05.2015 15:30+4«Предыдущий пользователь системы — Иван Пупкин. Поставьте лайк или напишите комментарий»
LampTester
06.05.2015 16:16Как показала практика, пока нет адекватного объяснения, почему так происходит, но суть в том, что если взяться за открытые участки меди пальцами (за конец 2-ой и 6-ой жил), то появится линк (!), а если отпустить жилы, то линк не пропадёт (!!!). Это мы не смогли никак объяснить, но если не трогать ничего своими жирными пальцами, то всё будет работать как задумывалось.
Похоже на то, что на входе сетевой карты сигнал попадает на триггеры Шмитта (частое решение) или другую подобную схему с гистерезисом.
Одно из возможных объяснений может быть таким: на длинный кабель наводится помеха. Когда вы берете его пальцами, ее уровень растет и выводит входные цепи из области гистерезиса в, например, лог. 1 (условно) — карта регистрирует линк. Вы отпускаете провод, уровень помехи падает, но, видимо потому, что провод длинный, уровень помехи велик настолько, чтобы находиться в области гистерезиса входной цепи — карта продолжает регистрировать линк, т.к. до того он был зарегистрирован, а обратного перехода через зону гистерезиса не произошло из-за помех.
Попробуйте включить между проблемными линиями резистор, например, на 100 кОм. Может помочь.
Jey
06.05.2015 16:40+1Забавное совпадение — только сегодня решил у себя на офисе похожую задачу, только немного другими средствами. В качестве признака «занятости» использовал включенный свет — если он включен, то занято, если выключен — свободно. Есть вероятность, что свет забудут выключить, но тогда срабатывает «напоминалка». А реализовано было с помощью беспроводного модуля Ноолайт и фоторезистора на 1МОм. Провода тянуть не надо было, на сборку, монтаж и подключение к системе Умного Офиса ушло минут 15 не больше. Подробности по ссылке
shpaker
06.05.2015 16:52Отличная идея. Мы на работе поступили ещё проще. У нас на этаже один служебный туалет, и около пары сотен человек (а может больше) на четырёх этажах здания.
Туалет закрывается на ключ, внутри есть металлическая щеколда и выключатель света. Проблемы были следующие:
1. Занятость туалета определялась тщательным изучением щели между дверью и полом;
2. Включенный свет в туалете не гарантия того что в нём кто-то есть;
3. Периодически закрытый изнутри занятый туалет пытались открыть снаружи ключом.
В итоге вывели светодиод выпаянный из старой мышки, батарейный блок (внутри туалета прилепили на двухсторонний скотч) на 4 АА батарейки. Как выяснилось единственным гарантированным детектором статуса туалета является задвинутая щеколда — вот в неё мы и засунули металлическую пластинку к которой подведен тоненький проводок, второй проводок к этой фиговине в которую задвигается щеколда. Теперь когда щеколда задвигается — снаружи светиться светодиод. Все довольны ))
ivoneug
06.05.2015 19:04Делали подобную систему у себя в офисе. У нас использовалась связка: беспроводной PIR-датчик + RaspberryPi + Win/Android клиент. Пришлось так изгаляться, что бы не испортить ремонт в офисе.
milast
07.05.2015 02:23Что мелочиться-то, сразу бы электронную очередь в туалет, запись через web-интерфейс.
Archon
07.05.2015 11:26Вы будете смеяться, но реализацию электронной очереди в туалет я видел своими глазами. Запись в неё происходила из местного АРМа, в одном списке с электронной очередью на обед и перекур.
DarkByte
08.05.2015 09:05В случае, когда требуется максимальное присутствие сотрудника на месте и заблаговременное планирование времени его отсутствия, то оно так и есть. Помнится на предыдущем месте работы видел веб-морду сотрудников колл-цента. Вот у них кроме очереди входящих звонков ещё были кнопки «Встать в очередь на обед» и «Вставь в очередь в туалет». Очереди работали в автоматическом режиме, но начальник отдела так же мог ими управлять.
1337
07.05.2015 14:57+1Что-то подобное кстати уже было: habrahabr.ru/post/216059
Но пора систему усовершенствовать: интеграция со Slack, пуши в YO!, статус туалета в конфе Telegram и т.д. и т.п. :)
Ну и конечно же регистрацию, чекины, статистику, комментарии, лайки :d
maxru
07.05.2015 15:47Осталось выяснить, что делать с теми, кто не закрывает за собой дверь.
А также доработать устройство входной двери, чтобы нельзя было выйти, не помыв руки.
Antispammer
10.05.2015 04:06Осталось запилить определение посетителя в выгребной яме и можно автоматизировать российские туалеты.
www.youtube.com/watch?v=HxklYqPdiIY
cmepthuk
15.05.2015 07:42Гипотетически, у г-на N появилась необходимость исследовать вашу сеть на предмет наличия некоторой информации. «Из вне» пробиться ему — не удалось по ряду каких либо причин. Он берет ноутбук, и пытается найти беспроводные сети или еще что, ходя вокруг да около вашей организации. Прикидывается случайным посетителем, но терпит неудачу. Задача защиты доступа ко внутренней сети реализована должным образом, не зря безопасники получают свою премию! Г-н N расстраивается, и заходит в туалет по нужде. Закрыв щеколду, с ноутбуком подмышкой он видит витуху. Витуху, с кнопкой-датчиком. Витуху, подключенную к кнопке в сортире, ведущую к ближайшему от сервера свичу в обход систем безопасности. Г-н N невольно улыбается :)
la_stik Автор
15.05.2015 07:48+1Витая пара подключена напрямую к сетевой карте (без каких либо маршрутизаторов по дороге) и у интерфейса сетевой карты нет IP.
Маловероятно, даже если кто-либо решить с ноутбуком и обжимкой засесть в туалете, что у него удастся провернуть свой коварный план, хотя его скорее охранники вынесут из «кабинета» :)brzsmg
15.05.2015 12:38Г-н N настроит DHCP. На Windows по дефолту подключение примет IP. Но в корпоративную сеть он все равно не попадет
(без каких либо маршрутизаторов по дороге)
и если нет уязвимостей на туалетном сервере.
ПО может анализировать не выдал ли кто IP, и если выдал то бить тревогу! Ему «достанется» за оборванную «кнопку датчик». И улыбка невольно спадет с лица г-на N.
webself
15.05.2015 12:42От этого есть хорошая встроенная защита. Контроллер туалета начнет не верно отображать статус и туалет сразу забьется кучей народа, желающего сходить «журнал почитать». Хакера линчует разъяренная толпа.
brzsmg
15.05.2015 12:47Наоборот верный. Он же быстро обожмет и подключит с буку. Линк = закрыто = занято.
kAIST
За RJ-45 Loopback спасибо, интересное решение! А то некоторые целую raspberry pii на такую задачу вешают.
lolipop
теперь для умного дома будут использовать старые 48-портовые управляемые 100мбит-свитчи :)