Учет рабочего времени. MajorDoMo+WiFi-IoT+Telegramm

Интересные кейсы Комментариев нет

Была поставлена задача сделать учет рабочего времени для одного работника, приходя отмечается по отпечатку пальца ,уходя отмечается по отпечатку пальца, сообщения о приходе и уходе должны приходить в телеграмм, так же через телеграмм должны быть доступны отчеты.Поскольку система считывания отпечатков пальцев стоит в одном городе, а руководитель живет в другом то локально систему не сделать, по этому я использую свой VPS сервер на котором уже стоит MajorDoMo, писать клиента для отправки сообщений было лениво и я взял прошивку WiFi-IoT c включенными опциями: mqtt клиент и UART bridge, в качестве сканера отпечатков пальцев у меня использован AS608 подключенный к Arduino nano. Прокладка из ардуино была поставлена из-за того что не хотелось писать клиента, прошивку от ардуино я взял в интернете и немного её модернизировал, она должна отправлять в uart порт и как следствие на сервер сообщение parametr и через пробел номер ячейки в которую записан отпечаток пальца. В общем в MajorDoMo по MQTT должнен приходить номер ячейки отпечатка пальца, как это сделать вариантов много.

Схему и скетч для ардуино я взял отсюда, скетч немного модернизировал, добавил отправку с сериал порт номер ячейки пальца, сделал в начале переменные для длительности зумера и открытия замка (отображение сообщения).

 

В MajorDoMo надо установить модуль MQTT и Telegramm и настроить их. Для учета пользователей я создал класс dostup со свойствами id и name

Создал объекты: setting для хранения настроек и объекты для работников rab1, rab2 ...

в setting добавил свойства:

эти настройки используются для отчетов в Telegramm, так же в setting добавляем метод write.

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

Теперь нам надо в модуле MQTT найти свойство которое передает микроконтроллер и отредактировать его добавив выполнение метода

теперь будет выполняться наш метод и отсылать сообщения в телеграмм.

Теперь нам надо сделать отчеты через Telegramm. Делаем кнопку Отчеты и добавляем обработку messageHook следующего содержания:

в результате мы получим вот такое меню:

периоды и работник меняются кнопками: Начало, Конец и Работник соответственно

Для отчета выбираем соответствующий отчет

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

Поделитесь в соц сетях

Теги: