Décodage des payloads - Community Edition
- // Decoder function for Heywaste Fill Level Sensor (community edition)
- // working with EU868
- // https://www.heyliot.com
- //
- // Your container configuration is stored here, you can pull it from your database...
- const containerConfiguration = {
- maxMeasure: 3000, // measure when container is empty = container depth (in millimeters)
- minMeasure: 0 // measure when container is full (in millimeters)
- };
- //This object will be filled by the payloadDecoder function
- let decodedPayload = {
- payloadType: null,
- nbrMeasure: null,
- measure: null,
- fillLevel: null,
- rangeStatus: null,
- };
- const extractPayloadType = (payload) => {
- const type = payload.substr(0, 1);
- switch (type) {
- case '1':
- case '3': // Periodic measure will be send in a regular interval according to the sensor configuration
- return "PERIODIC_MEASURE";
- case '2': // Manual measure need a push button
- return "MANUAL_MEASURE"
- case '0': // First uplink - not available in community edition
- case '4': // Daily configuration - not available in community edition
- default:
- return null;
- }
- }
- /**
- * By default, the sensor will send its measurements in millimeters
- * If you want to estimate a fill level in percentage, you have two options :
- * 1) use the raw measure in millimeters and calculate the fill level by yourself in your own app or IoT dashboard
- * 2) you can activate the fill level calculation function in this decoder by providing the max measure (= 0% ; container depth in millimeters) and the min measure (= measure when container is full)
- *
- * @param payload {string}
- * @param detectFillLevel {boolean} - If true we are going to d
- */
- const payloadDecoder = (payload, detectFillLevel = true) => {
- decodedPayload.payloadType = extractPayloadType(payload);
- decodedPayload.nbrMeasure = parseInt(payload.substr(1, 1));
- decodedPayload.rangeStatus = parseInt(payload.substr(2, 1));
- decodedPayload.measure = parseInt(payload.substr(3, 3), 16) * 2;
- if (detectFillLevel) {
- const maxMeasureOfContainer = containerConfiguration.maxMeasure;
- const minMeasureOfContainer = containerConfiguration.minMeasure;
- const distanceBetweenMinAndMax = maxMeasureOfContainer - minMeasureOfContainer;
- decodedPayload.fillLevel = 100 - Math.round((decodedPayload.measure - minMeasureOfContainer) * 100 / distanceBetweenMinAndMax);
- }
- return decodedPayload;
- };
- /**
- * You will get outputs :
- *
- * console.log(payload1) -->
- * {
- * payloadType: 'PERIODIC_MEASURE',
- * nbrMeasure: 1,
- * measure: 70,
- * fillLevel: null,
- * rangeStatus: 0
- * }
- *
- * console.log(payload2) -->
- * {
- * payloadType: 'MANUAL_MEASURE',
- * nbrMeasure: 2,
- * measure: 70,
- * fillLevel: 98,
- * rangeStatus: 0
- * }
- */
- const payload1 = payloadDecoder("11023", false);
- console.log(payload1);
- const payload2 = payloadDecoder("22023");
- console.log(payload2);
Related Articles
SAV : Un capteur réalise des mesures incohérentes
Dans le cas ou l'un de vos capteurs réalise des mesures incohérentes (seuil ne descendant plus à moins de 20% après collecte, restant bloqué entre 95 et 100%, ou présentant des mesures aléatoires), voici la marche à suivre. Rendez-vous sur-place et ...
SAV : Un capteur présente des problèmes de réseau
Dans le cas ou l'un de vos capteurs présente des problèmes de réseau (trous fréquents dans les mesures ou longues périodes sans mesures), voici la marche à suivre. Rendez-vous sur-place et vérifiez : - Que le capteur soit toujours installé dans le ...
Notice application mobile Installer
Retrouvez ci-dessous le manuel d'utilisation de l'application mobile Installer
Notice Heywaste - français
Vous pouvez télécharger la notice en français ci-joint.
Comment s'authentifier
Si vous souhaitez bénéficier d'une authentification par clé API, vous pouvez en faire la demande à votre contact Heyliot. Si vous bénéficiez déjà d'une clé d'API, cette section ne vous concerne pas. Préambule Le système d'authentification d'Heyliot ...