[iot] Quel type de données pour la payload en C++ ?

Rémi Boulle mail at remiboulle.fr
Tue Jun 19 18:45:45 CEST 2018


Bonjour,

Nouveau fil pour plus de clarté

Ma fonction send est ici :

====

void do_send(osjob_t* j){

         static uint8_t mydata[] = "1";
         Serial.print("Requesting temperatures...");
         sensors.requestTemperatures(); // Send the command to get 
temperatures
         Serial.println("DONE");
         // After we got the temperatures, we can print them here.
         // We use the function ByIndex, and as an example get the 
temperature from the first sensor only.
         Serial.print("Temperature for the device 1 (index 0) is: ");
         float temperature = sensors.getTempCByIndex(0);
         Serial.println(temperature);
         mydata[0] = (uint8_t) temperature;
         mydata[1] = '\0';
         Serial.print("Taille de mydata: "); Serial.println(sizeof(mydata));
           for(int i=0; i<4; i++){
               Serial.println(mydata[i]);
             }
      // Prepare upstream data transmission at the next possible time.

     // Check if there is not a current TX/RX job running
     if (LMIC.opmode & OP_TXRXPEND) {
         Serial.println(F("OP_TXRXPEND, not sending"));
     } else {
          // Prepare upstream data transmission at the next possible time.
         LMIC_setTxData2(1, mydata, sizeof(mydata)-1, 0);
         Serial.println(F("Packet queued"));
     }

=====

Sur le moniteur série Arduino, je vois bien :

=====

20244653: EV_TXCOMPLETE (includes waiting for RX windows)
Requesting temperatures...DONE
Temperature for the device 1 (index 0) is: 26.19
Taille de mydata2
26  -> c'est bien la température !
0
0
0

=====

Dans la trame MQTT, abonné au flux 
application/5/node/010203040506070b/#, je reçois un champ data valant : 
"data":"Gg=="

Et la commande : echo "Gg==" | base64 -d ne renvoie pas 26 mais un 
caractère non affichable...

Voyez-vous où est le soucis ?

Merci :)

Rémi.



More information about the iot mailing list