1. Intro

В нашем офисе порядка 30 человек, и на всех нас приходится 1 туалет, чтобы посетить который нужно пройти коридор, дёрнуть ручку и, если не открывается дверь — смириться и ждать, когда освободится.

Включенный свет — это не показатель свободности данного объекта, т.к. рядом с ним ещё есть раковина, которая может быть занята, а сам туалет нет.

1.1 Если нет желания читать весь текст, то можно сразу перейти к демонстрации

2. Цель

Пока я работаю в этом офисе (почти 4 года), эта проблема назрела достаточно сильно, и поэтому нужно было очевидное и простое решение, дабы узнавать, свободен ли туалет или нет.

3. Простейшая схема

Простая схема всей конструкции выглядит так:
Закрыта дверь — горит красная лампочка
Открытая дверь — горит зелёная лампочка

4. Начинаем добавлять элементы

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

4.1. Как узнать, что закрыта дверь или нет

Самое простое — это сходить и посмотреть
Bryulchik предложил использовать концевик от автомобиля (Концевик Россия PS-116 R (PS 2B, AU-30B)) для определения статуса двери.

image

У него достаточная простая схема — если дверь закрыта, то он размыкает цепь, в обратном случае — цепь замкнута и дверь открыта, а значит всё свободно.

4.2. Тянем витую пару и подсоединяем

Есть такая штука, называется RJ-45 Loopback, она нужна для тестирования, и нет необходимости использовать вторую сетевую карту или тестер, чтобы, например, проверить, не перебит ли кабель.

image

Мы эти знания будем использовать для нашего проекта.
Протянули витую пару ко входу, другой конец обжали и вставили в сервер.

Линка, разумеется, нет пока что.
Берем 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)


  1. kAIST
    06.05.2015 13:14
    +6

    За RJ-45 Loopback спасибо, интересное решение! А то некоторые целую raspberry pii на такую задачу вешают.


    1. lolipop
      06.05.2015 14:16
      +12

      теперь для умного дома будут использовать старые 48-портовые управляемые 100мбит-свитчи :)


  1. brzsmg
    06.05.2015 13:40
    +3

    Огромное спасибо за RJ-45 Loopback, никогда не знал об этом, вечером буду тестировать. Попытаюсь разобраться с проблемой в пункте 4.4.


  1. AcidumIrae
    06.05.2015 14:12

    Я правильно понял, что если кто-то выйдет из кабинки и прикроет за собой дверь она будет в занятом статусе?


    1. la_stik Автор
      06.05.2015 14:28

      Увы, нет.
      У концевика пружина достаточно сильная, она сможет дверь оттолкнуть и дверь старая советская, у которой только ручка и щеколда.


      1. sashabeep
        06.05.2015 14:35

        Вы недостаточно тестировали систему… А если замок сменят на захлопывающийся? PIR датчик стоит копейки


        1. la_stik Автор
          06.05.2015 14:38
          +2

          Мы исходили из того, что у нас есть, а у нас есть дверь, без язычка и ручки и 1 шпингалет, который всего лишь раз меняли за 4 года.
          Это дверь, как в сельском туалете.


          1. JerleShannara
            06.05.2015 16:09
            +11

            У нас был один туалет, замок без язычка, ручка, шпингалет, пара PIR датчиков, полсотни пользователей, несколько концевиков, камера и raspberry pi. Не ничего ужаснее, чем контроль сортира обработкой изображений с камеры на raspberry, но рано или поздно мы дойдем и до этой дури… =)


      1. AcidumIrae
        06.05.2015 15:17

        Почему «увы»? Пружина это хорошо.


  1. Corpsemeister
    06.05.2015 14:20
    +3

    Вариант. Но ворованный пешеходный светофор я бы все же повесил на видном месте. Иногда все же голову поднять проще.
    Но здесь все зависит от геометрии пространства.


  1. Sadler
    06.05.2015 14:28
    +1

    Как показала практика, пока нет адекватного объяснения почему так происходит, но суть в том, что если взяться за открытые участки меди пальцами (за конец 2ой и 6ой жил), то появится линк (!), а если отпустить жилы, то линк не пропадёт (!!!). Это мы не смогли никак объяснить, но если не трогать ничего своими жирными пальцами, то всё будет работать как задумывалось.
    Моя Arduino тоже себя так вела, пока я не повесил подтягивающий резистор.


  1. alexcom
    06.05.2015 14:30
    +16

    Осталось доделать статистику. Количество посещений, средний вес, количество метана…


  1. Iv38
    06.05.2015 14:34
    +5

    Автомобильный концевик, наверное, несколько проще достать, но смонтировать проще герконовый датчик открытия двери.


  1. muryk
    06.05.2015 14:42
    +14

    Естественное развитие системы — организация очереди и выдача номерков. Фидбяк, отзывы, учет метража тбумаги. Это же поле непаханое.


    1. kAIST
      06.05.2015 15:13

      Аха, и автоинформатов «Иван Сергеевич, пройдите в кабинку М» )


    1. dimonnwc3
      06.05.2015 17:20

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


      1. LampTester
        06.05.2015 21:30

        Где-то я такое уже видел…


  1. nerudo
    06.05.2015 14:49
    +11

    Как сложно все. Веб-камеру туда и вопрос решен — туалет всегда свободен ;)


    1. kAIST
      06.05.2015 15:16

      Где то это было уже было )) веб камера использовалась для определения, есть ли человек внутри или нет, без трансляции естественно.


      1. shogunkub
        06.05.2015 19:14
        +1

        Гораздо проще датчик движения повесить. Правда на унитазе шевелиться придётся, хотя бы освежитель взять почитать…


        1. Urvin
          07.05.2015 11:34

          Откройте для себя датчик присутствия


  1. mtp
    06.05.2015 15:30
    +4

    «Предыдущий пользователь системы — Иван Пупкин. Поставьте лайк или напишите комментарий»


  1. r00tGER
    06.05.2015 15:49
    +1

    > на 30 человек 1 туалет, и так уже 4 года (как минимум).

    А может уже пора второй туалет открыть?


    1. nerudo
      06.05.2015 15:56
      +6

      Или народ поувольнять


  1. LampTester
    06.05.2015 16:16

    Как показала практика, пока нет адекватного объяснения, почему так происходит, но суть в том, что если взяться за открытые участки меди пальцами (за конец 2-ой и 6-ой жил), то появится линк (!), а если отпустить жилы, то линк не пропадёт (!!!). Это мы не смогли никак объяснить, но если не трогать ничего своими жирными пальцами, то всё будет работать как задумывалось.


    Похоже на то, что на входе сетевой карты сигнал попадает на триггеры Шмитта (частое решение) или другую подобную схему с гистерезисом.

    Одно из возможных объяснений может быть таким: на длинный кабель наводится помеха. Когда вы берете его пальцами, ее уровень растет и выводит входные цепи из области гистерезиса в, например, лог. 1 (условно) — карта регистрирует линк. Вы отпускаете провод, уровень помехи падает, но, видимо потому, что провод длинный, уровень помехи велик настолько, чтобы находиться в области гистерезиса входной цепи — карта продолжает регистрировать линк, т.к. до того он был зарегистрирован, а обратного перехода через зону гистерезиса не произошло из-за помех.

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


  1. Jey
    06.05.2015 16:40
    +1

    Забавное совпадение — только сегодня решил у себя на офисе похожую задачу, только немного другими средствами. В качестве признака «занятости» использовал включенный свет — если он включен, то занято, если выключен — свободно. Есть вероятность, что свет забудут выключить, но тогда срабатывает «напоминалка». А реализовано было с помощью беспроводного модуля Ноолайт и фоторезистора на 1МОм. Провода тянуть не надо было, на сборку, монтаж и подключение к системе Умного Офиса ушло минут 15 не больше. Подробности по ссылке


  1. serafims
    06.05.2015 16:44

    Следующее решение — определять, кто сколько сидит и в конце месяца рассылать статистику по почте)


    1. shpaker
      06.05.2015 16:53
      +1

      … определять, кто сколько сидит и в конце месяца рассылать счета на оплату по почте ))


  1. shpaker
    06.05.2015 16:52

    Отличная идея. Мы на работе поступили ещё проще. У нас на этаже один служебный туалет, и около пары сотен человек (а может больше) на четырёх этажах здания.
    Туалет закрывается на ключ, внутри есть металлическая щеколда и выключатель света. Проблемы были следующие:
    1. Занятость туалета определялась тщательным изучением щели между дверью и полом;
    2. Включенный свет в туалете не гарантия того что в нём кто-то есть;
    3. Периодически закрытый изнутри занятый туалет пытались открыть снаружи ключом.
    В итоге вывели светодиод выпаянный из старой мышки, батарейный блок (внутри туалета прилепили на двухсторонний скотч) на 4 АА батарейки. Как выяснилось единственным гарантированным детектором статуса туалета является задвинутая щеколда — вот в неё мы и засунули металлическую пластинку к которой подведен тоненький проводок, второй проводок к этой фиговине в которую задвигается щеколда. Теперь когда щеколда задвигается — снаружи светиться светодиод. Все довольны ))


  1. Equin0x
    06.05.2015 16:59

    Нужно еще сделать систему бронирования — чтобы туалет не оказался занятым за время прохода по коридору )


    1. kovyl
      06.05.2015 19:50
      +1

      А я в основном мечтаю о watchdog-таймере и катапульте для выкидываня особенно задумчивых посетителей.


  1. ivoneug
    06.05.2015 19:04

    Делали подобную систему у себя в офисе. У нас использовалась связка: беспроводной PIR-датчик + RaspberryPi + Win/Android клиент. Пришлось так изгаляться, что бы не испортить ремонт в офисе.


  1. Uris
    06.05.2015 19:33

    Не дай бог случиться поносу…


  1. milast
    07.05.2015 02:23

    Что мелочиться-то, сразу бы электронную очередь в туалет, запись через web-интерфейс.


    1. Archon
      07.05.2015 11:26

      Вы будете смеяться, но реализацию электронной очереди в туалет я видел своими глазами. Запись в неё происходила из местного АРМа, в одном списке с электронной очередью на обед и перекур.


    1. DarkByte
      08.05.2015 09:05

      В случае, когда требуется максимальное присутствие сотрудника на месте и заблаговременное планирование времени его отсутствия, то оно так и есть. Помнится на предыдущем месте работы видел веб-морду сотрудников колл-цента. Вот у них кроме очереди входящих звонков ещё были кнопки «Встать в очередь на обед» и «Вставь в очередь в туалет». Очереди работали в автоматическом режиме, но начальник отдела так же мог ими управлять.


  1. 1337
    07.05.2015 14:57
    +1

    Что-то подобное кстати уже было: habrahabr.ru/post/216059

    Но пора систему усовершенствовать: интеграция со Slack, пуши в YO!, статус туалета в конфе Telegram и т.д. и т.п. :)
    Ну и конечно же регистрацию, чекины, статистику, комментарии, лайки :d


  1. maxru
    07.05.2015 15:47

    Осталось выяснить, что делать с теми, кто не закрывает за собой дверь.
    А также доработать устройство входной двери, чтобы нельзя было выйти, не помыв руки.


  1. prishelec
    07.05.2015 15:50

    Ох ТЫЖ блин, ну вы софтовые ГИГАНТЫ. Хотя я бы не очень желал работать в коллективе где 30 чел на место. Пришлось бы, читерить и иногда делать прогой захват очереди.

    Пива точно не выпьешь. (


    1. la_stik Автор
      15.05.2015 07:46

      Тариф «Управляй очередью» от 1000 руб./мес.


  1. Antispammer
    10.05.2015 04:06

    Осталось запилить определение посетителя в выгребной яме и можно автоматизировать российские туалеты.

    www.youtube.com/watch?v=HxklYqPdiIY


  1. cmepthuk
    15.05.2015 07:42

    Гипотетически, у г-на N появилась необходимость исследовать вашу сеть на предмет наличия некоторой информации. «Из вне» пробиться ему — не удалось по ряду каких либо причин. Он берет ноутбук, и пытается найти беспроводные сети или еще что, ходя вокруг да около вашей организации. Прикидывается случайным посетителем, но терпит неудачу. Задача защиты доступа ко внутренней сети реализована должным образом, не зря безопасники получают свою премию! Г-н N расстраивается, и заходит в туалет по нужде. Закрыв щеколду, с ноутбуком подмышкой он видит витуху. Витуху, с кнопкой-датчиком. Витуху, подключенную к кнопке в сортире, ведущую к ближайшему от сервера свичу в обход систем безопасности. Г-н N невольно улыбается :)


    1. la_stik Автор
      15.05.2015 07:48
      +1

      Витая пара подключена напрямую к сетевой карте (без каких либо маршрутизаторов по дороге) и у интерфейса сетевой карты нет IP.
      Маловероятно, даже если кто-либо решить с ноутбуком и обжимкой засесть в туалете, что у него удастся провернуть свой коварный план, хотя его скорее охранники вынесут из «кабинета» :)


      1. brzsmg
        15.05.2015 12:38

        Г-н N настроит DHCP. На Windows по дефолту подключение примет IP. Но в корпоративную сеть он все равно не попадет

        (без каких либо маршрутизаторов по дороге)

        и если нет уязвимостей на туалетном сервере.

        ПО может анализировать не выдал ли кто IP, и если выдал то бить тревогу! Ему «достанется» за оборванную «кнопку датчик». И улыбка невольно спадет с лица г-на N.


    1. webself
      15.05.2015 12:42

      От этого есть хорошая встроенная защита. Контроллер туалета начнет не верно отображать статус и туалет сразу забьется кучей народа, желающего сходить «журнал почитать». Хакера линчует разъяренная толпа.


      1. brzsmg
        15.05.2015 12:47

        Наоборот верный. Он же быстро обожмет и подключит с буку. Линк = закрыто = занято.