Sensor
function decodeUplink(input) { var hexStringInput = ""; for (var i = 0; i < input.bytes.length; i++) { var hex = input.bytes[i].toString(16); // Convertir le nombre en base 16 // Ajouter un zéro devant si le nombre hexadécimal est constitué d'un seul chiffre if (hex.length === 1) { hex = "0" + hex; } hexStringInput += hex; // Ajouter le nombre hexadécimal à la chaîne de caractères } var data = decode_pay(hexStringInput); var decoded = decode_json(data.data,hexStringInput); var res = postProcess(data, JSON.parse(decoded)); var errors; var warnings; return { data: res, errors: errors, warnings: warnings }; } function postProcess(data, decoded) { /*gamme acw*/ postProcessFrameType(decoded,data); postProcessTypeAlerte(decoded,data); postProcessTypeErreur(decoded,data); postProcessTemp(decoded,data); postProcessHum(decoded,data); postProcessDp(decoded,data); postProcessCov(decoded,data); postProcessCo2(decoded,data); postProcessDist(decoded,data); postProcessEntree(decoded,data); postProcessCompteur(decoded,data); postProcessHorodatage(decoded,data); postProcessPeriode(decoded,data); postProcessTension(decoded,data); postProcessSpecifique(decoded,data); postProcessHistoEchan(decoded,data); /*ancien produit */ postProcessAncienCompteur(decoded,data); postProcessEntrerAncien(decoded,data); postProcessAncienTemperature(decoded,data); postProcessAncienSortieEntree(decoded,data); postProcessAncienCompteur0_15(decoded,data); postProcessAncienPir(decoded,data); postProcessAncienMR2(decoded,data); postProcessAncienDINDA(decoded,data); return decoded; } /*******************************************************************************************************************************/ /*******************************************************************************************************************************/ /*PARTIE AFFICHAGE*/ /*******************************************************************************************************************************/ /*******************************************************************************************************************************/ /***********/ /*ACW*/ /***********/ function postProcessSpecifique(decoded,data){ if(decoded.wr != undefined){ if(decoded.wr[1]===0x01){ var wr = "cable Wirecut non coupé"; }else if(decoded.wr[1]===0x20){ var wr = "cable Wirecut coupé"; } decoded.wr = { value : wr }; } } function postProcessTension(decoded,data){ if(decoded.tensionc != undefined){ decoded.tensionc = { value : (decoded.tensionc[0]<<8 | decoded.tensionc[1]) /1000, unit : "V" }; } if(decoded.tensionv != undefined){ decoded.tensionv = { value : (decoded.tensionv[0]<<8 | decoded.tensionv[1]) /1000, unit : "V" }; } if(decoded.tension != undefined){ var valeur_echan_hist = (data.echan * data.historique); var valeur_tension = []; for(var i=0;i1) && (i>16 )/100 === -327.68){ valeur_temp0.push("erreur"); }else{ valeur_temp0.push(((decoded.temp0[1+i*2]<<8 | decoded.temp0[2+i*2])<<16>>16 )/100) ; } } decoded.temperature0 = { value : valeur_temp0, voie : data.voieTemp[j], unit : '°C' }; j++; delete decoded.temp0; } if(decoded.temp1 != undefined){ for(var i=0;i>16)/100 === -327.68){ valeur_temp1.push("erreur"); }else{ valeur_temp1.push(((decoded.temp1[1+i*2]<<8 | decoded.temp1[2+i*2])<<16>>16)/100) ; } } decoded.temperature1 = { value : valeur_temp1, voie : data.voieTemp[j], unit : '°C' }; delete decoded.temp1; } } function postProcessHum(decoded,data){ var j = 0; var valeur_hum0 = []; var valeur_hum1 = []; var valeur_echan_hist = (data.echan * data.historique); if(decoded.hum0 != undefined){ for(var i=0;i>16); } decoded.pression_differentielle = { value : valeur_dp, unit : 'Pa' }; delete decoded.dp; } } function postProcessCov(decoded,data){ var valeur_cov = []; var valeur_echan_hist = (data.echan * data.historique); if(decoded.cov != undefined){ for(var i=0;i=22){ offset = 3600; } }if(month <=3){ if(day<=20){ offset = 3600; } } var frameTimestamp = (decoded.horo[0] <<24 | decoded.horo[1] <<16 | decoded.horo[2] <<8 | decoded.horo[3])+offset; var date = new Date(frameTimestamp * 1000); var year = date.getUTCFullYear(); var month = date.getUTCMonth() + 1; if(month<10){ var month = "0" + month; } var day = date.getUTCDate(); if(day<10){ var day = "0" + day; } var hours = date.getUTCHours(); var minutes = "0" + date.getUTCMinutes(); var seconds = "0" + date.getUTCSeconds(); date = day + "/" + month + "/" + year + " " + hours + ":" + minutes.substr(-2) + ":" + seconds.substr(-2); decoded.Horodatage = { value : date }; delete decoded.horo; } } function postProcessPeriode(decoded,data){ if(decoded.periode != undefined){ decoded.periode = { value : decoded.periode[1] }; } } function postProcessHistoEchan(decoded,data){ delete decoded.histo_echan; } /***********/ /*Ancien produit*/ /***********/ function postProcessAncienCompteur0_15(decoded,data){ if(decoded.ancien_compteur0 !== undefined){ decoded.compteur0 = { value : (decoded.ancien_compteur0[0]<<24 | decoded.ancien_compteur0[1]<<16 | decoded.ancien_compteur0[2]<<8 | decoded.ancien_compteur0[3]) }; delete decoded.ancien_compteur0; } if(decoded.ancien_compteur1 !== undefined){ decoded.compteur1 = { value : (decoded.ancien_compteur1[0]<<24 | decoded.ancien_compteur1[1]<<16 | decoded.ancien_compteur1[2]<<8 | decoded.ancien_compteur1[3]) }; delete decoded.ancien_compteur1; } if(decoded.ancien_compteur2 !== undefined){ decoded.compteur2 = { value : (decoded.ancien_compteur2[0]<<24 | decoded.ancien_compteur2[1]<<16 | decoded.ancien_compteur2[2]<<8 | decoded.ancien_compteur2[3]) }; delete decoded.ancien_compteur2; } if(decoded.ancien_compteur3 !== undefined){ decoded.compteur3 = { value : (decoded.ancien_compteur3[0]<<24 | decoded.ancien_compteur3[1]<<16 | decoded.ancien_compteur3[2]<<8 | decoded.ancien_compteur3[3]) }; delete decoded.ancien_compteur3; } if(decoded.ancien_compteur4 !== undefined){ decoded.compteur4 = { value : (decoded.ancien_compteur4[0]<<24 | decoded.ancien_compteur4[1]<<16 | decoded.ancien_compteur4[2]<<8 | decoded.ancien_compteur4[3]) }; delete decoded.ancien_compteur4; } if(decoded.ancien_compteur5 !== undefined){ decoded.compteur5 = { value : (decoded.ancien_compteur5[0]<<24 | decoded.ancien_compteur5[1]<<16 | decoded.ancien_compteur5[2]<<8 | decoded.ancien_compteur5[3]) }; delete decoded.ancien_compteur5; } if(decoded.ancien_compteur6 !== undefined){ decoded.compteur6 = { value : (decoded.ancien_compteur6[0]<<24 | decoded.ancien_compteur6[1]<<16 | decoded.ancien_compteur6[2]<<8 | decoded.ancien_compteur6[3]) }; delete decoded.ancien_compteur6; } if(decoded.ancien_compteur7 !== undefined){ decoded.compteur7 = { value : (decoded.ancien_compteur7[0]<<24 | decoded.ancien_compteur7[1]<<16 | decoded.ancien_compteur7[2]<<8 | decoded.ancien_compteur7[3]) }; delete decoded.ancien_compteur7; } if(decoded.ancien_compteur8 !== undefined){ decoded.compteur8 = { value : (decoded.ancien_compteur8[0]<<24 | decoded.ancien_compteur8[1]<<16 | decoded.ancien_compteur8[2]<<8 | decoded.ancien_compteur8[3]) }; delete decoded.ancien_compteur8; } if(decoded.ancien_compteur9 !== undefined){ decoded.compteur9 = { value : (decoded.ancien_compteur9[0]<<24 | decoded.ancien_compteur9[1]<<16 | decoded.ancien_compteur9[2]<<8 | decoded.ancien_compteur9[3]) }; delete decoded.ancien_compteur9; } if(decoded.ancien_compteur10 !== undefined){ decoded.compteur10 = { value : (decoded.ancien_compteur10[0]<<24 | decoded.ancien_compteur10[1]<<16 | decoded.ancien_compteur10[2]<<8 | decoded.ancien_compteur10[3]) }; delete decoded.ancien_compteur10; } if(decoded.ancien_compteur11 !== undefined){ decoded.compteur11 = { value : (decoded.ancien_compteur11[0]<<24 | decoded.ancien_compteur11[1]<<16 | decoded.ancien_compteur11[2]<<8 | decoded.ancien_compteur11[3]) }; delete decoded.ancien_compteur11; } if(decoded.ancien_compteur12 !== undefined){ decoded.compteur12 = { value : (decoded.ancien_compteur12[0]<<24 | decoded.ancien_compteur12[1]<<16 | decoded.ancien_compteur12[2]<<8 | decoded.ancien_compteur12[3]) }; delete decoded.ancien_compteur12; } if(decoded.ancien_compteur13 !== undefined){ decoded.compteur13 = { value : (decoded.ancien_compteur13[0]<<24 | decoded.ancien_compteur13[1]<<16 | decoded.ancien_compteur13[2]<<8 | decoded.ancien_compteur13[3]) }; delete decoded.ancien_compteur13; } if(decoded.ancien_compteur14 !== undefined){ decoded.compteur14 = { value : (decoded.ancien_compteur14[0]<<24 | decoded.ancien_compteur14[1]<<16 | decoded.ancien_compteur14[2]<<8 | decoded.ancien_compteur14[3]) }; delete decoded.ancien_compteur14; } if(decoded.ancien_compteur15 !== undefined){ decoded.compteur15 = { value : (decoded.ancien_compteur15[0]<<24 | decoded.ancien_compteur15[1]<<16 | decoded.ancien_compteur15[2]<<8 | decoded.ancien_compteur15[3]) }; delete decoded.ancien_compteur15; } if( data.frame_type === "Trame Compteur mode ECO (Compteur 1 22 bits et 5 deltas 32 bits LoraWan )"){ decoded.compteur0.temps = "Tref"; decoded.compteur1.temps = "Tref-10"; decoded.compteur2.temps = "Tref-20"; decoded.compteur3.temps = "Tref-30"; decoded.compteur4.temps = "Tref-40"; decoded.compteur5.temps = "Tref-50"; } } function postProcessAncienSortieEntree(decoded,data){ var res_bin = []; if(decoded.sortie_digital != undefined){ var bin2 = (parseInt(((decoded.sortie_digital)-0).toString(16),16)).toString(2); var taille_bin2 = bin2.length+1; if(taille_bin2<=9){ if(bin2.length !== 8){ for(var j=0;j<(9-(taille_bin2));j++){ bin2 = '0' + bin2 ; } } } bin2 = bin2.split('').reverse().join(''); for(var i =0;i<8;i++){ res_bin.push(parseInt(bin2[i])); } decoded.sortie_digital = { value : res_bin }; } res_bin = []; if(decoded.entree_digital != undefined){ var bin1 = (parseInt(((decoded.entree_digital)-0).toString(16),16)).toString(2); var taille_bin1 = bin1.length+1; if(taille_bin1<=9){ if(bin1.length !== 8){ for(var j=0;j<(9-(taille_bin1));j++){ bin1 = '0' + bin1 ; } } } bin1 = bin1.split('').reverse().join(''); for(var i =0;i<8;i++){ res_bin.push(parseInt(bin1[i])); } decoded.entree_digital = { value : res_bin }; } } function postProcessAncienTemperature(decoded,data){ if(decoded.temperature != undefined){ decoded.temperature = { value : (decoded.temperature[0]<<8 |decoded.temperature[1])/10, unit : "°C" }; } } function postProcessAncienCompteur(decoded,data){ if(decoded.ancien_compteur != undefined){ decoded.compteur = { value : decoded.ancien_compteur }; delete decoded.ancien_compteur; } } function postProcessEntrerAncien(decoded,data){ var res_bin = []; if(decoded.entree_ancien != undefined){ var bin1 = (parseInt(((decoded.entree_ancien[0])-0).toString(16),16)).toString(2); var bin2 = (parseInt(((decoded.entree_ancien[1])-0).toString(16),16)).toString(2); var taille_bin1 = bin1.length+1; var taille_bin2 = bin2.length+1; if(taille_bin1<=9){ if(bin1.length !== 8){ for(var j=0;j<(9-(taille_bin1));j++){ bin1 = '0' + bin1 ; } } } if(taille_bin2<=9){ if(bin2.length !== 8){ for(var j=0;j<(9-(taille_bin2));j++){ bin2 = '0' + bin2 ; } } } bin1 = bin1.split('').reverse().join(''); bin2 = bin2.split('').reverse().join(''); var binaire = bin1 + bin2; for(var i=0;i<16;i++){ res_bin.push(parseInt(binaire[i])); } decoded.entree = { value : res_bin }; delete decoded.entree_ancien; } } function postProcessAncienPir(decoded,data){ var trame=""; if(decoded.type_trame != undefined){ if(decoded.type_trame === 0x01){ trame = "Trame d'ourture boitier"; } if(decoded.type_trame === 0x08){ trame = "Trame alarme"; } if(decoded.type_trame === 0x10){ trame = "Trame de comptage"; } delete decoded.type_trame; decoded.type_trame = { value : trame }; } var boitier; if(decoded.ouverture_boitier != undefined){ if(decoded.ouverture_boitier === 0x00){ boitier = "boitier ouvert"; }else{ boitier = "boitier fermée"; } delete decoded.ouverture_boitier; decoded.ouverture_boitier = { value : boitier }; } var dq; if(decoded.capteur_dq != undefined){ if(decoded.capteur_dq[1] === 0x00){ dq = "Active"; }else if(decoded.capteur_dq[1] === 0x01){ dq = "Désactivé"; }else{ dq = "Non utilisé"; } delete decoded.capteur_dq; decoded.capteur_dq = { value : dq }; } if(decoded.compteur_pir != undefined){ var compteur = (decoded.compteur_pir[0]<<8 |decoded.compteur_pir[1]); delete decoded.compteur_pir; decoded.compteur_pir = { value : compteur }; } if(decoded.temperature_pir != undefined){ var temperature = (decoded.temperature_pir[0]<<8 |decoded.temperature_pir[1]); delete decoded.temperature_pir; decoded.temperature_pir = { value : temperature, unit : "mV" }; } } function postProcessAncienMR2(decoded,data){ if(decoded.wirecut != undefined){ var wirecut = decoded.wirecut; delete decoded.wirecut; decoded.wirecut = { value : wirecut, }; } if(decoded.logic_level != undefined){ var bin1 = (parseInt(((decoded.logic_level[1])-0).toString(16),16)).toString(2); var taille_bin1 = bin1.length+1; if(taille_bin1<=9){ if(bin1.length !== 8){ for(var j=0;j<(9-(taille_bin1));j++){ bin1 = '0' + bin1 ; } } } delete decoded.wirecut; decoded.wirecut = { value : bin1[5] }; delete decoded.logic_level; decoded.logic_level2 = { value : bin1[6], }; decoded.logic_level1 = { value : bin1[7], }; } if(decoded.sigfox != undefined){ var binaire = ""; for(var i=0;i<10;i++){ var bin1 = (parseInt(((decoded.sigfox[i])-0).toString(16),16)).toString(2); var taille_bin1 = bin1.length+1; if(taille_bin1<=9){ if(bin1.length !== 8){ for(var j=0;j<(9-(taille_bin1));j++){ bin1 = '0' + bin1 ; } } } binaire = binaire + bin1; } Tref = binaire.slice(0,20); Delta1 = binaire.slice(20,32); Delta2 = binaire.slice(32,44); Delta3 = binaire.slice(44,56); Delta4 = binaire.slice(56,68); Delta5 = binaire.slice(68,80); if(data.frame_type === "Trame 39 Compteur mode ECO (Compteur 1 20 bits et 5 deltas 12 bits concaténés SIGFOX)"){ var temps1 = "Tref-10min"; var temps2 = "Tref-20min"; var temps3 = "Tref-30min"; var temps4 = "Tref-40min"; var temps5 = "Tref-50min"; }else if(data.frame_type === "Trame 3A Compteur mode ECO (Compteur 1 20 bits et 5 deltas 12 bits concaténés SIGFOX)"){ var temps1 = "Tref-30min"; var temps2 = "Tref-60min"; var temps3 = "Tref-90min"; var temps4 = "Tref-120min"; var temps5 = "Tref-150min"; }else if(data.frame_type === "Trame 3B Compteur mode ECO (Compteur 1 20 bits et 5 deltas 12 bits concaténés SIGFOX)"){ var temps1 = "Tref-60min"; var temps2 = "Tref-120min"; var temps3 = "Tref-180min"; var temps4 = "Tref-240min"; var temps5 = "Tref-300min"; } decoded.counter_init = { value : parseInt(Tref,2), }; decoded.Delta1 = { value : parseInt(Delta1,2), temps : temps1 }; decoded.Delta2 = { value : parseInt(Delta2,2), temps : temps2 }; decoded.Delta3 = { value : parseInt(Delta3,2), temps : temps3 }; decoded.Delta4 = { value : parseInt(Delta4,2), temps : temps4 }; decoded.Delta5 = { value : parseInt(Delta5,2), temps : temps5 }; delete decoded.sigfox; } } function postProcessAncienDINDA(decoded,data){ if(decoded.logic_level_dinda != undefined){ var bin1 = (parseInt(((decoded.logic_level_dinda)-0).toString(16),16)).toString(2); var taille_bin1 = bin1.length+1; if(taille_bin1<=9){ if(bin1.length !== 8){ for(var j=0;j<(9-(taille_bin1));j++){ bin1 = '0' + bin1 ; } } } var logic_level_dinda = []; if(bin1[2]=== '1'){ logic_level_dinda.push(1); }else{ logic_level_dinda.push(0); } if(bin1[3]=== '1'){ logic_level_dinda.push(1); }else{ logic_level_dinda.push(0); } delete decoded.logic_level_dinda; decoded.logic_level = { value : logic_level_dinda, }; } if(decoded.voltage != undefined){ if(decoded.voltage != undefined){ var voltage = parseFloat(((decoded.voltage[0]<<8 |decoded.voltage[1]) * 10 / 64240).toFixed(2)); delete decoded.voltage; decoded.voltage = { value : voltage, unit : "V" }; } } if(decoded.current != undefined){ if(decoded.current != undefined){ if(decoded.offset != undefined){ delete decoded.offset; var current = parseFloat(((decoded.current[0]<<8 |decoded.current[1]) * 16 / 47584).toFixed(2)); }else{ delete decoded.offset; var current = parseFloat(((decoded.current[0]<<8 |decoded.current[1]) * 20 / 47584).toFixed(2)); } delete decoded.current; decoded.current = { value : current, unit : "mA" }; } } } /*******************************************************************************************************************************/ /*******************************************************************************************************************************/ /*PARTIE DECODEUR*/ /*******************************************************************************************************************************/ /*******************************************************************************************************************************/ function decode_pay(encoded){ var frame_type = getFrameType(encoded); var data = {}; /*Décode pour savoir si il a de l'horodatage*/ var Horodatage = 0; var fram_0 = parseInt(encoded[0], 16); var bin_frame_0 = (parseInt((fram_0-0).toString(16),16)).toString(2); if (bin_frame_0[1] === "1") { Horodatage = 1; } var alerte = 0; if(frame_type === "Trame de mesure" || frame_type === "Trame de test" || frame_type === "Trame de mesure étendu"){ data = decode_trame_test_mesure(encoded,frame_type,Horodatage,alerte); }else if(frame_type === "Trame de vie"){ data = decode_trame_vie(encoded,Horodatage); }else if(frame_type === "Trame d'alerte"){ alerte = 1; data = decode_trame_test_mesure(encoded,frame_type,Horodatage,alerte); decode_alerte(encoded,Horodatage,data); }else if(frame_type === "Trame d'erreur"){ data = decode_trame_erreur(encoded,Horodatage); }else if(frame_type === "Ancien produit"){ frame_type = frame_type_ancien(encoded); data = decode_trame_ancien(encoded,frame_type); }else if(frame_type === "Trame spécifique"){ var WR1 = parseInt(encoded[4], 16); if(WR1 === 0){ data.data = 'byte frame_type;' + 'byte[2] wr;'; }else if(WR1 === 2){ data.data = 'byte frame_type;' + 'byte[2] wrs;'; }else{ } } else{ data.data = 'byte frame_type;'; } data.frame_type = frame_type; return data; } function getFrameType(encoded) { /*Recuperation des 2 premier octet de la trame*/ var oct1 = parseInt(encoded[0], 16); var oct2 = parseInt(encoded[1], 16); /*decomposition en binaire pour avoir 4 bits sinon js enléve les 0 de droite inutile*/ var bin1 = (parseInt((oct1-0).toString(16),16)).toString(2); var taille = bin1.length+1; if(taille<=5){ if(bin1.length!=4){ for(var i=0;i<(5-(taille));i++){ bin1 = "0"+bin1; } } } /*suivent oct ça renvoie le type de trame associer*/ var frameType = bin1; if(bin1[0] === "0"){ frameType = "Ancien produit"; } else if(bin1[2] === "1"){ frameType = "Trame de mesure"; } else if (oct2 === 0x1){ frameType = "Trame de vie"; } else if (oct2 === 0x2) { frameType = "Trame de test reseau"; } else if (oct2 === 0x5) { frameType = "Trame de test"; } else if (oct2 === 0xD) { frameType = "Trame d'alerte"; } else if (oct2 === 0xE) { frameType = "Trame d'erreur"; } else if (oct2 === 0xF) { frameType = "Trame spécifique"; }else if(oct2 === 0x6){ frameType = "Réponse à une trame de configuration"; }else if(oct2 === 0x7){ frameType = "Réponse à une trame de commande"; }else if(oct2 === 0x8){ frameType = "Réponse à une trame erronee"; }else if(oct2 === 0x9){ frameType = "Trame de mesure étendu"; }else { frameType = "Type de trame inconnu"; } if(encoded === ""){ frameType = "Trame vide"; } return frameType; } function decode_alerte(encoded,Horodatage,data){ var k=0; data.typeAlerte = []; for(var i=0;i= 1 | echan >= 1){ res_str = res_str + 'ubyte[2] periode;'; start_bcl += 2; } if(etendu){ res_str = res_str + 'ubyte[3] histo_echan;'; start_bcl += 3; } if(historique<1){ historique = 1; } if(echan<1){ echan = 1; } data.echan = echan; data.historique = historique; /*var alerte = 0;*/ var i = start_bcl; while(i1){ i+=2*taille_erreur-1; } } data.data = res_str; return data; } /***********/ /*Ancien produit*/ /***********/ function frame_type_ancien(encoded){ var oct1 = parseInt(encoded.substr(0, 2), 16); if(oct1 === 0x01){ frameType = "Trame de vie"; }else if(oct1 === 0x05){ frameType = "Trame de test"; }else if(oct1 === 0x42){ frameType = "Trame d’entrées digitales"; }else if(oct1 === 0x41){ frameType = "Trame d’entrées digitales et température"; }else if(oct1 === 0x4E){ frameType = "Trame d’entrées digitales,température et compteur 1"; }else if(oct1 === 0x4F){ frameType = "Trame d’entrées digitales, compteur 1 et compteur 2 "; }else if(oct1 === 0x52){ frameType = "Trame d’entrées digitales et compteur 1 "; }else if(oct1 === 0x50){ frameType = "Trame du compteur 1 et 2"; }else if(oct1 === 0x51){ frameType = "Trame du compteur 3 et 4"; }else if(oct1 === 0x5F){ frameType = "Trame du compteur 5 et 6"; }else if(oct1 === 0x60){ frameType = "Trame du compteur 7 et 8"; }else if(oct1 === 0x5D){ frameType = "Trame d’entrées digitales,température et compteurs"; }else if(oct1 === 0x5E){ frameType = "Trame d’entrées digitales et compteurs"; }else if(oct1 === 0x43){ frameType = "Trame alarme ou chocs"; }else if(oct1 === 0x62){ frameType = "Trame d’entrées/sorties digitales"; }else if(oct1 === 0x61){ frameType = "Trame d’entrées/sorties digitales et température"; }else if(oct1 === 0x6E){ frameType = "Trame d’entrées/sorties digitales, température et compteur 1"; }else if(oct1 === 0x6F){ frameType = "Trame d’entrées/sorties digitales, compteur 1 et compteur 2"; }else if(oct1 === 0x72){ frameType = "Trame d’entrées/sorties digitales et compteur 1"; }else if(oct1 === 0x7D){ frameType = "Trame d’entrées/sorties digitales, température et compteurs"; }else if(oct1 === 0x7E){ frameType = "Trame d’entrées/sorties digitales et compteurs"; }else if(oct1 === 0x32){ frameType = "Produit PIR"; }else if(oct1 === 0x14){ frameType = "Trame de compteur standard"; }else if(oct1 === 0x37){ frameType = "Trame alerte état câble coupé"; }else if(oct1 === 0x09){ frameType = "Trame de détection de changement d'état (TOR)"; }else if(oct1 === 0x30){ frameType = "Trame Compteur mode ECO (Compteur 1 22 bits et 5 deltas 32 bits LoraWan )"; }else if(oct1 === 0x31){ frameType = "Trame Test LoraWan"; }else if(oct1 === 0x39){ frameType = "Trame 39 Compteur mode ECO (Compteur 1 20 bits et 5 deltas 12 bits concaténés SIGFOX)"; }else if(oct1 === 0x3a){ frameType = "Trame 3A Compteur mode ECO (Compteur 1 20 bits et 5 deltas 12 bits concaténés SIGFOX)"; }else if(oct1 === 0x3b){ frameType = "Trame 3B Compteur mode ECO (Compteur 1 20 bits et 5 deltas 12 bits concaténés SIGFOX)"; }else if(oct1 === 0x18){ frameType = "Trame de relevé périodique d'une valeur 0-10V"; }else if(oct1 === 0x19){ frameType = "Trame de relevé périodique d'une valeur 0- 20mA"; }else if(oct1 === 0x1e){ frameType = "Trame d'alerte BAS d'une valeur 0-10V"; }else if(oct1 === 0x22){ frameType = "Trame d'alerte BAS d'une valeur 4-20mA"; }else if(oct1 === 0x1f){ frameType = "Trame defin d'alerte BAS d'une valeur 0-10V"; }else if(oct1 === 0x23){ frameType = "Trame de fin d'alerte BAS d'une valeur 4-20mA"; }else if(oct1 === 0x20){ frameType = "Trame d'alerte HAUT d'une valeur 0-10V"; }else if(oct1 === 0x24){ frameType = "Trame d'alerte HAUT d'une valeur 4-20mA"; }else if(oct1 === 0x21){ frameType = "Trame de fin d’alerte HAUT d’une valeur 0-10V"; }else if(oct1 === 0x25){ frameType = "Trame de fin d'alerte HAUT d'une valeur 4-20mA"; }else{ frameType = "Type de trame inconnu"; } return frameType; } function decode_trame_ancien(encoded,frame_type){ var bytes = hexToBytes(encoded); var res_str = 'byte frame_type;'; var data = {}; switch (frame_type) { case "Trame de vie": res_str = res_str + 'ubyte[2] tensionc;'; break; case "Trame de test": res_str = res_str + 'ubyte ancien_compteur;'; break; case "Trame d’entrées digitales": res_str = res_str + 'ubyte[2] entree_ancien;'; break; case "Trame d’entrées digitales et température": res_str = res_str + 'ubyte[2] entree_ancien;' + 'ubyte[2] temperature;'; break; case "Trame d’entrées digitales,température et compteur 1": res_str = res_str + 'ubyte[2] entree_ancien;' + 'ubyte[2] temperature;' + 'ubyte[4] ancien_compteur1;'; break; case "Trame d’entrées digitales, compteur 1 et compteur 2 ": res_str = res_str + 'ubyte[2] entree_ancien;' + 'ubyte[4] ancien_compteur1;' + 'ubyte[4] ancien_compteur2;'; break; case "Trame d’entrées digitales et compteur 1 ": res_str = res_str + 'ubyte[2] entree_ancien;' + 'ubyte[4] ancien_compteur1;'; break; case "Trame du compteur 1 et 2": res_str = res_str + 'ubyte[4] ancien_compteur1;' + 'ubyte[4] ancien_compteur2;'; break; case "Trame du compteur 3 et 4": res_str = res_str + 'ubyte[4] ancien_compteur3;' + 'ubyte[4] ancien_compteur4;'; break; case "Trame du compteur 5 et 6": res_str = res_str + 'ubyte[4] ancien_compteur5;' + 'ubyte[4] ancien_compteur6;'; break; case "Trame du compteur 7 et 8": res_str = res_str + 'ubyte[4] ancien_compteur7;' + 'ubyte[4] ancien_compteur8;'; break; case "Trame d’entrées digitales,température et compteurs": res_str = res_str + 'ubyte[2] entree_ancien;' + 'ubyte[2] temperature;'; var taille_bytes = (bytes.length-5)/4; for(var j=0;j parseInt(byteHex, 16)); var errors = []; if(input.data === 'Null'){ errors = ["error data"] } return { bytes: payloadBytes, fPort: 2, warnings: [], errors: errors }; }
This codec is sourced from The Things Network. All rights belong to The Things Network.
This codec is licensed under the GNU General Public License v3 (GPL v3). Modifications, if any, are clearly marked. You are free to use, modify, and distribute the codec under the terms of GPL v3.