Starting with streamsheets

Glad to help :slight_smile:

I agree, that at this point things might get a little more difficult, but this is also because the use case is not that simple anymore.
There are multiple ways to deal with asynchronous data streams depending on your goal. Here some examples:

All together: Basically always just put a dependency to the MONGO.STORE() and you wont have the issue of invalid data being stored :slight_smile:

About your other questions:

a) What are the rules to evaluate a range, if it is not a group of pairs? Maybe we select 3x3 cells

I tried to state this in the JSON() explanation, but maybe not clear enough:

A data range over at least two columns, only interpreting the first and last column into the JSON Object.

Meaning, that as soon as there are more than two columns involved, the middle columns will be ignored.
Try a MQTT.PUBLISH with a JSON(A1:C3) Range. This will discard column B data, since only a data pair is a valid input.

b) A group of key/values can be A1:B5 or A1:E2. Which can be used?

Both can be used, but the JSON Range is oriented in columns not in rows, so the pairing will only work for A1:B5.

c) What about more complex JSON structures like arrays?

I guess you are talking about hierarchies with JSON Objects? Check out this topic here :slight_smile:

d) If I have a cell with {JSON Object}, how do I get the elements back? Is there any function to get a single value out of this cell?

How did you manage to get this? I guess over a Mongo.Query?
If your Range on the Sheet is big enough this is likely to be a bug, which will be fixed for the next release (empty spaces and zeros are wrongly interpreted on the sheet at the moment).
Generally speaking there is no way to get a single value from a JSON Object, since there would be no logic to it. You can always visualize this by sending it to an Inbox. Use either MQTT.PUBLISH or even try out FEEDINBOX() (see also example in the JSON() documentation).

Cheers

Tizian