[iot] formatage des données

Rémi Boulle mail at remiboulle.fr
Tue Jun 19 17:32:30 CEST 2018


Le 19/06/2018 à 17:00, yves DHENAIN via iot a écrit :
> Le 19/06/2018 à 16:46, Rémi Boulle via iot a écrit :
>> Le 19/06/2018 à 06:42, yves DHENAIN via iot a écrit :
>>> Comment faut-il les formater ?
>>> Pour l'instant je travaille de chez moi avec ma passerelle bricolée 
>>> lopy, demain matin je pourrais passer par la vraie passerelle .
>>
>>
>> Même question pour moi :) Je suis sûr qu'il y a des spécialistes en 
>> C++ sur cette liste ;)
>>
>> Je souhaite préparer ma payload dans l'automate LMIC.
>>
>> Cette payload est à la base un flottant (issue d'un capteur OneWire 
>> Dallas/Maxim). Dans le code d'exemple, la payload doit être définie 
>> par :
>>
>> static uint8_t mydata[] = "TEXTE";
>>
>> Comment convertir ce flottant (une température) en châine ASCII ?
>>
>> J'ai bien testé quelques codes, la question est classique, mais une 
>> fois abonné au flux MQTT de mon application et en décodant base64, je 
>> ne retrouve pas la valeur.
> tu la décodes comment ?

Dans le flux MQTT, je récupère :

application/1/node/010203040506070b/rx 
{"applicationID":"1","applicationName":"snootlab-testing","deviceName":"Feather-M0-RB-home","devEUI":"010203040506070b","txInfo":{"frequency":868300000,"dataRate":{"modulation":"LORA","bandwidth":125,"spreadFactor":7},"adr":true,"codeRate":"4/5"},"fCnt":10,"fPort":1,"data":"UkI="}

et avec le champ data :

echo "UkI=" | base64 -d

me renvoie : RB (qui était la chaine par défaut)

Avec mes essais pour convertir en ASCII (c'est bien ce qui attendu si 
j'ai bien compris), j'ai une erreur de décodage ou des caractères hors 
table ASCII.


> [...]

> J'ai trouvé ça,
>     // Prepare upstream data transmission at the next possible time.
>         //lecteure du capteur
>
>         // Put together the data to send
>     char packet[40] = "";
>
>     // Get temperature event and print its value.
>     float temperature;
>     sensors_event_t event;
>     bmp.getEvent(&event);
>     bmp.getTemperature(&temperature);
>     if (temperature) {
>         char floatStr[10];
>         dtostrf(temperature, 3, 2, floatStr);
>         strcat(packet, "Temp: ");
>         strcat(packet, floatStr);
>         strcat(packet, "*C\n");
>     } else {
>         Serial.println("Error reading temperature!");
>     }

dtostrf n'est pas dispo pour feather on dirait. Je vais essayer à nouveau.
Merci,
Rémi.

>>
>> _______________________________________________
>> iot mailing list
>> iot at lists.tetaneutral.net
>> https://lists.tetaneutral.net/listinfo/iot
>
> Ma question c'était plutôt tu envoies quoi, les valeurs séparées par 
> un caractère spécial ?
> _______________________________________________
> iot mailing list
> iot at lists.tetaneutral.net
> https://lists.tetaneutral.net/listinfo/iot




More information about the iot mailing list