#OFFICE #CPP #PYTHON
Автоматизация офисной кофемашины
Коллективная оплата за кофе в офисе
проблема
В некоторых офисах кофе покупается самими сотрудниками.
Встает вопрос о сборе денег и распределении бюджета между пьющими кофе. Сначала мы обходились Excel файлом, где публиковались взносы "на кофе".
Шли месяцы, количество пьющих кофе начало увеличиваться, но сдавать деньги сотрудники не спешили. Беседы к успеху не привели, душа требовала справедливости, рука потянулась за паяльником...
Занимаясь очередной интеграцией системы контроля и управления доступом (СКУД) в нашу систему промышленной автоматизации, меня осенило решение:
решение
Считыватель карт крепится рядом с кофемашиной, реле (традиционно открывающее дверь) подключается к кнопке приготовления кофе. У всех сотрудников есть карты для прохода в бизнес центр. По ним и будет наливаться кофе:
"Приготовление кофе" = событие "проход по карте".
Далее нужна программа, опрашивающая контроллер СКУД и передающая события на сервер.
Сервер рисует статистику употребления кофе и хранит сданные деньги "на кофе"!
(далее можно прикрутить Яндекс.деньги и сервис по доставке кофе, привет amazon dash button...)

Сказано-сделано!
Разогрели паяльник, чуть-чуть препарировали кофемашину и у нее появился считыватель карт!

Техническое отступление
Кофемашина Trevi spidem. В корпус установлен RJ45. В витой паре 2 провода от реле и 6 проводов к считывателю Proximity карт. Кнопка "приготовление кофе" была отпаяна, параллельно ей припаяны провода от реле.

Интегрированных СКУД систем у нас в офисе висит множество. Выбрал наиболее "бесхозную" - АПДА, но подойдет любая, хоть Arduino.
Внутренности кофемашины
Внедрение
1
Занесение в СКУД всех карт + "гостевая"
(Гостевой кофе оплачивало руководство. Карта секретаря.)
2
Подключение СКУД к кофемашине. Кофе готовится только по пропускам в офис.
3
Наблюдение за изменением отношения коллег к потреблению кофе
4
Запуск и анонсирование вебсервера
5
Наблюдение за изменением отношения коллег к потреблению кофе
6
Запуск финансовой части и активация "блокировки"
7
Наблюдение за изменением отношения коллег к потреблению кофе
8
Первая "блокировка"
9
Отношение к употреблению кофе изменено. Mission completed!
Вебсервер
Мне давно хотелось разобраться в достижениях современного веб-программирования, поэтому был написан вебсервер на котором творится кофебухгалтерия.

Во вкладке "События" можно посмотреть график употребления кофе, запросить данные за определенный период и определённого сотрудника:

Под ним выводится информация о событиях "приготовление кофе":

Откуда берется цена? Из цены за упаковку кофе, поделенную на количество чашек кофе, на которые ее хватило. За это отвечает вкладка "Покупки кофе":

Можно посмотреть общий баланс всех пользователей. Порог отключения - это число в рублях, при превышении которого, карта пользователя блокируется и кофе уже не наливается... В СКУД можно пометить карту "заблокирована" или просто удалить из памяти.

В таблице можно увидеть кто начальник. -200 сделал на время тестирования.
Вкладка "Платежи" говорит нам, кто сколько сдал на кофе.

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

У пользователя могут быть полномочия по приему денег, добавления новой пачки кофе, добавления нового пользователя..
Сделано сумбурно:


Итак, на страже справедливости и кофе работают следующие технологии:
СКУД АПДА
адаптер, опрашивающий СКУД
protobuf - протокол обмена адаптера с вебсервером
django - вебфреймворк вебсервера
bootstrap - разметка страниц
jquery, ajax - формирование страниц
flot charts - отображение графиков

Самое дорогое из оборудования - контроллер турникетов. Он здесь только потому, что висел в отделе.
Вместо него подойдет Arduino (3$)+RFID Card Key (10$) (туториал как прикрутить), вебсервер можно поднять на одноплатном компьютере: Raspberry PI (50$).
P.S. Самое интересное: Что было с коллегами, кто не сдавал деньги на кофе. Они продолжили пить кофе как ни в чем не бывало, прикладывая карту к считывателю. Когда их баланс дошел до -200 рублей и карты заблокировались, они пришли "как ни в чем не бывало" со словами "я слышал тут на кофе собирают" и сдали деньги. Win!