Plugin LoraPayload

Ce plugin est un plugin permettant de lier des commandes de payload LoraWan et d’en créer un équipement avec des commandes tout en parsant les valeurs.

Configuration

Configuration du plugin

Vous pouvez vérifier ici l’état des dépendances et les relancer. En cas de soucis avec le plugin toujours relancer les dépendances même si OK dans le doute.

Le plugin

Rendez vous dans le menu plugins/protocole pour retrouver le plugin.

Sur cette page vous pourrez voir les modules déjà inclus.

Sur la partie haute de cette page vous avez plusieurs boutons alt text

Equipement

Lorsque que vous cliquez sur un de vos modules, vous arrivez sur la page de configuration de celui-ci :

Sur la partie droite vous trouverez :

Vous avez aussi deux onglets supplémentaires:

Ajout d’un équipement

alt text Il suffit de cliquer sur le bouton Génération automatique et de choisir un nom. Ensuite vous pouvez configurer l’objet Parent, renseigner le Dev EUI l’app Key, l’application pour chirpstack Pour configurer, activer l’équipement, choisir une ou des catégories, et rendre l’équipement visible ou non.

Il est important sur la partie droite de choisir le type de l’équipement. C’est ce qui permettra de savoir comment parser la trame.

L’onglet LoRaWAN est très important : alt text

Une fois fait vous pouvez sauver. Suite à cela lors de la prochaine réception de trame les commandes de votre équipement se mettront à jour

Envoyer des commandes

Certains modules Lorawan possèdent des commandes de type Action qui permettent d’envoyer des consignes aux modules via l’interface Jeedom.

Dans l’onglet Equipement du plugin LoraPayload :

Concernant la commande d’envoi, dans le cas d’utilisation de MQTT, c’est une commande dans MQTT de type Action et de sous-type Message. Le topic est le topic dédié aux downlinks et la valeur de la commande est #message#.

Ajouter un nouveau capteur Milesight (downlink/uplink)

Cette section détaille l’ajout de la configuration et de la gestion des commandes (uplink/downlink) pour un capteur Milesight dans le plugin LoraPayload.


1. Ajout des fichiers d’encodage/décodage

  1. Créer un fichier JavaScript nommé selon la convention suivante :
    milesight_modele.js
    Exemple :
    • milesight_WT101.js
    • milesight_GS601.js
  2. Déposer ce fichier dans :
    /var/www/html/plugins/lorapayload/resources/lorapayload/payloads/

  3. Fusionner le code d’encodage (encoder) et décodage (decoder) dans ce même fichier.

2. Adapter la fonction Decode

Remplacer :

function Decode(fPort, bytes) {
    return milesightDeviceDecode(bytes);
}
Par 
function Decode(input) {
    bytes = input.bytes;
    return milesightDeviceDecode(bytes);
}

3. Adapter la fonction Encoder

Remplacer :

function Encode(fPort, obj, variables) {
return milesightDeviceEncode(obj);
}
Par 
function Encode(obj) {
    return milesightDeviceEncode(obj);
}

4. Explorter les fonctions

A la fin du fichier, ajouter:

module.exports = {
    Decode,
    Encode
};

5. Déclaration du capteur dans la configuration

  1. Créer un dossier dans /var/www/html/plugins/lorapayload/core/config/devices/qui porte le même nom que votre fichier d’encodage/décodage (sans l’extension .js).

  2. Ajouter dans ce dossier :

6. Exemple de configuration JSON pour un capteur Milesight

{
  "milesight_GS601": {
    "name": "Milesight GS601 - Vape Detector",  // Modele + Nom du capteur 
    "groupe": "Milesight",      //Nom du Fabricant
    "configuration": {
      "type": "milesight_GS601",
      "language": "js",         // Indique que l’encodeur/décodeur est en JS (sinon omettre)
      "deviceProfile": "C"      // Indique que le profil LoRaWAN du device est "Class C" (sinon omettre)
    },
    "commands": [
      {
        "name": "Température",  // Nom 
        "type": "info",         // Commande info = remonte une info du capteur (uplink)
        "subtype": "numeric",   // numeric/string/binary selon la donnée
        "isVisible": 1,         // 1 = visible, 0 = cachée
        "isHistorized": 1,      // 1 = historisé, 0 = non historisé
        "unite": "°C",          // Unité d'affichage
        "logicalId": "parsed::temperature" // Doit correspondre à la variable dans le JS (decoded.temperature)
      },
      {
        "name": "fPort",        // Toujours préciser le fPort
        "type": "info",
        "subtype": "numeric",
        "isVisible": 0,
        "isHistorized": 0,
        "unite": "",
        "logicalId": "fport" // Port utilisé pour communiquer 
      },
      {
        "name": "Reboot",
        "type": "action",        // Commande action = envoi une commande vers le capteur (downlink)
        "subtype": "other",
        "isVisible": 1,
        "logicalId": "encoder::reboot::1" // Format pour envoyer une commande d'action (encoder::<fonction>::<valeur>)
      },
      {
        "name": "Set report interval",
        "type": "action",
        "subtype": "slider",     // slider/other selon le type d'action
        "isVisible": 1,
        "logicalId": "encoder::report_interval",
        "configuration": {
          "minValue": 1,
          "maxValue": 5000,
          "step": 1
        }
      },
      {
        "name": "Payload brut",
        "type": "info",
        "subtype": "string",
        "isVisible": 0,
        "isHistorized": 0,
        "logicalId": "payload"   // Pour afficher le payload reçu tel quel
      }
    ],
    "compatibility": [
      {
        "manufacturer": "Milesight",
        "name": "GS601",
        "doc": "",
        "type": "milesight_GS601",
        "remark": "",
        "inclusion": "",
        "imglink": "milesight_GS601"
      }
    ]
  }
}

Comment écrire le fichier de configuration JSON?

Le fichier de configuration JSON permet de décrire chaque capteur (uplink et downlink), d’associer les variables décodées, de définir les commandes d’action, et d’assurer l’affichage correct dans Jeedom.

Explication des champs principaux

Bonnes pratiques

Ajouter l’image du capteur

  1. Note l’exemple de payload dans la doc.

    • Parfois c’est un tableau, parfois un JSON d’exemple.
  2. Prépare la chaîne de valeurs à envoyer dans le bon ordre, séparées par (comme vu plus haut), ou sous forme de JSON si l’outil le demande.
  3. (Facultatif) : Si tu es un utilisateur avancé, tu peux regarder le code pour vérifier le mapping pour écrire le message.

Exemple Concret Supposons, dans la documentation Milesight, tu trouves ce tableau :

Champ Valeurs possibles Description
enable 0, 1 0: Désactiver, 1: Activer
threshold_condition 1,2,3,4 1: en-dessous, 2: au-dessus…
threshold_min 0~100 En °C
threshold_max 0~100 En °C
{
  "temperature_alarm_settings": {
    "enable": 1,
    "threshold_condition": 2,
    "threshold_min": 30,
    "threshold_max": 40
  }
}

Panel

Qu’est-ce que le panel Lorapayload ?


Visualisation dans Jeedom

FAQ

Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site web. Si vous continuez à utiliser ce site, nous supposerons que vous en êtes satisfait.