modulepackage
0.0.0-20250209192236-40f4ea77942e
Repository: https://github.com/soadmized/sentinel.git
Documentation: pkg.go.dev
# README
SENTINEL
Что такое SENTINEL
Проект состоит из трех частей:
- микроконтроллер с датчиками
- сервер для хранения и обработки полученных с датчиков значений
- tg-бот для получения значений пользователем
Устройство сервера
API сервера:
/save_values
- сохраняет полученную от микроконтроллера пачку данных, используется микроконтроллером/last_values
- получение последней сохраненной пачки данных (из faststorage), используется пользователем и ботом/status
- проверка состояния микроконтроллеров, используется пользователем и ботом/sensor_ids
- получение списка подключенных микроконтроллеров, используется пользователем и ботом
Сделан на echo. Основное хранилище данных - InfluxDB. Микроконтроллер шлет пачку данных каждые три секунды.
Последнее полученное значение сохраняется в памяти, так как чаще всего пользователю нужно именно оно (см internal/repo/faststorage
).
При этом пачки данных от микроконтроллера не пишутся сразу в Influx.
Они попадают в очередь (сделана на asynq), где собираются в пачки побольше, и уже эти большие пачки записываюся в Influx либо раз в 5 минут, либо если количество маленьких тасок превысит 100.
TODO:
- При ошибке обработки таски перекладывать ее в retry очередь
- Если таска не обработалась в retry очереди, то отправлять сообщение в кафку