mkr 1200 sigfox + programme balance connectées

bonjour
j ai un programme de balance connectées qui marche avec une arduino uno
et je voudrai m en servir avec une carte mkr fox 1200 sigfox.
après plusieurs essai je n arrive pas a comprendre comment formuler le programme (car il faut pas que cela dépasse 12 octets

voici mon code que je veux modifier pour une carte mkr 1200

/* CODE POUR 3 BALANCES , temperature et */


/*HX711 PLATINES RECUPERATION DES INFO DES BALANCES*/
#include "HX711.h"
#define calibration_factor -23000//This value is obtained using the SparkFun_HX711_Calibration sketch
// HX711.DOUT - pin #A1
// HX711.DOUT - pin #A0
HX711 scaleA(A1, A0 ,128);//balance 1
// HX711.DOUT - pin #A3
// HX711.DOUT - pin #A2
HX711 scaleB(A3, A2 ,128);//balance 2
// HX711.DOUT - pin #A5
// HX711.DOUT - pin #A4
HX711 scaleC(A5, A4 ,128);//balance 3
/*temperature */
#include <dht11.h> // charger la librairie
dht11 DHT11; // Créer le capteur
#define DHT11PIN A5 // Définir la pin utilisée

void setup() {
  
 /* Initialisation du port série */ 
  Serial.begin(9600);
  /* Initialisation poids et temperature */
  Serial.println("001D18C9");
  float a=0, b=0;
  
 /*HX711 PLATINES RECUPERATION DES INFO DES BALANCES*/ 
  scaleA.set_scale(calibration_factor); //This value is obtained by using the SparkFun_HX711_Calibration sketch
  scaleA.tare();  //Assuming there is no weight on the scale at start up, reset the scale to 0
  scaleB.set_scale(calibration_factor);
  scaleB.tare();
  scaleC.set_scale(calibration_factor);
  scaleC.tare();
    Serial.println("poids BALANCE:");
}

void loop() {
  {
  /*POIDS EN GRAMME*/
 // Serial.print("p");
  Serial.print(scaleA.get_units(), 0.00001); //0.0001 permet de vire la virgule 40.0 devient 40 balance 1
  Serial.print("   "); 
  Serial.print(scaleB.get_units(), 0.00001);//balance 2
  Serial.print("   ");
  Serial.print(scaleC.get_units(), 0.0001);//balance 3
  Serial.print("   ");
 
/* temperature */
  int chk = DHT11.read(DHT11PIN); // Lecture du capteur
 }
 {
 
  Serial.print(""); // Température
  Serial.println((float)DHT11.temperature, 0.2);
 }

 
  delay(480000); //temps de lecture il faudra mettre tout les 8 minutes soit 480000 ms
}

je veux rajouter ce code ci
envoie sur le reseau sigfox et mesure de la température du module

#include <SigFox.h>
typedef struct __attribute__ ((packed)) sigfox_message { 
  int16_t moduleTemperature;
} SigfoxMessage;


SigfoxMessage msg;

void reboot() {
  NVIC_SystemReset();
  while (1);
}



void setup() {
  Serial.begin(115200);
  while (!Serial);

  if (!SigFox.begin()) {
    Serial.println("SigFox error, rebooting");
    reboot();
  }

  delay(100); 

  
  SigFox.debug();

  
  msg.moduleTemperature = (int32_t) (SigFox.internalTemperature() * 100.0);

 
  Serial.print(msg.moduleTemperature, HEX);
  

  
  delay(1);

  
  SigFox.beginPacket();
  SigFox.write((uint8_t*)&msg, sizeof(SigfoxMessage));

  
  Serial.println(SigFox.endPacket());

  SigFox.end();
}

void loop() {}

je suis débutant
s il vous plait aidé moi car la je bloque
merci

Bonjour

post on french Arduino Forum ! (Ask Moderator to move your poste there , use 'report to moderator' link under your post

some Sigfox users there... I'm one of them ....+ 'la bas on parle français".....

Bonjour
je te conseille la lecture de deux excellents tutoriels en français :

-Découverte du MKRFOX 1200 de J-M-L

-Carte de prototypage SIGFOX .
Ce second tutoriel détaille l'utilisation de Sigfox avec Raspberry Pi et un module économique.

Pas tout à fait Sigfox avec MKRFOX 1200 .... mais bonne explication au (paragraphe 6) du 'cadrage' de plusieurs informations pour que le message tiennent dans les 12 octets.

"Quand on n'a que 12 octets comment on fais ?....."

Dans ton cas fais au préalable le point sur l'ensemble des informations à transmettre via Sigfox.
Vois quel est le strict nécessaire en terme de bits pour chacune des données.
poids : entier ? non signé ? poids : entier ? non signé? valeurs maxi et mini ?
températures : idem.....

merci al1fch
j ai déjà défini mes besoins
11 bits pour la température
2 octets pour chaque balances soit 8 octets
11 bits pour mesure tension batterie

mon souci est comment écrire le code ????

Bonjour

11 bits, pas de problème de définition côté 'Backend' de Sigfox , par contre petite complication côté code Arduino

Vu la place disponible dans le message (12 octets) tu peux prendre 2 octets pour la température du module et autant pour la tension de la batterie, soit 12 octets en tout.

Comment écrire ton code ?

-Etudier le tutoriel de J-M-L
-Etudier l'exemple WeatherMonitor inclus dans la librairie "Arduino_Sigfox_for MKRFOX1200"
Dans cet exemple plusieurs grandeurs physiques sont mesurées et leurs valeurs transmises à Sigfox. La structure décrite entre les lignes 49 à 57 donne une idée de la manière de construire un message Sigfox.

Sur ces bases tu devrais pouvoir écrire le code correspondant à ton cahier des charges