Ajout de la gestion du système de capture, y compris l'initialisation de la caméra, les procédures de démarrage et d'arrêt, ainsi que la gestion des modes de maintenance.
This commit is contained in:
1
api.js
1
api.js
@@ -8,6 +8,7 @@ const imageRoutes = require('./routes/imageRoutes');
|
|||||||
const uploadRoutes = require('./routes/uploadRoutes');
|
const uploadRoutes = require('./routes/uploadRoutes');
|
||||||
const FileWatcher = require('./src/data/filewatcher');
|
const FileWatcher = require('./src/data/filewatcher');
|
||||||
const database_manager = require('./src/database/database_manager');
|
const database_manager = require('./src/database/database_manager');
|
||||||
|
const capture_system = require('./routes/capture_system');
|
||||||
|
|
||||||
router.use(cors({
|
router.use(cors({
|
||||||
origin: ['http://127.0.0.1:5500', 'http://localhost:5500', 'http://localhost:3000'],
|
origin: ['http://127.0.0.1:5500', 'http://localhost:5500', 'http://localhost:3000'],
|
||||||
|
|||||||
@@ -16,3 +16,141 @@ const defaultSettings = {
|
|||||||
stop_flag: false,
|
stop_flag: false,
|
||||||
idle: true
|
idle: true
|
||||||
};
|
};
|
||||||
|
|
||||||
|
async function camera_initialization() {
|
||||||
|
// si capture.get_camera est vide ou undefined, on l'initialise
|
||||||
|
let current_camera = await database_manager.capture.get_camera();
|
||||||
|
if (!current_camera || current_camera === undefined) {
|
||||||
|
console.log("Initializing camera...");
|
||||||
|
current_camera = await database_manager.capture.init_camera(
|
||||||
|
defaultSettings.id,
|
||||||
|
defaultSettings.interval,
|
||||||
|
defaultSettings.nb_images,
|
||||||
|
defaultSettings.maintenance,
|
||||||
|
defaultSettings.stop_flag,
|
||||||
|
defaultSettings.idle
|
||||||
|
);
|
||||||
|
console.log("Camera initialized:", current_camera);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
console.log("Camera already initialized:", current_camera);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
camera_initialization()
|
||||||
|
|
||||||
|
async function get_camera_settings() {
|
||||||
|
const settings = await database_manager.capture.get_camera();
|
||||||
|
if (!settings) {
|
||||||
|
// balancer une erreur si la caméra n'est pas initialisée
|
||||||
|
throw new Error("Camera settings not found in the database.");
|
||||||
|
}
|
||||||
|
return settings;
|
||||||
|
}
|
||||||
|
|
||||||
|
router.get('/camera/status', async (req, res) => {
|
||||||
|
try {
|
||||||
|
const settings = await get_camera_settings();
|
||||||
|
res.json(settings);
|
||||||
|
} catch (error) {
|
||||||
|
serverError.sendError('Error getting camera status:', res, error, 500);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
async function stop_procedure() { // côté serveur
|
||||||
|
let new_settings = {
|
||||||
|
stop_flag: true,
|
||||||
|
}
|
||||||
|
await database_manager.capture.edit_camera(new_settings);
|
||||||
|
console.log("Stopping camera... en attente de confirmation de la caméra...");
|
||||||
|
}
|
||||||
|
|
||||||
|
async function confirm_stop_procedure() { // côté caméra
|
||||||
|
let new_settings = {
|
||||||
|
interval: null,
|
||||||
|
nb_images: null,
|
||||||
|
stop_flag: false,
|
||||||
|
idle: true,
|
||||||
|
}
|
||||||
|
await database_manager.capture.edit_camera(new_settings);
|
||||||
|
console.log("Camera stopped.");
|
||||||
|
}
|
||||||
|
|
||||||
|
async function start_procedure(interval, nb_images) {
|
||||||
|
let new_settings = {
|
||||||
|
interval: interval,
|
||||||
|
nb_images: nb_images,
|
||||||
|
stop_flag: false,
|
||||||
|
idle: false,
|
||||||
|
}
|
||||||
|
console.log("Starting Procedure with settings:", new_settings);
|
||||||
|
await database_manager.capture.edit_camera(new_settings);
|
||||||
|
console.log("Camera started.");
|
||||||
|
}
|
||||||
|
|
||||||
|
async function activate_maintenance() {
|
||||||
|
let new_settings = {
|
||||||
|
maintenance: true,
|
||||||
|
}
|
||||||
|
await database_manager.capture.edit_camera(new_settings);
|
||||||
|
console.log("Camera in maintenance mode.");
|
||||||
|
}
|
||||||
|
|
||||||
|
async function deactivate_maintenance() {
|
||||||
|
let new_settings = {
|
||||||
|
maintenance: false,
|
||||||
|
}
|
||||||
|
await database_manager.capture.edit_camera(new_settings);
|
||||||
|
console.log("Camera out of maintenance mode.");
|
||||||
|
}
|
||||||
|
|
||||||
|
router.post('/procedure/start', async (req, res) => {
|
||||||
|
const { interval, nb_images } = req.body;
|
||||||
|
if (!interval || !nb_images) {
|
||||||
|
return res.status(400).json({ error: 'Interval and number of images are required' });
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
await start_procedure(interval, nb_images);
|
||||||
|
res.json({ message: 'Camera started successfully', settings: { interval, nb_images } });
|
||||||
|
} catch (error) {
|
||||||
|
serverError.sendError('Error starting camera procedure:', res, error, 500);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
router.post('/procedure/stop', async (req, res) => {
|
||||||
|
try {
|
||||||
|
await stop_procedure();
|
||||||
|
res.json({ message: 'Camera stop procedure initiated successfully' });
|
||||||
|
} catch (error) {
|
||||||
|
serverError.sendError('Error stopping camera procedure:', res, error, 500);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
router.post('/camera/stop', async (req, res) => {
|
||||||
|
try {
|
||||||
|
await confirm_stop_procedure();
|
||||||
|
res.json({ message: 'Camera stopped successfully' });
|
||||||
|
} catch (error) {
|
||||||
|
serverError.sendError('Error stopping camera:', res, error, 500);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
router.post('/camera/maintenance', async (req, res) => {
|
||||||
|
try {
|
||||||
|
await activate_maintenance();
|
||||||
|
res.json({ message: 'Camera in maintenance mode' });
|
||||||
|
} catch (error) {
|
||||||
|
serverError.sendError('Error activating maintenance mode:', res, error, 500);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
router.post('/camera/maintenance/deactivate', async (req, res) => {
|
||||||
|
try {
|
||||||
|
await deactivate_maintenance();
|
||||||
|
res.json({ message: 'Camera out of maintenance mode' });
|
||||||
|
} catch (error) {
|
||||||
|
serverError.sendError('Error deactivating maintenance mode:', res, error, 500);
|
||||||
|
}
|
||||||
|
});
|
||||||
@@ -7,7 +7,7 @@ const serverError = require('../utils/serverError');
|
|||||||
|
|
||||||
const upload = multer({ storage: multer.memoryStorage() });
|
const upload = multer({ storage: multer.memoryStorage() });
|
||||||
|
|
||||||
router.post('/uploadmeasurement', upload.single('image'), async (req, res) => {
|
router.post('/camera/upload', upload.single('image'), async (req, res) => {
|
||||||
//afficher le body de la requête
|
//afficher le body de la requête
|
||||||
console.log(req.body);
|
console.log(req.body);
|
||||||
const { projectId, timestamp, temperature, humidity } = req.body;
|
const { projectId, timestamp, temperature, humidity } = req.body;
|
||||||
|
|||||||
@@ -275,15 +275,16 @@ const capture = {
|
|||||||
await db.query(query, [id]);
|
await db.query(query, [id]);
|
||||||
}),
|
}),
|
||||||
|
|
||||||
init_camera: handleDatabaseOperation(async (id, interval, nb_images, maintenance, stop_flag) => {
|
init_camera: handleDatabaseOperation(async (id, interval, nb_images, maintenance, stop_flag, idle) => {
|
||||||
const query = `INSERT INTO camera (id, interval, nb_images, maintenance, stop_flag) VALUES ($1, $2, $3, $4, $5) RETURNING *;`;
|
const query = `INSERT INTO camera (id, interval, nb_images, maintenance, stop_flag, idle) VALUES ($1, $2, $3, $4, $5, $6) RETURNING *;`;
|
||||||
const values = [id, interval, nb_images, maintenance, stop_flag];
|
const values = [id, interval, nb_images, maintenance, stop_flag, idle];
|
||||||
return (await db.query(query, values)).rows[0];
|
return (await db.query(query, values)).rows[0];
|
||||||
}),
|
}),
|
||||||
};
|
};
|
||||||
|
|
||||||
// zone de test
|
// zone de test
|
||||||
async function test_zone(){
|
async function test_zone(){
|
||||||
|
//
|
||||||
}
|
}
|
||||||
|
|
||||||
test_zone();
|
test_zone();
|
||||||
|
|||||||
1
stuff.md
1
stuff.md
@@ -13,7 +13,6 @@ si upload :
|
|||||||
Côté Backend
|
Côté Backend
|
||||||
|
|
||||||
/procedure/start // démarrer une procédure (POST)
|
/procedure/start // démarrer une procédure (POST)
|
||||||
/procedure/status // récupérer le statut de la caméra/procédure courante (GET)
|
|
||||||
/procedure/stop // arrêter la procédure courante (POST) (doit attendre la confirmation de /camera/stop)
|
/procedure/stop // arrêter la procédure courante (POST) (doit attendre la confirmation de /camera/stop)
|
||||||
/procedure/delete // supprimer la procédure courante (POST) (doit attendre la confirmation de /camera/delete)
|
/procedure/delete // supprimer la procédure courante (POST) (doit attendre la confirmation de /camera/delete)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user