recherche
Maisonbase de donnéesMongoDBComment utiliser MongoDB pour développer un système simple de maison intelligente

Comment utiliser MongoDB pour développer un système simple de maison intelligente

Comment utiliser MongoDB pour développer un système de maison intelligente simple

Les systèmes de maison intelligente font désormais partie de la vie de famille moderne. Grâce aux systèmes de maison intelligente, nous pouvons contrôler à distance divers appareils de la maison, tels que les lumières, les appareils électroménagers, les serrures de porte, etc., via des téléphones portables ou d'autres appareils. Cet article expliquera comment utiliser MongoDB pour développer un système de maison intelligente simple et fournira des exemples de code spécifiques pour référence aux lecteurs.

1. Analyse de la configuration système requise

Avant de commencer le développement, nous devons d'abord clarifier la configuration système requise. Un simple système de maison intelligente doit avoir les fonctions suivantes :

  1. Connexion et enregistrement de l'utilisateur : les utilisateurs peuvent utiliser le système en créant un compte et en se connectant.
  2. Gestion des appareils : les utilisateurs peuvent ajouter, supprimer et contrôler divers appareils, tels que des lumières, des appareils électroménagers, des serrures de porte, etc.
  3. Tâches planifiées : les utilisateurs peuvent définir des tâches planifiées, telles que l'allumage et l'extinction des lumières ou des appareils électriques à des heures programmées.
  4. Historique : le système doit enregistrer l'historique de contrôle de l'utilisateur sur l'appareil pour que l'utilisateur puisse le consulter.

2. Conception de la base de données

Sur la base des exigences ci-dessus, nous pouvons concevoir la structure de base de données suivante :

  1. Table des utilisateurs (utilisateurs) :

    • _id : ID utilisateur
    • nom d'utilisateur : nom d'utilisateur
    • mot de passe : mot de passe
  2. Tableau des appareils (appareils) :

    • _id : ID de l'appareil
    • name : nom de l'appareil
    • type : type d'appareil
    • status : état de l'appareil (on/off)
    • user_id : ID utilisateur
  3. Tâches planifiées (tâches) :

    • _id : ID de la tâche
    • name : nom de la tâche
    • device_id : ID de l'appareil
    • user_id : ID de l'utilisateur
    • time : temps d'exécution de la tâche
  4. tableau d'enregistrement d'opération (enregistrements ):

    • _id : ID d'enregistrement
    • device_id : ID de l'appareil
    • user_id : ID utilisateur
    • action : opération (on/off)
    • time : heure de fonctionnement

3. Développement du système

Ensuite, nous utiliserons MongoDB et Node.js pour développer un système de maison intelligente.

  1. Préparation de l'environnement

Tout d'abord, assurez-vous d'avoir installé Node.js et MongoDB et démarrez le service MongoDB.

  1. Créer un projet et installer les dépendances

Exécutez les commandes suivantes dans la ligne de commande pour créer un nouveau projet Node.js et installer les dépendances correspondantes :

mkdir smart-home-system
cd smart-home-system
npm init -y
npm install express mongodb
  1. Créez une connexion à la base de données

Créez-en une dans le répertoire racine db.js et ajoutez le contenu suivant : db.js文件,并添加以下内容:

const { MongoClient } = require('mongodb');

async function connect() {
    try {
        const client = await MongoClient.connect('mongodb://localhost:27017');
        const db = client.db('smart-home-system');
        console.log('Connected to the database');
        return db;
    } catch (error) {
        console.log('Failed to connect to the database');
        throw error;
    }
}

module.exports = { connect };
  1. 创建路由和控制器

在根目录下创建一个routes文件夹,并添加以下路由文件devices.js

const express = require('express');
const { ObjectId } = require('mongodb');
const { connect } = require('../db');

const router = express.Router();

router.get('/', async (req, res) => {
    try {
        const db = await connect();
        const devices = await db.collection('devices').find().toArray();
        res.json(devices);
    } catch (error) {
        res.status(500).json({ error: error.message });
    }
});

router.post('/', async (req, res) => {
    try {
        const { name, type, status, user_id } = req.body;
        const db = await connect();
        const result = await db.collection('devices').insertOne({
            name,
            type,
            status,
            user_id: ObjectId(user_id),
        });
        res.json(result.ops[0]);
    } catch (error) {
        res.status(500).json({ error: error.message });
    }
});

module.exports = router;

在根目录下创建一个controllers文件夹,并添加以下控制器文件devicesController.js

const { connect } = require('../db');

async function getDevices() {
    try {
        const db = await connect();
        const devices = await db.collection('devices').find().toArray();
        return devices;
    } catch (error) {
        throw error;
    }
}

async function createDevice(device) {
    try {
        const db = await connect();
        const result = await db.collection('devices').insertOne(device);
        return result.ops[0];
    } catch (error) {
        throw error;
    }
}

module.exports = {
    getDevices,
    createDevice,
};
  1. 创建入口文件

在根目录下创建一个index.js

const express = require('express');
const devicesRouter = require('./routes/devices');

const app = express();

app.use(express.json());

app.use('/devices', devicesRouter);

app.listen(3000, () => {
    console.log('Server is running on port 3000');
});

    Créez des routes et des contrôleurs

    Créez un routes dans le dossier du répertoire racine et ajoutez le fichier de routage suivant devices.js :

    rrreee

    Créez un dossier controllers dans le répertoire racine et ajoutez le fichier de contrôleur suivant devicesController :

    rrreee

      Créer un fichier d'entrée

      🎜🎜Créez un fichier index.js dans le répertoire racine et ajoutez le contenu suivant : 🎜rrreee🎜Ça y est, nous ont achevé le développement d'un système simple de maison intelligente, comprenant la connexion et l'enregistrement des utilisateurs, la gestion des appareils, les tâches planifiées et les fonctions d'enregistrement des opérations. 🎜🎜4. Résumé🎜🎜Cet article présente comment utiliser MongoDB pour développer un système de maison intelligente simple. En utilisant la combinaison de MongoDB et Node.js, nous pouvons facilement gérer le stockage et le traitement des données. Les lecteurs peuvent étendre davantage ce système et ajouter plus de fonctions en fonction de besoins spécifiques. 🎜🎜Les exemples de code fournis dans cet article sont uniquement à titre de référence. Les lecteurs doivent les modifier et les améliorer en fonction des besoins réels pendant le développement réel. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
MongoDB vs Oracle: modélisation des données et flexibilitéMongoDB vs Oracle: modélisation des données et flexibilitéApr 11, 2025 am 12:11 AM

MongoDB convient plus pour le traitement des données non structurées et une itération rapide, tandis qu'Oracle convient plus aux scénarios qui nécessitent une cohérence stricte des données et des requêtes complexes. 1. Le modèle de document de MongoDB est flexible et adapté à la gestion des structures de données complexes. 2. Le modèle relationnel d'Oracle est strict pour assurer la cohérence des données et les performances de requête complexes.

MongoDB: Sécurité, performance et stabilitéMongoDB: Sécurité, performance et stabilitéApr 10, 2025 am 09:43 AM

MongoDB excelle dans la sécurité, les performances et la stabilité. 1) La sécurité est obtenue par l'authentification, l'autorisation, le chiffrement des données et la sécurité du réseau. 2) L'optimisation des performances dépend de l'indexation, de l'optimisation des requêtes et de la configuration matérielle. 3) La stabilité est garantie par la persistance des données, les ensembles de réplication et la rupture.

Transactions MongoDB: garantir la cohérence des donnéesTransactions MongoDB: garantir la cohérence des donnéesApr 09, 2025 am 12:06 AM

MongoDB prend en charge les transactions. Les étapes de l'utilisation des transactions MongoDB incluent: 1. Démarrez la session, 2. Démarrez la transaction, 3. Effectuez l'opération, 4. Soumettre ou annuler la transaction. Les transactions garantissent la cohérence des données et l'atomicité grâce aux mécanismes de verrouillage et à l'exploitation forestière.

MongoDB Security Best Practices: Protectation de vos données contre l'accès non autoriséMongoDB Security Best Practices: Protectation de vos données contre l'accès non autoriséApr 08, 2025 am 12:14 AM

Les meilleures pratiques pour la sécurité MongoDB comprennent l'activation de l'authentification, de l'autorisation, du chiffrement et de l'audit. 1) Activer l'authentification, utiliser des mots de passe forts et des mécanismes Scram-SHA-256; 2) Autoriser par des rôles et des autorisations; 3) crypter la transmission et le stockage des données à l'aide de TLS / SSL; 4) Activer la fonction d'audit pour enregistrer les opérations de base de données et auditer régulièrement pour découvrir les problèmes de sécurité.

MongoDB Sharding: mise à l'échelle de votre base de données pour les données de volume élevéMongoDB Sharding: mise à l'échelle de votre base de données pour les données de volume élevéApr 07, 2025 am 12:08 AM

MongoDBSharding est une technologie de mise à l'échelle horizontale qui améliore les performances et la capacité de la base de données en dispersant les données sur plusieurs serveurs. 1) Activer la rupture: sh.enableharding ("mydatabase"). 2) Définissez la touche d'éclairage: ShardCollection ("MyDatabase.MyCollection", {"UserId": 1}). 3) Sélectionnez la clé de fragment et la taille du bloc approprié, optimiser les performances de la requête et l'équilibrage de la charge et réaliser une gestion et une expansion efficaces des données.

Réplication de MongoDB: assurer la haute disponibilité et la redondance des donnéesRéplication de MongoDB: assurer la haute disponibilité et la redondance des donnéesApr 06, 2025 am 12:14 AM

L'ensemble de réplication de MongoDB garantit une disponibilité élevée et une redondance des données via les étapes suivantes: 1) Synchronisation des données: les enregistrements de nœuds maître d'écriture, et la réplique du nœud synchronise les données via OPLOG; 2) Détection du battement de cœur: Le nœud envoie régulièrement l'état de détection du signal de battement de cardiaque; 3) Basculement: Lorsque le nœud maître échoue, le nœud de réplique élise un nouveau nœud maître pour s'assurer que le service n'interrompt pas.

MongoDB Atlas: service de base de données cloud pour les applications évolutivesMongoDB Atlas: service de base de données cloud pour les applications évolutivesApr 05, 2025 am 12:15 AM

Mongodbatlas est un service de base de données cloud entièrement géré qui aide les développeurs à simplifier la gestion de la base de données et à fournir une haute disponibilité et une évolutivité automatique. 1) Il est basé sur la technologie NOSQL de MongoDB et prend en charge le stockage de données de format JSON. 2) Atlas fournit une mise à l'échelle automatique, une haute disponibilité et des mesures de sécurité à plusieurs niveaux. 3) Les exemples d'utilisation comprennent des opérations de base telles que l'insertion de documents et les opérations avancées telles que les requêtes agrégées. 4) Les erreurs courantes incluent une défaillance de connexion et de faibles performances de requête, et vous devez vérifier la chaîne de connexion et utiliser l'index. 5) Les stratégies d'optimisation des performances comprennent l'optimisation de l'indice, la stratégie de percaison et le mécanisme de mise en cache.

Questions d'entrevue MongoDB: Ace Your NoSQL Database InterviewQuestions d'entrevue MongoDB: Ace Your NoSQL Database InterviewApr 04, 2025 am 12:08 AM

Les compétences d'entrevue de MongoDB comprennent: 1) comprendre les bases de MongoDB, comme le format BSON et le stockage de documents; 2) Master Core Concepts tels que les bases de données, les collections et les documents; 3) être familier avec les principes de travail, tels que la cartographie de la mémoire et le fragment; 4) être compétent dans l'utilisation de base et avancée, tels que les opérations CRUD et les pipelines d'agrégation; 5) Master les compétences de débogage, telles que la résolution des problèmes de connexion et de requête; 6) Comprendre les stratégies d'optimisation des performances, telles que l'indexation et le fragment.

See all articles

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
3 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Télécharger la version Mac de l'éditeur Atom

Télécharger la version Mac de l'éditeur Atom

L'éditeur open source le plus populaire

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Puissant environnement de développement intégré PHP

Version crackée d'EditPlus en chinois

Version crackée d'EditPlus en chinois

Petite taille, coloration syntaxique, ne prend pas en charge la fonction d'invite de code