Homey scripts probleem. Het setten van een variabele in Homeyscript

Hierbij het probleem.
Het lezen van een variabele gaat prima maar bij het wegschrijven (Set) krijg ik een vervelende foutmelding

const variabelen = await Homey.logic.getVariables();

console.log(‘Variables:’, variabelen);

//Get Logic variable objects

const RegelaarSetp = await Homey.logic.getVariable({ id:‘fc690371-ac77-4f9e-a197-29d193c26abe’}) ;

const TempSetpoint = await Homey.logic.getVariable({ id:‘a655c2e8-2a1b-4c8d-b6a9-6610f3e7547f’}) ;

const Iactie = await Homey.logic.getVariable({ id:‘af7e249c-e5a6-4608-bdab-3dc5d44a12f0’}) ;

const ControllerSetpoint = await Homey.logic.getVariable({ id:‘14913454-f657-459f-bf9b-99e3d7e6abef’}) ;

const Delta = await Homey.logic.getVariable({ id:‘7dcc904f-6639-4e62-9f7d-cc4d0c41cc1b’}) ;

const TemperatuurFilter = await Homey.logic.getVariable({ id:‘fc690371-ac77-4f9e-a197-29d193c26abe’}) ;

const TemperatuurMeting = await Homey.logic.getVariable({ id:‘fc690371-ac77-4f9e-a197-29d193c26abe’}) ;

// input filter

TemperatuurFilter.value = TemperatuurFilter.value + ((TemperatuurMeting.value - TemperatuurFilter.value)/3);

//update filter to variable

//await Homey.logic.updateVariable({ id:‘9a6cf53e-f3a0-42eb-9e98-0265e874f1a5’, variable: TemperatuurFilter.value});

RegelaarSetp.value=26;

//await Homey.logic.updateVariable({ id:‘fc690371-ac77-4f9e-a197-29d193c26abe’, variable: (String(RegelaarSetp.value))})

:x: Script Error
:warning: invalid_json: Er is een onbekende fout opgetreden [invalid_json]
at /node_modules/athom-api/dist/index.js:1:1186403
at processTicksAndRejections (internal/process/task_queues.js:97:5)

De lijst van variabelen wordt prima weergegeven.
Wat gaat hier fout

await Homey.logic.updateVariable({ id:‘fc690371-ac77-4f9e-a197-29d193c26abe’, variable:

Dit is de regel waarbij het fout gaat

:x: Script Error
:warning: invalid_json: Er is een onbekende fout opgetreden [invalid_json]
at /node_modules/athom-api/dist/index.js:1:1186403
at processTicksAndRejections (internal/process/task_queues.js:97:5)

De documentatie klopt niet, de juiste aanroep moet zijn:

await Homey.logic.updateVariable({ id: 'fc690371-ac77-4f9e-a197-29d193c26abe', variable: { value: RegelaarSetp.value })

Maar zoals ik al drie keer op Slack heb gezegd: updateVariable() werkt niet vanuit Homeyscript. Je hebt daar de rechten niet voor.

2 Likes

id: ‘fc690371-ac77-4f9e-a197-29d193c26abe’
Hier zit toch de rechten in. Of werkt het niet zo.
Ik denk hierbij aan internet of things.

Die oplossing met tags werkt maar ik kan geen grafische voorstelling van maken in my.Homey.app.
De tags worden niet zichtbaar in my.Homey.app
Beetje lastig allemaal.

@WeeJeWel heb jij hier een antwoord op.
Waarom wel rechten om te lezen maar niet om te schrijven. Terwijl het in dezelfde homey gebeurt.
Zeer vreemd???

Net Homey geüpdate maar kan nog geen voorbeeld vinden om een Logic te lezen of te schrijven via een script, weet iemand dat toevallig?
En heeft een voorbeeld daarvoor als ik bijvoorbeeld de Logic Temp wil lezen en schrijven.

Geüpdatet naar v7.4.x?

Ongeveer als volgt:
Je hebt vooraf de variabele ID nodig.
(Maak eventueel eerst de variabelen aan welke je wil gaan schrijven)
Om de ID te kunnen vinden, ga naar het kopje “Een variabele uitlezen” hier verderop.

Format:

await Homey.logic.updateVariable({id: 'VARIABLE_ID', variable: { value: A_VALUE } })

Voorbeelden:

await Homey.logic.updateVariable({id: '327a60e4-acbc-4614-8532-acb9ab012c24', variable: { value: false } })
// ID is van mijn var 'MyBoolVar'

await Homey.logic.updateVariable({id: '1a164078-63fc-470c-ac76-9da7f113445e', variable: { value: 123 } })
// ID is van mijn var 'MyNumVar'

await Homey.logic.updateVariable({id: 'aaa401d5-255b-4153-b0d0-e2af5060bd7d', variable: { value: 'Hello World' } })
// ID is van mijn var 'MyStringVar'
  • Een variabele uitlezen:
await Homey.logic.getVariable()

// Vervang "MyVar" door de gezochte variabele naam
let varName = "MyVar"
// hieronder niets wijzigen
const logicVars = await Homey.logic.getVariables()
for (var iLogicVar in logicVars){
  if (logicVars[iLogicVar].name == varName)
  log("Variable: " + logicVars[iLogicVar].name + "\nType:\t  " + logicVars[iLogicVar].type + "\nValue:\t  " + logicVars[iLogicVar].value + "\nID:\t  " + logicVars[iLogicVar].id)
}

Script output voorbeeld:

Bedankt! Had gehoopt het te kunnen doen zonder steeds met het ID te doen. Maar ja, dan maar goed documenteren.

1 Like

Graag gedaan. Ja helaas kan het niet met enkel de naam van de variabele.
Voordeel is dan dat het script blijft werken na het veranderen vd naam vd variabele.