Data Arduino sur Mit

Bonjour,
J'ai besoin d'aide pour afficher des valeurs lues sur l'arduino sur Mit.
je reçois de l'Arduino sur une ligne : LUX=456;PLUIE=120;BAT=12.45;RELAIS=ON;MODE=AUTO
et j'aimerais afficher sur le smartphone l'état et valeurs des données:
Luminosité = 456
Pluie= 120
Batterie=12.45
etc.
Le bluetooth est activé mais je n'arrive pas a trouver le bon code pour l'affichage.
En vous remerciant pour votre aide

There is a text replace block that can accept an entire dictionary of replacement pairs.

Add a pair for every word that needs it.

Replace ';' with '\n' to get multiple lines of text.

En plus, comme un' alternative à ce que @ABG t'a déjà dit, tu peux utiliser les blocks suivantes:

image


dans lesquels le message original est partagé en morceaux à chaque ";" (LUX=456 , PLUIE=120 , etc) et ils sont memorisés dans une liste, et aprés ça , chaque element de cette liste est encore partagé à chacque "=" (LUX=, 456). Enfin tu visualise le deuxième élément ce cette seconde liste, qui contient seulement le donné numerique.
J'éspère qu'il va t'aider (excuse mon Français car il est un petit peu rouillé....).
Meilleures salutations.

PS je ne l'ai pas essayé, mais sur le papier il devrait fonctionner... :grin: :grin: :grin:

Bonjour,
Je te remercie, je vais le tester, et je te tiens au courant.

Bonne chance ! :hugs:

Here is a dictionary based approach, for the first 3 parts.
image

You would have to extend the dictionary to cover the last 2 parts.

Notice how ';' is replaced with '\n' in the same replacement that replaced words.
(draggable blocks)



Bonjour,

J’ai testé le prg, et je rencontre des problèmes.

Lorsque je connecte le Bluetooth j’ai le message ci-joint qui apparait tant que je n’ai pas activé le Bluetooth (que je n’active que si besoin pour réduire la consommation) et je n’arrive à afficher que la luminosité et pas les autres valeurs. J’ai regardé et je ne vois pas le problème.

message: Select list item:list index too large. Select list item:Attempt to get item number 2 of a list of length 1:[""]

image

Cher @Pilougne, ja vais continuer en Anglais car aussi @ABG peut lire et donner son aide.

As your first post, I have understood that the BT communication was working fine, that is: your app is receiving correctly the complete string containing ALL the values.
To be sure of that I suggest you to display in a dedicated label what is really incoming to your app.
In other words, the variable that contains the whole string (received from BT) shall be displayed without any modification into a label. In that way you can be sure that the communication works fine. If not, you shall investigate in those boundaries before applying the splitting procedure.
To this purpose I strongly suggest you to have a look to @ABG's FAQ regarding the BT communication (the link here below), and mainly to the Text receving procedure in order to be sure that from Arduino you send correctly the data and on the app you use the correct mode of reception.
Specifically, on Arduino side, you shall send the data by terminating only the LAST transmission with a BTserial.println() instruction so to send a Linefeed character (0x0A) that instructs the app to exit the polling block.
The BT FAQ can be found here:

Only after you are done with that and you are sure that the string is completely received (and shown in a label), you can apply the splitting method (mine, or that of @ABG).
Best wishes.

PS Since you say that you receive only the luminosity, it seems that you transmit each data with a SerialBT.println(). If this is true, this means that the BT receiving block in your app, stops to receive at the first data (luminosity) and does not wait for the other data. And this explains why the list has only one element. If this is the case, you shall transmit all the data with a SerialBT.print() instruction and only the last (i.e. "MODE") shall be transmitted by using a SerialBT.println(), If you want more help post also your .ino code.

EDIT: before applying the splitting procedure, to be sure that the received string is not empty and all the 5 data have been received you can use a couple of "if" blocks in this way:

Meilleures salutations.

Bonjour,

Je viens de trouver. J’ai regardé, comme tu me l’as conseillé, du côté de l’Arduino et je n’ai rien trouvé d’anormal : j’envoie bien la trame en utilisant println.
J’ai ensuite regardé du côté de MIT, car je trouvais bizarre que les labels « Pluie.. Mode... » n’apparaissent pas, même lorsque le Bluetooth n’était pas connecté.
J’ai donc ajouté un label pour afficher la trame complète et, suite à cela, les autres mesures se sont affichées, mais pas la trame. Il m’a fallu régénérer une autre fois pour que le label de la trame et sa valeur s’affichent.
Je ne sais pas si c’est un bug ou mauvaise manip, car les labels étaient bien présents sur MIT, mais pas une fois compilé?????.
Par contre, j’ai toujours le message « Select list item... » qui apparaît.

Bonsoir @Pilougne,

ça veut dire que, lorsque tu use le simulateur il marche, tandis que quand tu compile le apk il ne marche plus?

Sur quel appareil Android vas tu installer le fichier APK ? Et surtout, les autorisations nécessaires (Bluetooth et localisation) sont-elles disposées ? Comme indiqué précédemment, avant de développer ton application complète, essaye d'en créer une très simple qui reçoit le trame complète de données et l'affiche dans une label. Tu pourras ensuite développer une application complète, mais seulement une fois le Bluetooth est fonctionnel. Autre conseil : évite de désactiver le Bluetooth pour économiser la batterie, car l'arrêt et la réactivation de la communication ne garantissent pas un fonctionnement continu (ce qui augmente le risque d'erreurs de communication).
Qui est le "master" de la communication ? C'est l'app qui de temps en temps demande à l'Arduino de fournir les donnés, ou il est l'Arduino qui envoye les données en continu (ou avec une periode) ? Comme fonctionne la synchronisation entre les deux ?

Si celà ne te dérange pas, à ce point, je te sugère de poster soit ton Arduino code, soit ton .aia.
Quelle carte Arduino tu utilises (UNO, Nano, Mega, ESPxx, autres ) ? Et quel BT shileld (HC05/06, autres) ? Ou tu utilises le BLE (une vraie :poop:) :rofl: :rofl: :rofl: