Intégration Node-RED pour lancer un container en un clic

Voici l’image docker : delogzway/gladys:nodered :slight_smile:

3 « J'aime »

Voici mon retour…
Quand on clique sur l’intégration node-red, on obtient ceci:


Donc, c’est déjà activé?
Il semblerait que non car interface inaccessible… Pourtant :

2023-06-29T18:09:51+0200 <info> checkForContainerUpdates.js:13 (NodeRedManager.checkForContainerUpdates) NodeRed: Checking for current installed versions and required updates...
2023-06-29T18:09:52+0200 <info> configureContainer.js:16 (NodeRedManager.configureContainer) NodeRed: Docker container is being configured...
2023-06-29T18:09:52+0200 <info> configureContainer.js:28 (NodeRedManager.configureContainer) NodeRed:  configuration file already exists.
2023-06-29T18:09:52+0200 <info> configureContainer.js:56 (NodeRedManager.configureContainer) NodeRed: Writting configuration...
2023-06-29T18:09:52+0200 <info> installContainer.js:74 (NodeRedManager.installContainer) NodeRed: container is (re)starting...
2023-06-29T18:09:59+0200 <info> installContainer.js:80 (NodeRedManager.installContainer) NodeRed: container successfully started

La raison:

pi@Nichoir2:~ $ docker ps -a
CONTAINER ID   IMAGE                      COMMAND                  CREATED          STATUS                          PORTS     NAMES
0774902bc529   eclipse-mosquitto:2        "/docker-entrypoint.…"   23 minutes ago   Up 22 minutes                             eclipse-mosquitto
319910e8396c   nodered/node-red:latest    "./entrypoint.sh"        23 minutes ago   Restarting (0) 12 seconds ago             gladys-node-red
0f828507d957   delogzway/gladys:nodered   "docker-entrypoint.s…"   30 minutes ago   Up 30 minutes                             gladys
29 Jun 16:18:50 - [error] Failed to start server:
29 Jun 16:18:50 - [error] Error: EACCES: permission denied, mkdir '/data/node_modules'
29 Jun 16:19:57 - [error] Failed to start server:
29 Jun 16:19:58 - [error] Error: EACCES: permission denied, mkdir '/data/node_modules'
29 Jun 16:21:06 - [error] Failed to start server:
29 Jun 16:21:06 - [error] Error: EACCES: permission denied, mkdir '/data/node_modules'

De plus, le lien proposé [localhost:1881] ne devrait-il pas être plutôt une adresse IP?

Enfin, quand on désactive le container via Gladys, celui-ci n’est pas détruit (contrairement à z2m)

1 « J'aime »

@GBoulvin Merci pour ces retours, je regarde cela rapidement.

@GBoulvin je viens de faire une mise a jour de l’image docker. Dis moi si cela a réglé tes problèmes :slight_smile:

Salut @GBoulvin, est-ce que tu as pu regarder depuis les derniers correctifs de @Lokkye ? :slight_smile:

Ah non, j’ai oublié ce sujet. Merci pour la relance. Je m’y colle ce soir!

2 « J'aime »

Voilà, j’ai fait mes devoirs :wink:

Premier lancement, OK


Petite typo dans la phrase d’explication: Activez (plutôt que Activer, c’est plus cohérent) et il manque un point au bout.

Après clic sur Activer :


Sur les machines plus lentes, l’activation peut prendre jusqu’à cinq minutes (testé sur RPi2 ici). Peut-être serait-il intéressant de le préciser ?

Après quelques minutes donc, la page se rafraîchit mais les champs sont vides :


Petite typo : Il manque un accent à Désactiver
Après un refresh manuel :

Malheureusement, bien que le log de Gladys dise ceci (et le joli V vert) :

2023-08-19T10:39:25+0200 <info> installContainer.js:49 (NodeRedManager.installContainer) Nodered: Preparing environment...
2023-08-19T10:39:25+0200 <info> configureContainer.js:16 (NodeRedManager.configureContainer) NodeRed: Docker container is being configured...
2023-08-19T10:39:25+0200 <info> configureContainer.js:31 (NodeRedManager.configureContainer) NodeRed: Writing default configuration...
2023-08-19T10:39:25+0200 <info> installContainer.js:52 (NodeRedManager.installContainer) Creation of container...
2023-08-19T10:39:41+0200 <info> installContainer.js:57 (NodeRedManager.installContainer) NodeRed: successfully installed and configured as Docker container
2023-08-19T10:39:41+0200 <info> configureContainer.js:16 (NodeRedManager.configureContainer) NodeRed: Docker container is being configured...
2023-08-19T10:39:41+0200 <info> configureContainer.js:29 (NodeRedManager.configureContainer) NodeRed:  configuration file already exists.
2023-08-19T10:39:41+0200 <info> installContainer.js:80 (NodeRedManager.installContainer) NodeRed: container is (re)starting...
2023-08-19T10:39:54+0200 <info> installContainer.js:86 (NodeRedManager.installContainer) NodeRed: container successfully started

Pas d’accès car le container redémarre en boucle :

19 Aug 08:44:02 - [error] Failed to start server:
19 Aug 08:44:02 - [error] Error: EACCES: permission denied, mkdir '/data/node_modules'

Quand on désactive le container, celui-ci est quitté (pas détruit) :

pi@Nichoir2:~ $ docker ps -a
CONTAINER ID   IMAGE                      COMMAND                  CREATED          STATUS                     PORTS     NAMES
5fbbcc3f1e7a   nodered/node-red:latest    "./entrypoint.sh"        17 minutes ago   Exited (0) 8 seconds ago             gladys-node-red
2231a7247078   delogzway/gladys:nodered   "docker-entrypoint.s…"   24 minutes ago   Up 24 minutes                        gladys

C’est presque bon !
Dernière chose :
Pour une raison d’uniformité, ça ne serait pas mieux de reprendre le bouton comme dans Z2M et MQTT ?
image

1 « J'aime »

Merci du test @GBoulvin !

Pour le coup, le « toggle » dans ces intégrations est une erreur à mon avis, ça va changer dans les prochaines versions de Gladys donc pas la peine d’utiliser un toggle.

Le toggle est adapté à des actions « courtes » (genre allumé → éteint d’une lampe), mais pour une action de potentiellement 20 minutes, c’est horrible pour l’utilisateur car il pense qu’il peut faire « on/off » pour repartir de zéro, et en fait ça casse tout et l’utilisateur ne sait pas ce qui se passe en arrière plan ^^

4 « J'aime »

Merci pour les retours @GBoulvin.
Je vais regarder pourquoi tu as cette erreur.
Je vais aussi corriger les typo un peu partout :slight_smile:

@GBoulvin : J’ai trouvé le problème. Un truc tout con comme les droits du dossier sur la machine host :frowning:
Je suis en train de faire une nouvelle image docker, elle sera prête dans une heure. Est ce que tu aurais la possibilité de re-tester chez toi ?

2 « J'aime »

Testé et approuvé !
Simple et concis!
Une remarque/question :
Si on désactive le container dans l’intégration, celui-ci n’est pas supprimé mais arrêté. Après un redémarrage, le container node-red est à nouveau activé (même si alors inaccessible depuis l’intégration)
Pas sûr d’être très clair mais je voulais dire que si on désactive le container puis qu’on redémarre le pi, les deux containers sont relancés, même si l’intégration dans Gladys dit le contraire…
Une dernière chose mais je ne sais pas si tu sais faire quelque chose. C’est l’affichage sur mobile qui n’est pas génial au niveau du bouton d’activation/désactivation :


Superbe boulot en tout cas!

Merciiiiii :slight_smile:

Je viens de le corrigé, je supprime maintenant le container après l’avoir stoppé

Je viens de le corriger aussi. Maintenant le bouton pas sur la deuxième ligne:

Merci beaucoup pour tes retours et tes tests :slight_smile:

Je viens de sortir une nouvelle image docker avec les dernières modifications

2 « J'aime »

@Lokkye Super boulot :slight_smile:

Tu as moyen de déplacer le bouton « Désactiver » et de le mettre en rouge ? C’est pas très visuel je trouve de mettre un bouton dans un bandeau d’annonce.

Je mettrais bien le bouton en bas de la page:

1 « J'aime »

Je confirme, parfaitement fonctionnel.
Bouton déplacé comme tu as dit (la suggestion de @pierre-gilles est excellente) et container supprimé à la désactivation.
Plus qu’à écrire la doc qui renvoie actuellement vers un 404 :cowboy_hat_face:
Bravo ! Je n’aurai bientôt plus d’excuse pour me lancer dans node-red (pour contrôler l’état de la voiture…) ! :sunglasses:

1 « J'aime »

@pierre-gilles @GBoulvin

Voici le résultat avec le bouton déplacé


J’ai refait une image docker avec les changements :slight_smile:

4 « J'aime »

Merci pour les changements @Lokkye ! :slight_smile:

C’est mieux mais j’ai quelques retours/questions :

  • Pourquoi afficher « état du service node-red » lorsque Node-RED n’est pas activé ?
  • Si l’utilisateur ne tourne pas sous Docker ou avec une configuration qui ne permet pas de lancer un container, est-ce qu’il y a un message spécifique avec le bouton « activer » non cliquable?
  • Les boutons « Activer » et « Désactiver » mériteraient peut-être d’être à gauche non?
  • Comment est calculée l’URL de l’interface Node-RED ? Il faut préciser que cette URL n’est accessible qu’en local. (notamment pour qu’il n’y ait pas de confusion via Gladys Plus)
  • Pour le bouton « Désactiver », est-ce qu’il a une confirmation avant désactivation ? Pour éviter de tout détruire sur un misclick :smiley:

Voilà c’est tout pour moi, des petits détails d’UX mais qui à mon sens ont toute leur importance :slight_smile:

Super cette fonctionnalité.
Je suis intéressé mais n’ai pas l’intégration dans Gladys.
Y a t il une procédure « standard » pour installer cette intégration?
Merci.

Pour le moment c’est développement, vu l’avancée je pense que ça ne devrait pas tarder à arriver dans une prochaine version :wink:

Si tu es pressé tu peux aussi installer Node-Red toi même à côté de Gladys, c’est ce que beaucoup ont fait ! (avec ce tuto en prime : Nouvelle vidéo: Intégrer Node-RED avec Gladys Assistant en MQTT!)

2 « J'aime »

C’est caché maintenant

Oui


C’est fait :slight_smile:

Elle est basé sur « config.localApiUrl » plus le port qui est retourné par l’api

C’est fait :slight_smile:


Tu as complètement raison

Comme dab, j’ai sortie une nouvelle image docker :slight_smile:

3 « J'aime »

Merci pour tous les changements :slight_smile:

J’ai essayé de faire un test de bout en bout mais j’ai eu des petits soucis.

Au début, j’ai essayé de lancer le container mais j’avais plus de disque disponible sur ma VM de test :stuck_out_tongue: (là c’est pas lié à la PR, au moins c’est l’occasion de tester le message d’erreur)

(D’ailleurs petite typo sur « serveur »)

J’ai trouvé le comportement du « Désactiver » un peu bizarre, ça fait un saut de gauche à droite:

Ensuite, je vide mon disque et Node-RED se lance bien:

(Petite remarque design sur le screenshot)

Sauf que si j’essaie de me connecter à Node-RED, j’ai une erreur:

En regardant les logs:

2023-09-08T10:36:31+0200 <info> checkForContainerUpdates.js:13 (NodeRedManager.checkForContainerUpdates) NodeRed: Checking for current installed versions and required updates...
2023-09-08T10:36:31+0200 <info> checkForContainerUpdates.js:17 (NodeRedManager.checkForContainerUpdates) NodeRed: update #2 of the container required...
2023-09-08T10:36:31+0200 <info> checkForContainerUpdates.js:34 (NodeRedManager.checkForContainerUpdates) NodeRed: update #2 of the container done
2023-09-08T10:36:31+0200 <info> installContainer.js:44 (NodeRedManager.installContainer) Nodered: is being installed as Docker container...
2023-09-08T10:36:31+0200 <info> installContainer.js:45 (NodeRedManager.installContainer) Pulling nodered/node-red:latest image...
2023-09-08T10:36:56+0200 <info> installContainer.js:49 (NodeRedManager.installContainer) Nodered: Preparing environment...
2023-09-08T10:36:56+0200 <info> configureContainer.js:16 (NodeRedManager.configureContainer) NodeRed: Docker container is being configured...
2023-09-08T10:36:56+0200 <info> configureContainer.js:34 (NodeRedManager.configureContainer) NodeRed:  configuration file already exists.
2023-09-08T10:36:56+0200 <info> installContainer.js:52 (NodeRedManager.installContainer) Creation of container...
2023-09-08T10:36:56+0200 <info> installContainer.js:57 (NodeRedManager.installContainer) NodeRed: successfully installed and configured as Docker container
2023-09-08T10:36:56+0200 <info> configureContainer.js:16 (NodeRedManager.configureContainer) NodeRed: Docker container is being configured...
2023-09-08T10:36:56+0200 <info> configureContainer.js:34 (NodeRedManager.configureContainer) NodeRed:  configuration file already exists.
2023-09-08T10:36:56+0200 <info> installContainer.js:80 (NodeRedManager.installContainer) NodeRed: container is (re)starting...
2023-09-08T10:37:01+0200 <info> installContainer.js:86 (NodeRedManager.installContainer) NodeRed: container successfully started

Je suppose que du coup le fichier de configuration est encore l’ancien!

Du coup, si jamais j’ai déjà configuré Node-RED une fois, je suis bloqué (je pense que l’ancien mot de passe est encore dans le fichier). En testant le hash contre le mot de passe, effectivement c’est pas le même mot de passe. Est-ce que tu supprime bien le dossier /var/lib/gladysassistant/node-red si l’utilisateur décide de trasher l’intégration Node-RED ?

Au niveau des traductions, j’ai quelques feedbacks:

  • « server » → « serveur » en français
  • Il faudrait uniformiser le nom « Node-RED » dans l’intégration. Le nom officiel est bien « Node-RED », sauf que là il y a plusieurs casse dans l’UI (Node-red, NodeRed).
  • Pour le lien de la documentation, est-ce que tu peux mettre « node-red » en minuscule ? Il y a de la casse là.

Autre question plus générale, est-ce qu’on figerait pas la version de Node-RED ? (Au moins une version majeure ou mineure)

J’ai peur qu’on se retrouve avec les mêmes bugs qu’on a eu sur Mosquitto où au beau milieu de l’été une version pourrie a été poussée de leur côté et ça a tout cassé chez les utilisateurs Gladys.

Je sais qu’on fait pas ça sur Zigbee2mqtt, mais je sais que Node-RED ils sont assez « agressifs » sur les mises à jour et souvent de ce que je lis sur le forum, les mises à jour cassent tout.

Par exemple, on pourrait utiliser le tag:

nodered/node-red:3.1 

Pour les mises à jour, on pourra les faire manuellement côté code, en faisant des tests avant de changer.

Tu en penses quoi ?

Merci en tout cas pour l’intégration et tout le travail, c’est du très beau boulot :smiley: :clap:

1 « J'aime »