Envoyer un poids avec 3chiffres après la virgule dans Sigfox

j'essaie d'envoyer un poids en kg avec 3 chiffre après la virgule mais je reçois des chiffres énorme,
j'ai utilisé comme config sur le backend poids:float:32.

code

#include <RTCZero.h>
#include <ArduinoLowPower.h>
#include "HX711.h"
#include <SigFox.h>
#define LED 6 
//HX711 scale;                             // This is the built_in led
void setup() {
   pinMode(LED,OUTPUT);
   digitalWrite(LED,LOW);
   Serial.begin(9600);
   while (!Serial);
   if ( ! SigFox.begin() ) {
     Serial.println("Error ... rebooting");
     NVIC_SystemReset();
     while(1);
     scale.begin(A1, A0);
     scale.set_scale(23150.f);
     scale.tare();
   }
   SigFox.reset();
   delay(100);
   SigFox.debug();
   SigFox.end();

   // We need to have to time to program the Arduino after a reset
   // Otherwise it does not respond when in low-power mode
   Serial.println("Booting...");
   digitalWrite(LED,HIGH);
   delay(5000);
   digitalWrite(LED,LOW);
}

typedef struct __attribute__ ((packed)) sigfox_message {
float Poids= scale.get_units();
} SigfoxMessage;

void loop() {
   // put your main code here, to run repeatedly:
   SigFox.begin();
   Serial.print("Poids :\t");
   Serial.print(scale.get_units(), 3);
 
   scale.power_down();              // put the ADC in sleep mode
   delay(5000);
   scale.power_up();
   SigFox.status();
   SigfoxMessage msg;
   msg.Poids = (float);
;

   SigFox.beginPacket();
   SigFox.write((uint8_t*)&msg,sizeof(msg));
   SigFox.endPacket(false);
   SigFox.end();

   // Wait for 10 minutes.
   // Low Power version - be carefull of bug
   //   LowPower.sleep(10*60*1000);
   // Normal version
   delay(10*60*1000);
}

:warning:

Post mis dans la mauvaise section, on parle anglais dans les forums généraux. ➜ déplacé vers le forum francophone.

Merci de prendre en compte les recommandations listées dans « Les bonnes pratiques du Forum Francophone”

——
Vous envoyez un nombre en binaire, Comment vous avez déclaré la réception ?

(Et il faut écrire scale.get_units(); dans la variable avant l’envoi )

Ah d’accord je ferai attention la prochaine fois , en gros ma carte arduino va jouer le rôle d’un capteur de poids , je suppose que je vais envoyer un nombre en binaire et j’aimerai avoir dans mom back end de sigfox le nombre en hexa avec 3 chiffres après la virgule.

dans mon petit tuto sur la découverte du MKRFox, j'envoie un entier sur 16 bits. la technique est assez similaire pour envoyer autre chose, mais il faut adapter la déclaration du format côté plateforme en fonction bien sûr du format émis (nombre d'octets, petit boutisme, ...)

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.