Install Homebrew
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Install npm: https://www.npmjs.com/get-npm
Install Node-Red
sudo npm install -g --unsafe-perm node-red
Install MongoDB
brew install mongodb
To launch the app, find your current workspace
pwd
This should output your current workspace. Copy this, then paste this instead of the 'workspace' in this command
node-red --userDir 'workspace'
For example, this gives me this command
node-red --userDir ~/movit-detect/MOvIT-Detect-Backend
Then, the app should be up and running at url: http://127.0.0.1:1880. You may access it in your browser
In a command shell, run this:
sudo apt-get install mongodb sudo service mongodv start
To view and edit the DB, you may use an app such as Robo 3T: https://robomongo.org/download
The database is not entirely functional as of now.
Run this script to initialize it as desired
node initDatabase.js
Also, you may need some data.
To initialize some data, make sure your application is launched, then access it in your browser. In the tab Simulation Basic, press on the button next to timestamp. This will generate 18600 entries in your DB.
Then, everything is set! You may now make some API calls to the server! All documentation is there: https://app.apiary.io/movitplus/editor
Le premier mandat que nous devons accomplir est de réusiner le code tout en maintenant les fonctionnalités actuelles en places. Voici la liste de ces fonctionnalités.
- Traiter le readline
- Gérer les websockets (connexion, message, close)
- Émettre des alertes
- Envoyer la date
- Lire des fichiers
- Écrire dans des fichiers
- Créer les données pour les graphiques quotidiens et le stocker dans un fichier
- Créer les données pour les graphiques mensuels et le stocker dans un fichier
- Ouvrir l'accès à ces fichiers
- Créer la database Mongo et les Collections
- Gérer le simulateur
- Écouter sur le port 8081
Pour la partie back-end du projet, nous avons décidé d'utiliser l'outil Node-RED. Vous retrouverez un résumé de qu'est-ce qu'est React et pourquoi nous l'avons utilisé ci-dessous.
Node-RED, c'est un outil de programmation construit au-dessus de Node.js. Cet outil est entièrement compatible avec les Raspberry Pi et permet tout ce qui est possible avec Node.js.
Au-delà de ça, ce qui différencie Node-RED de Node.js est son concept de node. Avec Node-RED, on programme des nodes qui ont des intrants et des extrants bien définis. Node-RED nous offre alors un éditeur disponible dans tous les navigateurs permettant de connecter ces nodes et d'en faire le programme que l'on désire.
- Compatible avec Node.js. Avec le code initial qui est en Node.js, ceci est un avantage non-négligeable. De plus, Node.js est très répandu dans la communauté et ce serait dommage de ne pas profiter.
- Facilité à tester. Avec des composants modulaires, il est facile de faire les tests unitaires.
- Réutilisation des composantes. Avec des composants modulaires, il est facile de les réutiliser et avec une communauté forte, on peut même importer des composantes open source!
- Facile à comprendre. L'éditeur en ligne avec des nodes nous oblige à schématiser notre logiciel qui permet de documenter le code en temps réel.
- Facile à apprendre. Avec un support visuel et de nombreux composants disponible par défaut, il est très facile d'assembler son premier programme. De plus, il n'est même pas nécessaire de savoir programmer si les nodes existent déjà!
Pour la partie database du projet, nous avons décidé d'utiliser une base de donnée NoSQL en MongoDB.
MongoDB est une base de donnée qui enregistre le data dans des documents BSon qui est très semblable à du JSON. Cela permet donc d'avoir une structure flexible qui change dans le temps et des champs qui varient de documents en documents, contrairement à une base de donnée SQL.
- Une structure flexible. Cela permet donc un développement plus rapide. Car contrairement à des bases de données relationnelles, il est plus facile de modifier les schémas en cours de route.
- Des petites bases de données. En effet, puisque la base de donnée est hébergée sur le module, les données demeureront très petites. Ainsi, la performance d'une base de donnée relationnelle est négligeable dans ce contexte.