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!");
}
}