Este complemento es un complemento que permite vincular los comandos de carga útil de LoraWan y crear un dispositivo con comandos mientras se analizan los valores.
Puede verificar el estado de las dependencias aquí y relanzarlas. En caso de problemas con el complemento, reinicie siempre las dependencias incluso si está bien si hay dudas.
Vaya al menú de complementos / protocolo para encontrar el complemento.
En esta página puedes ver los módulos ya incluidos.
En la parte superior de esta página tienes varios botones
Cuando haces clic en uno de tus módulos, llegas a su página de configuración :
En el lado derecho encontrarás :
También tienes dos pestañas adicionales:
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.
Es importante en el lado derecho elegir el tipo de equipo. Esto es lo que permitirá saber cómo analizar el marco.
L’onglet LoRaWAN est très important :
Ajouter
sinon avec Génération automatique
tout est généré automatiquement )Regénérer la configuration LoRaWAN
via le bouton bleu qui porte le même nom car à chaque fois que vous Recréer les commandes dans l’onglet Equipement celles-ci ajoutent les commandes LoRaWAN nécessaire pour le bon fonctionnement du plugins.Una vez hecho esto, puedes guardar. A continuación, la próxima vez que reciba un marco, se actualizarán los comandos de su equipo
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.
milesight_modele.js
milesight_WT101.js
milesight_GS601.js
Déposer ce fichier dans :
/var/www/html/plugins/lorapayload/resources/lorapayload/payloads/
Remplacer :
function Decode(fPort, bytes) {
return milesightDeviceDecode(bytes);
}
Par
function Decode(input) {
bytes = input.bytes;
return milesightDeviceDecode(bytes);
}
Remplacer :
function Encode(fPort, obj, variables) {
return milesightDeviceEncode(obj);
}
Par
function Encode(obj) {
return milesightDeviceEncode(obj);
}
A la fin du fichier, ajouter:
module.exports = {
Decode,
Encode
};
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
).
Ajouter dans ce dossier :
Un fichier JSON de configuration du même nom que le JS
Une image PNG du capteur (format recommandé : 250x250 px)
{
"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"
}
]
}
}
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.
name: Nom lisible du capteur.
groupe : Nom du fabricant (ex: Milesight, Dragino, etc).
Configuración :
type
: Doit correspondre au nom du fichier, en minuscule.
language
: Mettre “js” si le décodeur est en JavaScript, sinon ne pas mettre ce champ.
deviceProfile
: Mettre “C” si le capteur est en LoRaWAN Class C (optionnel).
commands : Tableau listant toutes les commandes liées au capteur (infos ou actions).
type :
info
: Pour une variable reçue (uplink).
action
: Pour une commande à envoyer (downlink).
subtype :
numeric
: valeur numérique.
string
: texte.
binary
: binaire.
slider/slide
: pour les commandes actions avec valeur à faire varier.
other
: action simple sans argument.
isVisible : Affichage de la commande (1 = oui, 0 = non).
isHistorized : Historisation de la commande (1 = oui, 0 = non). (Utilisé uniquement pour type “info”)
unite : Unité d’affichage (optionnel pour les valeurs numériques).
logicalId :
Pour une info : parsed::nom_de_la_variable
(récupérée dans la partie decoded.
du JS)
encoder::<fonction>::<valeur>
ou
encoder::<fonction>
(si la valeur est définie dynamiquement, ex: slider)
"logicalId": "payload"
compatibility : Tableau listant les capteurs compatibles, le fabricant, le type, et le lien image.
Respecter les noms de variables : le champ logicalId
doit strictement correspondre au nom exposé dans la fonction de décodage du JS (ex: decoded.temperature ⇒ "parsed::temperature"
).
Toujours indiquer la commande d’action de façon claire pour faciliter la gestion des downlinks.
Mettre toutes les unités pour chaque mesure si besoin (°C, %, V, etc.).
Ajouter la compatibilité (fabricant, modèle, image) pour faciliter l’identification dans Jeedom.
Format recommandé : PNG, 250x250 px
milesight_gs601.png
)Regarde le tableau ou la section “Commandes downlink” ou “Configuración via payload”,
Repère les champs attendus, leur ordre, les valeurs acceptées, les unités, etc.
Note l’exemple de payload dans la doc.
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. |
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
}
}
"1|2|30|40"