[TUTO] Application web dynamique
Modérateur : Francois
-
- Raspinaute
- Messages : 211
- Enregistré le : mar. 16 août 2016 20:55
- Contact :
Re: [TUTO] Application web dynamique
Premier tuto traitant de ce sujet qui est intéressant et bien expliqué!
Bravo!
Bravo!
Le pro du déterrage de topic est là!
Alexidreaming
Alexidreaming
Re: [TUTO] Application web dynamique
bonjour
merci pour cette réponse rapide.
en effet avec le débogueur la solution était assez évidente ( mais c'est souvent le cas quand le problème est résolu ).
je vais quand même approfondir l'étude de node sur openclassroom car je me suis rendu compte que mon niveau n'était pas assez bon pour suivre facilement ton tuto.
ce qui est certain c'est que je vais utiliser node pour ma domotique à la maison.
à bientôt pour d'autres questions
André
merci pour cette réponse rapide.
en effet avec le débogueur la solution était assez évidente ( mais c'est souvent le cas quand le problème est résolu ).
je vais quand même approfondir l'étude de node sur openclassroom car je me suis rendu compte que mon niveau n'était pas assez bon pour suivre facilement ton tuto.
ce qui est certain c'est que je vais utiliser node pour ma domotique à la maison.
à bientôt pour d'autres questions
André
-
- Raspinaute
- Messages : 1089
- Enregistré le : lun. 15 août 2016 21:38
Re: [TUTO] Application web dynamique
Le fameux ‘Bon sang, mais c’est bien sûr !’. Je te rassure, ça me le fait aussi à chaque fois que je résout un problèmedrean a écrit :...la solution était assez évidente ( mais c'est souvent le cas quand le problème est résolu ).
C’est sûr que les idées ne manquent pas, le tout c’est d’en choisir une.guillaume9344 a écrit : quelques idées : bases de données , i2c , spi , 1wire, inclusion flux video (pour motion par ex), monitoring, écriture de lib (en c ).....
Leçon 7 : chiche, on ajoute 8 entrées analogiques cablées en SPI à la leçon 6 avec un seul composant externe et une dizaine de lignes de code ?
Le composant, un MCP3208 (8 x adc 12 bits SPI) et pour le câblage on peut se contenter de ca (trouvé sur le net pour pas avoir à dessiner ). Et pour le code, la lib wiring-pi est déjà chargée, donc juste une fonction qui va dialoguer nativement avec le composant et retourner un tableau json. Fini !
Suffit d’appeler la page http://adressedupi:port/adc pour avoir les valeurs.
Qui a dit que l'analogique et les liaisons SPI c'etait trop compliqué à mettre en œuvre ?
Le code fait un peu ‘barbu’, mais en lisant la datasheet du composant et la doc de la lib et ça devrait passer tout seul. Ca permet de démontrer que l'on peut aussi coder du javascript en utilisant une syntaxe de bas niveau très proche de C
Pour test, J’ai câblé toutes les entrées de mon 3208 au – , sauf la 1 qui est au + et la 0 qui est connectée à un générateur de fonction et qui me génère une tension variable de 0 à 3.3 v et ça donne ca :
{"adc":[2745,4095,0,0,0,0,0,0]}
{"adc":[531,4095,0,0,0,0,0,0]}
{"adc":[4040,4095,0,0,0,0,0,0]}
…
Avec un peu d’imagination vous devriez facilement pouvoir transformer ça en valeurs 'volts' ou valeurs réelles de capteurs analogiques et en vue graphique dynamique. A l’occase, je ferais peut être une nouvelle version de la leçon ‘oscilloscope’ pour utiliser la valeur réelle d’une tension analogique plutôt que d’utiliser une tension virtuelle générée par le serveur.
***********Edit**************
Comme je suis repassé pour corriger quelques fote dortografe, j'ajoute un petit +
//vous devriez facilement pouvoir transformer ça en valeurs 'volts' . C'est ballot, mais c'est la première chose qu'on m'a demandé. Le composant fait une conversion de la tension sur 12 bits, donc pour avoir directement la tension appliquée sur une entrée :
volt = (Uref / (2^12 -1)) * data . Ou Uref est la tension de référence (3.3 volt si on suit le schéma) et data est la valeur numérique retournée par l'ADC. Si on prend l'exemple de valeur sur le cannal 0 de {"adc":[2745,4095,0,0,0,0,0,0]}, cela donne : (3.3/4095)*2745 = 2.212087912 volts (précis hein ).
Donc pour avoir directement des valeurs en volts avec 3 décimales dans le tableau json il suffit de remplacer la ligne :
x.adc = ((b[1]&0x0F)<<8)+ b[2];
par
x.adc = ((3.3/4095) * ((b[1]&0x0F)<<8)+ b[2]).toFixed(3);
toFixed(3) c'est pour limiter a 3 décimales.
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).
-
- Raspinaute
- Messages : 1089
- Enregistré le : lun. 15 août 2016 21:38
Re: [TUTO] Application web dynamique
Bon ce n’est pas le tout, mais on a dépassé les 5000 vues et ça continu de monter doucement (en tout cas, suffisamment vite pour que je prenne du retard sur les anniversaires de comptages ...). Pour fêter ça, j’ai un peu la flemme d’écrire une nouvelle leçon aujourd’hui (mais vous ne perdez rien pour attendre ), mais nous n’allons pas rester sans rien faire pour autant. Si vous utilisez nodeJS, vous aimeriez sans doute profiter des dernières versions. Voyons donc comment mettre tout ca à jours.
Déjà connaitre votre version de nodeJS. Pour ça, une simple commande : node –v vous en dira plus.
Sur la SD du PI que j'utilise pour les dev. linux, j’étais déjà en version 4.0.0, mais si vous vous contentez des packs d’update raspbian vous devez encore en être à une version préhistorique genre 0.1x.x.
Allons donc voir chez nodejs ou cela en est : https://nodejs.org/
Woww … la dernière ‘recommandée’ est la 6.10.2. Installons-la avec cette petite liste de commandes somme toute très classique :
Une petite commande node –v pour contrôler, on est bien passé en 6.10.2
Reste à mettre jour npm : sudo npm install -g npm
On contrôle avec npm –v (à aujourd'hui, version 4.5.0)
Fini
!!! Attention, si vous utilisez un PI à base arm6, remplacez armv7l par armv6l dans toutes les commandes !!!
(commande cat /proc/cpuinfo si vous avez un doute )
********************* Edit 27/05/2017 ****************************
!!! Une fois nodejs ou npm mis à jour, vous pouvez saisir la commande npm update depuis la racine de votre projet web. Cela va avoir pour effet de mettre à jour les packages qui se trouvent dans node_modules en fonction de vos nouvelle version (c'est même parfois indispensable) !!!
********************************************************************
Déjà connaitre votre version de nodeJS. Pour ça, une simple commande : node –v vous en dira plus.
Sur la SD du PI que j'utilise pour les dev. linux, j’étais déjà en version 4.0.0, mais si vous vous contentez des packs d’update raspbian vous devez encore en être à une version préhistorique genre 0.1x.x.
Allons donc voir chez nodejs ou cela en est : https://nodejs.org/
Woww … la dernière ‘recommandée’ est la 6.10.2. Installons-la avec cette petite liste de commandes somme toute très classique :
Code : Tout sélectionner
wget https://nodejs.org/dist/v6.10.2/node-v6.10.2-linux-armv7l.tar.gz
tar -xvf node-v6.10.2-linux-armv7l.tar.gz
cd node-v6.10.2-linux-armv7l
sudo cp -R * /usr/local/
cd ..
rm -r node-v6.10.2-linux-armv7l
rm node-v6.10.2-linux-armv7l.tar.gz
Reste à mettre jour npm : sudo npm install -g npm
On contrôle avec npm –v (à aujourd'hui, version 4.5.0)
Fini
!!! Attention, si vous utilisez un PI à base arm6, remplacez armv7l par armv6l dans toutes les commandes !!!
(commande cat /proc/cpuinfo si vous avez un doute )
********************* Edit 27/05/2017 ****************************
!!! Une fois nodejs ou npm mis à jour, vous pouvez saisir la commande npm update depuis la racine de votre projet web. Cela va avoir pour effet de mettre à jour les packages qui se trouvent dans node_modules en fonction de vos nouvelle version (c'est même parfois indispensable) !!!
********************************************************************
Modifié en dernier par Bud Spencer le sam. 27 mai 2017 09:21, modifié 7 fois.
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).
Re: [TUTO] Application web dynamique
bonjour
encore merci pour ton tuto, j'avance dans mon projet, c'est laborieux mais j'avance.
j'ai mis à jour nodejs et npm, l'installation c'est bien passé mais quand j'ai fait l'essai des leçons j'ai eu un pb quand on utilise wiring-pi ça ne marchait pas.
si ça peut rendre service après une réinstallation de wiring-pi tout est ok.
bonne journée
André
encore merci pour ton tuto, j'avance dans mon projet, c'est laborieux mais j'avance.
j'ai mis à jour nodejs et npm, l'installation c'est bien passé mais quand j'ai fait l'essai des leçons j'ai eu un pb quand on utilise wiring-pi ça ne marchait pas.
si ça peut rendre service après une réinstallation de wiring-pi tout est ok.
bonne journée
André
-
- Raspinaute
- Messages : 1089
- Enregistré le : lun. 15 août 2016 21:38
Re: [TUTO] Application web dynamique
Merci pour le retour André. Je ne souviens pas avoir eus ce genre de soucis mais si tu l’as rencontré, c’est qu’il existe. Pour ma part, je devais déjà sans doute utiliser une version NodeJs plus fraiche que celle installée avec Raspbian quand j’avais fait ces lecons.
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).
-
- Raspinaute
- Messages : 629
- Enregistré le : mar. 6 janv. 2015 19:44
- Localisation : finistere
Re: [TUTO] Application web dynamique
Bonsoir Bud , pour pouvoir faire une petite démonstration des "pouvoirs " d'un pi , j'ai repris la leçon 6 du tuto .
Malheureusement, la page se charge que jusque au début du tableau , mais l'envoi des données de celui-ci échoue et dans la console de fire fox , j'ai une erreur type mime:
J'ai reparcouru le tutos en vitesse et chargé la leçon 3 (oscillo du pauvre ) et celle-ci fonctionne niquelle , je ne comprend pas pourquoi socket.io est bloqué dans la 6.
Pour info:
node -v :6.10.2
npm -v :3.10.10
jessie pixel
@+
Malheureusement, la page se charge que jusque au début du tableau , mais l'envoi des données de celui-ci échoue et dans la console de fire fox , j'ai une erreur type mime:
Code : Tout sélectionner
La ressource à l’adresse « http://192.168.1.21:8080/socketio/socket.io.js » a été bloquée en raison d’un type MIME incorrect (X-Content-Type-Options: nosniff).[En savoir plus] 192.168.1.21:8080
J'ai reparcouru le tutos en vitesse et chargé la leçon 3 (oscillo du pauvre ) et celle-ci fonctionne niquelle , je ne comprend pas pourquoi socket.io est bloqué dans la 6.
Pour info:
node -v :6.10.2
npm -v :3.10.10
jessie pixel
@+
rpi b+ ,osmc, motioneyes
rpi 2 raspbian , server minecraft 24h/24 , utilisation gpio
orange pi pc debian ,utilisation gpio, motion cam
rpi 2 raspbian , server minecraft 24h/24 , utilisation gpio
orange pi pc debian ,utilisation gpio, motion cam
-
- Raspinaute
- Messages : 1089
- Enregistré le : lun. 15 août 2016 21:38
Re: [TUTO] Application web dynamique
Salut Guillaume.
Il faut contrôler que le chemin de la ligne 'app.use('socketio',express.static (....' est conforme avec ton arborescence. Suivant les versions (de socket.io ou npm) , l’arborescence diffère et le client ne télécharge pas le bon fichier socket.io.js ou ne le trouve pas. ‘drean’ a eu ce genre problème ou il avait du modifier son path static en ajoutant ‘/dist’ au bout de sa ligne (voir la page page précédente du tuto).
En fait je me suis aussi rendu compte que pour installer correctement socket.io localement depuis la racine du projet, il fallait faire attention de bien utiliser la commande npm install socket.io et non pas npm install socketio (bien mettre le ‘.’ de socket.io).
Ce que je te conseille, c’est de supprimer le répertoire complet socket.io (ou socketio) dans node_modules et de refaire l’install avec la bonne commande (npm install socket.io ) depuis le répertoire racine de ton projet. A ce moment la ligne de chemin static devrait plutôt ressembler à ca :
app.use('socketio',express.static(__dirname + '/node_modules/socket.io-client/dist/));
Il faut contrôler que le chemin de la ligne 'app.use('socketio',express.static (....' est conforme avec ton arborescence. Suivant les versions (de socket.io ou npm) , l’arborescence diffère et le client ne télécharge pas le bon fichier socket.io.js ou ne le trouve pas. ‘drean’ a eu ce genre problème ou il avait du modifier son path static en ajoutant ‘/dist’ au bout de sa ligne (voir la page page précédente du tuto).
En fait je me suis aussi rendu compte que pour installer correctement socket.io localement depuis la racine du projet, il fallait faire attention de bien utiliser la commande npm install socket.io et non pas npm install socketio (bien mettre le ‘.’ de socket.io).
Ce que je te conseille, c’est de supprimer le répertoire complet socket.io (ou socketio) dans node_modules et de refaire l’install avec la bonne commande (npm install socket.io ) depuis le répertoire racine de ton projet. A ce moment la ligne de chemin static devrait plutôt ressembler à ca :
app.use('socketio',express.static(__dirname + '/node_modules/socket.io-client/dist/));
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).
-
- Raspinaute
- Messages : 629
- Enregistré le : mar. 6 janv. 2015 19:44
- Localisation : finistere
Re: [TUTO] Application web dynamique
Bonjour, j' avais bien installé socket.io , mais c'était bien un problème de chemin de la ligne 'app.use('socketio',express.static .... j'ai du ajouter &galement /dist à la fin
et le chemin était bizard ,avec plusieurs fois node_modules.
Après ces modif j'ai vue la page s'afficher correctement mais entre temps j'avais fin un update upgrade et du coups j'ai eu une erreur avec wiring pi . bon ok ca j'ai déjà vu.je reinstall wiring-pi mais pas de résultat et en même temps la lib wiringpi avait aussi des problémes.
je sort la carte sd et refait une install propre de jessie (pixel 217-04-10) mais toujours un probleme avec wiring-pi :
je comprend bien qu'il y a un probléme de définition du cpu ........ je pense que le probléme et venu avec le update upgrade .
Des pistes ?
@+
et le chemin était bizard ,avec plusieurs fois node_modules.
Après ces modif j'ai vue la page s'afficher correctement mais entre temps j'avais fin un update upgrade et du coups j'ai eu une erreur avec wiring pi . bon ok ca j'ai déjà vu.je reinstall wiring-pi mais pas de résultat et en même temps la lib wiringpi avait aussi des problémes.
je sort la carte sd et refait une install propre de jessie (pixel 217-04-10) mais toujours un probleme avec wiring-pi :
Code : Tout sélectionner
pi@raspberrypi:~/projects_node/myweb $ sudo node myweb.js
Unable to determine hardware version. I see: Hardware : BCM2835
,
- expecting BCM2708 or BCM2709. Please report this to projects@drogon.net
pi@raspberrypi:~/projects_node/myweb $
Des pistes ?
@+
rpi b+ ,osmc, motioneyes
rpi 2 raspbian , server minecraft 24h/24 , utilisation gpio
orange pi pc debian ,utilisation gpio, motion cam
rpi 2 raspbian , server minecraft 24h/24 , utilisation gpio
orange pi pc debian ,utilisation gpio, motion cam
-
- Raspinaute
- Messages : 1089
- Enregistré le : lun. 15 août 2016 21:38
Re: [TUTO] Application web dynamique
J'ai mis à jour le fichier zip de la lecon 6 (voir page 2 du tuto). Elle contient désormais un fichier de package pour simplifier l'install.
Important : Quand tu fais des mises à jours (surtout de nodejs ou npm), il faut entrer la commande npm update depuis la racine de ton projet web. Cela met à jour les package locaux en fonction de tes versions. Si tu n'a pas créé de fichier package.json (voir info sur npm init en page 4 du tuto), tu vas logiquement avoir des warm te le disant, mais tes packages seront mis à jour quand même. Juste un peu plus haut, drean nous signalait avoir eu un problème avec le package wiring-pi qu'il avait du réinstaller. un simple npm update aurait sans doute corrigé le problème. Je n'avais pas pensé à parler de ca quand j'ai écrit le petit post sur l'update de nodejs et npm, mais c'est désormais corrigé.
Important : Quand tu fais des mises à jours (surtout de nodejs ou npm), il faut entrer la commande npm update depuis la racine de ton projet web. Cela met à jour les package locaux en fonction de tes versions. Si tu n'a pas créé de fichier package.json (voir info sur npm init en page 4 du tuto), tu vas logiquement avoir des warm te le disant, mais tes packages seront mis à jour quand même. Juste un peu plus haut, drean nous signalait avoir eu un problème avec le package wiring-pi qu'il avait du réinstaller. un simple npm update aurait sans doute corrigé le problème. Je n'avais pas pensé à parler de ca quand j'ai écrit le petit post sur l'update de nodejs et npm, mais c'est désormais corrigé.
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).