Finding Hashmap keys based on nested key/value

Hi All,

I'm trying to iterate thru a set of entries (e.g. [ 1089, 1088] from the Hashmap below where "turnOnwhenArriving=true" but I'm not sure how to findAll based on the value of a nested Hashmap.

Any ideas?

{
   1091={
      "turnOnwhenArriving=false",
      dayTemp=68,
      temperature=69.8,
      nightTemp=68,
      "adjustWhenHome=false",
      "turnOnWhenHome=false",
      "switch=off"
   },
   1090={
      "turnOnwhenArriving=false",
      dayTemp=68,
      temperature=71.8,
      nightTemp=68,
      "adjustWhenHome=false",
      "turnOnWhenHome=false",
      "switch=on"
   },
   1089={
      "turnOnwhenArriving=true",
      dayTemp=68,
      temperature=71.8,
      nightTemp=60,
      "adjustWhenHome=true",
      "turnOnWhenHome=false",
      "switch=off"
   },
   1088={
      "turnOnwhenArriving=true",
      dayTemp=63,
      temperature=73.0,
      nightTemp=70,
      "adjustWhenHome=true",
      "turnOnWhenHome=false",
      "switch=off"
   },
   1092={
      "turnOnwhenArriving=false",
      dayTemp=68,
      temperature=68.2,
      nightTemp=68,
      "adjustWhenHome=false",
      "turnOnWhenHome=false",
      "switch=off"
   }
}

Try something like:

yourMap = yourMap?.findAll { it.turnOnwhenArriving == true }

1 Like

I tried:

            state.devices?.findAll{ it.turnOnwhenArriving == true }.each{ s ->
                log.debug "s is: ${s}"
            }

but that generates an error:

groovy.lang.MissingPropertyException: No such property: turnOnwhenArriving for class: java.util.HashMap$Node on line 85 (method appButtonHandler)

Ok, this worked! Thanks All!

state.devices?.findAll{ it.value.turnOnwhenArriving == true }.each
1 Like