I am unable to create parsnips and I am out of seeds for planting

Every BLE address contains three parts

  1. Mac address
  2. Device name
  3. Signal strength (closer to the zero is strong)

When you get list of address,
Get each address one by one
Split the address at space, so each will give three parts as said above
The you use if then else statement, that
If the select 2nd item = your desired device name
Then open the screen
Else {do as you like}

ATMO_680 is the screen name (2nd item after split at space)

-47 is signal strength (3rd item after splitting at space)

Got it now?

Greetings,

Yep, much more so now than before. Thank you so much for your response. Today, I learned that the last number on a scan of BLE addresses is signal strength. I wonder what tomorrow will bring?

If I may ask for a little more guidance, would you please look at these blocks? One seeks out all available BLE signals and the other allows me to connect to the address I clicked onto in my list. I believe you are speaking of using these blocks in a way I have not yet done and I am a little lost.

Would you please look at these three blocks and suggest what I might use to extract the name from the hex address and signal? If you could refer me to an example ofsorts, I am pretty good on internalizing once I understand.



As they are separated by spaces, try the split at spaces block from the text drawer to get a list with 3 items, then select the first item to get the name

You are already familiar with working with lists, aren't you?

Taifun

Did you notice?

Hi, I sort of follow what you are saying but I am lost at this part:

If the select 2nd item = your desired device name

How do I throw away the first item (the MAC address) and "select" the second item to compare to my name? I am fine with the if/than/else but lost as to how to address or select the second part once divided.

Imagine you have stored your name either in glob variable name or a text field.

For each item in the global list of BLE 
If select list item list{ split text at space get item} index {2}= get global device name 
Then //do blocks for true
Else //do block for false.

If you want the device name after list picking
Then

After listview picking
If select list item list {split text at space {get listview selection } index {2}} = global name
Then //do blocks for true
Else //do blocks for false

Selecting an item from a list is in the introductory lessons

Thank you for all of the information - I will be reading! I know I am making this harder on myself than it really is (fear of the unknown?). I just grocked the term "index" and how it applies to the position of an item in a list. Baby steps, again . . .

Hi,

Thank you so much for that example. I just cracked open the MIT AI2 tutorial on lists but, without your example, I would have had no idea that the "index" referred to the position of an item in a list. I am working with your example and information that ABG sent, as well. Spicy_Topics tried to educate me but assumed I understood the importance of the word "index." As an educator, I sometimes hate the way my mind works when trying to embrace new knowledge.

1 Like

Thank you, it is all clear now. I just needed additional hammering to crack open my mind to learn the term "index" and how it applies to items in a list.

1 Like

Glad to help you. Also as per @ABG you can read FAQ to learn more about each component of mit so you will come to an conclusion, what type of blocks need to use for the logic

Greetings,

I am really trying to follow your block example without extensive reading and comprehending. I am posting a png of what I think my connect block should look like. Referencing the notes in the png, I wanted to plug in the "ListView1.SelectionIndex" but the "select list item list" will have none of it.

I tend to get errors that seem unrelated, as follows:

As the error changes if I ignore it and restart it, I get that the system is pulling in whatever is showing as the global name at that instance, so this is obviously the wrong logic.

If you have a moment, would you please look at the attached block structure and error message? I don't know if that is enough to deduce where my ignorance lies, but this is where I generate my errors. Thank you for everything, to date. I seem to take awhile to grock a new code issue sometimes, but with some community assistance, I soon own another tool in my programming ability.

What is the global name?

You should get the listview selection and split at space then only this part will turn into an argument into a list after then only you can use select kist item list

I am so close but I haven't wrapped my mind around it. Can you tell me why this connect block has errors (based on the select list item list block)?

Since ListView1.SelectionIndex is the selected item from my listpicker, why do I get errors when trying to extract the elements from the second index? This seems so logical but fails. The errors are inconsistent, but here are three:
AQI_Error
Pressure_Error
Temp_Error

Thee errors come up differently everytime I clear out my app data in the phone and reconnect.

Just for gits and shiggles, could I send a UUID named "name" that would have a unique number? I could test for that number with an if/than to determine my next course of action. This seems much simpler than trying to disassemble a BLE string without experience.

Because you are not following the given advice

together with ListView1.Selection

Taifun

You have not taken into account that there might exist more than one list in the world.

Consider a cannibal who forgets which list is which for his kid's birthday party, the guest list or the menu.

You had one list, the ListView.Elements list, which had as items the text connection points from which you chose one.

You had another list, made from splitting the chosen connection point text at spaces to allow getting at the center part, the name part.

You applied selecting item 2 to the wrong list.

This will give you the devise name

and also meant the same from the post no. 2

Make sure what are you saving in the global name. Your error says temperature.C

Greetings,

I am so very grateful for everything that has been shared with me. Everything is working perfectly and I have gained new insights and understanding. When I changed the BLE_NAME from "ATMO" to "Psychrometer" in my Arduino sketch, I noticed that the background screen displayed what I expected (hoped for?) but both had error messages that referenced "The Operation <= cannot accept the argument ["Air Quality Index"], [50]." So, I went looking for that statement and it turns out that it was an incorrect statement that passed through without an error (up to now) and should have read "VOC_BLE," not "Air Quality Index." The temperature and pressure errors were red herrings introduced by the above mentioned mistake. I thank you for your input and guidance. Sometimes, it takes a village to help me shake-off a learned sense of self-disenfranchisement. All the reading in the world would not have allowed me to infer what was shown to me here and I greatly appreciate all of the contributions!

1 Like

I forgot to chide you on your use of the variable name 'name'.

Name of WHAT?

Too short ambiguous variable names belong in comedies of error, not in robust code.

How about comedies of code with robust errors? At least I can now enjoy a baked potato with sour cream and chides;). No, seriosly, though, what's in a name? The truth is, I totally understand logic and can wrap myself around C++ but there are just so many neuanced selections that can be applied herein the block drawers. I was basically throwing code onto the wall to see what would stick. As usual, the solution was simple and elegant and something I had never seen before. Every time I go through one of my freakout "Ermahgerd - How Do I Do THIS" meltdowns, one or more of you take my hand and lead me off the ledge, allowing my challenge to become another knowledge tool that benefits me in the future.