Ungenutzte Logik-Variablen

Neue Version…die findet nun auch als Tags verwendete Logik-Variablen in Bedingungen oder Aktionen:

log("=============================================================");
log("Flow-Suche nach Logik-Variablen");
log("=============================================================");
log(" ");
const flows = await Homey.flow.getFlows();
const logicVars = await Homey.logic.getVariables();
let flowMatches;
let varUsed;
let position = [];

for (var iLogicVar in logicVars){
  log(" ");
  log("=============================================================");
  log("Logik-Variable: "+logicVars[iLogicVar].name);
  //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 = [];
    // Such nach Variablenname in Trigger
    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");
          flowMatches = true;
        }
      }
    }
    // Such nach Variablenname in Bedingungen
    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("Bedingung - direkte Verwendung");
            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("Bedingung - indirekte Verwendung (Tag)");
          flowMatches = true;
        }
      }
    }
    // Such nach Variablenname in Aktionen
    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("Aktion - direkte Verwendung");
            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("Aktion - indirekte Verwendung (Tag)");
          flowMatches = true;
        }
      }
    }

  // Ausgabe des gefundenen Flows:
    if (flowMatches == true){
      varUsed = true;
      log("-------------------------------------------------------------");
      log("Gefunden in Flow:");
      log(flows[iFlow].name);
      log("Position:");
      for (iPos in position){
        log("  "+position[iPos]);
      }
    }
  }
  if (!varUsed){
    log("Keine Verwendung!");
  }
}
6 Likes