SmartHome — данные о вашем доме в режиме реального времени!


Обзор моего проекта

привет, сегодня мы рассмотрим проект, который будет собирать данные о температуре и влажности в вашем доме в режиме реального времени!


прежде чем говорить в деталях о приложении, важно понять архитектуру.

Как мы можем видеть, есть много различных частей:

  • Backend: написание с использованием node js и TS, интеграция с redis с помощью redis OM, интеграция с MongoDb, подключение Aws Iot в реальном времени MQTT и использование модели Tensorflow js. Используйте redis для чтения сообщений датчиков реального времени через MQTT канал «машины» и попытайтесь найти датчик, связанный с ним, если он найден, вставьте каталог полученных данных в MongoDb и redis для быстрого получения данных реального времени в графике фронтенда. Логика сигнализации связана с даталогами, если при создании даталога срабатывает правило сигнализации, то создается активная сигнализация и будет закрыта только тогда, когда поступит сигнал ниже порога срабатывания, все сигналы сохраняются и не удаляются.Tensorflow используется для чтения очень простой регрессионной модели и использования ее для прогнозирования на следующий час.Самые крутые возможности бэкенда это:
    • Интеграция Aws Iot
    • Интеграция Tensorflow Js для разбора существующей ML модели и использования ее в JS
    • Интеграция Redis для кэширования данных и использования redis JSON и redis search для получения данных в реальном времени.
    • Генератор моделей Redis, который берет существующую модель Mongoose и разбирает ее в модель Redis без логики кода!
    • правила оповещения, которые хранятся в базе данных! пример:
{
    "_id" : ObjectId("6300e639830e983ff546f7af"),
    "sensorId" : ObjectId("62fce2bc830e983ff546f775"),
    "rule" : {
        ">" : [
            {
                "var" : "temp"
            },
            25.0
        ]
    },
    "name" : "Bedroom High Temperature",
    "type" : "rule"
}
Вход в полноэкранный режим Выйти из полноэкранного режима

Как вы видите, правило — это своего рода логика!, на самом деле это возможно с помощью модуля JSON логики.

  • Frontend: получение данных из API бэкенда для создания графика на основе пользовательского диапазона времени, в графике вы можете выбрать датчик, данные которого вы хотите видеть, есть также средняя температура и влажность карты в нижней части приборной панели, которые показывают вам среднее значение в выбранном диапазоне. Есть также карта дома, чтобы увидеть расположение датчиков и иметь представление о пространстве, карта «SUN» показывает фактические значения, а не средние. Последняя карта показывает прогноз на следующий час. Все компоненты поддерживают функцию мульти-темы для персонализации пользовательского опыта.

Фронтенд также имеет мобильную поддержку, но только горизонтальную, а не вертикальную!

  • Датчики: отправляют данные о температуре и влажности в реальном времени каждые 5 минут, интегрированы с Aws-Iot. Эти датчики сделаны с использованием Mongoose Os, действительно крутого фреймворка, который помогает увеличить скорость работы, используя аналогичный JS код. код см. в репо Firmware

  • Redis: используется для хранения кэша и частичных данных каталогов, чтобы ускорить время ответов и упростить поиск графических данных.

  • MongoDb: используется для хранения всех остальных данных, таких как датчики и сигналы тревоги.

Предварительные просмотры

Предварительный просмотр в реальном времени: Сайт
после входа на сайт выберите диапазон и наслаждайтесь им!

Теперь, когда мы знаем основу приложения, пришло время поговорить об интеграции с redis, это очень помогает для графиков данных в реальном времени, потому что, как мы уже говорили, данные частично сохраняются в redis, чтобы взять их для графиков, до redis только с mongo время отклика составляло 300 мс, после 120 мс, что очень здорово! Я также использую кэш redis для хранения наиболее важных и медленных конечных точек (например, tensorflow), и это было очень полезно, вот список конечных точек и используемого кэша:

  • datalogs/:
    • /predict: прогнозирование данных на следующий час, используя кэш redis для хранения данных в течение 15 минут.
    • /ambient/now: фактические данные
    • /:sensorId/:interval: получение даталогов датчика с использованием redis JSON и redis Search!
    • /ambient/humidity/:interval: Средняя влажность
    • /ambient/temperature/:interval: Средняя температура
  • alarms/:
    • /active: получить активные алармы, использовать кэш redis для хранения в течение 1 минуты
    • /finished: получить завершенные сигналы тревоги: использовать кэш redis для хранения в течение 3 минут
  • sensors/: получить список датчиков, использовать кэш redis для хранения в течение 30 минут.

Итак, полный список возможностей фронтенда вы можете попробовать в живом демо!

  • График данных в реальном времени с датчиков моего дома по 1 или более датчикам за интервал времени
  • 2D карта для получения представления о положении датчиков
  • активные сигналы тревоги на данный момент!
  • средняя температура и влажность в выбранном диапазоне
  • карта с актуальной информацией
  • прогнозирование на следующие часы с помощью ML!

функция фьючерсов

единственное, на что у меня не хватило времени, это сделать полную ML модель, на самом деле эта простая модель использует регрессию, но полная модель — это модель предвидения временных рядов!

Категория представления: MEAN/MERN Mavericks

видео обзор проекта Видео

Используемый язык

Node js / TS для бэкенда
Angular для фронтенда
Mongoose Os для кода прошивки

Ссылка на код

Живой предварительный просмотр: Сайт
после входа на сайт выберите диапазон и наслаждайтесь!
Репо BackeEnd:

marco-bertelli / iotSensorBackend

Бэкенд с node js и TS для хакатона redis

SmartHome

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

Обзорное видео

Вот короткое видео, которое объясняет проект и то, как он использует Redis:

Как это работает

Перед началом работы важно понять архитектуру приложения:

как мы видим, есть много различных частей:

  • Backend: написание с использованием node js и TS, интеграция с redis с помощью redis OM, интеграция с MongoDb, подключение Aws Iot в реальном времени MQTT и использование модели Tensorflow js. Используйте redis для чтения сообщений датчиков реального времени через MQTT канал «машины» и попытайтесь найти датчик, связанный с ним, если он найден, вставьте каталог полученных данных в MongoDb и redis для быстрого…

Посмотреть на GitHub

Репо FrontEnd:

marco-bertelli
/
iotSensorFrontend

Ангулярный ngx-админ фронтенд для вызова redis

SmartHome

это проект, который получает данные о температуре и влажности в реальном времени от esp32 с датчиком температуры DHT22 AM2302. после этого данные хранятся в redis и MongoDb и обрабатываются из фронтенда (см. другие репозитории для получения дополнительной информации о фронтенде).

Обзорное видео

Вот короткое видео, которое объясняет проект и то, как он использует Redis:

Как это работает

Перед началом работы важно понять архитектуру приложения:

как мы видим, есть много различных частей:

  • Backend: написание с использованием node js и TS, интеграция с redis с помощью redis OM, интеграция с MongoDb, подключение Aws Iot в реальном времени MQTT и использование модели Tensorflow js. Используйте redis для чтения сообщений датчиков реального времени через MQTT канал «машины» и попытайтесь найти датчик, связанный с ним, если он найден, вставьте каталог полученных данных в MongoDb и redis для быстрого…

Посмотреть на GitHub

Репо прошивки:

marco-bertelli
/
iotSensorFirmware

код прошивки для датчиков esp32

SmartHome

это проект, который получает данные о температуре и влажности в реальном времени от esp32 с датчиком температуры DHT22 AM2302. после этого данные хранятся в redis и MongoDb и обрабатываются из фронтенда (см. другие репозитории для более подробной информации о фронтенде).

Обзорное видео

Вот короткое видео, которое объясняет проект и то, как он использует Redis:

Как это работает

Перед началом работы важно понять архитектуру приложения:

как мы видим, есть много различных частей:

  • Backend: написание с использованием node js и TS, интеграция с redis с помощью redis OM, интеграция с MongoDb, подключение Aws Iot в реальном времени MQTT и использование модели Tensorflow js. Используйте redis для чтения сообщений датчиков реального времени через MQTT канал «машины» и попытайтесь найти датчик, связанный с ним, если он найден, вставьте каталог полученных данных в MongoDb и redis для быстрого…

Посмотреть на GitHub

Модель Tensorflow: если вы хотите получить больше информации о tensorflow, посетите модель здесь: colab

закрытие

если вам понравился проект или у вас есть вопросы, оставьте лайк и комментарий!
мы будем благодарны за любую помощь!


  • Ознакомьтесь с Redis OM, клиентскими библиотеками для работы с Redis как с многомодельной базой данных.
  • Используйте RedisInsight для визуализации ваших данных в Redis.
  • Зарегистрируйтесь для получения бесплатной базы данных Redis.

Оцените статью
devanswers.ru
Добавить комментарий