Homey scripts vind de aangemaakte variabele niet

ik probeer voor mijn zonwering een script te schrijven maar blijf tegen de zelfde problemen aanlopen met het vinden van variabelen.

/ Variabelen ophalen

let zonweringStatus = await Homey.logic.getVariable({ id: ‘Zonwering_Uitgerold’ });
let overrideStatus = await Homey.logic.getVariable({ id: ‘Zonwering_Override’ });
let windkracht = await Homey.logic.getVariable({ id: ‘Windkracht’ });
let regen = await Homey.logic.getVariable({ id: ‘Regen’ });
let bewolking = await Homey.logic.getVariable({ id: ‘Bewolking’ });
let lux = await Homey.logic.getVariable({ id: ‘Lichtsterkte’ }); // Optioneel

Melding van Homey Script na test.
———————————————————
:cross_mark: Script Error
:warning: Error: Not Found: Variable with ID Zonwering_Uitgerold
at ManagerDatabase.findEntry (file:///app/lib/ManagerDatabase.mjs:32:23)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async Variable.findEntry (file:///node_modules/@athombv/homey-core/dist/lib/DatabaseEntry.mjs:203:23)

Wie o wie kan mij helpen. ik heb een homey pro 2023

1 Like

Hoi Alle,

De ID dient echt de ID, en niet de naam van de variabele te zijn.

//Name of Logic Variable
var name = "TVProgramma";

//Read Logic Var
var value = await ReadLogicVar(name);
console.log("The parameter '"+name+"' has a value '"+value+"'");

//Write Logic Var
var new_value = "NOS Journaal";
await WriteLogicVar(name,new_value);

async function ReadLogicVar(name){
  let Logic = await Homey.logic.getVariables();
  let idArr = Object.entries(Logic);
  let filtered = idArr.filter(([key,value]) => value.name==name);
  let [[,{id:varID}]] = filtered;

  var varArr = await Homey.logic.getVariable({id:varID});

  return varArr.value;
}

async function WriteLogicVar(name,value){
  let Logic = await Homey.logic.getVariables();
  let idArr = Object.entries(Logic);
  let filtered = idArr.filter(([key,value]) => value.name==name);
  let [[,{id:varID}]] = filtered;
  
  var varArr = await Homey.logic.getVariable({id:varID});

  if (typeof(value) == varArr.type){
    await Homey.logic.updateVariable({id:varID,variable:{value:value}})
    //console.log("Value has been updated")
    return true;
  }
  else{
    console.log("New value has the wrong type! Expected type is '"+varArr.type+"', not '"+typeof(value)+"'. Value has NOT been updated!")
    return false;
  }
}

Bedankt @Peter_Kawa!
Het is geslaagd! Vriendelijk dank!

1 Like