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 :

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 les downlinks
      },
      {
        "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

Cette mise à jour améliore la gestion de la file d’attente des downlinks dans le plugin lorapayload pour Jeedom. Elle introduit :

Fonctionnalités clés

  1. Démon Worker Le démon (lorapayloadd.php) tourne en continu et lit la clé de cache queueDownlink. À chaque cycle :
    • Cycle toutes les 3s
    • Relit à chaque itération pour prendre en compte les purges ou modifications.
  2. Panneau d’administration

alt text

Dans l’interface Jeedom, onglet Acceuil → lorapayload → Cache queueDownlink :

  1. Fonctionnalités clés
    • Démon Exécution programmée des downlinks selon leur champ ts et relecture dynamique de la queue pour tenir compte des purges.
  1. Aufbau Configurer les équipements prioritaires en allant dans les configuration de l’équipement puis dans LoRaWAN > Downlink alt text Si votre équipement est prioritaire, cochez sur le check point Prioritaire puis enregistrez. Ensuite rendez-vous dans les configurations du plugin Lorapayload et dans le champs configuration, ajustez les paramètres globaux en fonction de votre application. alt text Redémarrer le démon s’il est arrêté ou en statut NOK. Suivre et gérer l’état de la file dans l’onglet Cache queueDownlink. _____

    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.