# Delay in variable?

**URL:** <https://community.homey.app/t/delay-in-variable/69724>\
**Category:** Questions & Help\
**Created:** [October 1, 2022, 8:28pm UTC](https://community.homey.app/t/delay-in-variable/69724 "2022-10-01T20:28:07Z")\
**Posts on this page:** 1\
**Showing post:** 19

<div class="post-metadata">

**Author:** ![Peter\_Kawa](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/peter_kawa/32/173848_2.png) [@Peter\_Kawa](https://community.homey.app/u/Peter_Kawa)\
**Post date:** [October 4, 2022, 2:26pm UTC](https://community.homey.app/t/delay-in-variable/69724/19 "2022-10-04T14:26:32Z")

</div>

> [@Tiwas](#):
>
> Do you know a way to see which flows uses variables, like you can look at a device and see which flows they are in?

I have a super HomeyScript for that:

```auto
// FindLogicsVarsInFlowsTEST.js
//
// Script to find Homey Logics Variables in Flows, and orphaned Variables (by RonnyW)
// Adjusted somewhat, when called from a flow, it returns the output in a Variable (PD)
//
// Enable all "log" entries to output results to console
//log("=============================================================");
//log("Flow Search for Logics Variables");
//log("=============================================================");
//log(" ");
const flows = await Homey.flow.getFlows();
const logicVars = await Homey.logic.getVariables();
let flowMatches;
let varUsed;
let position = [];
let results2Var; // To be able to build a string to output the results to 
                 // a variable [OrphanedLogicsVars], for usage in flows
results2Var = (" ***** Flow Search for Logics Variables ***** \n\n");                 

for (var iLogicVar in logicVars){
  // log("=============================================================");
  // log(" ");
  // log("Logics Variable: "+logicVars[iLogicVar].name);
  results2Var = results2Var + "\n|| *VARIABLE*: ["+logicVars[iLogicVar].name + "]\n";
  //log('ID: '+logicVars[iLogicVar].id);
  //log("=============================================================");
  let logicVar = logicVars[iLogicVar].name;
  let logicVarId = logicVars[iLogicVar].id;
  varUsed = false;

  for (var iFlow in flows){
    flowMatches = false;
    position = [];
    // Search for variable name in Triggers
    if (flows[iFlow].trigger.uri == "homey:manager:logic"){
      for (var iArgs in flows[iFlow].trigger.args){
        if ( flows[iFlow].trigger.args[iArgs].name == logicVar
             || flows[iFlow].trigger.args[iArgs].id == logicVarId){
          position.push("Trigger card (IF)");
          flowMatches = true;
        }
      }
    }
    // Search for variable name in Condition cards
    for(var iCond in flows[iFlow].conditions){
      if ( flows[iFlow].conditions[iCond] &&
          flows[iFlow].conditions[iCond].uri == "homey:manager:logic"){
        //log(flows[iFlow].conditions[iCond].args);
        for (var iArgs in flows[iFlow].conditions[iCond].args){
          if ( flows[iFlow].conditions[iCond].args[iArgs].name == logicVar
                || flows[iFlow].conditions[iCond].args[iArgs].id == logicVarId ){
            position.push("Condition (AND) - direct reference");
            flowMatches = true;
          }
        }
      }
      for (var iArgs in flows[iFlow].conditions[iCond].args){
        if ( flows[iFlow].conditions[iCond].args[iArgs] &&
            JSON.stringify( flows[iFlow].conditions[iCond].args[iArgs] ).indexOf( logicVarId ) > 0 &&
            JSON.stringify( flows[iFlow].conditions[iCond].args[iArgs] ).indexOf( "homey:manager:logic" ) > 0 ){
          position.push("Condition (AND) - indirect reference (Tag)");
          flowMatches = true;
        }
      }
    }
    // Search for variable name in Action cards
    for(var iAct in flows[iFlow].actions){
      if ( flows[iFlow].actions[iAct] &&
          flows[iFlow].actions[iAct].uri == "homey:manager:logic"){

        for (var iArgs in flows[iFlow].actions[iAct].args){
          if ( flows[iFlow].actions[iAct].args[iArgs].name == logicVar
                || flows[iFlow].actions[iAct].args[iArgs].id == logicVarId ){
            position.push("Action (THEN) - direct reference");
            flowMatches = true;
          }
        }
      }
      for (var iArgs in flows[iFlow].actions[iAct].args){
        if ( flows[iFlow].actions[iAct].args[iArgs] &&
            JSON.stringify( flows[iFlow].actions[iAct].args[iArgs] ).indexOf( logicVarId ) > 0 &&
            JSON.stringify( flows[iFlow].actions[iAct].args[iArgs] ).indexOf( "homey:manager:logic" ) > 0 ){
          position.push("Action (THEN) - indirect reference (Tag)");
          flowMatches = true;
        }
      }
    }

  // Results of Flows found:
    if (flowMatches == true){
      varUsed = true;
      // log("-------------------------------------------------------------");
      results2Var = results2Var + " - ";
      // log(" Flow: "+flows[iFlow].name);
      results2Var = results2Var + " **Flowname:**" + "(" + flows[iFlow].name + ") \n";
// // log(flows[iFlow].name);
// // results2Var = results2Var +flows[iFlow].name);
      // log(" Position:");
      results2Var = results2Var +" -Position: / \n";
      for (iPos in position){
        // log(" - "+position[iPos]);
        results2Var = results2Var + " -" +position[iPos] + " / \n";
      }
    }
  }
  if (!varUsed){
    // log(" ");
    // log("* NOT FOUND in a flow *");
    results2Var = results2Var +" ***NOT FOUND IN FLOWS*** \n\n";
    // log(" ");
  } 
}
// Output (test to view the result data in 'results2Var')
 console.log(results2Var)
// Output to a StringVariable [OrphanedLogicsVars]
await tag( "OrphanedLogicsVars", results2Var );

return(true);

```

### Output snippet:

```auto
*VARIABLE*: [AB.StartChargingTime_Num]
 - **Flowname:** (T1-2 Rem.ChargingTime) 
   -Position: / 
       -Action (THEN) - direct reference / 
 - **Flowname:** (T2-2 Departure.Time Change) 
   -Position: / 
       -Action (THEN) - direct reference / 
 - **Flowname:** (C2-3 StartCharging Time.Num2Normal) 
   -Position: / 
       -Trigger card (IF) / 
       -Condition (AND) - indirect reference (Tag) / 
 - **Flowname:** (C2-3 Start Laden Tijd.Num2Normal (Kopie)) 
   -Position: / 
       -Trigger card (IF) / 
       -Condition (AND) - indirect reference (Tag) / 
       -Action (THEN) - indirect reference (Tag) / 
       -Action (THEN) - indirect reference (Tag) / 
 - **Flowname:** (T1-2 Rest.LaadtijdChange (Kopie)) 
   -Position: / 
       -Action (THEN) - direct reference / 
       -Action (THEN) - indirect reference (Tag) / 
       -Action (THEN) - indirect reference (Tag) / 
 - **Flowname:** (T2-2 Vertrektijd.Gewijzigd (Kopie)) 
   -Position: / 
       -Action (THEN) - direct reference / 
       -Action (THEN) - indirect reference (Tag) / 
       -Action (THEN) - indirect reference (Tag) / 

|| *VARIABLE*: [Chronograph_ms_test]
 - **Flowname:** (1-2 Chronograph Test) 
   -Position: / 
       -Action (THEN) - indirect reference (Tag) / 

|| *VARIABLE*: [PrijsNu_Afgerond]
 - **Flowname:** (De prijs wordt 1 vd laagste in de 2u. vóór 18u. PBTH) 
   -Position: / 
       -Action (THEN) - direct reference / 
       -Action (THEN) - indirect reference (Tag) / 
 - **Flowname:** (De gem. prijs komende 2u. wordt het laagst in de komende 8u. PBTH) 
   -Position: / 
       -Action (THEN) - direct reference / 
       -Action (THEN) - indirect reference (Tag) / 

|| *VARIABLE*: [ABC.TimeNumeric2Time]
***NOT FOUND IN FLOWS*** 

```

---

_[View the full topic](https://community.homey.app/t/delay-in-variable/69724)._
