Как стать автором
Обновить

Определяем, свободен ли туалет, и выводим статус в web

Время на прочтение2 мин
Количество просмотров22K
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. Демонстрация

Всё, что мы сделали, можно увидеть на видео:
Теги:
Хабы:
Всего голосов 39: ↑35 и ↓4+31
Комментарии46

Публикации

Истории

Ближайшие события

19 августа – 20 октября
RuCode.Финал. Чемпионат по алгоритмическому программированию и ИИ
МоскваНижний НовгородЕкатеринбургСтавропольНовосибрискКалининградПермьВладивостокЧитаКраснорскТомскИжевскПетрозаводскКазаньКурскТюменьВолгоградУфаМурманскБишкекСочиУльяновскСаратовИркутскДолгопрудныйОнлайн
3 – 18 октября
Kokoc Hackathon 2024
Онлайн
24 – 25 октября
One Day Offer для AQA Engineer и Developers
Онлайн
25 октября
Конференция по росту продуктов EGC’24
МоскваОнлайн
26 октября
ProIT Network Fest
Санкт-Петербург
7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн
7 – 8 ноября
Конференция «Матемаркетинг»
МоскваОнлайн
15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань