j’ai essayé le code que tu m’as donné de différentes manières, mais j’obtiens systématiquement une erreur à cause de JSON.parse:
SyntaxError: Unexpected token h in JSON at position 0
at JSON.parse (<anonymous>)
at test5.js:3:23
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
J’ai essayé avec HomeyScript en le lançant avec clic droit > démarrer ou via une carte dans un flow.
J’ai également mis le code dans une carte avec entrée d’arguments sous différentes formes (directement hello! 123 true, avec des guillemets autour de chaque variable, et directement à partir de variable déjà existante).
J’obtiens toujours cette erreur à cause de JSON.parse, seule la référence (token) change selon la méthode utilisée.
J’ai aussi essayé en ajoutant un JSON.stringify comme ci-dessous:
const myString = JSON.parse(JSON.stringify(args[0])); // ex: hello
const myNumber = JSON.parse(JSON.stringify(args[1])); // ex: 123
const myBoolean = JSON.parse(JSON.stringify(args[2])); // ex: true
J’obtiens alors l’exécution sans erreur, mais toujours pas de création de variables disponibles dans ma liste.
D’ailleurs, je précise que l’exécution de mes premières lignes de code sous la forme
await tag(‘ID_Instal’,‘abc123’);
global.set(‘ID_Instal’,‘abc123’);
me renvoyaient une exécution réussie.
Le code suivant:
const myString = 'hello!'; // ex: hello
const myNumber = 123; // ex: 123
const myBoolean = true; // ex: true
await tag('myStr', myString);
await tag('myNum', myNumber);
await tag('myBool', myBoolean);
ne s’exécute correctement que si 123 et true sont placés entre guillemets. Par contre, il n’y pas de création de variables disponibles dans ma liste.
Les méthodes getVariables() et updateVariable() via Homey.logic fonctionnent bien:
const variables = await Homey.logic.getVariables()
console.log('variables', variables)
onst variables = await Homey.logic.updateVariable({id: 'e7ae1196-01b2-486a-b684-d6b3fe3c023e', variable: {value: 'abcd1234'}})
const variables = await Homey.logic.updateVariable({id: 'f4ebfe06-2a9b-41a8-a04f-0fd47dbac382', variable: {value: 25}})
const variables = await Homey.logic.updateVariable({id: '5fbc5076-8d85-49e2-b7aa-31743285efaf', variable: {value: false}})
J’obtiens bien la liste complète de toutes les variables dans le menu variables et l’actualisation de la valeur se fait également.
J’ai quelques questions, notamment pour ma compréhension:
- Faut-il passer par une variable locale (const var=…) pour utiliser la fonction tag ?
- Pourquoi utilises-tu JSON.parse ?
- N’est-il pas possible de taper directement quelque chose de la forme await tag(‘myNum’, 123) ?
- Existe-t-il une méthode pour Homey.logic qui permettrait de créer une variable ?
- Peut-il s’agir d’un bug ou d’un module manquant pour que la fonction tag ne fonctionne pas chez moi ?
Ca fait beaucoup de questions, mais je navigue un peu dans le brouillard sur les principes utilisés par Homey 