Améliorations de notre package Node-RED

Améliorations de notre package Node-RED

Nous reparlons de Node-RED car cette plateforme est de plus en plus populaire parmi nos clients et nous avons récemment effectué quelques modifications à notre package node-red-contrib-yoctopuce. Voici donc les nouveautés du package.





Commençons par les améliorations que nous avons apportées à notre package.

Le nœud YSensors


La plus grosse modification concerne le nœud YSensors. Il est désormais possible de configurer le type et la fréquence des message publiés directement depuis le panneau de configuration du nœud.

Le mode par défaut est live value. Dans ce mode, le nœud envoie un message dès que la valeur du senseur bouge. Cela permet de réagir au plus vite, mais si la valeur du senseur ne change pas aucun message n'est envoyé.

Dans certain cas, notamment si l'on désire dessiner un graphique, il est préférable d'avoir un message qui est envoyé à intervalle fixe. C'est ce que fait le mode periodic value. Comme son nom l'indique, un message est envoyé à intervalle fixe, que la valeur ait changé ou pas. Il était déjà possible d'utiliser ce mode, mais il fallait configurer le module Yoctopuce manuellement depuis l'interface du VirtualHub ou du YoctoHub, et la procédure était compliquée. Dorénavant il est possible de configurer la fréquence ainsi que l'information publiée directement depuis le panneau de configuration du nœud.

Il est possible de configurer la fréquence et le type des notifications périodiques
Il est possible de configurer la fréquence et le type des notifications périodiques



Lorsque le nœud envoie des valeurs périodiques, il est possible de choisir quelle donnée est assignée au champ payload du message. En effet, il est possible d'envoyer la valeur moyenne, minimal ou maximale qui a été mesurée pendant l'intervalle. Dans ces trois cas, le payload du message sera une valeur numérique. La quatrième option "all" transmet toutes ces mesures en même temps ainsi que le timestamp de début et fin sous la forme d'un objet JavaScript:


{
    "min":20.943,
    "max":20.954,
    "avg":20.949
    "start":1542838377000,
    "stop":1542838378000,
}
 



Cette dernière option est pratique pour les usages avancés, mais nécessite d'utiliser un nœud function ou template en sortie pour convertir ces données brutes vers un autre format, car très peu de nœuds acceptent des données structurées.

Le nœud YSQLHelper


Nous avons aussi ajouté un nœud YSQLHelper qui permet de générer les requêtes SQL pour ajouter et récupérer les données d'un senseur Yoctopuce dans une base de données.

Il existe plusieurs nœuds qui permettent d'interagir avec une base de données, par exemple node-red-node-sqlite ou node-red-node-mysql, mais il faut toujours utiliser un nœud function et formater les requêtes SQL à la main. Le nœud YSQLHelper permet justement de simplifier cette tâche.

Prenons l'exemple du nœud sqlite qui permet d'interagir avec une
base de données SQLite. Il accepte des requêtes SQL qui lui sont passées par le champ topic du message. Le nœud YSQLHelper permet de créer la requête SQL qui permet d’insérer les données du senseur dans une table. Il est ainsi possible de relier un nœud YSensor à un nœud YSQLHelper et de relier ce dernier à un nœud sqlite.

Ce nœud a trois paramètres principaux:

  1. le nom de la table
  2. l'opération à effectuer
  3. le champ du message qui doit contenir la requêtes SQL


Le nœud YSQLHelper a trois paramètres
Le nœud YSQLHelper a trois paramètres



Le nom de la table permet de spécifier le nom de la table dans laquelle les données seront enregistrées. Cette table aura trois colonnes: hwid, timestamp et value.

Exemple de table

hwidtimestampvalue
METEOMK1-63E02.temperature154283837700020.9
METEOMK1-63E02.temperature154283837800021.2
METEOMK1-63E02.temperature154283837900022
METEOMK1-63E02.temperature154283838000022.4



La liste des opérations supportées est: Insert, Select, Create et Drop.

L’opération Insert permet d'ajouter un enregistrement à la table. Si la table n'existe pas, elle est automatiquement créée. Concrètement, voilà le schémas qui permet d'ajouter les valeurs du capteur METEOMK1-63E02.temperature à une table "yoctopuce_sensors" dans une base de donnée SQLite:

L’opération insert permet d'ajouter une ligne à la table avec la valeur mesurée
L’opération insert permet d'ajouter une ligne à la table avec la valeur mesurée



Il est aussi possible de créer ou effacer la table. Pour ce faire, il suffit d'envoyer n'importe quel message pour déclencher l’opération sur la table spécifiée.

Il est aussi possible de simplement créer ou supprimer la table
Il est aussi possible de simplement créer ou supprimer la table



L'opération Select permet d'extraire les données que l'on a enregistrées dans la table. Il est possible de spécifier des filtres pour obtenir qu'une partie des enregistrements. On peut par exemple spécifier que l'on ne désire que les 100 derniers enregistrements du capteur METEOMK1-63E02.temperature:

Il est possible de spécifier des filtres pour n'obtenir qu'une partie des enregistrements
Il est possible de spécifier des filtres pour n'obtenir qu'une partie des enregistrements



Exemple d'operation Select
Exemple d'operation Select



Lors d'un Select, le nœud sqlite va retourner un tableau JavaScript avec tous les enregistrements de la table qui correspondent aux filtres.

Le nœud DbSplit


Comme nous venons de le voir, les bases de données retournent tous les enregistrements dans un seul message. Si l'on veut séparer ce gros message avec X valeurs en une série de X messages avec chaque fois une seule valeur, on peut utiliser notre nouveau nœud DbSplit.

L'avantage d'utiliser ce nœud est que chaque message aura le timestamp qui était enregistré dans la base de données, ce qui est fort pratique si l'on désire afficher ces points sur un graphique:

Le nœud DbSplit permet de passer plus facilement des données à un graphique
Le nœud DbSplit permet de passer plus facilement des données à un graphique



Autres améliorations


Nous avons aussi amélioré la mise en page des panneaux de configuration. Nous avons fixé une incompatibilité avec le package node-red-contrib-iiot-opcua. Pour finir, si vous n'avez pas spécifié de nom, les nœuds affichent désormais le hardware Id du module à la place du type de nœud. Bref, des détails mais qui facilitent l'utilisation de notre package au quotidien.

Obtenir node-red-contrib-yoctopuce


Pour utiliser ces nouveautés, il suffit d'installer la dernière version (v1.1.0) de notre package node-red-contrib-yoctopuce. Cela ce fait très facilement depuis le menu "Manage palette" de l'interface Node-RED.

Commenter aucun commentaire Retour au blog












Yoctopuce, get your stuff connected.