LoraPayload-Plugin

Dieses Plugin ist ein Plugin, das es ermöglicht, LoraWan-Nutzlastbefehle zu verknüpfen und ein Gerät mit Befehlen zu erstellen, während die Werte analysiert werden.

Configuration

Plugin-Konfiguration

Sie können den Status der Abhängigkeiten hier überprüfen und neu starten. Bei Problemen mit dem Plugin immer die Abhängigkeiten neu starten, auch wenn im Zweifel OK.

Das Plugin

Gehen Sie zum Menü Plugins / Protokoll, um das Plugin zu finden.

Auf dieser Seite sehen Sie die bereits enthaltenen Module.

Im oberen Teil dieser Seite haben Sie mehrere Schaltflächen alt text

Equipement

Wenn Sie auf eines Ihrer Module klicken, gelangen Sie auf dessen Konfigurationsseite :

Auf der rechten Seite finden Sie :

Sie haben auch zwei zusätzliche Registerkarten:

Ausrüstung hinzufügen

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.

Auf der rechten Seite ist es wichtig, die Art der Ausrüstung zu wählen. So können Sie den Frame analysieren.

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

Sobald Sie fertig sind, können Sie speichern. Danach werden die Befehle für Ihr Gerät aktualisiert, wenn Sie das nächste Mal einen Frame erhalten

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.