[TUTO] Application web dynamique

Proposer ou rechercher un tutoriel concernant le Raspberry Pi

Modérateur : Francois

guillaume9344
Raspinaute
Messages : 616
Enregistré le : mar. 6 janv. 2015 20:44
Localisation : finistere

Re: [TUTO] Application web dynamique

Messagepar guillaume9344 » dim. 28 mai 2017 16:40

Ca y est , j'ai refait fonctionner la leçon 6. je suis reparti d'une image de rasbian propre (jessie 2017/04/10) et je n'ai pas fais d'upgrade, mis a jour node et npm, charger le nouveau fichier lecon6 et lancé npm install , tous a bien fonctionné du premier coup. pour info ,les numéros de pin à utiliser dans le config.json est la numérotation bcm ,la commande gpio readall donne les numéros des pins soit bcm soit wripi soit gpio.
Bud ,encore merci pour votre aide.
rpi b+ ,osmc, motioneyes
rpi 2 raspbian , server minecraft 24h/24 , utilisation gpio
orange pi pc debian ,utilisation gpio, motion cam

Bud Spencer
Raspinaute
Messages : 293
Enregistré le : lun. 15 août 2016 21:38

Re: [TUTO] Application web dynamique

Messagepar Bud Spencer » lun. 29 mai 2017 20:57

Merci pour le retour Guillaume.

stéph
Messages : 1
Enregistré le : lun. 14 août 2017 10:24

Re: [TUTO] Application web dynamique

Messagepar stéph » lun. 14 août 2017 10:24

Hello world


Envoyé de mon iPad en utilisant Tapatalk

james6
Messages : 1
Enregistré le : mer. 13 sept. 2017 04:37

Re: [TUTO] Application web dynamique

Messagepar james6 » mer. 13 sept. 2017 04:43

Une petite combine quand vous avez de gros fichiers Json et que vous avez la flemme de chercher les erreurs. Vous pouvez les passer par cette moulinette pour voir si ils sont cohérants : json formatter https://jsonformatter-online.com

Bud Spencer
Raspinaute
Messages : 293
Enregistré le : lun. 15 août 2016 21:38

Re: [TUTO] Application web dynamique

Messagepar Bud Spencer » mer. 13 sept. 2017 10:08

Merci pour l'info James.
Sur la lecon 6, j'avais proposé le contrôle json a partir du site http://jsonlint.com/, mais celui que tu proposes est bien plus complet. Il permet aussi la conversion xml et affiche clairement l'arborescence de la structure json donc Je le garde :-)

Bud Spencer
Raspinaute
Messages : 293
Enregistré le : lun. 15 août 2016 21:38

Re: [TUTO] Application web dynamique

Messagepar Bud Spencer » dim. 8 oct. 2017 14:15

Comme c’est dimanche et qu’il ne fait pas beau, j’en profite pour vous ajouter ce petit truc. J’ai retrouvé ce petit script que j’avais écrit pour un de mes sites NodeJS distant. Son rôle est de gérer l’update d’un dns dynamique. Il y a bien sur beaucoup de box qui ont cette fonction, mais sur le site en question ce n’est pas le cas. Il est en place sur un site depuis plus d’un an avec un DynHost de chez OVH. Tout semble démontrer qu’il fonctionne parfaitement car depuis, j’ai toujours eu accès à mes sites distant qui l’utilisent. Il fonctionne aussi avec NoIp.

Voilà donc comment fonctionne ce script :
Il fait d’abord un dns lookup sur mon domaine dynamique pour récupérer l’adresse ip correspondante. Ensuite, il fait une requête http sur le site de mon domaine public en appelant une page lui renvois l’ip publique (truc genre monip mais hébergé par moi). La page php appelée est toute simple et ne contient que ça :

Code : Tout sélectionner

<?php echo $_SERVER['REMOTE_ADDR'];?>

Si les 2 adresses sont identiques, cela s’arrête là, par contre, si elles sont différentes, le script fait une requête d’update pour mettre à jour le dyn.dns

Tout ça peut paraître un peu compliqué pour faire l’update de l’ip d’un dyn.dns, mais d’une part, je trouve cela beaucoup plus propre que d’updater arbitrairement toute les x minutes même si l’ip n’a pas changée et d’autre part, cela me permet de connecter mon PI sur n’importe quel site sans me soucier de savoir si la box permet l’update. Cela permet aussi d’avoir plusieurs domaines dynamiques. Le petit plus est une page web qui donne l’adresse du dyn.dns ainsi que la date et l’heure du dernier changement d’ip et surtout l’avantage ultime de tout avoir dans un seul et même projet sans dépendre de rien d’autre que de nodejs.

En fait, si je mets ce script c’est plus pour son coté didactique qui vient complémenter le tuto en donnant un exemple concret de 3 nouveaux npm qui sont ‘dns’, ‘request’ et ‘events’ ainsi qu’une méthode qui permet d’écrire des objets avec évènements dans des fichiers séparés.
L’objet créé utilise son propre timer et à chaque opération, il déclenche un évènement qui est interprété par le script principale. Dans l’exemple avec la page web fournie, à chaque réception d’un évènement de l’objet, le script principale transmet les données aux clients web sur un socket pour la mise à jour dynamique des pages. L’objet expose aussi 3 fonctions (check, run et stop) que le client peut exploiter pour dialoguer avec l’objet.

Le fichier dynip.js et le fichier dynip.html sont dans le zip ainsi qu’un fichier dynip.txt qui contient les explications pour la mise en œuvre.
dynip.zip
(3 Kio) Téléchargé 32 fois


Voici le code concret que j’utilise pour mon DynHost OVH et l’aperçu de la page web qui va avec.
dynip_ovh.png
dynip_ovh.png (39.36 Kio) Vu 460 fois

dynip.png
dynip.png (23.34 Kio) Vu 460 fois

On voit que l'ip dynamique à changée ce matin à 11h10 et que le 'timer control' est actif

Bon dimanche ;)

Bud Spencer
Raspinaute
Messages : 293
Enregistré le : lun. 15 août 2016 21:38

Re: [TUTO] Application web dynamique

Messagepar Bud Spencer » dim. 15 oct. 2017 12:09

On m’a fait remarquer à juste titre (Merci Christian) que la plupart des web-service public qui retournent l’ip publique utilisent le plus souvent la notation JSON. Comme j’étais le seul à utiliser ce script et que j’hébergeais moi-même mon propre service, cela ne me gênais pas mais pour ceux qui n’ont pas cette possibilité c’est plus gênant. J’ai donc modifié le script pour le rendre plus ‘cohérant’.

Désormais, la variable config.urlip doit soit contenir une adresse qui retourne l’ip publique dans une structure json {"ip": "xxx.xxx.xxx.xxx"} ou peut aussi être laissée vide. Voici quelques url publiques qui retournent l'ip publique dans le bon format:

Jsonip.com
freegeoip.net/json/
api.ipify.org/?format=json

Si vous voulez comme moi héberger votre propre service sur un site public, voilà un exemple de code php qui remplace l’ancien :

Code : Tout sélectionner

<?php
header('Content-Type: application/json');
$data->ip = $_SERVER['REMOTE_ADDR'];
echo json_encode($data);
?>


En laissant cette variable vide, cela by-pass le contrôle de l’ip du domaine par le dns lockup et la comparaison avec l’ip publique. Dans ce cas d’utilisation, cela met à jour l’ip du dyn.dns de façon systématique à chaque check. Ce qui revient à un simple updater. Dans ce cas d’utilisation, les balises URL IP Publique, Dernier Contrôle, Adresse IP publique et Adresse IP du Domaine deviennent obsolète dans la page web puisque qu’elles ne sont jamais initialisées.

J’en ai profité pour ‘nettoyer’ un peu le code et le rendre plus conforme. Je laisse l’ancien à titre didactique pour ceux qui veulent faire des comparaisons.

dynip.zip
(3.4 Kio) Téléchargé 25 fois


Retourner vers « Tutoriels »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité