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" }; } if(decoded.temperature_TMXD != undefined){ decoded.temperature_TMXD = { value : ((decoded.temperature_TMXD[0]<<8 |decoded.temperature_TMXD[1])<<16>>16)*0.0625, 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 if(oct1 === 0x1B){ frameType = "Trame de relevé périodique de la température"; }else if(oct1 === 0x2A){ frameType = "Dépassement de seuil bas détecté"; }else if(oct1 === 0x2C){ frameType = "Dépassement de seuil haut détecté"; }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 }; }