Данный проект представляет собой сетевую камеру видеонаблюдения. В качестве основного управляющего устройства используется ESP32S2, а в качестве пользовательского интерфейса — мини-программа WeChat. Мини-программа может отправлять команды через облачную функцию MQTT для запуска процесса съёмки. Устройство отправляет фотографии на облачную функцию через HTTP POST, после чего они сохраняются в облачном хранилище и записываются в базу данных с информацией о съёмке.
Мини-программа QR-код для привязки устройства
В качестве имени устройства используется MAC-адрес в нижнем регистре. Для генерации MD5-хеша применяется правило «langshao» + имя устройства. Пример: langshao123456abcdef, где первые два байта хеша — «xxxx».
База данных
№ | Название коллекции | Описание | Настройки доступа |
---|---|---|---|
1 | event | Данные событий | Только для чтения и записи создателем и администратором |
2 | device | Информация об устройстве | Чтение разрешено всем пользователям, запись и удаление — только администратору |
3 | firmware | Информация о прошивке | Чтение доступно всем пользователям, запись — только администратору |
Формат базы данных (устройство)
{
"_id":"xxx",
"_openid":"o7gKT4ojN3Rj1gPM7qZkR_3g33FQ",
"device_name":["0":"7cdfa101f672","1":"7cdfa101f620","2":"7cdfa101f8ac"]
}
Формат базы данных (событие)
{
"_id":"xxx",
"device_name":"7cdfa101f8ac",
"event":"photo",
"event_data":"1636172099000(7cdfa101f8ac).jpg",
"event_time":1636172099000
}
Формат базы данных (прошивка)
{
"_id":"xxx",
"newest_version":"1.0.2"
}
Облачные функции
№ | Название функции | Описание |
---|---|---|
1 | iothub_get_state | Проверяет, подключено ли устройство к сети |
2 | iothub-publish | Запускает обновление прошивки |
3 | iothub-shadow-query | Запрос теневых данных |
4 | iothub_clean | Периодическая очистка облачного хранилища фотографий для предотвращения переполнения |
5 | iothub_image | Отправка фотографий через HTTPS, сохранение в облачное хранилище и создание журнала фотографий в базе данных |
Облачное хранилище
image/ Хранение фотографий
.gitignore Файлы ca_cert.pem и login.h содержат информацию, необходимую для работы OTA-сервера и MQTT-логина соответственно.
#define TENCENT_MQTT_PRODUCT_ID "xxxx"//Продукт ID
#define TENCENT_MQTT_DEVICE_NAME get_esp32_mac_address()//Имя устройства
#define TENCENT_MQTT_KEY "xxxx"//Ключ HMACSHA256
#define TENCENT_MQTT_USERNAME_PART "xxxx"//Компонент имени пользователя (перед ним необходимо вставить продукт ID)
#define TENCENT_MQTT_URL_PART "xxxx"//Компонент адреса сервера (%s требует передачи продукта ID)
#define TENCENT_MQTT_PORT 1883//Порт сервера
#define TENCENT_MQTT_PASSWORD_PART "xxxx"//Компонент пароля сервера (перед ним вставляется ключ HMACSHA256)
#define TENCENT_SHADOW_TOPIC "xxxx"//Тема теневых данных
app.js содержит информацию, необходимую для доступа к платформе облачных функций.
App({
globalData: {
productId: "xxxx",
deviceName: "",
secretId: "xxxx",
secretKey: "xxxx",
},
onLaunch: function () {
if (!wx.cloud) {
console.error('Пожалуйста, используйте 2.2.3 или более позднюю версию базовой библиотеки для использования облачных возможностей')
} else {
wx.cloud.init({
env: "xxx",
traceUser: true,
})
}
}
})
Фотографии с устройства
QR-коды для мини-программы
Фото в мини-программе
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )