Outils pour utilisateurs

Outils du site


node_red_modification_dynamique_flows

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
node_red_modification_dynamique_flows [2020/04/17 09:27] – [Quelques précisions sur la structure d'un flow Node-Red] BILLARDnode_red_modification_dynamique_flows [2020/04/17 09:48] (Version actuelle) BILLARD
Ligne 40: Ligne 40:
  
 Le script python doit à partir du jeu de **flows de base** effectuer ceci : Le script python doit à partir du jeu de **flows de base** effectuer ceci :
-  - trouver les id des tous les éléments actuels, afin de ne pas produire+  - trouver les id des tous les éléments actuels, afin de ne introduire les mêmes par la suite. 
 +  - pour chaque noeud  
 +      - récupère les id des élements dans le json d'origine indispensables {id des pages de l'ui, de la page de l'éditeur) 
 +      - créer , à partir d'un subflow générique le subflow et le nœud du flow nécessaire et la modification du flow général si besoin.  
 +  - l'adjonction de ces éléments dans le json général. 
 +  - la sauvegarde de l'ensemble.
  
 +Pour la création du subflow et de son nœud, la procédure est la suivante :
 +  - dans Node-Red créer le subflow qui convient pour un type de carte puis l'exporter. Cet export sera modifié, pour le rendre générique pour le script en remplaçant tous les id qui doivent être modifiés par un code entre deux # exemple #IDE_UI_TAB_CONFIGURATION#
  
 +<code>
 +{
 +        "id": "#IDE_NOEUD_CARTE_RELAIS2#",
 +        "type": "subflow:#ID_SUBFLOW#",
 +        "z": "#IDE_TAB_CONTROLE#",
 +        "name": "#IDE_NOEUD_MESH#",
 +        "env": [],
 +        "x": "#POS_X#",
 +        "y": "#POS_Y#",
 +        "wires": []
 +    },
 +{
 +</code>
 +la portion de subflow générique pour introduire le nœud sur le subflow. 
  
 +<code>
 +{
 +        "id": "#ID_SUBFLOW#", 
 +        "type": "subflow",
 +        "name": "RELAIS2",
 +        "info": "",
 +        "in": [
 +            {
 +                "x": 40,
 +                "y": 80,
 +                "wires": [
 + {
 +                        "id": "#ID_ENTREE1#"
 +                    },
 +                    {
 +                        "id": "#ID_ENTREE2#"
 +                    },
 +                    {
 +                        "id": "#ID_ENTREE3#"
 +                    }
 +                    
 +                ]
 +            }
 +        ],
 +        "out": []
 +    },
 +</code>
 +la définition du subflow, avec les indication de raccordement du noeud d'entrée du subflow sur les éléments internes.
 +
 +<code>
 +{
 +        "id": "#ID_ELEMENT4#",
 +        "type": "ui_button",
 +        "z": "#ID_SUBFLOW#",
 +        "name": "ETAT VOYANT 2",
 +        "group": "#ID_GROUPE_CONTROLE#",
 +        "order": 2,
 +        "width": 1,
 +        "height": 1,
 +        "passthru": false,
 +        "label": "{{msg.state2}}",
 +        "tooltip": "",
 +        "color": "",
 +        "bgcolor": "{{msg.background2}}",
 +        "icon": "",
 +        "payload": "",
 +        "payloadType": "str",
 +        "topic": "",
 +        "x": 720,
 +        "y": 540,
 +        "wires": [
 +            []
 +        ]
 +    },
 +</code>
 +
 +Un élément du subflow qui doit apparaître dans l'interface utilisateur via un groupe dont l'id est #ID_GROUPE_CONTROLE#
 +
 +<code>
 +{
 + "id": "#ID_GROUPE_CONTROLE#", 
 +        "type": "ui_group",
 +        "z": "",
 +        "name": "#IDE_NOEUD_MESH#",
 +        "tab": "#IDE_UITAB_CONTROLE#",
 +        "disp": "true",
 +        "width": "6",
 +        "collapse": "true"
 + },
 +</code>
 +
 +le groupe de contrôle qui apparaît dans la page de l'interface utilisateur  #IDE_UITAB_CONTROLE#
 +
 +  - Après chargement du json générique sous forme d'une chaîne de caractères, une expression régulière permet de trouver les éléments à modifier puis de les remplacer avant réinjection dans le json principal.
 +
 +   ATTENTION : Cette étape de production du json générique est fondamentale, il est indispensable de bien décortiquer comment il est constitué. En effet dans un subflow, certains élements {id} sont interne au subflow, d'autres sont liés à l'extérieur.
 +Exemple : l'id du subflow doit être connue pour la création du nœud dans le flow. Alors que les id des éléments du subflow peuvent rester inconnus du reste.
 +   C'est pourquoi j'ai choisi de NOTER #IDE_XXX" les id extérieurs au flow et ID ceux internes au flow.
 +
 +
 +
 +{{tag>nodejs node-red développement mqtt iOT bj}}
  
node_red_modification_dynamique_flows.1587115636.txt.gz · Dernière modification : 2020/04/17 09:27 de BILLARD